From 6a87018af02a54f7007efec09b2ed34825cb82a0 Mon Sep 17 00:00:00 2001 From: TurboSzymon Date: Wed, 15 Oct 2025 13:59:55 +0200 Subject: [PATCH 01/21] fix jailbreak monkey # Conflicts: # yarn.lock fix set problems stash work # Conflicts: # yarn.lock stash work # Conflicts: # packages/core-mobile/index.js performance tracking # Conflicts: # yarn.lock stash work make it more solid fix patch for ios update sentry fix patches --- ...erlab-secp256k1-npm-1.2.0-1098d4b329.patch | 205 + .../@noble-curves-npm-1.9.7-2b9efc8ab4.patch | 209 + ...etconnect-core-npm-2.16.1-42d08707e6.patch | 4408 ++++++++ ...ct-sign-client-npm-2.16.1-b9bdaa2d98.patch | 4383 ++++++++ ...tconnect-utils-npm-2.17.2-43f96abc05.patch | 9375 +++++++++++++++++ package.json | 23 +- packages/core-mobile/.ruby-version | 2 +- packages/core-mobile/Gemfile | 2 +- packages/core-mobile/Gemfile.lock | 2 +- packages/core-mobile/PerformanceTracer.ts | 262 + packages/core-mobile/android/app/build.gradle | 1 + .../java/com/avaxwallet/MainApplication.kt | 3 +- .../core-mobile/android/gradle.properties | 2 +- .../app/new/common/components/PinScreen.tsx | 2 + .../assets/components/AssetsScreen.tsx | 3 + .../assets/components/TokenListView.tsx | 3 +- .../app/new/routes/loginWithPinOrBiometry.tsx | 2 + .../watchlist/watchListCacheClient.ts | 59 +- packages/core-mobile/index.js | 4 + packages/core-mobile/ios/Podfile.lock | 125 +- packages/core-mobile/metro.config.js | 17 +- packages/core-mobile/package.json | 23 +- packages/core-mobile/react-native.config.js | 7 +- packages/core-mobile/simplePatch.sh | 73 + .../.editorconfig | 15 + .../.gitattributes | 3 + .../.gitignore | 90 + .../react-native-nitro-avalabs-crypto/.nvmrc | 1 + .../.watchmanconfig | 1 + .../CODE_OF_CONDUCT.md | 133 + .../CONTRIBUTING.md | 147 + .../react-native-nitro-avalabs-crypto/LICENSE | 20 + .../NitroAvalabsCrypto.podspec | 67 + .../README.md | 39 + .../android/CMakeLists.txt | 57 + .../android/build.gradle | 404 + .../android/gradle.properties | 5 + .../android/src/main/AndroidManifest.xml | 2 + .../android/src/main/cpp/cpp-adapter.cpp | 6 + .../nitroavalabscrypto/NitroAvalabsCrypto.kt | 10 + .../NitroAvalabsCryptoPackage.kt | 22 + .../babel.config.js | 12 + .../cpp/CryptoHybrid.cpp | 316 + .../cpp/CryptoHybrid.hpp | 77 + .../eslint.config.mjs | 29 + .../ios/scripts/build.sh | 176 + .../lefthook.yml | 14 + .../nitro.json | 16 + .../package.json | 163 + .../src/Crypto.ts | 318 + .../src/__tests__/index.test.tsx | 1 + .../src/index.tsx | 1 + .../src/specs/Crypto.nitro.ts | 55 + .../tsconfig.build.json | 4 + .../tsconfig.json | 30 + .../turbo.json | 42 + yarn.lock | 5170 +++++++-- 57 files changed, 25912 insertions(+), 729 deletions(-) create mode 100644 .yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch create mode 100644 .yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch create mode 100644 .yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch create mode 100644 .yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch create mode 100644 .yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch create mode 100644 packages/core-mobile/PerformanceTracer.ts create mode 100755 packages/core-mobile/simplePatch.sh create mode 100644 packages/react-native-nitro-avalabs-crypto/.editorconfig create mode 100644 packages/react-native-nitro-avalabs-crypto/.gitattributes create mode 100644 packages/react-native-nitro-avalabs-crypto/.gitignore create mode 100644 packages/react-native-nitro-avalabs-crypto/.nvmrc create mode 100644 packages/react-native-nitro-avalabs-crypto/.watchmanconfig create mode 100644 packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md create mode 100644 packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md create mode 100644 packages/react-native-nitro-avalabs-crypto/LICENSE create mode 100644 packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec create mode 100644 packages/react-native-nitro-avalabs-crypto/README.md create mode 100644 packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt create mode 100644 packages/react-native-nitro-avalabs-crypto/android/build.gradle create mode 100644 packages/react-native-nitro-avalabs-crypto/android/gradle.properties create mode 100644 packages/react-native-nitro-avalabs-crypto/android/src/main/AndroidManifest.xml create mode 100644 packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp create mode 100644 packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt create mode 100644 packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt create mode 100644 packages/react-native-nitro-avalabs-crypto/babel.config.js create mode 100644 packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp create mode 100644 packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp create mode 100644 packages/react-native-nitro-avalabs-crypto/eslint.config.mjs create mode 100644 packages/react-native-nitro-avalabs-crypto/ios/scripts/build.sh create mode 100644 packages/react-native-nitro-avalabs-crypto/lefthook.yml create mode 100644 packages/react-native-nitro-avalabs-crypto/nitro.json create mode 100644 packages/react-native-nitro-avalabs-crypto/package.json create mode 100644 packages/react-native-nitro-avalabs-crypto/src/Crypto.ts create mode 100644 packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx create mode 100644 packages/react-native-nitro-avalabs-crypto/src/index.tsx create mode 100644 packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts create mode 100644 packages/react-native-nitro-avalabs-crypto/tsconfig.build.json create mode 100644 packages/react-native-nitro-avalabs-crypto/tsconfig.json create mode 100644 packages/react-native-nitro-avalabs-crypto/turbo.json diff --git a/.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch b/.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch new file mode 100644 index 0000000000..4180c62201 --- /dev/null +++ b/.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch @@ -0,0 +1,205 @@ +diff --git a/.DS_Store b/.DS_Store +new file mode 100644 +index 0000000000000000000000000000000000000000..9211d3bfe85cf15dbed0f66b9014a322c5f36ceb +--- /dev/null ++++ b/.DS_Store +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/dist/index.js b/dist/index.js +index 4a914633a13067af05838ab582a9dd41b53306ba..68df133248e9a1d067735ad1915f64afd4563057 100644 +--- a/dist/index.js ++++ b/dist/index.js +@@ -4,6 +4,27 @@ var secp256k1 = require('@noble/curves/secp256k1'); + var mod = require('@noble/curves/abstract/modular'); + var utils = require('@noble/curves/abstract/utils'); + ++// Prefer native Nitro implementation when available ++let pointAddScalarNative; ++try { ++ const NativeAvalabsCrypto = require('react-native-nitro-avalabs-crypto'); ++ pointAddScalarNative = NativeAvalabsCrypto && NativeAvalabsCrypto.pointAddScalar; ++} catch (_) { ++ pointAddScalarNative = undefined; ++} ++ ++// Native sign/verify (Nitro) support ++let signNative, verifyNative, signSchnorrNative, verifySchnorrNative; ++try { ++ const NativeAvalabsCrypto = require('react-native-nitro-avalabs-crypto'); ++ signNative = NativeAvalabsCrypto && NativeAvalabsCrypto.sign; ++ verifyNative = NativeAvalabsCrypto && NativeAvalabsCrypto.verify; ++ signSchnorrNative = NativeAvalabsCrypto && NativeAvalabsCrypto.signSchnorr; ++ verifySchnorrNative = NativeAvalabsCrypto && NativeAvalabsCrypto.verifySchnorr; ++} catch (_) { ++ signNative = verifyNative = signSchnorrNative = verifySchnorrNative = undefined; ++} ++ + function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { +@@ -176,6 +197,31 @@ function _privateNegate(privateKey) { + } + + function _pointAddScalar(p, tweak, isCompressed) { ++ // Try native (RN Nitro) fast-path first ++ if (typeof pointAddScalarNative === 'function') { ++ try { ++ const out = pointAddScalarNative(p, tweak, isCompressed); ++ if (out.length === 0) { ++ throw new Error("Tweaked point at infinity"); ++ } ++ ++ const con = console; ++ con.log('pointAddScalarNative output:', out); ++ ++ // Native returns ArrayBuffer or Uint8Array ++ return out instanceof ArrayBuffer ? new Uint8Array(out) : out; ++ } catch (e) { /* fall back to JS path below */ ++ if (e instanceof Error && e.message === "Tweaked point at infinity") { ++ throw e; ++ } ++ const con = console; ++ con.log('pointAddScalarNative failed, using JS fallback', e); ++ } ++ } else { ++ const con = console; ++ con.log('pointAddScalarNative not available, using JS fallback'); ++ } ++ // Fallback to JS implementation + const P = fromHex(p); + const t = normalizeScalar(tweak); + // multiplyAndAddUnsafe(P, scalar, 1) = P + scalar*G +@@ -361,6 +407,18 @@ function sign(h, d, e) { + if (!isExtraData(e)) { + throw new Error(THROW_BAD_EXTRA_DATA); + } ++ ++ // Try native first ++ if (typeof signNative === 'function') { ++ try { ++ const result = signNative(d, h); ++ return result instanceof ArrayBuffer ? new Uint8Array(result) : result; ++ } catch (_) { ++ // fallback ++ } ++ } ++ ++ // JS fallback + return secp256k1.secp256k1.sign(h, d, { extraEntropy: e }).toCompactRawBytes(); + } + +@@ -381,7 +439,7 @@ function signRecoverable(h, d, e) { + }; + } + +-function signSchnorr(h, d, e) { ++function signSchnorr(h, d, e, forceJs = false) { + if (!isPrivate(d)) { + throw new Error(THROW_BAD_PRIVATE); + } +@@ -391,6 +449,18 @@ function signSchnorr(h, d, e) { + if (!isExtraData(e)) { + throw new Error(THROW_BAD_EXTRA_DATA); + } ++ ++ // Try native first ++ if (typeof signSchnorrNative === 'function' && !forceJs) { ++ try { ++ const result = signSchnorrNative(h, d, e); ++ return result instanceof ArrayBuffer ? new Uint8Array(result) : result; ++ } catch (_) { ++ // fallback to JS implementation ++ } ++ } ++ ++ // JS fallback + return secp256k1.schnorr.sign(h, d, e); + } + +@@ -428,10 +498,21 @@ function verify(h, Q, signature, strict) { + if (!isHash(h)) { + throw new Error(THROW_BAD_SCALAR); + } ++ ++ // Try native verify first ++ if (typeof verifyNative === 'function') { ++ try { ++ return !!verifyNative(Q, h, signature); ++ } catch (_) { ++ // fallback ++ } ++ } ++ ++ // JS fallback + return secp256k1.secp256k1.verify(signature, h, Q, { lowS: strict }); + } + +-function verifySchnorr(h, Q, signature) { ++function verifySchnorr(h, Q, signature, forceJs = false) { + if (!isXOnlyPoint(Q)) { + throw new Error(THROW_BAD_POINT); + } +@@ -441,6 +522,17 @@ function verifySchnorr(h, Q, signature) { + if (!isHash(h)) { + throw new Error(THROW_BAD_SCALAR); + } ++ ++ // Try native verify first ++ if (typeof verifySchnorrNative === 'function' && !forceJs) { ++ try { ++ return !!verifySchnorrNative(Q, h, signature); ++ } catch (_) { ++ // fallback to JS implementation ++ } ++ } ++ ++ // JS fallback + return secp256k1.schnorr.verify(signature, h, Q); + } + +@@ -465,3 +557,4 @@ exports.verifySchnorr = verifySchnorr; + exports.xOnlyPointAddTweak = xOnlyPointAddTweak; + exports.xOnlyPointFromPoint = xOnlyPointFromPoint; + exports.xOnlyPointFromScalar = xOnlyPointFromScalar; ++ +diff --git a/package.json b/package.json +index 8966c2604340ecac199be87de4517dd5b2d81a0a..13aea201ba47186003710bc30ecccc1a89118e7e 100644 +--- a/package.json ++++ b/package.json +@@ -42,5 +42,35 @@ + }, + "dependencies": { + "@noble/curves": "^1.7.0" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" + } + } diff --git a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch new file mode 100644 index 0000000000..85963a6638 --- /dev/null +++ b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch @@ -0,0 +1,209 @@ +diff --git a/.DS_Store b/.DS_Store +new file mode 100644 +index 0000000000000000000000000000000000000000..3117a90a0d1c52a564b798d5ebe84c3506d72932 +--- /dev/null ++++ b/.DS_Store +@@ -0,0 +1 @@ ++ +\ No newline at end of file +diff --git a/abstract/weierstrass.js b/abstract/weierstrass.js +index a7a912fa46128bbc36eeefe67e6ba16855992917..7716bccc380e5d0e8eccbd7e4a2294b70114825c 100644 +--- a/abstract/weierstrass.js ++++ b/abstract/weierstrass.js +@@ -11,6 +11,29 @@ exports.ecdsa = ecdsa; + exports.weierstrassPoints = weierstrassPoints; + exports._legacyHelperEquat = _legacyHelperEquat; + exports.weierstrass = weierstrass; ++ ++const NativeAvalabsCrypto = require("react-native-nitro-avalabs-crypto"); ++const getPublicKeyFromNativeLib = NativeAvalabsCrypto.getPublicKey; ++const pointAddScalarNative = NativeAvalabsCrypto.pointAddScalar; ++const signNative = NativeAvalabsCrypto.sign; ++const verifyNative = NativeAvalabsCrypto.verify; ++const signSchnorrNative = NativeAvalabsCrypto.signSchnorr; ++const verifySchnorrNative = NativeAvalabsCrypto.verifySchnorr; ++// Native-backed helpers (forwarders) ++function _pointAddScalar(p, tweak, isCompressed) { ++ return pointAddScalarNative(p, tweak, isCompressed); ++} ++exports._pointAddScalar = _pointAddScalar; ++ ++function _signSchnorr(messageHash, secretKey) { ++ return signSchnorrNative(secretKey, messageHash); ++} ++exports._signSchnorr = _signSchnorr; ++ ++function _verifySchnorr(publicKey, messageHash, signature) { ++ return verifySchnorrNative(publicKey, messageHash, signature); ++} ++exports._verifySchnorr = _verifySchnorr; + /** + * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b. + * +@@ -915,7 +938,17 @@ function ecdh(Point, ecdhOpts = {}) { + * @returns Public key, full when isCompressed=false; short when isCompressed=true + */ + function getPublicKey(secretKey, isCompressed = true) { +- return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); ++ // const con = console; ++ // con.log(" aaaaa Getting public key for secret key!"); ++ // con.log("aaaaa Getting public key for secret key:", secretKey.toString('hex')); ++ //const res = Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); ++ const nativeRes = getPublicKeyFromNativeLib(secretKey, isCompressed); ++ ++ ++ // con.log("aaaaa native res", nativeRes.toString('hex')); ++ // con.log("aaaaa JS res", res.toString('hex')); ++ ++ return nativeRes; + } + function keygen(seed) { + const secretKey = randomSecretKey(seed); +@@ -1232,6 +1265,14 @@ function ecdsa(Point, hash, ecdsaOpts = {}) { + * ``` + */ + function sign(message, secretKey, opts = {}) { ++ // Prefer native DER-sign, then wrap into Signature instance for compatibility ++ try { ++ const der = signNative(secretKey, message); ++ const bytes = der instanceof ArrayBuffer ? new Uint8Array(der) : der; ++ return Signature.fromBytes(bytes, 'der'); ++ } catch (_) { ++ // fall through to JS implementation below ++ } + message = (0, utils_ts_1.ensureBytes)('message', message); + const { seed, k2sig } = prepSig(message, secretKey, opts); // Steps A, D of RFC6979 3.2. + const drbg = (0, utils_ts_1.createHmacDrbg)(hash.outputLen, Fn.BYTES, hmac); +@@ -1287,6 +1328,12 @@ function ecdsa(Point, hash, ecdsaOpts = {}) { + * ``` + */ + function verify(signature, message, publicKey, opts = {}) { ++ // Fast-path: native boolean verify if available ++ try { ++ return !!verifyNative(publicKey, message, signature); ++ } catch (_) { ++ // fall through to JS implementation below ++ } + const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts); + publicKey = (0, utils_ts_1.ensureBytes)('publicKey', publicKey); + message = validateMsgAndHash((0, utils_ts_1.ensureBytes)('message', message), prehash); +diff --git a/esm/package.json b/esm/package.json +index 7f1fc33ddaa81f23f560a391b4828ecae59edd5d..8220a13ecc5a52f8db9612fdc7ef5e2a28824321 100644 +--- a/esm/package.json ++++ b/esm/package.json +@@ -1,4 +1,34 @@ + { + "type": "module", +- "sideEffects": false ++ "sideEffects": false, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } + } +diff --git a/package.json b/package.json +index 852104a522d6a005c05b5411f36c50bfb76b48bc..8d3a2182f7b60506e6301a432173bc895c7302bd 100644 +--- a/package.json ++++ b/package.json +@@ -291,5 +291,35 @@ + "schnorr", + "fft" + ], +- "funding": "https://paulmillr.com/funding/" ++ "funding": "https://paulmillr.com/funding/", ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } + } +diff --git a/src/package.json b/src/package.json +index 3dbc1ca591c0557e35b6004aeba250e6a70b56e3..08d985c3d4a0bd8e6c4ffd6401312e9e4ab2246d 100644 +--- a/src/package.json ++++ b/src/package.json +@@ -1,3 +1,33 @@ + { +- "type": "module" ++ "type": "module", ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } + } diff --git a/.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch b/.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch new file mode 100644 index 0000000000..b194966508 --- /dev/null +++ b/.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch @@ -0,0 +1,4408 @@ +diff --git a/dist/index.cjs.js b/dist/index.cjs.js +index e05379afccb3248082af23865d3bf7cf08fc8d30..ca69b83d089808b879a5b500103c0611fc6e87ea 100644 +--- a/dist/index.cjs.js ++++ b/dist/index.cjs.js +@@ -1,2 +1,19 @@ +-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var k=require("events"),Ft=require("@walletconnect/keyvaluestorage"),K=require("@walletconnect/heartbeat"),d=require("@walletconnect/logger"),N=require("@walletconnect/types"),se=require("@walletconnect/safe-json"),re=require("@walletconnect/relay-auth"),c=require("@walletconnect/utils"),Vt=require("uint8arrays"),u=require("@walletconnect/time"),Bt=require("@walletconnect/jsonrpc-provider"),T=require("@walletconnect/jsonrpc-utils"),kt=require("@walletconnect/jsonrpc-ws-connection"),$t=require("lodash.isequal");function Z(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}function Kt(o){if(o&&o.__esModule)return o;var e=Object.create(null);return o&&Object.keys(o).forEach(function(t){if(t!=="default"){var s=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:function(){return o[t]}})}}),e.default=o,Object.freeze(e)}var qt=Z(k),jt=Z(Ft),Q=Kt(re),Yt=Z(kt),Gt=Z($t);function Ht(o,e){if(o.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),s=0;s>>0,C=new Uint8Array(L);_!==w;){for(var U=g[_],V=0,P=L-1;(U!==0||V>>0,C[P]=U%a>>>0,U=U/a>>>0;if(U!==0)throw new Error("Non-zero carry");v=V,_++}for(var M=L-v;M!==L&&C[M]===0;)M++;for(var W=h.repeat(E);M>>0,L=new Uint8Array(w);g[E];){var C=t[g.charCodeAt(E)];if(C===255)return;for(var U=0,V=w-1;(C!==0||U<_)&&V!==-1;V--,U++)C+=a*L[V]>>>0,L[V]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");_=U,E++}if(g[E]!==" "){for(var P=w-_;P!==w&&L[P]===0;)P++;for(var M=new Uint8Array(v+(w-P)),W=v;P!==w;)M[W++]=L[P++];return M}}}function m(g){var E=b(g);if(E)return E;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:b,decode:m}}var Jt=Ht,Xt=Jt;const ye=o=>{if(o instanceof Uint8Array&&o.constructor.name==="Uint8Array")return o;if(o instanceof ArrayBuffer)return new Uint8Array(o);if(ArrayBuffer.isView(o))return new Uint8Array(o.buffer,o.byteOffset,o.byteLength);throw new Error("Unknown type, must be binary type")},Wt=o=>new TextEncoder().encode(o),Zt=o=>new TextDecoder().decode(o);class Qt{constructor(e,t,s){this.name=e,this.prefix=t,this.baseEncode=s}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class ei{constructor(e,t,s){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=s}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ee(this,e)}}class ti{constructor(e){this.decoders=e}or(e){return Ee(this,e)}decode(e){const t=e[0],s=this.decoders[t];if(s)return s.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ee=(o,e)=>new ti({...o.decoders||{[o.prefix]:o},...e.decoders||{[e.prefix]:e}});class ii{constructor(e,t,s,i){this.name=e,this.prefix=t,this.baseEncode=s,this.baseDecode=i,this.encoder=new Qt(e,t,s),this.decoder=new ei(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const ee=({name:o,prefix:e,encode:t,decode:s})=>new ii(o,e,t,s),Y=({prefix:o,name:e,alphabet:t})=>{const{encode:s,decode:i}=Xt(t,e);return ee({prefix:o,name:e,encode:s,decode:r=>ye(i(r))})},si=(o,e,t,s)=>{const i={};for(let p=0;p=8&&(a-=8,n[l++]=255&h>>a)}if(a>=t||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return n},ri=(o,e,t)=>{const s=e[e.length-1]==="=",i=(1<t;)n-=t,r+=e[i&a>>n];if(n&&(r+=e[i&a<ee({prefix:e,name:o,encode(i){return ri(i,s,t)},decode(i){return si(i,s,t,o)}}),ni=ee({prefix:"\0",name:"identity",encode:o=>Zt(o),decode:o=>Wt(o)});var oi=Object.freeze({__proto__:null,identity:ni});const ai=f({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ci=Object.freeze({__proto__:null,base2:ai});const hi=f({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var li=Object.freeze({__proto__:null,base8:hi});const ui=Y({prefix:"9",name:"base10",alphabet:"0123456789"});var gi=Object.freeze({__proto__:null,base10:ui});const di=f({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),pi=f({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var yi=Object.freeze({__proto__:null,base16:di,base16upper:pi});const Ei=f({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Di=f({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),_i=f({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bi=f({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),mi=f({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),fi=f({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vi=f({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),wi=f({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ti=f({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ii=Object.freeze({__proto__:null,base32:Ei,base32upper:Di,base32pad:_i,base32padupper:bi,base32hex:mi,base32hexupper:fi,base32hexpad:vi,base32hexpadupper:wi,base32z:Ti});const Ri=Y({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ci=Y({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Si=Object.freeze({__proto__:null,base36:Ri,base36upper:Ci});const Oi=Y({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Pi=Y({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ni=Object.freeze({__proto__:null,base58btc:Oi,base58flickr:Pi});const Ai=f({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),xi=f({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Li=f({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Ui=f({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var zi=Object.freeze({__proto__:null,base64:Ai,base64pad:xi,base64url:Li,base64urlpad:Ui});const De=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Mi=De.reduce((o,e,t)=>(o[t]=e,o),[]),Fi=De.reduce((o,e,t)=>(o[e.codePointAt(0)]=t,o),[]);function Vi(o){return o.reduce((e,t)=>(e+=Mi[t],e),"")}function Bi(o){const e=[];for(const t of o){const s=Fi[t.codePointAt(0)];if(s===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}const ki=ee({prefix:"\u{1F680}",name:"base256emoji",encode:Vi,decode:Bi});var $i=Object.freeze({__proto__:null,base256emoji:ki}),Ki=be,_e=128,qi=127,ji=~qi,Yi=Math.pow(2,31);function be(o,e,t){e=e||[],t=t||0;for(var s=t;o>=Yi;)e[t++]=o&255|_e,o/=128;for(;o&ji;)e[t++]=o&255|_e,o>>>=7;return e[t]=o|0,be.bytes=t-s+1,e}var Gi=ne,Hi=128,me=127;function ne(o,s){var t=0,s=s||0,i=0,r=s,n,a=o.length;do{if(r>=a)throw ne.bytes=0,new RangeError("Could not decode varint");n=o[r++],t+=i<28?(n&me)<=Hi);return ne.bytes=r-s,t}var Ji=Math.pow(2,7),Xi=Math.pow(2,14),Wi=Math.pow(2,21),Zi=Math.pow(2,28),Qi=Math.pow(2,35),es=Math.pow(2,42),ts=Math.pow(2,49),is=Math.pow(2,56),ss=Math.pow(2,63),rs=function(o){return o(fe.encode(o,e,t),e),we=o=>fe.encodingLength(o),oe=(o,e)=>{const t=e.byteLength,s=we(o),i=s+we(t),r=new Uint8Array(i+t);return ve(o,r,0),ve(t,r,s),r.set(e,i),new os(o,t,e,r)};class os{constructor(e,t,s,i){this.code=e,this.size=t,this.digest=s,this.bytes=i}}const Te=({name:o,code:e,encode:t})=>new as(o,e,t);class as{constructor(e,t,s){this.name=e,this.code=t,this.encode=s}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?oe(this.code,t):t.then(s=>oe(this.code,s))}else throw Error("Unknown type, must be binary type")}}const Ie=o=>async e=>new Uint8Array(await crypto.subtle.digest(o,e)),cs=Te({name:"sha2-256",code:18,encode:Ie("SHA-256")}),hs=Te({name:"sha2-512",code:19,encode:Ie("SHA-512")});var ls=Object.freeze({__proto__:null,sha256:cs,sha512:hs});const Re=0,us="identity",Ce=ye,gs=o=>oe(Re,Ce(o)),ds={code:Re,name:us,encode:Ce,digest:gs};var ps=Object.freeze({__proto__:null,identity:ds});new TextEncoder,new TextDecoder;const Se={...oi,...ci,...li,...gi,...yi,...Ii,...Si,...Ni,...zi,...$i};({...ls,...ps});function ys(o=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(o):new Uint8Array(o)}function Oe(o,e,t,s){return{name:o,prefix:e,encoder:{name:o,prefix:e,encode:t},decoder:{decode:s}}}const Pe=Oe("utf8","u",o=>"u"+new TextDecoder("utf8").decode(o),o=>new TextEncoder().encode(o.substring(1))),ae=Oe("ascii","a",o=>{let e="a";for(let t=0;t{o=o.substring(1);const e=ys(o.length);for(let t=0;t{if(!this.initialized){const s=await this.getKeyChain();typeof s<"u"&&(this.keychain=s),this.initialized=!0}},this.has=s=>(this.isInitialized(),this.keychain.has(s)),this.set=async(s,i)=>{this.isInitialized(),this.keychain.set(s,i),await this.persist()},this.get=s=>{this.isInitialized();const i=this.keychain.get(s);if(typeof i>"u"){const{message:r}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${s}`);throw new Error(r)}return i},this.del=async s=>{this.isInitialized(),this.keychain.delete(s),await this.persist()},this.core=e,this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class pt{constructor(e,t,s){this.core=e,this.logger=t,this.name=xe,this.randomSessionIdentifier=c.generateRandomBytes32(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=i=>(this.isInitialized(),this.keychain.has(i)),this.getClientId=async()=>{this.isInitialized();const i=await this.getClientSeed(),r=Q.generateKeyPair(i);return Q.encodeIss(r.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const i=c.generateKeyPair();return this.setPrivateKey(i.publicKey,i.privateKey)},this.signJWT=async i=>{this.isInitialized();const r=await this.getClientSeed(),n=Q.generateKeyPair(r),a=this.randomSessionIdentifier,h=Le;return await Q.signJWT(a,i,h,n)},this.generateSharedKey=(i,r,n)=>{this.isInitialized();const a=this.getPrivateKey(i),h=c.deriveSymKey(a,r);return this.setSymKey(h,n)},this.setSymKey=async(i,r)=>{this.isInitialized();const n=r||c.hashKey(i);return await this.keychain.set(n,i),n},this.deleteKeyPair=async i=>{this.isInitialized(),await this.keychain.del(i)},this.deleteSymKey=async i=>{this.isInitialized(),await this.keychain.del(i)},this.encode=async(i,r,n)=>{this.isInitialized();const a=c.validateEncoding(n),h=se.safeJsonStringify(r);if(c.isTypeTwoEnvelope(a))return c.encodeTypeTwoEnvelope(h,n?.encoding);if(c.isTypeOneEnvelope(a)){const b=a.senderPublicKey,m=a.receiverPublicKey;i=await this.generateSharedKey(b,m)}const l=this.getSymKey(i),{type:p,senderPublicKey:y}=a;return c.encrypt({type:p,symKey:l,message:h,senderPublicKey:y,encoding:n?.encoding})},this.decode=async(i,r,n)=>{this.isInitialized();const a=c.validateDecoding(r,n);if(c.isTypeTwoEnvelope(a)){const h=c.decodeTypeTwoEnvelope(r,n?.encoding);return se.safeJsonParse(h)}if(c.isTypeOneEnvelope(a)){const h=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(h,l)}try{const h=this.getSymKey(i),l=c.decrypt({symKey:h,encoded:r,encoding:n?.encoding});return se.safeJsonParse(l)}catch(h){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(h)}},this.getPayloadType=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return c.decodeTypeByte(n.type)},this.getPayloadSenderPublicKey=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return n.senderPublicKey?Vt.toString(n.senderPublicKey,c.BASE16):void 0},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.keychain=s||new dt(this.core,this.logger)}get context(){return d.getLoggerContext(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(le)}catch{e=c.generateRandomBytes32(),await this.keychain.set(le,e)}return Ds(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class yt extends N.IMessageTracker{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=Me,this.version=Fe,this.initialized=!1,this.storagePrefix=A,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const s=await this.getRelayerMessages();typeof s<"u"&&(this.messages=s),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(s){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(s)}finally{this.initialized=!0}}},this.set=async(s,i)=>{this.isInitialized();const r=c.hashMessage(i);let n=this.messages.get(s);return typeof n>"u"&&(n={}),typeof n[r]<"u"||(n[r]=i,this.messages.set(s,n),await this.persist()),r},this.get=s=>{this.isInitialized();let i=this.messages.get(s);return typeof i>"u"&&(i={}),i},this.has=(s,i)=>{this.isInitialized();const r=this.get(s),n=c.hashMessage(i);return typeof r[n]<"u"},this.del=async s=>{this.isInitialized(),this.messages.delete(s),await this.persist()},this.logger=d.generateChildLogger(e,this.name),this.core=t}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Os extends N.IPublisher{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new k.EventEmitter,this.name=Be,this.queue=new Map,this.publishTimeout=u.toMiliseconds(u.ONE_MINUTE),this.failedPublishTimeout=u.toMiliseconds(u.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(s,i,r)=>{var n;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:s,message:i,opts:r}});const a=r?.ttl||Ve,h=c.getRelayProtocolName(r),l=r?.prompt||!1,p=r?.tag||0,y=r?.id||T.getBigIntRpcId().toString(),b={topic:s,message:i,opts:{ttl:a,relay:h,prompt:l,tag:p,id:y,attestation:r?.attestation}},m=`Failed to publish payload, please try again. id:${y} tag:${p}`,g=Date.now();let E,v=1;try{for(;E===void 0;){if(Date.now()-g>this.publishTimeout)throw new Error(m);this.logger.trace({id:y,attempts:v},`publisher.publish - attempt ${v}`),E=await await c.createExpiringPromise(this.rpcPublish(s,i,a,h,l,p,y,r?.attestation).catch(_=>this.logger.warn(_)),this.publishTimeout,m),v++,E||await new Promise(_=>setTimeout(_,this.failedPublishTimeout))}this.relayer.events.emit(I.publish,b),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:y,topic:s,message:i,opts:r}})}catch(_){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(_),(n=r?.internal)!=null&&n.throwOnFailedPublish)throw _;this.queue.set(y,b)}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.registerEventListeners()}get context(){return d.getLoggerContext(this.logger)}rpcPublish(e,t,s,i,r,n,a,h){var l,p,y,b;const m={method:c.getRelayProtocolApi(i.protocol).publish,params:{topic:e,message:t,ttl:s,prompt:r,tag:n,attestation:h},id:a};return c.isUndefined((l=m.params)==null?void 0:l.prompt)&&((p=m.params)==null||delete p.prompt),c.isUndefined((y=m.params)==null?void 0:y.tag)&&((b=m.params)==null||delete b.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:m}),this.relayer.request(m)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:t,message:s,opts:i}=e;await this.publish(t,s,i)})}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(I.connection_stalled);return}this.checkQueue()}),this.relayer.on(I.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Ps{constructor(){this.map=new Map,this.set=(e,t)=>{const s=this.get(e);this.exists(e,t)||this.map.set(e,[...s,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const s=this.get(e);if(!this.exists(e,t))return;const i=s.filter(r=>r!==t);if(!i.length){this.map.delete(e);return}this.map.set(e,i)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Ns=Object.defineProperty,As=Object.defineProperties,xs=Object.getOwnPropertyDescriptors,Et=Object.getOwnPropertySymbols,Ls=Object.prototype.hasOwnProperty,Us=Object.prototype.propertyIsEnumerable,Dt=(o,e,t)=>e in o?Ns(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,J=(o,e)=>{for(var t in e||(e={}))Ls.call(e,t)&&Dt(o,t,e[t]);if(Et)for(var t of Et(e))Us.call(e,t)&&Dt(o,t,e[t]);return o},pe=(o,e)=>As(o,xs(e));class _t extends N.ISubscriber{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Ps,this.events=new k.EventEmitter,this.name=He,this.version=Je,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=A,this.subscribeTimeout=u.toMiliseconds(u.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.pendingBatchMessages=[],this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(s,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}});try{const r=c.getRelayProtocolName(i),n={topic:s,relay:r,transportType:i?.transportType};this.pending.set(s,n);const a=await this.rpcSubscribe(s,r,i?.transportType);return typeof a=="string"&&(this.onSubscribe(a,n),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}})),a}catch(r){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(r),r}},this.unsubscribe=async(s,i)=>{await this.restartToComplete(),this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(s,i.id,i):await this.unsubscribeByTopic(s,i)},this.isSubscribed=async s=>{if(this.topics.includes(s))return!0;const i=`${this.pendingSubscriptionWatchLabel}_${s}`;return await new Promise((r,n)=>{const a=new u.Watch;a.start(i);const h=setInterval(()=>{!this.pending.has(s)&&this.topics.includes(s)&&(clearInterval(h),a.stop(i),r(!0)),a.elapsed(i)>=Xe&&(clearInterval(h),a.stop(i),n(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{this.restartInProgress=!0,await this.restore(),await this.reset(),this.restartInProgress=!1},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.clientId=""}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let s=!1;try{s=this.getSubscription(e).topic===t}catch{}return s}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const s=this.topicMap.get(e);await Promise.all(s.map(async i=>await this.unsubscribeById(e,i,t)))}async unsubscribeById(e,t,s){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}});try{const i=c.getRelayProtocolName(s);await this.rpcUnsubscribe(e,t,i);const r=c.getSdkError("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,r),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,t,s=B.relay){s===B.relay&&await this.restartToComplete();const i={method:c.getRelayProtocolApi(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{const r=c.hashMessage(e+this.clientId);return s===B.link_mode?(setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(i).catch(n=>this.logger.warn(n))},u.toMiliseconds(u.ONE_SECOND)),r):await await c.createExpiringPromise(this.relayer.request(i).catch(n=>this.logger.warn(n)),this.subscribeTimeout)?r:null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(I.connection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});try{return await await c.createExpiringPromise(this.relayer.request(s).catch(i=>this.logger.warn(i)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchFetchMessages,params:{topics:e.map(r=>r.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});let i;try{i=await await c.createExpiringPromise(this.relayer.request(s).catch(r=>this.logger.warn(r)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}return i}rpcUnsubscribe(e,t,s){const i={method:c.getRelayProtocolApi(s.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,t){this.setSubscription(e,pe(J({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,J({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,s){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,s),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,J({},t)),this.topicMap.set(t.topic,e),this.events.emit(x.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const s=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(s.topic,e),this.events.emit(x.deleted,pe(J({},s),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(x.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let t=0;t"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){if(!e.length)return;const t=await this.rpcBatchSubscribe(e);c.isValidArray(t)&&this.onBatchSubscribe(t.map((s,i)=>pe(J({},e[i]),{id:s})))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(this.pendingBatchMessages=this.pendingBatchMessages.concat(t.messages))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;const e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e),this.pendingBatchMessages.length&&(await this.relayer.handleBatchMessageEvents(this.pendingBatchMessages),this.pendingBatchMessages=[])}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.events.on(x.created,async e=>{const t=x.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()}),this.events.on(x.deleted,async e=>{const t=x.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen(),this.restartInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.restartInProgress||(clearInterval(t),e())},this.pollingInterval)})}}var zs=Object.defineProperty,bt=Object.getOwnPropertySymbols,Ms=Object.prototype.hasOwnProperty,Fs=Object.prototype.propertyIsEnumerable,mt=(o,e,t)=>e in o?zs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Vs=(o,e)=>{for(var t in e||(e={}))Ms.call(e,t)&&mt(o,t,e[t]);if(bt)for(var t of bt(e))Fs.call(e,t)&&mt(o,t,e[t]);return o};class ft extends N.IRelayer{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new k.EventEmitter,this.name=Ke,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=u.toMiliseconds(u.THIRTY_SECONDS+u.ONE_SECOND),this.request=async t=>{var s,i;this.logger.debug("Publishing Request Payload");const r=t.id||T.getBigIntRpcId().toString();await this.toEstablishConnection();try{const n=this.provider.request(t);this.requestsInFlight.set(r,{promise:n,request:t}),this.logger.trace({id:r,method:t.method,topic:(s=t.params)==null?void 0:s.topic},"relayer.request - attempt to publish...");const a=await new Promise(async(h,l)=>{const p=()=>{l(new Error(`relayer.request - publish interrupted, id: ${r}`))};this.provider.on(R.disconnect,p);const y=await n;this.provider.off(R.disconnect,p),h(y)});return this.logger.trace({id:r,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - published"),a}catch(n){throw this.logger.debug(`Failed to Publish Request: ${r}`),n}finally{this.requestsInFlight.delete(r)}},this.resetPingTimeout=()=>{if(c.isNode())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,s,i;(i=(s=(t=this.provider)==null?void 0:t.connection)==null?void 0:s.socket)==null||i.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.trace("relayer connected"),this.startPingTimeout(),this.events.emit(I.connect)},this.onDisconnectHandler=()=>{this.logger.trace("relayer disconnected"),this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.error(t),this.events.emit(I.error,t),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(R.payload,this.onPayloadHandler),this.provider.on(R.connect,this.onConnectHandler),this.provider.on(R.disconnect,this.onDisconnectHandler),this.provider.on(R.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?d.generateChildLogger(e.logger,this.name):d.pino(d.getDefaultLoggerOptions({level:e.logger||$e})),this.messages=new yt(this.logger,e.core),this.subscriber=new _t(this,this.logger),this.publisher=new Os(this,this.logger),this.relayUrl=e?.relayUrl||ue,this.projectId=e.projectId,this.bundleId=c.getBundleId(),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e)}}get context(){return d.getLoggerContext(this.logger)}get connected(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===1}get connecting(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===0}async publish(e,t,s){this.isInitialized(),await this.publisher.publish(e,t,s),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:B.relay})}async subscribe(e,t){var s;this.isInitialized(),t?.transportType==="relay"&&await this.toEstablishConnection();let i=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",r;const n=a=>{a.topic===e&&(this.subscriber.off(x.created,n),r())};return await Promise.all([new Promise(a=>{r=a,this.subscriber.on(x.created,n)}),new Promise(async a=>{i=await this.subscriber.subscribe(e,t)||i,a()})]),i}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){if(!this.hasExperiencedNetworkDisruption&&this.connected&&this.requestsInFlight.size>0)try{await Promise.all(Array.from(this.requestsInFlight.values()).map(e=>e.promise))}catch(e){this.logger.warn(e)}this.hasExperiencedNetworkDisruption||this.connected?await c.createExpiringPromise(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),await this.createProvider(),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;try{await new Promise(async(t,s)=>{const i=()=>{this.provider.off(R.disconnect,i),s(new Error("Connection interrupted while trying to subscribe"))};this.provider.on(R.disconnect,i),await c.createExpiringPromise(this.provider.connect(),u.toMiliseconds(u.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(r=>{s(r)}).finally(()=>{clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),this.subscriber.start().catch(r=>{this.logger.error(r),this.onDisconnectHandler()}),this.hasExperiencedNetworkDisruption=!1,t()})}catch(t){this.logger.error(t);const s=t;if(this.hasExperiencedNetworkDisruption=!0,!this.isConnectionStalled(s.message))throw t}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await c.isOnline())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((s,i)=>s.publishedAt-i.publishedAt);this.logger.trace(`Batch of ${t.length} message events sorted`);for(const s of t)try{await this.onMessageEvent(s)}catch(i){this.logger.warn(i)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:s}=e;if(!t.sessionExists){const i=c.calcExpiry(u.FIVE_MINUTES),r={topic:s,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(s,r)}this.events.emit(I.message,e),await this.recordMessageEvent(e)}startPingTimeout(){var e,t,s,i,r;if(c.isNode())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((r=(i=(s=this.provider)==null?void 0:s.connection)==null?void 0:i.socket)==null||r.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(n){this.logger.warn(n)}}isConnectionStalled(e){return this.staleConnectionErrors.some(t=>e.includes(t))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Bt.JsonRpcProvider(new Yt.default(c.formatRelayRpcUrl({sdkVersion:ge,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:s}=e;await this.messages.set(t,s)}async shouldIgnoreMessageEvent(e){const{topic:t,message:s}=e;if(!s||s.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${s}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`),!0;const i=this.messages.has(t,s);return i&&this.logger.debug(`Ignoring duplicate message: ${s}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),T.isJsonRpcRequest(e)){if(!e.method.endsWith(qe))return;const t=e.params,{topic:s,message:i,publishedAt:r,attestation:n}=t.data,a={topic:s,message:i,publishedAt:r,transportType:B.relay,attestation:n};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Vs({type:"event",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else T.isJsonRpcResponse(e)&&this.events.emit(I.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(I.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=T.formatJsonRpcResult(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(R.payload,this.onPayloadHandler),this.provider.off(R.connect,this.onConnectHandler),this.provider.off(R.disconnect,this.onDisconnectHandler),this.provider.off(R.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await c.isOnline();c.subscribeToNetworkChange(async t=>{e!==t&&(e=t,t?await this.restartTransport().catch(s=>this.logger.error(s)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.requestsInFlight.clear(),clearTimeout(this.pingTimeout),this.events.emit(I.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},u.toMiliseconds(je))))}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&(this.connectionAttemptInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.connected&&(clearInterval(t),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var Bs=Object.defineProperty,vt=Object.getOwnPropertySymbols,ks=Object.prototype.hasOwnProperty,$s=Object.prototype.propertyIsEnumerable,wt=(o,e,t)=>e in o?Bs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Tt=(o,e)=>{for(var t in e||(e={}))ks.call(e,t)&&wt(o,t,e[t]);if(vt)for(var t of vt(e))$s.call(e,t)&&wt(o,t,e[t]);return o};class It extends N.IStore{constructor(e,t,s,i=A,r=void 0){super(e,t,s,i),this.core=e,this.logger=t,this.name=s,this.map=new Map,this.version=Ye,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>{this.getKey&&n!==null&&!c.isUndefined(n)?this.map.set(this.getKey(n),n):c.isProposalStruct(n)?this.map.set(n.id,n):c.isSessionStruct(n)&&this.map.set(n.topic,n)}),this.cached=[],this.initialized=!0)},this.set=async(n,a)=>{this.isInitialized(),this.map.has(n)?await this.update(n,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:n,value:a}),this.map.set(n,a),await this.persist())},this.get=n=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:n}),this.getData(n)),this.getAll=n=>(this.isInitialized(),n?this.values.filter(a=>Object.keys(n).every(h=>Gt.default(a[h],n[h]))):this.values),this.update=async(n,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:n,update:a});const h=Tt(Tt({},this.getData(n)),a);this.map.set(n,h),await this.persist()},this.delete=async(n,a)=>{this.isInitialized(),this.map.has(n)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:n,reason:a}),this.map.delete(n),this.addToRecentlyDeleted(n),await this.persist())},this.logger=d.generateChildLogger(t,this.name),this.storagePrefix=i,this.getKey=r}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(s),new Error(s)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Rt{constructor(e,t){this.core=e,this.logger=t,this.name=We,this.version=Ze,this.events=new qt.default,this.initialized=!1,this.storagePrefix=A,this.ignoredPayloadTypes=[c.TYPE_1],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:s})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...s])]},this.create=async s=>{this.isInitialized();const i=c.generateRandomBytes32(),r=await this.core.crypto.setSymKey(i),n=c.calcExpiry(u.FIVE_MINUTES),a={protocol:ke},h={topic:r,expiry:n,relay:a,active:!1},l=c.formatUri({protocol:this.core.protocol,version:this.core.version,topic:r,symKey:i,relay:a,expiryTimestamp:n,methods:s?.methods});return this.core.expirer.set(r,n),await this.pairings.set(r,h),await this.core.relayer.subscribe(r,{transportType:s?.transportType}),{topic:r,uri:l}},this.pair=async s=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:s?.uri,trace:[z.pairing_started]}});this.isValidPair(s,i);const{topic:r,symKey:n,relay:a,expiryTimestamp:h,methods:l}=c.parseUri(s.uri);i.props.properties.topic=r,i.addTrace(z.pairing_uri_validation_success),i.addTrace(z.pairing_uri_not_expired);let p;if(this.pairings.keys.includes(r)){if(p=this.pairings.get(r),i.addTrace(z.existing_pairing),p.active)throw i.setError(F.active_pairing_already_exists),new Error(`Pairing already exists: ${r}. Please try again with a new connection URI.`);i.addTrace(z.pairing_not_expired)}const y=h||c.calcExpiry(u.FIVE_MINUTES),b={topic:r,relay:a,expiry:y,active:!1,methods:l};this.core.expirer.set(r,y),await this.pairings.set(r,b),i.addTrace(z.store_new_pairing),s.activatePairing&&await this.activate({topic:r}),this.events.emit(G.create,b),i.addTrace(z.emit_inactive_pairing),this.core.crypto.keychain.has(r)||await this.core.crypto.setSymKey(n,r),i.addTrace(z.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(F.no_internet_connection)}try{await this.core.relayer.subscribe(r,{relay:a})}catch(m){throw i.setError(F.subscribe_pairing_topic_failure),m}return i.addTrace(z.subscribe_pairing_topic_success),b},this.activate=async({topic:s})=>{this.isInitialized();const i=c.calcExpiry(u.THIRTY_DAYS);this.core.expirer.set(s,i),await this.pairings.update(s,{active:!0,expiry:i})},this.ping=async s=>{this.isInitialized(),await this.isValidPing(s);const{topic:i}=s;if(this.pairings.keys.includes(i)){const r=await this.sendRequest(i,"wc_pairingPing",{}),{done:n,resolve:a,reject:h}=c.createDelayedPromise();this.events.once(c.engineEvent("pairing_ping",r),({error:l})=>{l?h(l):a()}),await n()}},this.updateExpiry=async({topic:s,expiry:i})=>{this.isInitialized(),await this.pairings.update(s,{expiry:i})},this.updateMetadata=async({topic:s,metadata:i})=>{this.isInitialized(),await this.pairings.update(s,{peerMetadata:i})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async s=>{this.isInitialized(),await this.isValidDisconnect(s);const{topic:i}=s;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",c.getSdkError("USER_DISCONNECTED")),await this.deletePairing(i))},this.sendRequest=async(s,i,r)=>{const n=T.formatJsonRpcRequest(i,r),a=await this.core.crypto.encode(s,n),h=q[i].req;return this.core.history.set(s,n),this.core.relayer.publish(s,a,h),n.id},this.sendResult=async(s,i,r)=>{const n=T.formatJsonRpcResult(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.sendError=async(s,i,r)=>{const n=T.formatJsonRpcError(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method]?q[h.request.method].res:q.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.deletePairing=async(s,i)=>{await this.core.relayer.unsubscribe(s),await Promise.all([this.pairings.delete(s,c.getSdkError("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(s),i?Promise.resolve():this.core.expirer.del(s)])},this.cleanup=async()=>{const s=this.pairings.getAll().filter(i=>c.isExpired(i.expiry));await Promise.all(s.map(i=>this.deletePairing(i.topic)))},this.onRelayEventRequest=s=>{const{topic:i,payload:r}=s;switch(r.method){case"wc_pairingPing":return this.onPairingPingRequest(i,r);case"wc_pairingDelete":return this.onPairingDeleteRequest(i,r);default:return this.onUnknownRpcMethodRequest(i,r)}},this.onRelayEventResponse=async s=>{const{topic:i,payload:r}=s,n=(await this.core.history.get(i,r.id)).request.method;switch(n){case"wc_pairingPing":return this.onPairingPingResponse(i,r);default:return this.onUnknownRpcMethodResponse(n)}},this.onPairingPingRequest=async(s,i)=>{const{id:r}=i;try{this.isValidPing({topic:s}),await this.sendResult(r,s,!0),this.events.emit(G.ping,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onPairingPingResponse=(s,i)=>{const{id:r}=i;setTimeout(()=>{T.isJsonRpcResult(i)?this.events.emit(c.engineEvent("pairing_ping",r),{}):T.isJsonRpcError(i)&&this.events.emit(c.engineEvent("pairing_ping",r),{error:i.error})},500)},this.onPairingDeleteRequest=async(s,i)=>{const{id:r}=i;try{this.isValidDisconnect({topic:s}),await this.deletePairing(s),this.events.emit(G.delete,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onUnknownRpcMethodRequest=async(s,i)=>{const{id:r,method:n}=i;try{if(this.registeredMethods.includes(n))return;const a=c.getSdkError("WC_METHOD_UNSUPPORTED",n);await this.sendError(r,s,a),this.logger.error(a)}catch(a){await this.sendError(r,s,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=s=>{this.registeredMethods.includes(s)||this.logger.error(c.getSdkError("WC_METHOD_UNSUPPORTED",s))},this.isValidPair=(s,i)=>{var r;if(!c.isValidParams(s)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() params: ${s}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!c.isValidUrl(s.uri)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() uri: ${s.uri}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}const n=c.parseUri(s?.uri);if(!((r=n?.relay)!=null&&r.protocol)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!(n!=null&&n.symKey)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(n!=null&&n.expiryTimestamp&&u.toMiliseconds(n?.expiryTimestamp){if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`ping() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidDisconnect=async s=>{if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`disconnect() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidPairingTopic=async s=>{if(!c.isValidString(s,!1)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`pairing topic should be a string: ${s}`);throw new Error(i)}if(!this.pairings.keys.includes(s)){const{message:i}=c.getInternalError("NO_MATCHING_KEY",`pairing topic doesn't exist: ${s}`);throw new Error(i)}if(c.isExpired(this.pairings.get(s).expiry)){await this.deletePairing(s);const{message:i}=c.getInternalError("EXPIRED",`pairing topic: ${s}`);throw new Error(i)}},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.pairings=new It(this.core,this.logger,this.name,this.storagePrefix)}get context(){return d.getLoggerContext(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(I.message,async e=>{const{topic:t,message:s,transportType:i}=e;if(!this.pairings.keys.includes(t)||i===B.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(s)))return;const r=await this.core.crypto.decode(t,s);try{T.isJsonRpcRequest(r)?(this.core.history.set(t,r),this.onRelayEventRequest({topic:t,payload:r})):T.isJsonRpcResponse(r)&&(await this.core.history.resolve(r),await this.onRelayEventResponse({topic:t,payload:r}),this.core.history.delete(t,r.id))}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(O.expired,async e=>{const{topic:t}=c.parseExpirerTarget(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(G.expire,{topic:t}))})}}class Ct extends N.IJsonRpcHistory{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new k.EventEmitter,this.name=Qe,this.version=et,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.records.set(s.id,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(s,i,r)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:s,request:i,chainId:r}),this.records.has(i.id))return;const n={id:i.id,topic:s,request:{method:i.method,params:i.params||null},chainId:r,expiry:c.calcExpiry(u.THIRTY_DAYS)};this.records.set(n.id,n),this.persist(),this.events.emit(S.created,n)},this.resolve=async s=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:s}),!this.records.has(s.id))return;const i=await this.getRecord(s.id);typeof i.response>"u"&&(i.response=T.isJsonRpcError(s)?{error:s.error}:{result:s.result},this.records.set(i.id,i),this.persist(),this.events.emit(S.updated,i))},this.get=async(s,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:s,id:i}),await this.getRecord(i)),this.delete=(s,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(r=>{if(r.topic===s){if(typeof i<"u"&&r.id!==i)return;this.records.delete(r.id),this.events.emit(S.deleted,r)}}),this.persist()},this.exists=async(s,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===s:!1),this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const s={topic:t.topic,request:T.formatJsonRpcRequest(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(s)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(S.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(S.created,e=>{const t=S.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.updated,e=>{const t=S.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.deleted,e=>{const t=S.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{u.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(S.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class St extends N.IExpirer{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new k.EventEmitter,this.name=tt,this.version=it,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.expirations.set(s.target,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=s=>{try{const i=this.formatTarget(s);return typeof this.getExpiration(i)<"u"}catch{return!1}},this.set=(s,i)=>{this.isInitialized();const r=this.formatTarget(s),n={target:r,expiry:i};this.expirations.set(r,n),this.checkExpiry(r,n),this.events.emit(O.created,{target:r,expiration:n})},this.get=s=>{this.isInitialized();const i=this.formatTarget(s);return this.getExpiration(i)},this.del=s=>{if(this.isInitialized(),this.has(s)){const i=this.formatTarget(s),r=this.getExpiration(i);this.expirations.delete(i),this.events.emit(O.deleted,{target:i,expiration:r})}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return c.formatTopicTarget(e);if(typeof e=="number")return c.formatIdTarget(e);const{message:t}=c.getInternalError("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(O.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(s),new Error(s)}return t}checkExpiry(e,t){const{expiry:s}=t;u.toMiliseconds(s)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(O.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on(O.created,e=>{const t=O.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.expired,e=>{const t=O.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.deleted,e=>{const t=O.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}var D={};Object.defineProperty(D,"__esModule",{value:!0}),D.getLocalStorage=D.getLocalStorageOrThrow=D.getCrypto=D.getCryptoOrThrow=D.getLocation=D.getLocationOrThrow=D.getNavigator=D.getNavigatorOrThrow=Ot=D.getDocument=D.getDocumentOrThrow=D.getFromWindowOrThrow=D.getFromWindow=void 0;function $(o){let e;return typeof window<"u"&&typeof window[o]<"u"&&(e=window[o]),e}D.getFromWindow=$;function j(o){const e=$(o);if(!e)throw new Error(`${o} is not defined in Window`);return e}D.getFromWindowOrThrow=j;function Ks(){return j("document")}D.getDocumentOrThrow=Ks;function qs(){return $("document")}var Ot=D.getDocument=qs;function js(){return j("navigator")}D.getNavigatorOrThrow=js;function Ys(){return $("navigator")}D.getNavigator=Ys;function Gs(){return j("location")}D.getLocationOrThrow=Gs;function Hs(){return $("location")}D.getLocation=Hs;function Js(){return j("crypto")}D.getCryptoOrThrow=Js;function Xs(){return $("crypto")}D.getCrypto=Xs;function Ws(){return j("localStorage")}D.getLocalStorageOrThrow=Ws;function Zs(){return $("localStorage")}D.getLocalStorage=Zs;class Pt extends N.IVerify{constructor(e,t,s){super(e,t,s),this.core=e,this.logger=t,this.store=s,this.name=st,this.verifyUrlV3=nt,this.storagePrefix=A,this.version=he,this.init=async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&u.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!c.isBrowser()||this.isDevEnv)return;const r=window.location.origin,{id:n,decryptedId:a}=i,h=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${r}&id=${n}&decryptedId=${a}`;try{const l=Ot(),p=this.startAbortTimer(u.ONE_SECOND*5),y=await new Promise((b,m)=>{const g=()=>{window.removeEventListener("message",v),l.body.removeChild(E),m("attestation aborted")};this.abortController.signal.addEventListener("abort",g);const E=l.createElement("iframe");E.src=h,E.style.display="none",E.addEventListener("error",g,{signal:this.abortController.signal});const v=_=>{if(!_.data)return;const w=JSON.parse(_.data);if(w.type==="verify_attestation"){if(re.decodeJWT(w.attestation).payload.id!==n)return;clearInterval(p),l.body.removeChild(E),this.abortController.signal.removeEventListener("abort",g),window.removeEventListener("message",v),b(w.attestation===null?"":w.attestation)}};l.body.appendChild(E),window.addEventListener("message",v,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",y),y}catch(l){this.logger.warn(l)}return""},this.resolve=async i=>{if(this.isDevEnv)return"";const{attestationId:r,hash:n,encryptedId:a}=i;if(r===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(r){if(re.decodeJWT(r).payload.id!==a)return;const l=await this.isValidJwtAttestation(r);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!n)return;const h=this.getVerifyUrl(i?.verifyUrl);return this.fetchAttestation(n,h)},this.fetchAttestation=async(i,r)=>{this.logger.debug(`resolving attestation: ${i} from url: ${r}`);const n=this.startAbortTimer(u.ONE_SECOND*5),a=await fetch(`${r}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(n),a.status===200?await a.json():void 0},this.getVerifyUrl=i=>{let r=i||H;return ot.includes(r)||(this.logger.info(`verify url: ${r}, not included in trusted list, assigning default: ${H}`),r=H),r},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(u.FIVE_SECONDS),r=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await r.json()}catch(i){this.logger.warn(i)}},this.persistPublicKey=async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async i=>{const r=await this.getPublicKey();try{if(r)return this.validateAttestation(i,r)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const n=await this.fetchAndPersistPublicKey();try{if(n)return this.validateAttestation(i,n)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async r=>{const n=await this.fetchPublicKey();n&&(await this.persistPublicKey(n),r(n))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i},this.validateAttestation=(i,r)=>{const n=c.verifyP256Jwt(i,r.publicKey),a={hasExpired:u.toMiliseconds(n.exp)this.abortController.abort(),u.toMiliseconds(e))}}class Nt extends N.IEchoClient{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=at,this.registerDeviceToken=async s=>{const{clientId:i,token:r,notificationType:n,enableEncrypted:a=!1}=s,h=`${ct}/${this.projectId}/clients`;await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:n,token:r,always_raw:a})})},this.logger=d.generateChildLogger(t,this.context)}}var Qs=Object.defineProperty,At=Object.getOwnPropertySymbols,er=Object.prototype.hasOwnProperty,tr=Object.prototype.propertyIsEnumerable,xt=(o,e,t)=>e in o?Qs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,X=(o,e)=>{for(var t in e||(e={}))er.call(e,t)&&xt(o,t,e[t]);if(At)for(var t of At(e))tr.call(e,t)&&xt(o,t,e[t]);return o};class Lt extends N.IEventClient{constructor(e,t,s=!0){super(e,t,s),this.core=e,this.logger=t,this.context=lt,this.storagePrefix=A,this.storageVersion=ht,this.events=new Map,this.shouldPersist=!1,this.createEvent=i=>{const{event:r="ERROR",type:n="",properties:{topic:a,trace:h}}=i,l=c.uuidv4(),p=this.core.projectId||"",y=Date.now(),b=X({eventId:l,bundleId:p,timestamp:y,props:{event:r,type:n,properties:{topic:a,trace:h}}},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,b),this.shouldPersist=!0),b},this.getEvent=i=>{const{eventId:r,topic:n}=i;if(r)return this.events.get(r);const a=Array.from(this.events.values()).find(h=>h.props.properties.topic===n);if(a)return X(X({},a),this.setMethods(a.eventId))},this.deleteEvent=i=>{const{eventId:r}=i;this.events.delete(r),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{u.fromMiliseconds(Date.now())-u.fromMiliseconds(i.timestamp)>ut&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})},this.setMethods=i=>({addTrace:r=>this.addTrace(i,r),setError:r=>this.setError(i,r)}),this.addTrace=(i,r)=>{const n=this.events.get(i);n&&(n.props.properties.trace.push(r),this.events.set(i,n),this.shouldPersist=!0)},this.setError=(i,r)=>{const n=this.events.get(i);n&&(n.props.type=r,n.timestamp=Date.now(),this.events.set(i,n),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(r=>{this.events.set(r.eventId,X(X({},r),this.setMethods(r.eventId)))})}catch(i){this.logger.warn(i)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[r,n]of this.events)n.props.type&&i.push(n);if(i.length!==0)try{if((await fetch(`${gt}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${ge}`,{method:"POST",body:JSON.stringify(i)})).ok)for(const r of i)this.events.delete(r.eventId),this.shouldPersist=!0}catch(r){this.logger.warn(r)}},this.logger=d.generateChildLogger(t,this.context),s?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var ir=Object.defineProperty,Ut=Object.getOwnPropertySymbols,sr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable,zt=(o,e,t)=>e in o?ir(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Mt=(o,e)=>{for(var t in e||(e={}))sr.call(e,t)&&zt(o,t,e[t]);if(Ut)for(var t of Ut(e))rr.call(e,t)&&zt(o,t,e[t]);return o};class ie extends N.ICore{constructor(e){var t;super(e),this.protocol=ce,this.version=he,this.name=te,this.events=new k.EventEmitter,this.initialized=!1,this.on=(n,a)=>this.events.on(n,a),this.once=(n,a)=>this.events.once(n,a),this.off=(n,a)=>this.events.off(n,a),this.removeListener=(n,a)=>this.events.removeListener(n,a),this.dispatchEnvelope=({topic:n,message:a,sessionExists:h})=>{if(!n||!a)return;const l={topic:n,message:a,publishedAt:Date.now(),transportType:B.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:h})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||ue,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const s=d.getDefaultLoggerOptions({level:typeof e?.logger=="string"&&e.logger?e.logger:Ne.logger}),{logger:i,chunkLoggerController:r}=d.generatePlatformLogger({opts:s,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=r,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var n,a;(n=this.logChunkController)!=null&&n.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=d.generateChildLogger(i,this.name),this.heartbeat=new K.HeartBeat,this.crypto=new pt(this,this.logger,e?.keychain),this.history=new Ct(this,this.logger),this.expirer=new St(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new jt.default(Mt(Mt({},Ae),e?.storageOptions)),this.relayer=new ft({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Rt(this,this.logger),this.verify=new Pt(this,this.logger,this.storage),this.echoClient=new Nt(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new Lt(this,this.logger,e?.telemetryEnabled)}static async init(e){const t=new ie(e);await t.initialize();const s=await t.crypto.getClientId();return await t.storage.setItem(Ge,s),t}get context(){return d.getLoggerContext(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(de,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(de)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}}const nr=ie;exports.CORE_CONTEXT=te,exports.CORE_DEFAULT=Ne,exports.CORE_PROTOCOL=ce,exports.CORE_STORAGE_OPTIONS=Ae,exports.CORE_STORAGE_PREFIX=A,exports.CORE_VERSION=he,exports.CRYPTO_CLIENT_SEED=le,exports.CRYPTO_CONTEXT=xe,exports.CRYPTO_JWT_TTL=Le,exports.Core=nr,exports.Crypto=pt,exports.ECHO_CONTEXT=at,exports.ECHO_URL=ct,exports.EVENTS_CLIENT_API_URL=gt,exports.EVENTS_STORAGE_CLEANUP_INTERVAL=ut,exports.EVENTS_STORAGE_CONTEXT=lt,exports.EVENTS_STORAGE_VERSION=ht,exports.EVENT_CLIENT_AUTHENTICATE_ERRORS=Ss,exports.EVENT_CLIENT_AUTHENTICATE_TRACES=Cs,exports.EVENT_CLIENT_CONTEXT=Ts,exports.EVENT_CLIENT_PAIRING_ERRORS=F,exports.EVENT_CLIENT_PAIRING_TRACES=z,exports.EVENT_CLIENT_SESSION_ERRORS=Rs,exports.EVENT_CLIENT_SESSION_TRACES=Is,exports.EXPIRER_CONTEXT=tt,exports.EXPIRER_DEFAULT_TTL=vs,exports.EXPIRER_EVENTS=O,exports.EXPIRER_STORAGE_VERSION=it,exports.EchoClient=Nt,exports.EventClient=Lt,exports.Expirer=St,exports.HISTORY_CONTEXT=Qe,exports.HISTORY_EVENTS=S,exports.HISTORY_STORAGE_VERSION=et,exports.JsonRpcHistory=Ct,exports.KEYCHAIN_CONTEXT=Ue,exports.KEYCHAIN_STORAGE_VERSION=ze,exports.KeyChain=dt,exports.MESSAGES_CONTEXT=Me,exports.MESSAGES_STORAGE_VERSION=Fe,exports.MessageTracker=yt,exports.PAIRING_CONTEXT=We,exports.PAIRING_DEFAULT_TTL=fs,exports.PAIRING_EVENTS=G,exports.PAIRING_RPC_OPTS=q,exports.PAIRING_STORAGE_VERSION=Ze,exports.PENDING_SUB_RESOLUTION_TIMEOUT=Xe,exports.PUBLISHER_CONTEXT=Be,exports.PUBLISHER_DEFAULT_TTL=Ve,exports.Pairing=Rt,exports.RELAYER_CONTEXT=Ke,exports.RELAYER_DEFAULT_LOGGER=$e,exports.RELAYER_DEFAULT_PROTOCOL=ke,exports.RELAYER_DEFAULT_RELAY_URL=ue,exports.RELAYER_EVENTS=I,exports.RELAYER_PROVIDER_EVENTS=R,exports.RELAYER_RECONNECT_TIMEOUT=je,exports.RELAYER_SDK_VERSION=ge,exports.RELAYER_STORAGE_OPTIONS=_s,exports.RELAYER_SUBSCRIBER_SUFFIX=qe,exports.RELAYER_TRANSPORT_CUTOFF=bs,exports.Relayer=ft,exports.STORE_STORAGE_VERSION=Ye,exports.SUBSCRIBER_CONTEXT=He,exports.SUBSCRIBER_DEFAULT_TTL=ms,exports.SUBSCRIBER_EVENTS=x,exports.SUBSCRIBER_STORAGE_VERSION=Je,exports.Store=It,exports.Subscriber=_t,exports.TRANSPORT_TYPES=B,exports.TRUSTED_VERIFY_URLS=ot,exports.VERIFY_CONTEXT=st,exports.VERIFY_SERVER=H,exports.VERIFY_SERVER_V3=nt,exports.Verify=Pt,exports.WALLETCONNECT_CLIENT_ID=Ge,exports.WALLETCONNECT_LINK_MODE_APPS=de,exports.default=ie; ++ ++function uniq(arr) { ++ const seen = Object.create(null); ++ const out = []; ++ for (let i = 0, len = arr.length; i < len; i++) { ++ const val = arr[i]; ++ // key must be string — handles numbers, strings, booleans fine ++ const key = typeof val + val; ++ if (seen[key] === undefined) { ++ seen[key] = true; ++ out.push(val); ++ } ++ } ++ return out; ++} ++ ++ ++"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var k=require("events"),Ft=require("@walletconnect/keyvaluestorage"),K=require("@walletconnect/heartbeat"),d=require("@walletconnect/logger"),N=require("@walletconnect/types"),se=require("@walletconnect/safe-json"),re=require("@walletconnect/relay-auth"),c=require("@walletconnect/utils"),Vt=require("uint8arrays"),u=require("@walletconnect/time"),Bt=require("@walletconnect/jsonrpc-provider"),T=require("@walletconnect/jsonrpc-utils"),kt=require("@walletconnect/jsonrpc-ws-connection"),$t=require("lodash.isequal");function Z(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}function Kt(o){if(o&&o.__esModule)return o;var e=Object.create(null);return o&&Object.keys(o).forEach(function(t){if(t!=="default"){var s=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:function(){return o[t]}})}}),e.default=o,Object.freeze(e)}var qt=Z(k),jt=Z(Ft),Q=Kt(re),Yt=Z(kt),Gt=Z($t);function Ht(o,e){if(o.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),s=0;s>>0,C=new Uint8Array(L);_!==w;){for(var U=g[_],V=0,P=L-1;(U!==0||V>>0,C[P]=U%a>>>0,U=U/a>>>0;if(U!==0)throw new Error("Non-zero carry");v=V,_++}for(var M=L-v;M!==L&&C[M]===0;)M++;for(var W=h.repeat(E);M>>0,L=new Uint8Array(w);g[E];){var C=t[g.charCodeAt(E)];if(C===255)return;for(var U=0,V=w-1;(C!==0||U<_)&&V!==-1;V--,U++)C+=a*L[V]>>>0,L[V]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");_=U,E++}if(g[E]!==" "){for(var P=w-_;P!==w&&L[P]===0;)P++;for(var M=new Uint8Array(v+(w-P)),W=v;P!==w;)M[W++]=L[P++];return M}}}function m(g){var E=b(g);if(E)return E;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:b,decode:m}}var Jt=Ht,Xt=Jt;const ye=o=>{if(o instanceof Uint8Array&&o.constructor.name==="Uint8Array")return o;if(o instanceof ArrayBuffer)return new Uint8Array(o);if(ArrayBuffer.isView(o))return new Uint8Array(o.buffer,o.byteOffset,o.byteLength);throw new Error("Unknown type, must be binary type")},Wt=o=>new TextEncoder().encode(o),Zt=o=>new TextDecoder().decode(o);class Qt{constructor(e,t,s){this.name=e,this.prefix=t,this.baseEncode=s}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class ei{constructor(e,t,s){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=s}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ee(this,e)}}class ti{constructor(e){this.decoders=e}or(e){return Ee(this,e)}decode(e){const t=e[0],s=this.decoders[t];if(s)return s.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ee=(o,e)=>new ti({...o.decoders||{[o.prefix]:o},...e.decoders||{[e.prefix]:e}});class ii{constructor(e,t,s,i){this.name=e,this.prefix=t,this.baseEncode=s,this.baseDecode=i,this.encoder=new Qt(e,t,s),this.decoder=new ei(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const ee=({name:o,prefix:e,encode:t,decode:s})=>new ii(o,e,t,s),Y=({prefix:o,name:e,alphabet:t})=>{const{encode:s,decode:i}=Xt(t,e);return ee({prefix:o,name:e,encode:s,decode:r=>ye(i(r))})},si=(o,e,t,s)=>{const i={};for(let p=0;p=8&&(a-=8,n[l++]=255&h>>a)}if(a>=t||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return n},ri=(o,e,t)=>{const s=e[e.length-1]==="=",i=(1<t;)n-=t,r+=e[i&a>>n];if(n&&(r+=e[i&a<ee({prefix:e,name:o,encode(i){return ri(i,s,t)},decode(i){return si(i,s,t,o)}}),ni=ee({prefix:"\0",name:"identity",encode:o=>Zt(o),decode:o=>Wt(o)});var oi=Object.freeze({__proto__:null,identity:ni});const ai=f({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ci=Object.freeze({__proto__:null,base2:ai});const hi=f({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var li=Object.freeze({__proto__:null,base8:hi});const ui=Y({prefix:"9",name:"base10",alphabet:"0123456789"});var gi=Object.freeze({__proto__:null,base10:ui});const di=f({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),pi=f({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var yi=Object.freeze({__proto__:null,base16:di,base16upper:pi});const Ei=f({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Di=f({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),_i=f({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bi=f({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),mi=f({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),fi=f({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vi=f({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),wi=f({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ti=f({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ii=Object.freeze({__proto__:null,base32:Ei,base32upper:Di,base32pad:_i,base32padupper:bi,base32hex:mi,base32hexupper:fi,base32hexpad:vi,base32hexpadupper:wi,base32z:Ti});const Ri=Y({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ci=Y({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Si=Object.freeze({__proto__:null,base36:Ri,base36upper:Ci});const Oi=Y({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Pi=Y({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ni=Object.freeze({__proto__:null,base58btc:Oi,base58flickr:Pi});const Ai=f({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),xi=f({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Li=f({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Ui=f({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var zi=Object.freeze({__proto__:null,base64:Ai,base64pad:xi,base64url:Li,base64urlpad:Ui});const De=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Mi=De.reduce((o,e,t)=>(o[t]=e,o),[]),Fi=De.reduce((o,e,t)=>(o[e.codePointAt(0)]=t,o),[]);function Vi(o){return o.reduce((e,t)=>(e+=Mi[t],e),"")}function Bi(o){const e=[];for(const t of o){const s=Fi[t.codePointAt(0)];if(s===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}const ki=ee({prefix:"\u{1F680}",name:"base256emoji",encode:Vi,decode:Bi});var $i=Object.freeze({__proto__:null,base256emoji:ki}),Ki=be,_e=128,qi=127,ji=~qi,Yi=Math.pow(2,31);function be(o,e,t){e=e||[],t=t||0;for(var s=t;o>=Yi;)e[t++]=o&255|_e,o/=128;for(;o&ji;)e[t++]=o&255|_e,o>>>=7;return e[t]=o|0,be.bytes=t-s+1,e}var Gi=ne,Hi=128,me=127;function ne(o,s){var t=0,s=s||0,i=0,r=s,n,a=o.length;do{if(r>=a)throw ne.bytes=0,new RangeError("Could not decode varint");n=o[r++],t+=i<28?(n&me)<=Hi);return ne.bytes=r-s,t}var Ji=Math.pow(2,7),Xi=Math.pow(2,14),Wi=Math.pow(2,21),Zi=Math.pow(2,28),Qi=Math.pow(2,35),es=Math.pow(2,42),ts=Math.pow(2,49),is=Math.pow(2,56),ss=Math.pow(2,63),rs=function(o){return o(fe.encode(o,e,t),e),we=o=>fe.encodingLength(o),oe=(o,e)=>{const t=e.byteLength,s=we(o),i=s+we(t),r=new Uint8Array(i+t);return ve(o,r,0),ve(t,r,s),r.set(e,i),new os(o,t,e,r)};class os{constructor(e,t,s,i){this.code=e,this.size=t,this.digest=s,this.bytes=i}}const Te=({name:o,code:e,encode:t})=>new as(o,e,t);class as{constructor(e,t,s){this.name=e,this.code=t,this.encode=s}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?oe(this.code,t):t.then(s=>oe(this.code,s))}else throw Error("Unknown type, must be binary type")}}const Ie=o=>async e=>new Uint8Array(await crypto.subtle.digest(o,e)),cs=Te({name:"sha2-256",code:18,encode:Ie("SHA-256")}),hs=Te({name:"sha2-512",code:19,encode:Ie("SHA-512")});var ls=Object.freeze({__proto__:null,sha256:cs,sha512:hs});const Re=0,us="identity",Ce=ye,gs=o=>oe(Re,Ce(o)),ds={code:Re,name:us,encode:Ce,digest:gs};var ps=Object.freeze({__proto__:null,identity:ds});new TextEncoder,new TextDecoder;const Se={...oi,...ci,...li,...gi,...yi,...Ii,...Si,...Ni,...zi,...$i};({...ls,...ps});function ys(o=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(o):new Uint8Array(o)}function Oe(o,e,t,s){return{name:o,prefix:e,encoder:{name:o,prefix:e,encode:t},decoder:{decode:s}}}const Pe=Oe("utf8","u",o=>"u"+new TextDecoder("utf8").decode(o),o=>new TextEncoder().encode(o.substring(1))),ae=Oe("ascii","a",o=>{let e="a";for(let t=0;t{o=o.substring(1);const e=ys(o.length);for(let t=0;t{if(!this.initialized){const s=await this.getKeyChain();typeof s<"u"&&(this.keychain=s),this.initialized=!0}},this.has=s=>(this.isInitialized(),this.keychain.has(s)),this.set=async(s,i)=>{this.isInitialized(),this.keychain.set(s,i),await this.persist()},this.get=s=>{this.isInitialized();const i=this.keychain.get(s);if(typeof i>"u"){const{message:r}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${s}`);throw new Error(r)}return i},this.del=async s=>{this.isInitialized(),this.keychain.delete(s),await this.persist()},this.core=e,this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class pt{constructor(e,t,s){this.core=e,this.logger=t,this.name=xe,this.randomSessionIdentifier=c.generateRandomBytes32(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=i=>(this.isInitialized(),this.keychain.has(i)),this.getClientId=async()=>{this.isInitialized();const i=await this.getClientSeed(),r=Q.generateKeyPair(i);return Q.encodeIss(r.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const i=c.generateKeyPair();return this.setPrivateKey(i.publicKey,i.privateKey)},this.signJWT=async i=>{this.isInitialized();const r=await this.getClientSeed(),n=Q.generateKeyPair(r),a=this.randomSessionIdentifier,h=Le;return await Q.signJWT(a,i,h,n)},this.generateSharedKey=(i,r,n)=>{this.isInitialized();const a=this.getPrivateKey(i),h=c.deriveSymKey(a,r);return this.setSymKey(h,n)},this.setSymKey=async(i,r)=>{this.isInitialized();const n=r||c.hashKey(i);return await this.keychain.set(n,i),n},this.deleteKeyPair=async i=>{this.isInitialized(),await this.keychain.del(i)},this.deleteSymKey=async i=>{this.isInitialized(),await this.keychain.del(i)},this.encode=async(i,r,n)=>{this.isInitialized();const a=c.validateEncoding(n),h=se.safeJsonStringify(r);if(c.isTypeTwoEnvelope(a))return c.encodeTypeTwoEnvelope(h,n?.encoding);if(c.isTypeOneEnvelope(a)){const b=a.senderPublicKey,m=a.receiverPublicKey;i=await this.generateSharedKey(b,m)}const l=this.getSymKey(i),{type:p,senderPublicKey:y}=a;return c.encrypt({type:p,symKey:l,message:h,senderPublicKey:y,encoding:n?.encoding})},this.decode=async(i,r,n)=>{this.isInitialized();const a=c.validateDecoding(r,n);if(c.isTypeTwoEnvelope(a)){const h=c.decodeTypeTwoEnvelope(r,n?.encoding);return se.safeJsonParse(h)}if(c.isTypeOneEnvelope(a)){const h=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(h,l)}try{const h=this.getSymKey(i),l=c.decrypt({symKey:h,encoded:r,encoding:n?.encoding});return se.safeJsonParse(l)}catch(h){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(h)}},this.getPayloadType=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return c.decodeTypeByte(n.type)},this.getPayloadSenderPublicKey=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return n.senderPublicKey?Vt.toString(n.senderPublicKey,c.BASE16):void 0},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.keychain=s||new dt(this.core,this.logger)}get context(){return d.getLoggerContext(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(le)}catch{e=c.generateRandomBytes32(),await this.keychain.set(le,e)}return Ds(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class yt extends N.IMessageTracker{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=Me,this.version=Fe,this.initialized=!1,this.storagePrefix=A,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const s=await this.getRelayerMessages();typeof s<"u"&&(this.messages=s),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(s){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(s)}finally{this.initialized=!0}}},this.set=async(s,i)=>{this.isInitialized();const r=c.hashMessage(i);let n=this.messages.get(s);return typeof n>"u"&&(n={}),typeof n[r]<"u"||(n[r]=i,this.messages.set(s,n),await this.persist()),r},this.get=s=>{this.isInitialized();let i=this.messages.get(s);return typeof i>"u"&&(i={}),i},this.has=(s,i)=>{this.isInitialized();const r=this.get(s),n=c.hashMessage(i);return typeof r[n]<"u"},this.del=async s=>{this.isInitialized(),this.messages.delete(s),await this.persist()},this.logger=d.generateChildLogger(e,this.name),this.core=t}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Os extends N.IPublisher{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new k.EventEmitter,this.name=Be,this.queue=new Map,this.publishTimeout=u.toMiliseconds(u.ONE_MINUTE),this.failedPublishTimeout=u.toMiliseconds(u.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(s,i,r)=>{var n;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:s,message:i,opts:r}});const a=r?.ttl||Ve,h=c.getRelayProtocolName(r),l=r?.prompt||!1,p=r?.tag||0,y=r?.id||T.getBigIntRpcId().toString(),b={topic:s,message:i,opts:{ttl:a,relay:h,prompt:l,tag:p,id:y,attestation:r?.attestation}},m=`Failed to publish payload, please try again. id:${y} tag:${p}`,g=Date.now();let E,v=1;try{for(;E===void 0;){if(Date.now()-g>this.publishTimeout)throw new Error(m);this.logger.trace({id:y,attempts:v},`publisher.publish - attempt ${v}`),E=await await c.createExpiringPromise(this.rpcPublish(s,i,a,h,l,p,y,r?.attestation).catch(_=>this.logger.warn(_)),this.publishTimeout,m),v++,E||await new Promise(_=>setTimeout(_,this.failedPublishTimeout))}this.relayer.events.emit(I.publish,b),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:y,topic:s,message:i,opts:r}})}catch(_){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(_),(n=r?.internal)!=null&&n.throwOnFailedPublish)throw _;this.queue.set(y,b)}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.registerEventListeners()}get context(){return d.getLoggerContext(this.logger)}rpcPublish(e,t,s,i,r,n,a,h){var l,p,y,b;const m={method:c.getRelayProtocolApi(i.protocol).publish,params:{topic:e,message:t,ttl:s,prompt:r,tag:n,attestation:h},id:a};return c.isUndefined((l=m.params)==null?void 0:l.prompt)&&((p=m.params)==null||delete p.prompt),c.isUndefined((y=m.params)==null?void 0:y.tag)&&((b=m.params)==null||delete b.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:m}),this.relayer.request(m)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:t,message:s,opts:i}=e;await this.publish(t,s,i)})}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(I.connection_stalled);return}this.checkQueue()}),this.relayer.on(I.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Ps{constructor(){this.map=new Map,this.set=(e,t)=>{const s=this.get(e);this.exists(e,t)||this.map.set(e,[...s,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const s=this.get(e);if(!this.exists(e,t))return;const i=s.filter(r=>r!==t);if(!i.length){this.map.delete(e);return}this.map.set(e,i)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Ns=Object.defineProperty,As=Object.defineProperties,xs=Object.getOwnPropertyDescriptors,Et=Object.getOwnPropertySymbols,Ls=Object.prototype.hasOwnProperty,Us=Object.prototype.propertyIsEnumerable,Dt=(o,e,t)=>e in o?Ns(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,J=(o,e)=>{for(var t in e||(e={}))Ls.call(e,t)&&Dt(o,t,e[t]);if(Et)for(var t of Et(e))Us.call(e,t)&&Dt(o,t,e[t]);return o},pe=(o,e)=>As(o,xs(e));class _t extends N.ISubscriber{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Ps,this.events=new k.EventEmitter,this.name=He,this.version=Je,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=A,this.subscribeTimeout=u.toMiliseconds(u.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.pendingBatchMessages=[],this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(s,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}});try{const r=c.getRelayProtocolName(i),n={topic:s,relay:r,transportType:i?.transportType};this.pending.set(s,n);const a=await this.rpcSubscribe(s,r,i?.transportType);return typeof a=="string"&&(this.onSubscribe(a,n),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}})),a}catch(r){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(r),r}},this.unsubscribe=async(s,i)=>{await this.restartToComplete(),this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(s,i.id,i):await this.unsubscribeByTopic(s,i)},this.isSubscribed=async s=>{if(this.topics.includes(s))return!0;const i=`${this.pendingSubscriptionWatchLabel}_${s}`;return await new Promise((r,n)=>{const a=new u.Watch;a.start(i);const h=setInterval(()=>{!this.pending.has(s)&&this.topics.includes(s)&&(clearInterval(h),a.stop(i),r(!0)),a.elapsed(i)>=Xe&&(clearInterval(h),a.stop(i),n(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{this.restartInProgress=!0,await this.restore(),await this.reset(),this.restartInProgress=!1},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.clientId=""}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let s=!1;try{s=this.getSubscription(e).topic===t}catch{}return s}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const s=this.topicMap.get(e);await Promise.all(s.map(async i=>await this.unsubscribeById(e,i,t)))}async unsubscribeById(e,t,s){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}});try{const i=c.getRelayProtocolName(s);await this.rpcUnsubscribe(e,t,i);const r=c.getSdkError("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,r),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,t,s=B.relay){s===B.relay&&await this.restartToComplete();const i={method:c.getRelayProtocolApi(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{const r=c.hashMessage(e+this.clientId);return s===B.link_mode?(setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(i).catch(n=>this.logger.warn(n))},u.toMiliseconds(u.ONE_SECOND)),r):await await c.createExpiringPromise(this.relayer.request(i).catch(n=>this.logger.warn(n)),this.subscribeTimeout)?r:null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(I.connection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});try{return await await c.createExpiringPromise(this.relayer.request(s).catch(i=>this.logger.warn(i)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchFetchMessages,params:{topics:e.map(r=>r.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});let i;try{i=await await c.createExpiringPromise(this.relayer.request(s).catch(r=>this.logger.warn(r)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}return i}rpcUnsubscribe(e,t,s){const i={method:c.getRelayProtocolApi(s.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,t){this.setSubscription(e,pe(J({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,J({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,s){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,s),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,J({},t)),this.topicMap.set(t.topic,e),this.events.emit(x.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const s=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(s.topic,e),this.events.emit(x.deleted,pe(J({},s),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(x.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let t=0;t"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){if(!e.length)return;const t=await this.rpcBatchSubscribe(e);c.isValidArray(t)&&this.onBatchSubscribe(t.map((s,i)=>pe(J({},e[i]),{id:s})))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(this.pendingBatchMessages=this.pendingBatchMessages.concat(t.messages))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;const e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e),this.pendingBatchMessages.length&&(await this.relayer.handleBatchMessageEvents(this.pendingBatchMessages),this.pendingBatchMessages=[])}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.events.on(x.created,async e=>{const t=x.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()}),this.events.on(x.deleted,async e=>{const t=x.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen(),this.restartInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.restartInProgress||(clearInterval(t),e())},this.pollingInterval)})}}var zs=Object.defineProperty,bt=Object.getOwnPropertySymbols,Ms=Object.prototype.hasOwnProperty,Fs=Object.prototype.propertyIsEnumerable,mt=(o,e,t)=>e in o?zs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Vs=(o,e)=>{for(var t in e||(e={}))Ms.call(e,t)&&mt(o,t,e[t]);if(bt)for(var t of bt(e))Fs.call(e,t)&&mt(o,t,e[t]);return o};class ft extends N.IRelayer{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new k.EventEmitter,this.name=Ke,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=u.toMiliseconds(u.THIRTY_SECONDS+u.ONE_SECOND),this.request=async t=>{var s,i;this.logger.debug("Publishing Request Payload");const r=t.id||T.getBigIntRpcId().toString();await this.toEstablishConnection();try{const n=this.provider.request(t);this.requestsInFlight.set(r,{promise:n,request:t}),this.logger.trace({id:r,method:t.method,topic:(s=t.params)==null?void 0:s.topic},"relayer.request - attempt to publish...");const a=await new Promise(async(h,l)=>{const p=()=>{l(new Error(`relayer.request - publish interrupted, id: ${r}`))};this.provider.on(R.disconnect,p);const y=await n;this.provider.off(R.disconnect,p),h(y)});return this.logger.trace({id:r,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - published"),a}catch(n){throw this.logger.debug(`Failed to Publish Request: ${r}`),n}finally{this.requestsInFlight.delete(r)}},this.resetPingTimeout=()=>{if(c.isNode())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,s,i;(i=(s=(t=this.provider)==null?void 0:t.connection)==null?void 0:s.socket)==null||i.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.trace("relayer connected"),this.startPingTimeout(),this.events.emit(I.connect)},this.onDisconnectHandler=()=>{this.logger.trace("relayer disconnected"),this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.error(t),this.events.emit(I.error,t),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(R.payload,this.onPayloadHandler),this.provider.on(R.connect,this.onConnectHandler),this.provider.on(R.disconnect,this.onDisconnectHandler),this.provider.on(R.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?d.generateChildLogger(e.logger,this.name):d.pino(d.getDefaultLoggerOptions({level:e.logger||$e})),this.messages=new yt(this.logger,e.core),this.subscriber=new _t(this,this.logger),this.publisher=new Os(this,this.logger),this.relayUrl=e?.relayUrl||ue,this.projectId=e.projectId,this.bundleId=c.getBundleId(),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e)}}get context(){return d.getLoggerContext(this.logger)}get connected(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===1}get connecting(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===0}async publish(e,t,s){this.isInitialized(),await this.publisher.publish(e,t,s),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:B.relay})}async subscribe(e,t){var s;this.isInitialized(),t?.transportType==="relay"&&await this.toEstablishConnection();let i=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",r;const n=a=>{a.topic===e&&(this.subscriber.off(x.created,n),r())};return await Promise.all([new Promise(a=>{r=a,this.subscriber.on(x.created,n)}),new Promise(async a=>{i=await this.subscriber.subscribe(e,t)||i,a()})]),i}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){if(!this.hasExperiencedNetworkDisruption&&this.connected&&this.requestsInFlight.size>0)try{await Promise.all(Array.from(this.requestsInFlight.values()).map(e=>e.promise))}catch(e){this.logger.warn(e)}this.hasExperiencedNetworkDisruption||this.connected?await c.createExpiringPromise(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),await this.createProvider(),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;try{await new Promise(async(t,s)=>{const i=()=>{this.provider.off(R.disconnect,i),s(new Error("Connection interrupted while trying to subscribe"))};this.provider.on(R.disconnect,i),await c.createExpiringPromise(this.provider.connect(),u.toMiliseconds(u.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(r=>{s(r)}).finally(()=>{clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),this.subscriber.start().catch(r=>{this.logger.error(r),this.onDisconnectHandler()}),this.hasExperiencedNetworkDisruption=!1,t()})}catch(t){this.logger.error(t);const s=t;if(this.hasExperiencedNetworkDisruption=!0,!this.isConnectionStalled(s.message))throw t}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await c.isOnline())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((s,i)=>s.publishedAt-i.publishedAt);this.logger.trace(`Batch of ${t.length} message events sorted`);for(const s of t)try{await this.onMessageEvent(s)}catch(i){this.logger.warn(i)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:s}=e;if(!t.sessionExists){const i=c.calcExpiry(u.FIVE_MINUTES),r={topic:s,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(s,r)}this.events.emit(I.message,e),await this.recordMessageEvent(e)}startPingTimeout(){var e,t,s,i,r;if(c.isNode())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((r=(i=(s=this.provider)==null?void 0:s.connection)==null?void 0:i.socket)==null||r.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(n){this.logger.warn(n)}}isConnectionStalled(e){return this.staleConnectionErrors.some(t=>e.includes(t))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Bt.JsonRpcProvider(new Yt.default(c.formatRelayRpcUrl({sdkVersion:ge,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:s}=e;await this.messages.set(t,s)}async shouldIgnoreMessageEvent(e){const{topic:t,message:s}=e;if(!s||s.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${s}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`),!0;const i=this.messages.has(t,s);return i&&this.logger.debug(`Ignoring duplicate message: ${s}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),T.isJsonRpcRequest(e)){if(!e.method.endsWith(qe))return;const t=e.params,{topic:s,message:i,publishedAt:r,attestation:n}=t.data,a={topic:s,message:i,publishedAt:r,transportType:B.relay,attestation:n};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Vs({type:"event",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else T.isJsonRpcResponse(e)&&this.events.emit(I.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(I.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=T.formatJsonRpcResult(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(R.payload,this.onPayloadHandler),this.provider.off(R.connect,this.onConnectHandler),this.provider.off(R.disconnect,this.onDisconnectHandler),this.provider.off(R.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await c.isOnline();c.subscribeToNetworkChange(async t=>{e!==t&&(e=t,t?await this.restartTransport().catch(s=>this.logger.error(s)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.requestsInFlight.clear(),clearTimeout(this.pingTimeout),this.events.emit(I.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},u.toMiliseconds(je))))}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&(this.connectionAttemptInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.connected&&(clearInterval(t),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var Bs=Object.defineProperty,vt=Object.getOwnPropertySymbols,ks=Object.prototype.hasOwnProperty,$s=Object.prototype.propertyIsEnumerable,wt=(o,e,t)=>e in o?Bs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Tt=(o,e)=>{for(var t in e||(e={}))ks.call(e,t)&&wt(o,t,e[t]);if(vt)for(var t of vt(e))$s.call(e,t)&&wt(o,t,e[t]);return o};class It extends N.IStore{constructor(e,t,s,i=A,r=void 0){super(e,t,s,i),this.core=e,this.logger=t,this.name=s,this.map=new Map,this.version=Ye,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>{this.getKey&&n!==null&&!c.isUndefined(n)?this.map.set(this.getKey(n),n):c.isProposalStruct(n)?this.map.set(n.id,n):c.isSessionStruct(n)&&this.map.set(n.topic,n)}),this.cached=[],this.initialized=!0)},this.set=async(n,a)=>{this.isInitialized(),this.map.has(n)?await this.update(n,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:n,value:a}),this.map.set(n,a),await this.persist())},this.get=n=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:n}),this.getData(n)),this.getAll=n=>(this.isInitialized(),n?this.values.filter(a=>Object.keys(n).every(h=>Gt.default(a[h],n[h]))):this.values),this.update=async(n,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:n,update:a});const h=Tt(Tt({},this.getData(n)),a);this.map.set(n,h),await this.persist()},this.delete=async(n,a)=>{this.isInitialized(),this.map.has(n)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:n,reason:a}),this.map.delete(n),this.addToRecentlyDeleted(n),await this.persist())},this.logger=d.generateChildLogger(t,this.name),this.storagePrefix=i,this.getKey=r}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(s),new Error(s)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Rt{constructor(e,t){this.core=e,this.logger=t,this.name=We,this.version=Ze,this.events=new qt.default,this.initialized=!1,this.storagePrefix=A,this.ignoredPayloadTypes=[c.TYPE_1],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:s})=>{this.isInitialized(),this.registeredMethods=[...uniq([...this.registeredMethods,...s])]},this.create=async s=>{this.isInitialized();const i=c.generateRandomBytes32(),r=await this.core.crypto.setSymKey(i),n=c.calcExpiry(u.FIVE_MINUTES),a={protocol:ke},h={topic:r,expiry:n,relay:a,active:!1},l=c.formatUri({protocol:this.core.protocol,version:this.core.version,topic:r,symKey:i,relay:a,expiryTimestamp:n,methods:s?.methods});return this.core.expirer.set(r,n),await this.pairings.set(r,h),await this.core.relayer.subscribe(r,{transportType:s?.transportType}),{topic:r,uri:l}},this.pair=async s=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:s?.uri,trace:[z.pairing_started]}});this.isValidPair(s,i);const{topic:r,symKey:n,relay:a,expiryTimestamp:h,methods:l}=c.parseUri(s.uri);i.props.properties.topic=r,i.addTrace(z.pairing_uri_validation_success),i.addTrace(z.pairing_uri_not_expired);let p;if(this.pairings.keys.includes(r)){if(p=this.pairings.get(r),i.addTrace(z.existing_pairing),p.active)throw i.setError(F.active_pairing_already_exists),new Error(`Pairing already exists: ${r}. Please try again with a new connection URI.`);i.addTrace(z.pairing_not_expired)}const y=h||c.calcExpiry(u.FIVE_MINUTES),b={topic:r,relay:a,expiry:y,active:!1,methods:l};this.core.expirer.set(r,y),await this.pairings.set(r,b),i.addTrace(z.store_new_pairing),s.activatePairing&&await this.activate({topic:r}),this.events.emit(G.create,b),i.addTrace(z.emit_inactive_pairing),this.core.crypto.keychain.has(r)||await this.core.crypto.setSymKey(n,r),i.addTrace(z.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(F.no_internet_connection)}try{await this.core.relayer.subscribe(r,{relay:a})}catch(m){throw i.setError(F.subscribe_pairing_topic_failure),m}return i.addTrace(z.subscribe_pairing_topic_success),b},this.activate=async({topic:s})=>{this.isInitialized();const i=c.calcExpiry(u.THIRTY_DAYS);this.core.expirer.set(s,i),await this.pairings.update(s,{active:!0,expiry:i})},this.ping=async s=>{this.isInitialized(),await this.isValidPing(s);const{topic:i}=s;if(this.pairings.keys.includes(i)){const r=await this.sendRequest(i,"wc_pairingPing",{}),{done:n,resolve:a,reject:h}=c.createDelayedPromise();this.events.once(c.engineEvent("pairing_ping",r),({error:l})=>{l?h(l):a()}),await n()}},this.updateExpiry=async({topic:s,expiry:i})=>{this.isInitialized(),await this.pairings.update(s,{expiry:i})},this.updateMetadata=async({topic:s,metadata:i})=>{this.isInitialized(),await this.pairings.update(s,{peerMetadata:i})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async s=>{this.isInitialized(),await this.isValidDisconnect(s);const{topic:i}=s;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",c.getSdkError("USER_DISCONNECTED")),await this.deletePairing(i))},this.sendRequest=async(s,i,r)=>{const n=T.formatJsonRpcRequest(i,r),a=await this.core.crypto.encode(s,n),h=q[i].req;return this.core.history.set(s,n),this.core.relayer.publish(s,a,h),n.id},this.sendResult=async(s,i,r)=>{const n=T.formatJsonRpcResult(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.sendError=async(s,i,r)=>{const n=T.formatJsonRpcError(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method]?q[h.request.method].res:q.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.deletePairing=async(s,i)=>{await this.core.relayer.unsubscribe(s),await Promise.all([this.pairings.delete(s,c.getSdkError("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(s),i?Promise.resolve():this.core.expirer.del(s)])},this.cleanup=async()=>{const s=this.pairings.getAll().filter(i=>c.isExpired(i.expiry));await Promise.all(s.map(i=>this.deletePairing(i.topic)))},this.onRelayEventRequest=s=>{const{topic:i,payload:r}=s;switch(r.method){case"wc_pairingPing":return this.onPairingPingRequest(i,r);case"wc_pairingDelete":return this.onPairingDeleteRequest(i,r);default:return this.onUnknownRpcMethodRequest(i,r)}},this.onRelayEventResponse=async s=>{const{topic:i,payload:r}=s,n=(await this.core.history.get(i,r.id)).request.method;switch(n){case"wc_pairingPing":return this.onPairingPingResponse(i,r);default:return this.onUnknownRpcMethodResponse(n)}},this.onPairingPingRequest=async(s,i)=>{const{id:r}=i;try{this.isValidPing({topic:s}),await this.sendResult(r,s,!0),this.events.emit(G.ping,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onPairingPingResponse=(s,i)=>{const{id:r}=i;setTimeout(()=>{T.isJsonRpcResult(i)?this.events.emit(c.engineEvent("pairing_ping",r),{}):T.isJsonRpcError(i)&&this.events.emit(c.engineEvent("pairing_ping",r),{error:i.error})},500)},this.onPairingDeleteRequest=async(s,i)=>{const{id:r}=i;try{this.isValidDisconnect({topic:s}),await this.deletePairing(s),this.events.emit(G.delete,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onUnknownRpcMethodRequest=async(s,i)=>{const{id:r,method:n}=i;try{if(this.registeredMethods.includes(n))return;const a=c.getSdkError("WC_METHOD_UNSUPPORTED",n);await this.sendError(r,s,a),this.logger.error(a)}catch(a){await this.sendError(r,s,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=s=>{this.registeredMethods.includes(s)||this.logger.error(c.getSdkError("WC_METHOD_UNSUPPORTED",s))},this.isValidPair=(s,i)=>{var r;if(!c.isValidParams(s)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() params: ${s}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!c.isValidUrl(s.uri)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() uri: ${s.uri}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}const n=c.parseUri(s?.uri);if(!((r=n?.relay)!=null&&r.protocol)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!(n!=null&&n.symKey)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(n!=null&&n.expiryTimestamp&&u.toMiliseconds(n?.expiryTimestamp){if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`ping() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidDisconnect=async s=>{if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`disconnect() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidPairingTopic=async s=>{if(!c.isValidString(s,!1)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`pairing topic should be a string: ${s}`);throw new Error(i)}if(!this.pairings.keys.includes(s)){const{message:i}=c.getInternalError("NO_MATCHING_KEY",`pairing topic doesn't exist: ${s}`);throw new Error(i)}if(c.isExpired(this.pairings.get(s).expiry)){await this.deletePairing(s);const{message:i}=c.getInternalError("EXPIRED",`pairing topic: ${s}`);throw new Error(i)}},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.pairings=new It(this.core,this.logger,this.name,this.storagePrefix)}get context(){return d.getLoggerContext(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(I.message,async e=>{const{topic:t,message:s,transportType:i}=e;if(!this.pairings.keys.includes(t)||i===B.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(s)))return;const r=await this.core.crypto.decode(t,s);try{T.isJsonRpcRequest(r)?(this.core.history.set(t,r),this.onRelayEventRequest({topic:t,payload:r})):T.isJsonRpcResponse(r)&&(await this.core.history.resolve(r),await this.onRelayEventResponse({topic:t,payload:r}),this.core.history.delete(t,r.id))}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(O.expired,async e=>{const{topic:t}=c.parseExpirerTarget(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(G.expire,{topic:t}))})}}class Ct extends N.IJsonRpcHistory{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new k.EventEmitter,this.name=Qe,this.version=et,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.records.set(s.id,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(s,i,r)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:s,request:i,chainId:r}),this.records.has(i.id))return;const n={id:i.id,topic:s,request:{method:i.method,params:i.params||null},chainId:r,expiry:c.calcExpiry(u.THIRTY_DAYS)};this.records.set(n.id,n),this.persist(),this.events.emit(S.created,n)},this.resolve=async s=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:s}),!this.records.has(s.id))return;const i=await this.getRecord(s.id);typeof i.response>"u"&&(i.response=T.isJsonRpcError(s)?{error:s.error}:{result:s.result},this.records.set(i.id,i),this.persist(),this.events.emit(S.updated,i))},this.get=async(s,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:s,id:i}),await this.getRecord(i)),this.delete=(s,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(r=>{if(r.topic===s){if(typeof i<"u"&&r.id!==i)return;this.records.delete(r.id),this.events.emit(S.deleted,r)}}),this.persist()},this.exists=async(s,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===s:!1),this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const s={topic:t.topic,request:T.formatJsonRpcRequest(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(s)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(S.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(S.created,e=>{const t=S.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.updated,e=>{const t=S.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.deleted,e=>{const t=S.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{u.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(S.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class St extends N.IExpirer{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new k.EventEmitter,this.name=tt,this.version=it,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.expirations.set(s.target,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=s=>{try{const i=this.formatTarget(s);return typeof this.getExpiration(i)<"u"}catch{return!1}},this.set=(s,i)=>{this.isInitialized();const r=this.formatTarget(s),n={target:r,expiry:i};this.expirations.set(r,n),this.checkExpiry(r,n),this.events.emit(O.created,{target:r,expiration:n})},this.get=s=>{this.isInitialized();const i=this.formatTarget(s);return this.getExpiration(i)},this.del=s=>{if(this.isInitialized(),this.has(s)){const i=this.formatTarget(s),r=this.getExpiration(i);this.expirations.delete(i),this.events.emit(O.deleted,{target:i,expiration:r})}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return c.formatTopicTarget(e);if(typeof e=="number")return c.formatIdTarget(e);const{message:t}=c.getInternalError("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(O.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(s),new Error(s)}return t}checkExpiry(e,t){const{expiry:s}=t;u.toMiliseconds(s)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(O.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on(O.created,e=>{const t=O.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.expired,e=>{const t=O.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.deleted,e=>{const t=O.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}var D={};Object.defineProperty(D,"__esModule",{value:!0}),D.getLocalStorage=D.getLocalStorageOrThrow=D.getCrypto=D.getCryptoOrThrow=D.getLocation=D.getLocationOrThrow=D.getNavigator=D.getNavigatorOrThrow=Ot=D.getDocument=D.getDocumentOrThrow=D.getFromWindowOrThrow=D.getFromWindow=void 0;function $(o){let e;return typeof window<"u"&&typeof window[o]<"u"&&(e=window[o]),e}D.getFromWindow=$;function j(o){const e=$(o);if(!e)throw new Error(`${o} is not defined in Window`);return e}D.getFromWindowOrThrow=j;function Ks(){return j("document")}D.getDocumentOrThrow=Ks;function qs(){return $("document")}var Ot=D.getDocument=qs;function js(){return j("navigator")}D.getNavigatorOrThrow=js;function Ys(){return $("navigator")}D.getNavigator=Ys;function Gs(){return j("location")}D.getLocationOrThrow=Gs;function Hs(){return $("location")}D.getLocation=Hs;function Js(){return j("crypto")}D.getCryptoOrThrow=Js;function Xs(){return $("crypto")}D.getCrypto=Xs;function Ws(){return j("localStorage")}D.getLocalStorageOrThrow=Ws;function Zs(){return $("localStorage")}D.getLocalStorage=Zs;class Pt extends N.IVerify{constructor(e,t,s){super(e,t,s),this.core=e,this.logger=t,this.store=s,this.name=st,this.verifyUrlV3=nt,this.storagePrefix=A,this.version=he,this.init=async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&u.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!c.isBrowser()||this.isDevEnv)return;const r=window.location.origin,{id:n,decryptedId:a}=i,h=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${r}&id=${n}&decryptedId=${a}`;try{const l=Ot(),p=this.startAbortTimer(u.ONE_SECOND*5),y=await new Promise((b,m)=>{const g=()=>{window.removeEventListener("message",v),l.body.removeChild(E),m("attestation aborted")};this.abortController.signal.addEventListener("abort",g);const E=l.createElement("iframe");E.src=h,E.style.display="none",E.addEventListener("error",g,{signal:this.abortController.signal});const v=_=>{if(!_.data)return;const w=JSON.parse(_.data);if(w.type==="verify_attestation"){if(re.decodeJWT(w.attestation).payload.id!==n)return;clearInterval(p),l.body.removeChild(E),this.abortController.signal.removeEventListener("abort",g),window.removeEventListener("message",v),b(w.attestation===null?"":w.attestation)}};l.body.appendChild(E),window.addEventListener("message",v,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",y),y}catch(l){this.logger.warn(l)}return""},this.resolve=async i=>{if(this.isDevEnv)return"";const{attestationId:r,hash:n,encryptedId:a}=i;if(r===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(r){if(re.decodeJWT(r).payload.id!==a)return;const l=await this.isValidJwtAttestation(r);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!n)return;const h=this.getVerifyUrl(i?.verifyUrl);return this.fetchAttestation(n,h)},this.fetchAttestation=async(i,r)=>{this.logger.debug(`resolving attestation: ${i} from url: ${r}`);const n=this.startAbortTimer(u.ONE_SECOND*5),a=await fetch(`${r}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(n),a.status===200?await a.json():void 0},this.getVerifyUrl=i=>{let r=i||H;return ot.includes(r)||(this.logger.info(`verify url: ${r}, not included in trusted list, assigning default: ${H}`),r=H),r},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(u.FIVE_SECONDS),r=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await r.json()}catch(i){this.logger.warn(i)}},this.persistPublicKey=async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async i=>{const r=await this.getPublicKey();try{if(r)return this.validateAttestation(i,r)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const n=await this.fetchAndPersistPublicKey();try{if(n)return this.validateAttestation(i,n)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async r=>{const n=await this.fetchPublicKey();n&&(await this.persistPublicKey(n),r(n))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i},this.validateAttestation=(i,r)=>{const n=c.verifyP256Jwt(i,r.publicKey),a={hasExpired:u.toMiliseconds(n.exp)this.abortController.abort(),u.toMiliseconds(e))}}class Nt extends N.IEchoClient{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=at,this.registerDeviceToken=async s=>{const{clientId:i,token:r,notificationType:n,enableEncrypted:a=!1}=s,h=`${ct}/${this.projectId}/clients`;await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:n,token:r,always_raw:a})})},this.logger=d.generateChildLogger(t,this.context)}}var Qs=Object.defineProperty,At=Object.getOwnPropertySymbols,er=Object.prototype.hasOwnProperty,tr=Object.prototype.propertyIsEnumerable,xt=(o,e,t)=>e in o?Qs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,X=(o,e)=>{for(var t in e||(e={}))er.call(e,t)&&xt(o,t,e[t]);if(At)for(var t of At(e))tr.call(e,t)&&xt(o,t,e[t]);return o};class Lt extends N.IEventClient{constructor(e,t,s=!0){super(e,t,s),this.core=e,this.logger=t,this.context=lt,this.storagePrefix=A,this.storageVersion=ht,this.events=new Map,this.shouldPersist=!1,this.createEvent=i=>{const{event:r="ERROR",type:n="",properties:{topic:a,trace:h}}=i,l=c.uuidv4(),p=this.core.projectId||"",y=Date.now(),b=X({eventId:l,bundleId:p,timestamp:y,props:{event:r,type:n,properties:{topic:a,trace:h}}},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,b),this.shouldPersist=!0),b},this.getEvent=i=>{const{eventId:r,topic:n}=i;if(r)return this.events.get(r);const a=Array.from(this.events.values()).find(h=>h.props.properties.topic===n);if(a)return X(X({},a),this.setMethods(a.eventId))},this.deleteEvent=i=>{const{eventId:r}=i;this.events.delete(r),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{u.fromMiliseconds(Date.now())-u.fromMiliseconds(i.timestamp)>ut&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})},this.setMethods=i=>({addTrace:r=>this.addTrace(i,r),setError:r=>this.setError(i,r)}),this.addTrace=(i,r)=>{const n=this.events.get(i);n&&(n.props.properties.trace.push(r),this.events.set(i,n),this.shouldPersist=!0)},this.setError=(i,r)=>{const n=this.events.get(i);n&&(n.props.type=r,n.timestamp=Date.now(),this.events.set(i,n),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(r=>{this.events.set(r.eventId,X(X({},r),this.setMethods(r.eventId)))})}catch(i){this.logger.warn(i)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[r,n]of this.events)n.props.type&&i.push(n);if(i.length!==0)try{if((await fetch(`${gt}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${ge}`,{method:"POST",body:JSON.stringify(i)})).ok)for(const r of i)this.events.delete(r.eventId),this.shouldPersist=!0}catch(r){this.logger.warn(r)}},this.logger=d.generateChildLogger(t,this.context),s?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var ir=Object.defineProperty,Ut=Object.getOwnPropertySymbols,sr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable,zt=(o,e,t)=>e in o?ir(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Mt=(o,e)=>{for(var t in e||(e={}))sr.call(e,t)&&zt(o,t,e[t]);if(Ut)for(var t of Ut(e))rr.call(e,t)&&zt(o,t,e[t]);return o};class ie extends N.ICore{constructor(e){var t;super(e),this.protocol=ce,this.version=he,this.name=te,this.events=new k.EventEmitter,this.initialized=!1,this.on=(n,a)=>this.events.on(n,a),this.once=(n,a)=>this.events.once(n,a),this.off=(n,a)=>this.events.off(n,a),this.removeListener=(n,a)=>this.events.removeListener(n,a),this.dispatchEnvelope=({topic:n,message:a,sessionExists:h})=>{if(!n||!a)return;const l={topic:n,message:a,publishedAt:Date.now(),transportType:B.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:h})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||ue,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const s=d.getDefaultLoggerOptions({level:typeof e?.logger=="string"&&e.logger?e.logger:Ne.logger}),{logger:i,chunkLoggerController:r}=d.generatePlatformLogger({opts:s,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=r,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var n,a;(n=this.logChunkController)!=null&&n.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=d.generateChildLogger(i,this.name),this.heartbeat=new K.HeartBeat,this.crypto=new pt(this,this.logger,e?.keychain),this.history=new Ct(this,this.logger),this.expirer=new St(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new jt.default(Mt(Mt({},Ae),e?.storageOptions)),this.relayer=new ft({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Rt(this,this.logger),this.verify=new Pt(this,this.logger,this.storage),this.echoClient=new Nt(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new Lt(this,this.logger,e?.telemetryEnabled)}static async init(e){const t=new ie(e);await t.initialize();const s=await t.crypto.getClientId();return await t.storage.setItem(Ge,s),t}get context(){return d.getLoggerContext(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(de,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(de)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}}const nr=ie;exports.CORE_CONTEXT=te,exports.CORE_DEFAULT=Ne,exports.CORE_PROTOCOL=ce,exports.CORE_STORAGE_OPTIONS=Ae,exports.CORE_STORAGE_PREFIX=A,exports.CORE_VERSION=he,exports.CRYPTO_CLIENT_SEED=le,exports.CRYPTO_CONTEXT=xe,exports.CRYPTO_JWT_TTL=Le,exports.Core=nr,exports.Crypto=pt,exports.ECHO_CONTEXT=at,exports.ECHO_URL=ct,exports.EVENTS_CLIENT_API_URL=gt,exports.EVENTS_STORAGE_CLEANUP_INTERVAL=ut,exports.EVENTS_STORAGE_CONTEXT=lt,exports.EVENTS_STORAGE_VERSION=ht,exports.EVENT_CLIENT_AUTHENTICATE_ERRORS=Ss,exports.EVENT_CLIENT_AUTHENTICATE_TRACES=Cs,exports.EVENT_CLIENT_CONTEXT=Ts,exports.EVENT_CLIENT_PAIRING_ERRORS=F,exports.EVENT_CLIENT_PAIRING_TRACES=z,exports.EVENT_CLIENT_SESSION_ERRORS=Rs,exports.EVENT_CLIENT_SESSION_TRACES=Is,exports.EXPIRER_CONTEXT=tt,exports.EXPIRER_DEFAULT_TTL=vs,exports.EXPIRER_EVENTS=O,exports.EXPIRER_STORAGE_VERSION=it,exports.EchoClient=Nt,exports.EventClient=Lt,exports.Expirer=St,exports.HISTORY_CONTEXT=Qe,exports.HISTORY_EVENTS=S,exports.HISTORY_STORAGE_VERSION=et,exports.JsonRpcHistory=Ct,exports.KEYCHAIN_CONTEXT=Ue,exports.KEYCHAIN_STORAGE_VERSION=ze,exports.KeyChain=dt,exports.MESSAGES_CONTEXT=Me,exports.MESSAGES_STORAGE_VERSION=Fe,exports.MessageTracker=yt,exports.PAIRING_CONTEXT=We,exports.PAIRING_DEFAULT_TTL=fs,exports.PAIRING_EVENTS=G,exports.PAIRING_RPC_OPTS=q,exports.PAIRING_STORAGE_VERSION=Ze,exports.PENDING_SUB_RESOLUTION_TIMEOUT=Xe,exports.PUBLISHER_CONTEXT=Be,exports.PUBLISHER_DEFAULT_TTL=Ve,exports.Pairing=Rt,exports.RELAYER_CONTEXT=Ke,exports.RELAYER_DEFAULT_LOGGER=$e,exports.RELAYER_DEFAULT_PROTOCOL=ke,exports.RELAYER_DEFAULT_RELAY_URL=ue,exports.RELAYER_EVENTS=I,exports.RELAYER_PROVIDER_EVENTS=R,exports.RELAYER_RECONNECT_TIMEOUT=je,exports.RELAYER_SDK_VERSION=ge,exports.RELAYER_STORAGE_OPTIONS=_s,exports.RELAYER_SUBSCRIBER_SUFFIX=qe,exports.RELAYER_TRANSPORT_CUTOFF=bs,exports.Relayer=ft,exports.STORE_STORAGE_VERSION=Ye,exports.SUBSCRIBER_CONTEXT=He,exports.SUBSCRIBER_DEFAULT_TTL=ms,exports.SUBSCRIBER_EVENTS=x,exports.SUBSCRIBER_STORAGE_VERSION=Je,exports.Store=It,exports.Subscriber=_t,exports.TRANSPORT_TYPES=B,exports.TRUSTED_VERIFY_URLS=ot,exports.VERIFY_CONTEXT=st,exports.VERIFY_SERVER=H,exports.VERIFY_SERVER_V3=nt,exports.Verify=Pt,exports.WALLETCONNECT_CLIENT_ID=Ge,exports.WALLETCONNECT_LINK_MODE_APPS=de,exports.default=ie; + //# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/@walletconnect/types/LICENSE b/node_modules/@walletconnect/types/LICENSE +new file mode 100644 +index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb +--- /dev/null ++++ b/node_modules/@walletconnect/types/LICENSE +@@ -0,0 +1,190 @@ ++ Apache License ++ Version 2.0, January 2004 ++ http://www.apache.org/licenses/ ++ ++ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++ 1. Definitions. ++ ++ "License" shall mean the terms and conditions for use, reproduction, ++ and distribution as defined by Sections 1 through 9 of this document. ++ ++ "Licensor" shall mean the copyright owner or entity authorized by ++ the copyright owner that is granting the License. ++ ++ "Legal Entity" shall mean the union of the acting entity and all ++ other entities that control, are controlled by, or are under common ++ control with that entity. For the purposes of this definition, ++ "control" means (i) the power, direct or indirect, to cause the ++ direction or management of such entity, whether by contract or ++ otherwise, or (ii) ownership of fifty percent (50%) or more of the ++ outstanding shares, or (iii) beneficial ownership of such entity. ++ ++ "You" (or "Your") shall mean an individual or Legal Entity ++ exercising permissions granted by this License. ++ ++ "Source" form shall mean the preferred form for making modifications, ++ including but not limited to software source code, documentation ++ source, and configuration files. ++ ++ "Object" form shall mean any form resulting from mechanical ++ transformation or translation of a Source form, including but ++ not limited to compiled object code, generated documentation, ++ and conversions to other media types. ++ ++ "Work" shall mean the work of authorship, whether in Source or ++ Object form, made available under the License, as indicated by a ++ copyright notice that is included in or attached to the work ++ (an example is provided in the Appendix below). ++ ++ "Derivative Works" shall mean any work, whether in Source or Object ++ form, that is based on (or derived from) the Work and for which the ++ editorial revisions, annotations, elaborations, or other modifications ++ represent, as a whole, an original work of authorship. For the purposes ++ of this License, Derivative Works shall not include works that remain ++ separable from, or merely link (or bind by name) to the interfaces of, ++ the Work and Derivative Works thereof. ++ ++ "Contribution" shall mean any work of authorship, including ++ the original version of the Work and any modifications or additions ++ to that Work or Derivative Works thereof, that is intentionally ++ submitted to Licensor for inclusion in the Work by the copyright owner ++ or by an individual or Legal Entity authorized to submit on behalf of ++ the copyright owner. For the purposes of this definition, "submitted" ++ means any form of electronic, verbal, or written communication sent ++ to the Licensor or its representatives, including but not limited to ++ communication on electronic mailing lists, source code control systems, ++ and issue tracking systems that are managed by, or on behalf of, the ++ Licensor for the purpose of discussing and improving the Work, but ++ excluding communication that is conspicuously marked or otherwise ++ designated in writing by the copyright owner as "Not a Contribution." ++ ++ "Contributor" shall mean Licensor and any individual or Legal Entity ++ on behalf of whom a Contribution has been received by Licensor and ++ subsequently incorporated within the Work. ++ ++ 2. Grant of Copyright License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ copyright license to reproduce, prepare Derivative Works of, ++ publicly display, publicly perform, sublicense, and distribute the ++ Work and such Derivative Works in Source or Object form. ++ ++ 3. Grant of Patent License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ (except as stated in this section) patent license to make, have made, ++ use, offer to sell, sell, import, and otherwise transfer the Work, ++ where such license applies only to those patent claims licensable ++ by such Contributor that are necessarily infringed by their ++ Contribution(s) alone or by combination of their Contribution(s) ++ with the Work to which such Contribution(s) was submitted. If You ++ institute patent litigation against any entity (including a ++ cross-claim or counterclaim in a lawsuit) alleging that the Work ++ or a Contribution incorporated within the Work constitutes direct ++ or contributory patent infringement, then any patent licenses ++ granted to You under this License for that Work shall terminate ++ as of the date such litigation is filed. ++ ++ 4. Redistribution. You may reproduce and distribute copies of the ++ Work or Derivative Works thereof in any medium, with or without ++ modifications, and in Source or Object form, provided that You ++ meet the following conditions: ++ ++ (a) You must give any other recipients of the Work or ++ Derivative Works a copy of this License; and ++ ++ (b) You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ (c) You must retain, in the Source form of any Derivative Works ++ that You distribute, all copyright, patent, trademark, and ++ attribution notices from the Source form of the Work, ++ excluding those notices that do not pertain to any part of ++ the Derivative Works; and ++ ++ (d) If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one ++ of the following places: within a NOTICE text file distributed ++ as part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents ++ of the NOTICE file are for informational purposes only and ++ do not modify the License. You may add Your own attribution ++ notices within Derivative Works that You distribute, alongside ++ or as an addendum to the NOTICE text from the Work, provided ++ that such additional attribution notices cannot be construed ++ as modifying the License. ++ ++ You may add Your own copyright statement to Your modifications and ++ may provide additional or different license terms and conditions ++ for use, reproduction, or distribution of Your modifications, or ++ for any such Derivative Works as a whole, provided Your use, ++ reproduction, and distribution of the Work otherwise complies with ++ the conditions stated in this License. ++ ++ 5. Submission of Contributions. Unless You explicitly state otherwise, ++ any Contribution intentionally submitted for inclusion in the Work ++ by You to the Licensor shall be under the terms and conditions of ++ this License, without any additional terms or conditions. ++ Notwithstanding the above, nothing herein shall supersede or modify ++ the terms of any separate license agreement you may have executed ++ with Licensor regarding such Contributions. ++ ++ 6. Trademarks. This License does not grant permission to use the trade ++ names, trademarks, service marks, or product names of the Licensor, ++ except as required for reasonable and customary use in describing the ++ origin of the Work and reproducing the content of the NOTICE file. ++ ++ 7. Disclaimer of Warranty. Unless required by applicable law or ++ agreed to in writing, Licensor provides the Work (and each ++ Contributor provides its Contributions) on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or ++ implied, including, without limitation, any warranties or conditions ++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A ++ PARTICULAR PURPOSE. You are solely responsible for determining the ++ appropriateness of using or redistributing the Work and assume any ++ risks associated with Your exercise of permissions under this License. ++ ++ 8. Limitation of Liability. In no event and under no legal theory, ++ whether in tort (including negligence), contract, or otherwise, ++ unless required by applicable law (such as deliberate and grossly ++ negligent acts) or agreed to in writing, shall any Contributor be ++ liable to You for damages, including any direct, indirect, special, ++ incidental, or consequential damages of any character arising as a ++ result of this License or out of the use or inability to use the ++ Work (including but not limited to damages for loss of goodwill, ++ work stoppage, computer failure or malfunction, or any and all ++ other commercial damages or losses), even if such Contributor ++ has been advised of the possibility of such damages. ++ ++ 9. Accepting Warranty or Additional Liability. While redistributing ++ the Work or Derivative Works thereof, You may choose to offer, ++ and charge a fee for, acceptance of support, warranty, indemnity, ++ or other liability obligations and/or rights consistent with this ++ License. However, in accepting such obligations, You may act only ++ on Your own behalf and on Your sole responsibility, not on behalf ++ of any other Contributor, and only if You agree to indemnify, ++ defend, and hold each Contributor harmless for any liability ++ incurred by, or claims asserted against, such Contributor by reason ++ of your accepting any such warranty or additional liability. ++ ++ END OF TERMS AND CONDITIONS ++ ++ Copyright 2021 WalletConnect, Inc. ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/README.md b/node_modules/@walletconnect/types/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..24e8d4f88f8d9a482f1b56b9c5f68b81ca8c75fc +--- /dev/null ++++ b/node_modules/@walletconnect/types/README.md +@@ -0,0 +1,3 @@ ++# @walletconnect/types ++ ++Typings for WalletConnect Protocol +diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js b/node_modules/@walletconnect/types/dist/index.cjs.js +new file mode 100644 +index 0000000000000000000000000000000000000000..383ea10b1540f1d6e6754ef233f3973660033adb +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.cjs.js +@@ -0,0 +1,2 @@ ++"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var o=require("@walletconnect/events"),c=require("events");function i(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var n=i(c);class l extends o.IEvents{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class a{constructor(s,e,r){this.core=s,this.logger=e}}class u extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e,this.records=new Map}}class I{constructor(s,e){this.logger=s,this.core=e}}class h extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class g extends o.IEvents{constructor(s){super()}}class p{constructor(s,e,r,m){this.core=s,this.logger=e,this.name=r}}class E{constructor(){this.map=new Map}}class v extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class d{constructor(s,e){this.core=s,this.logger=e}}class y extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e}}class C{constructor(s,e){this.logger=s,this.core=e}}class b{constructor(s,e,r){this.core=s,this.logger=e,this.store=r}}class f{constructor(s,e){this.projectId=s,this.logger=e}}class x{constructor(s,e,r){this.core=s,this.logger=e,this.telemetryEnabled=r}}class S extends n.default{constructor(){super()}}class M{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class P extends c.EventEmitter{constructor(){super()}}class _{constructor(s){this.client=s}}exports.ICore=l,exports.ICrypto=a,exports.IEchoClient=f,exports.IEngine=_,exports.IEngineEvents=P,exports.IEventClient=x,exports.IExpirer=y,exports.IJsonRpcHistory=u,exports.IKeyChain=d,exports.IMessageTracker=I,exports.IPairing=C,exports.IPublisher=h,exports.IRelayer=g,exports.ISignClient=M,exports.ISignClientEvents=S,exports.IStore=p,exports.ISubscriber=v,exports.ISubscriberTopicMap=E,exports.IVerify=b; ++//# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js.map b/node_modules/@walletconnect/types/dist/index.cjs.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8a14e09ef9b12a361fb23647494e0a2dbecceccd +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.cjs.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.cjs.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/index.es.js b/node_modules/@walletconnect/types/dist/index.es.js +new file mode 100644 +index 0000000000000000000000000000000000000000..0aa0b206b6a1d30087fcee3ddafc1a909a822ef3 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.es.js +@@ -0,0 +1,2 @@ ++import{IEvents as o}from"@walletconnect/events";import c,{EventEmitter as i}from"events";class n extends o{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class l{constructor(s,t,e){this.core=s,this.logger=t}}class h extends o{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class g extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class u extends o{constructor(s){super()}}class p{constructor(s,t,e,f){this.core=s,this.logger=t,this.name=e}}class I{constructor(){this.map=new Map}}class d extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class E{constructor(s,t){this.core=s,this.logger=t}}class x extends o{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t,e){this.core=s,this.logger=t,this.store=e}}class v{constructor(s,t){this.projectId=s,this.logger=t}}class C{constructor(s,t,e){this.core=s,this.logger=t,this.telemetryEnabled=e}}class b extends c{constructor(){super()}}class S{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class w extends i{constructor(){super()}}class M{constructor(s){this.client=s}}export{n as ICore,l as ICrypto,v as IEchoClient,M as IEngine,w as IEngineEvents,C as IEventClient,x as IExpirer,h as IJsonRpcHistory,E as IKeyChain,a as IMessageTracker,m as IPairing,g as IPublisher,u as IRelayer,S as ISignClient,b as ISignClientEvents,p as IStore,d as ISubscriber,I as ISubscriberTopicMap,y as IVerify}; ++//# sourceMappingURL=index.es.js.map +diff --git a/node_modules/@walletconnect/types/dist/index.es.js.map b/node_modules/@walletconnect/types/dist/index.es.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8f45be96f809d07ac1d2b206f7483e7b1620eb3c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.es.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.es.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/index.umd.js b/node_modules/@walletconnect/types/dist/index.umd.js +new file mode 100644 +index 0000000000000000000000000000000000000000..87fefecd1119ee6195aae42974facd4e621d51b6 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.umd.js +@@ -0,0 +1,2 @@ ++(function(c,l){typeof exports=="object"&&typeof module<"u"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(c=typeof globalThis<"u"?globalThis:c||self,l(c["@walletconnect/types"]={}))})(this,function(c){"use strict";class l{}class M extends l{constructor(e){super(),this.opts=e,this.protocol="wc",this.version=2}}class R{constructor(e,n,r){this.core=e,this.logger=n}}class j extends l{constructor(e,n){super(),this.core=e,this.logger=n,this.records=new Map}}class x{constructor(e,n){this.logger=e,this.core=n}}class P extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class N extends l{constructor(e){super()}}class S{constructor(e,n,r,s){this.core=e,this.logger=n,this.name=r}}class T{constructor(){this.map=new Map}}class A extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class K{constructor(e,n){this.core=e,this.logger=n}}class F extends l{constructor(e,n){super(),this.core=e,this.logger=n}}class W{constructor(e,n){this.logger=e,this.core=n}}class k{constructor(e,n,r){this.core=e,this.logger=n,this.store=r}}class H{constructor(e,n){this.projectId=e,this.logger=n}}class J{constructor(e,n,r){this.core=e,this.logger=n,this.telemetryEnabled=r}}var v={exports:{}},a=typeof Reflect=="object"?Reflect:null,g=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},p;a&&typeof a.ownKeys=="function"?p=a.ownKeys:Object.getOwnPropertySymbols?p=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:p=function(e){return Object.getOwnPropertyNames(e)};function U(t){console&&console.warn&&console.warn(t)}var y=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}v.exports=o,v.exports.once=B,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var m=10;function d(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return m},set:function(t){if(typeof t!="number"||t<0||y(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");m=t}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||y(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function L(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return L(this)},o.prototype.emit=function(e){for(var n=[],r=1;r0&&(i=n[0]),i instanceof Error)throw i;var f=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw f.context=i,f}var h=u[e];if(h===void 0)return!1;if(typeof h=="function")g(h,this,n);else for(var O=h.length,Z=w(h,O),r=0;r0&&i.length>s&&!i.warned){i.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=t,f.type=e,f.count=i.length,U(f)}return t}o.prototype.addListener=function(e,n){return I(this,e,n,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,n){return I(this,e,n,!0)};function V(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function b(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},s=V.bind(r);return s.listener=n,r.wrapFn=s,s}o.prototype.once=function(e,n){return d(n),this.on(e,b(this,e,n)),this},o.prototype.prependOnceListener=function(e,n){return d(n),this.prependListener(e,b(this,e,n)),this},o.prototype.removeListener=function(e,n){var r,s,u,i,f;if(d(n),s=this._events,s===void 0)return this;if(r=s[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(u=-1,i=r.length-1;i>=0;i--)if(r[i]===n||r[i].listener===n){f=r[i].listener,u=i;break}if(u<0)return this;u===0?r.shift():q(r,u),r.length===1&&(s[e]=r[0]),s.removeListener!==void 0&&this.emit("removeListener",e,f||n)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var n,r,s;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var u=Object.keys(r),i;for(s=0;s=0;s--)this.removeListener(e,n[s]);return this};function E(t,e,n){var r=t._events;if(r===void 0)return[];var s=r[e];return s===void 0?[]:typeof s=="function"?n?[s.listener||s]:[s]:n?z(s):w(s,s.length)}o.prototype.listeners=function(e){return E(this,e,!0)},o.prototype.rawListeners=function(e){return E(this,e,!1)},o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):_.call(t,e)},o.prototype.listenerCount=_;function _(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?p(this._events):[]};function w(t,e){for(var n=new Array(e),r=0;r;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["r","e","t","eventsModule","events","s"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..460b34629a0b911734ecaba508d50421126e9edd +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../src/core/keychain.ts","../src/core/crypto.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/subscriber.ts","../src/core/relayer.ts","../src/core/history.ts","../src/core/expirer.ts","../src/core/store.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/core/core.ts","../src/core/index.ts","../src/sign-client/proposal.ts","../src/sign-client/auth.ts","../src/sign-client/session.ts","../src/sign-client/jsonrpc.ts","../src/sign-client/pendingRequest.ts","../src/sign-client/engine.ts","../src/sign-client/client.ts","../src/sign-client/index.ts","../src/index.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d",{"version":"a771f3182c046f8b2d4a8b253d84037d1d6caf48139a5f329d60f8ca3cb7325d","signature":"1c697d5571b23e58c638327b0959ab8ce7a3a1192f3fa5847c545e8a35a88b81"},{"version":"b4cf311d307aad665c290a647adfa63c0d4c4978e90e1a800ac3284d9b6e768a","signature":"cac3cd6c55cbdb4092834342a8c256cc34ede50f83c8d33586236889bc7dd47b"},{"version":"211fbc870d26d33bd0530050e15ea959079e66d57c31b2c768cb835057090da5","signature":"8b8ae4783419c0cbba56335ae9af63181593d876a542d61a823a887a5b3fc713"},{"version":"db4f07433024766257b45c8633374c7b0863de92234b569bf89548f81f0a4366","signature":"970786dd0f7e0a4d2770980b3e30f84d78eb9e996bfc3beb8aec0fc79041baa3"},{"version":"135bc48d525c18e1f19bf4bff7c29a21dcc7dd3f0abbafad6e6a62f3d0ca2933","signature":"0e934b71219109c4714b29017a6886a1b9c08adbf4df9d7ba7ae36146390a79d"},{"version":"80832fb8ba22c5ecbce1c33c2a6a698aca342a02bbe847698150965b1d9a1e20","signature":"34975c50cf90a46824f60e8e68611d548c6a0065157f6ead4448739ce1e78cbc"},{"version":"8233ab90f5a0bb54dedf025800e9a1823ed0ee42e9f3a4fd135f272095f74134","signature":"091e3045270bd0b0b12765940128af773344d085621395001c2e4649c0c33c67"},{"version":"fe0f6ec258642189211e9d67504033d92f79e7823fcd73b304ca1c913aebabe6","signature":"f0d56ec8d982bcb82230aa47b0d2747b6ccc8be1b439f4f3e24b20021ac12f30"},{"version":"2a653343cd29fb91f423de0aa2c51e5ce5b576f9f7684dc928e0d8c9a85203c6","signature":"c1f143281fa2178579eaef19ebe393a0270cac3fafb71a5ec521f149e872c26f"},{"version":"f0c1218e7af8209b21f55c38178059cf8007792c0c5732f99234c12b53f8ffa1","signature":"e2fdf4b2544bbe1b3347cdf0a7c08862b26af46abd673b3f0e1f3ceb6a49c4a3"},{"version":"643ea5c45b0c77cb9ad78895b65c9b235731cdbd0064a2e1908ea76eb814f063","signature":"e749c3898546ad92b3108a44aef553f19405bf932d6b0001f9503339dedb95c2"},{"version":"e81123bb934323e71b994fcd11f18c33154848391ce4ded8a2203b3b27d72643","signature":"f60bbf96db27dd73d32ca5c0ccbe03c8f72aba2b87760ac96ac15b57c2d9ceb0"},{"version":"c6b348c2674697e96d15f33e44c0d341fe4ce2d143528f47d812c2862e7bc578","signature":"920e95b6d3bcea5ec794a47b5e5a5235d82b1d98bed7e3014f983eb1bd62001f"},{"version":"cbe7c085ede2a53876a3fffd73add76bcc1d5f5fb5b7864445b839d64efc8431","signature":"1f5fe58679cc5c902b7fb9e4fb68d0931a013fb3e750b858fa9ec45d6d0bc10b"},"ceef125d35ab5591ed4d99418619bebe7162ba0ab3a9693cc8ccb0d00585b2fa",{"version":"5b76efa21700a1af1b57a4d9ecf83250350f8153deb72e34c5d37eccda057d28","signature":"c927326561af6e91e91b8f265e7301980e04a2fc891b38cf49728f4708fd073f"},{"version":"be7ac29728e324262d56c3d013369ad849593184d90d3b7579addb58a50b643d","signature":"b52c2789aa7f160911601ad9e8733e0b336be2934bacda2b828aa5086af0a46a"},{"version":"75a3af7bd5e57f0efb399f4fc2f7004b2c1b85f76c2009475452ffd19e230019","signature":"b2600375c2fe289e75b8a6e609e31e495a69348be220beb1558d03e61e8cf4af"},{"version":"014837f0a732216e2b51e048f26f5d0246e070fa8376a54ceeb688337857d6d6","signature":"fcec1ddb829e46b81b98c1563495706b3dca00413b8ebbfc7c82193a226d812f"},{"version":"b6b109487ee24fcecac9515a8ee241d633079927490c81888eecabec2275ad74","signature":"aa44780a5dfa9df4f2524332299f01115f5281e9c8bf1a2e1cac2a5b81e5beff"},{"version":"5674581613842ef7ad27d6ea0416325f8cc664ef640141adf0500e4fc236d7db","signature":"af128a794f0eb1498c25b377066baff09bb11f87257854b389feb038e72bf2f1"},{"version":"588e77410266b14264311b70ee04fffdcc198eb05d661ce5b920739220eec914","signature":"1eb12a4c4f0d8256b321af7e7bce3b74912851eca4f9fad761b7ebefb047b9a5"},"a3d139874ac29911ca82720164581c1cf6985a87f1d95672d1968c08815628e4","7f4d7d3426e39f1be70dc80fe6bb73134591aa355026500d811a8365cfceb429","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,95],[58,61,87,88,95,149,150,151],[88,153],[88],[88,148],[88,157],[88,158],[58,88,95],[88,175],[88,163,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,166,167,168,169,170,171,172,173,174,175],[88,164,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,165,167,168,169,170,171,172,173,174,175],[88,163,164,165,166,168,169,170,171,172,173,174,175],[88,163,164,165,166,167,169,170,171,172,173,174,175],[88,163,164,165,166,167,168,170,171,172,173,174,175],[88,163,164,165,166,167,168,169,171,172,173,174,175],[88,163,164,165,166,167,168,169,170,172,173,174,175],[88,163,164,165,166,167,168,169,170,171,173,174,175],[88,163,164,165,166,167,168,169,170,171,172,174,175],[88,163,164,165,166,167,168,169,170,171,172,173,175],[88,163,164,165,166,167,168,169,170,171,172,173,174],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,185],[88,188],[88,190],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[61,88,95],[58,88,92,114,115],[42,88,97,103,108,123,124,125,129,130,131,133,134,135,136],[42,88,113,123,124,137],[42,88,123],[42,88,123,137],[42,88,97,123,137],[42,88,97,113,123,137],[42,88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[42,58,88,113,123,129,132,137],[42,88,97,123,129],[42,88,97,113,123,126,127,128,137],[42,88,113,123,137],[42,88,97,113,123,129],[42,88,108,123,137],[42,88,138,146],[42,88,113,138,141],[42,58,88,123,134,137,138,139,140,141,143,144],[42,58,88,113,129,133,138,139,140,141,142,143,145],[42,88,139,140,141,142,143,144,145],[42,88,113,129,139,141,145,146],[42,88,129,132,145],[42,88,129,132,139,140,145],[97,103,108,123,124,125,129,130,131,133,134,135,136],[113,123,124,137],[123],[123,137],[97,123,137],[97,113,123,137],[58,113,123,129,132,137],[97,123,129],[97,113,123,126,127,128,137],[113,123,137],[97,113,123,129],[108,123,137],[113,138,141],[58,123,134,137,138,139,140,141,143,144],[58,113,129,133,138,139,140,141,142,143,145],[113,129,139,141,145,146],[138,146],[129,132,145],[129,132,139,140,145]],"referencedMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,91],[125,92],[135,93],[136,94],[131,95],[130,96],[138,97],[124,94],[126,94],[133,98],[127,99],[129,100],[132,101],[128,102],[134,103],[147,104],[140,105],[145,106],[144,107],[146,108],[142,109],[143,104],[139,110],[141,111]],"exportedModulesMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,112],[125,113],[135,114],[136,115],[131,116],[130,117],[138,97],[124,115],[126,115],[133,118],[127,119],[129,120],[132,121],[128,122],[134,123],[147,104],[140,124],[145,125],[144,126],[146,108],[142,127],[143,128],[139,129],[141,130]],"semanticDiagnosticsPerFile":[148,152,154,153,155,156,150,157,158,159,160,161,162,176,164,165,163,166,167,168,169,170,171,172,173,174,175,177,178,179,180,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,181,182,183,151,184,186,185,187,189,188,190,191,96,97,101,102,100,103,98,99,113,109,110,111,112,108,107,106,104,105,121,119,117,123,118,120,122,149,114,116,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141]},"version":"4.7.4"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts b/node_modules/@walletconnect/types/dist/types/core/core.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..0391c9df2a40801ff58225e6530397d2f0979dfc +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts +@@ -0,0 +1,70 @@ ++import { IEvents } from "@walletconnect/events"; ++import { IHeartBeat } from "@walletconnect/heartbeat"; ++import { IKeyValueStorage, KeyValueStorageOptions } from "@walletconnect/keyvaluestorage"; ++import { ICrypto } from "./crypto"; ++import { IRelayer } from "./relayer"; ++import { IKeyChain } from "./keychain"; ++import { IJsonRpcHistory } from "./history"; ++import { IExpirer } from "./expirer"; ++import { IPairing } from "./pairing"; ++import { Logger } from "@walletconnect/logger"; ++import { IVerify } from "./verify"; ++import { IEchoClient } from "./echo"; ++import { IEventClient } from "./events"; ++export declare namespace CoreTypes { ++ interface Options { ++ projectId?: string; ++ name?: string; ++ relayUrl?: string; ++ logger?: string | Logger; ++ keychain?: IKeyChain; ++ storage?: IKeyValueStorage; ++ storageOptions?: KeyValueStorageOptions; ++ maxLogBlobSizeInBytes?: number; ++ customStoragePrefix?: string; ++ telemetryEnabled?: boolean; ++ } ++ interface Metadata { ++ name: string; ++ description: string; ++ url: string; ++ icons: string[]; ++ verifyUrl?: string; ++ redirect?: { ++ native?: string; ++ universal?: string; ++ linkMode?: boolean; ++ }; ++ } ++} ++export declare abstract class ICore extends IEvents { ++ opts?: CoreTypes.Options | undefined; ++ readonly protocol = "wc"; ++ readonly version = 2; ++ abstract readonly name: string; ++ abstract readonly context: string; ++ abstract readonly relayUrl?: string; ++ abstract readonly projectId?: string; ++ abstract readonly customStoragePrefix: string; ++ abstract logger: Logger; ++ abstract heartbeat: IHeartBeat; ++ abstract crypto: ICrypto; ++ abstract relayer: IRelayer; ++ abstract storage: IKeyValueStorage; ++ abstract history: IJsonRpcHistory; ++ abstract expirer: IExpirer; ++ abstract pairing: IPairing; ++ abstract verify: IVerify; ++ abstract echoClient: IEchoClient; ++ abstract linkModeSupportedApps: string[]; ++ abstract eventClient: IEventClient; ++ constructor(opts?: CoreTypes.Options | undefined); ++ abstract start(): Promise; ++ abstract dispatchEnvelope(params: { ++ topic: string; ++ message: string; ++ sessionExists: boolean; ++ }): void; ++ abstract addLinkModeSupportedApp(universalLink: string): void; ++} ++//# sourceMappingURL=core.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..79b876b6be25b1233b57cb1b8d05c207a0a9c49c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..cd6316ac28214711e0a51cdc8430a39d20cd43e5 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts +@@ -0,0 +1,81 @@ ++import { JsonRpcPayload } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++import { IKeyChain } from "./keychain"; ++export declare namespace CryptoTypes { ++ type EncodingType = "base64pad" | "base64url"; ++ interface Participant { ++ publicKey: string; ++ } ++ interface KeyPair { ++ privateKey: string; ++ publicKey: string; ++ } ++ interface EncryptParams { ++ message: string; ++ symKey: string; ++ type?: number; ++ iv?: string; ++ senderPublicKey?: string; ++ encoding?: EncodingType; ++ } ++ interface DecryptParams { ++ symKey: string; ++ encoded: string; ++ encoding?: EncodingType; ++ } ++ interface EncodingParams { ++ type: Uint8Array; ++ sealed: Uint8Array; ++ iv: Uint8Array; ++ senderPublicKey?: Uint8Array; ++ encoding?: EncodingType; ++ } ++ interface DecodingParams { ++ encoded: string; ++ encoding?: EncodingType; ++ } ++ interface EncodeOptions { ++ type?: number; ++ senderPublicKey?: string; ++ receiverPublicKey?: string; ++ encoding?: EncodingType; ++ } ++ interface DecodeOptions { ++ receiverPublicKey?: string; ++ encoding?: EncodingType; ++ } ++ interface EncodingValidation { ++ type: number; ++ senderPublicKey?: string; ++ receiverPublicKey?: string; ++ } ++ interface TypeOneParams { ++ type: 1; ++ senderPublicKey: string; ++ receiverPublicKey: string; ++ } ++} ++export declare abstract class ICrypto { ++ core: ICore; ++ logger: Logger; ++ abstract name: string; ++ abstract readonly context: string; ++ abstract keychain: IKeyChain; ++ abstract readonly randomSessionIdentifier: string; ++ constructor(core: ICore, logger: Logger, keychain?: IKeyChain); ++ abstract init(): Promise; ++ abstract hasKeys(tag: string): boolean; ++ abstract getClientId(): Promise; ++ abstract generateKeyPair(): Promise; ++ abstract generateSharedKey(selfPublicKey: string, peerPublicKey: string, overrideTopic?: string): Promise; ++ abstract setSymKey(symKey: string, overrideTopic?: string): Promise; ++ abstract deleteKeyPair(publicKey: string): Promise; ++ abstract deleteSymKey(topic: string): Promise; ++ abstract encode(topic: string, payload: JsonRpcPayload, opts?: CryptoTypes.EncodeOptions): Promise; ++ abstract decode(topic: string, encoded: string, opts?: CryptoTypes.DecodeOptions): Promise; ++ abstract signJWT(aud: string): Promise; ++ abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number; ++ abstract getPayloadSenderPublicKey(encoded: string, encoding?: CryptoTypes.EncodingType): string | undefined; ++} ++//# sourceMappingURL=crypto.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..4402043b63a14f2daa2291ce030a2c69613bdd2b +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/core/crypto.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..64f99da3f8b9d8652e697d735d139508062f473a +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts +@@ -0,0 +1,17 @@ ++import { Logger } from "@walletconnect/logger"; ++export declare namespace EchoClientTypes { ++ type RegisterDeviceTokenParams = { ++ clientId: string; ++ token: string; ++ notificationType: "fcm" | "apns" | "apns-sandbox" | "noop"; ++ enableEncrypted?: boolean; ++ }; ++} ++export declare abstract class IEchoClient { ++ projectId: string; ++ logger: Logger; ++ abstract readonly context: string; ++ constructor(projectId: string, logger: Logger); ++ abstract registerDeviceToken(params: EchoClientTypes.RegisterDeviceTokenParams): Promise; ++} ++//# sourceMappingURL=echo.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..0d96f2e7263890a1754cefda3d2e7674e6e4ad40 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/core/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,yBAAyB,GAAG;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC;QAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AACD,8BAAsB,WAAW;IAEZ,SAAS,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM;IAD3D,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBACtB,SAAS,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM;aAE3C,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,yBAAyB,GAChD,OAAO,CAAC,IAAI,CAAC;CACjB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts b/node_modules/@walletconnect/types/dist/types/core/events.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..16673bbdde13ec7fc6d924c1ce3a4e7aed4fd6ca +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts +@@ -0,0 +1,45 @@ ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare namespace EventClientTypes { ++ interface Event { ++ eventId: string; ++ bundleId: string; ++ timestamp: number; ++ props: Props; ++ addTrace: (trace: string) => void; ++ setError: (error: string) => void; ++ } ++ interface Props { ++ event: string; ++ type: string; ++ properties: Properties; ++ } ++ interface Properties { ++ topic: string; ++ trace: Trace; ++ } ++ type Trace = string[]; ++} ++export declare abstract class IEventClient { ++ core: ICore; ++ logger: Logger; ++ telemetryEnabled: boolean; ++ abstract readonly context: string; ++ constructor(core: ICore, logger: Logger, telemetryEnabled: boolean); ++ abstract createEvent(params: { ++ event?: "ERROR"; ++ type?: string; ++ properties: { ++ topic: string; ++ trace: EventClientTypes.Trace; ++ }; ++ }): EventClientTypes.Event; ++ abstract getEvent(params: { ++ eventId?: string; ++ topic?: string; ++ }): EventClientTypes.Event | undefined; ++ abstract deleteEvent(params: { ++ eventId: string; ++ }): void; ++} ++//# sourceMappingURL=events.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..471f6507a8b7e83e4ef0ae15391f57a5b77f9fd4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/core/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,UAAiB,KAAK;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC;IAED,UAAiB,KAAK;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAiB,UAAU;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC;KACd;IAED,KAAY,KAAK,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,8BAAsB,YAAY;IAGb,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,gBAAgB,EAAE,OAAO;IAFvF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,gBAAgB,EAAE,OAAO;aAEvE,WAAW,CAAC,MAAM,EAAE;QAClC,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;SAC/B,CAAC;KACH,GAAG,gBAAgB,CAAC,KAAK;aAEV,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,gBAAgB,CAAC,KAAK,GAAG,SAAS;aAEtB,WAAW,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAC/D"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..e773cbc725fc62e09c3f45e8005f7b9f09962bf4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts +@@ -0,0 +1,37 @@ ++import { IEvents } from "@walletconnect/events"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare namespace ExpirerTypes { ++ interface Expiration { ++ target: string; ++ expiry: number; ++ } ++ interface Created { ++ target: string; ++ expiration: Expiration; ++ } ++ interface Deleted { ++ target: string; ++ expiration: Expiration; ++ } ++ interface Expired { ++ target: string; ++ expiration: Expiration; ++ } ++} ++export declare abstract class IExpirer extends IEvents { ++ core: ICore; ++ logger: Logger; ++ abstract name: string; ++ abstract readonly context: string; ++ abstract readonly length: number; ++ abstract readonly keys: string[]; ++ abstract readonly values: ExpirerTypes.Expiration[]; ++ constructor(core: ICore, logger: Logger); ++ abstract init(): Promise; ++ abstract has(key: string | number): boolean; ++ abstract set(key: string | number, expiry: number): void; ++ abstract get(key: string | number): ExpirerTypes.Expiration; ++ abstract del(key: string | number): void; ++} ++//# sourceMappingURL=expirer.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..039287dcbead4999a93db36dad82c4f61bd85361 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"expirer.d.ts","sourceRoot":"","sources":["../../../src/core/expirer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,UAAU,UAAU;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;CACF;AAED,8BAAsB,QAAS,SAAQ,OAAO;IAWzB,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAVrD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;gBAExC,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;aAElC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;aAE/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,UAAU;aAElD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAChD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts b/node_modules/@walletconnect/types/dist/types/core/history.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..f246f7694840abc0e8f5e6441455e4553b9caccc +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts +@@ -0,0 +1,39 @@ ++import { IEvents } from "@walletconnect/events"; ++import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, RequestArguments } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export interface JsonRpcRecord { ++ id: number; ++ topic: string; ++ request: RequestArguments; ++ chainId?: string; ++ response?: { ++ result: any; ++ } | { ++ error: ErrorResponse; ++ }; ++ expiry?: number; ++} ++export interface RequestEvent { ++ topic: string; ++ request: JsonRpcRequest; ++ chainId?: string; ++} ++export declare abstract class IJsonRpcHistory extends IEvents { ++ core: ICore; ++ logger: Logger; ++ records: Map; ++ abstract readonly context: string; ++ abstract readonly size: number; ++ abstract readonly keys: number[]; ++ abstract readonly values: JsonRpcRecord[]; ++ abstract readonly pending: RequestEvent[]; ++ constructor(core: ICore, logger: Logger); ++ abstract init(): Promise; ++ abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void; ++ abstract get(topic: string, id: number): Promise; ++ abstract resolve(response: JsonRpcResponse): Promise; ++ abstract delete(topic: string, id?: number): void; ++ abstract exists(topic: string, id: number): Promise; ++} ++//# sourceMappingURL=history.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a8aeccc4612787896f1ca40b84db1b14a849d256 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8BAAsB,eAAgB,SAAQ,OAAO;IAahC,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAZ9C,OAAO,6BAAoC;IAElD,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,aAAa,EAAE,CAAC;IAEjD,kBAAyB,OAAO,EAAE,YAAY,EAAE,CAAC;gBAE9B,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;aAEnE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;aAEtD,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACpE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts b/node_modules/@walletconnect/types/dist/types/core/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..02675dcdb9e3911efa8ed77e7f140ec6f1eca561 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts +@@ -0,0 +1,15 @@ ++export * from "./core"; ++export * from "./crypto"; ++export * from "./history"; ++export * from "./messages"; ++export * from "./publisher"; ++export * from "./relayer"; ++export * from "./store"; ++export * from "./subscriber"; ++export * from "./keychain"; ++export * from "./expirer"; ++export * from "./pairing"; ++export * from "./verify"; ++export * from "./echo"; ++export * from "./events"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..e14ce7e74170113321cfb441e56bf9df7b3992a4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..218c51ae2c58db5eb14446a2062c768c705f1d4f +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts +@@ -0,0 +1,16 @@ ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare abstract class IKeyChain { ++ core: ICore; ++ logger: Logger; ++ abstract keychain: Map; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(core: ICore, logger: Logger); ++ abstract init(): Promise; ++ abstract has(tag: string, opts?: any): boolean; ++ abstract set(tag: string, key: string, opts?: any): Promise; ++ abstract get(tag: string, opts?: any): string; ++ abstract del(tag: string, opts?: any): Promise; ++} ++//# sourceMappingURL=keychain.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..3e0f9a20a7ece06b0ad5ed999e075ec315ad8382 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/core/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,SAAS;IAOV,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO;aAErC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;aAExD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM;aAEpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5D"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..34006e8889690dd2bf2922e9c312f60f8c1152eb +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts +@@ -0,0 +1,17 @@ ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare type MessageRecord = Record; ++export declare abstract class IMessageTracker { ++ logger: Logger; ++ core: ICore; ++ abstract messages: Map; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(logger: Logger, core: ICore); ++ abstract init(): Promise; ++ abstract set(topic: string, message: string): Promise; ++ abstract get(topic: string): MessageRecord; ++ abstract has(topic: string, message: string): boolean; ++ abstract del(topic: string): Promise; ++} ++//# sourceMappingURL=messages.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a1ce2fc3ef9ed3b6183fdcd78030ccd6d249298e +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,oBAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,8BAAsB,eAAe;IAOhB,MAAM,EAAE,MAAM;IAAS,IAAI,EAAE,KAAK;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAErD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,KAAK;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEpD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;aAEjC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;aAE5C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAClD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..3c2345bf7b4774d3f6de2e8121646e0ec41bb18e +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts +@@ -0,0 +1,94 @@ ++/// ++import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; ++import EventEmitter from "events"; ++import { ICore, CoreTypes } from "./core"; ++import { IStore } from "./store"; ++import { RelayerTypes } from "../core/relayer"; ++import { Logger } from "@walletconnect/logger"; ++export declare namespace PairingTypes { ++ interface Struct { ++ topic: string; ++ expiry: number; ++ relay: RelayerTypes.ProtocolOptions; ++ active: boolean; ++ peerMetadata?: CoreTypes.Metadata; ++ methods?: string[]; ++ } ++} ++export declare namespace PairingJsonRpcTypes { ++ type DefaultResponse = true | ErrorResponse; ++ type WcMethod = "wc_pairingDelete" | "wc_pairingPing"; ++ type Error = ErrorResponse; ++ interface RequestParams { ++ wc_pairingDelete: { ++ code: number; ++ message: string; ++ }; ++ wc_pairingPing: Record; ++ } ++ interface Results { ++ wc_pairingDelete: true; ++ wc_pairingPing: true; ++ } ++ interface EventCallback { ++ topic: string; ++ payload: T; ++ } ++} ++export declare type IPairingStore = IStore; ++export declare abstract class IPairing { ++ logger: Logger; ++ core: ICore; ++ abstract name: string; ++ abstract readonly context: string; ++ abstract events: EventEmitter; ++ abstract pairings: IPairingStore; ++ constructor(logger: Logger, core: ICore); ++ abstract init(): Promise; ++ abstract pair(params: { ++ uri: string; ++ activatePairing?: boolean; ++ }): Promise; ++ abstract create(params?: { ++ methods?: string[]; ++ transportType?: RelayerTypes.SubscribeOptions["transportType"]; ++ }): Promise<{ ++ topic: string; ++ uri: string; ++ }>; ++ abstract activate(params: { ++ topic: string; ++ }): Promise; ++ abstract register(params: { ++ methods: string[]; ++ }): void; ++ abstract updateExpiry(params: { ++ topic: string; ++ expiry: number; ++ }): Promise; ++ abstract updateMetadata(params: { ++ topic: string; ++ metadata: CoreTypes.Metadata; ++ }): Promise; ++ abstract getPairings(): PairingTypes.Struct[]; ++ abstract ping(params: { ++ topic: string; ++ }): Promise; ++ abstract disconnect(params: { ++ topic: string; ++ }): Promise; ++} ++export interface IPairingPrivate { ++ sendRequest(topic: string, method: M, params: PairingJsonRpcTypes.RequestParams[M]): Promise; ++ sendResult(id: number, topic: string, result: PairingJsonRpcTypes.Results[M]): Promise; ++ sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise; ++ onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void; ++ onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise; ++ onPairingPingRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onPairingPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onPairingDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onUnknownRpcMethodResponse(method: string): void; ++ deletePairing(topic: string, expirerHasDeleted?: boolean): Promise; ++} ++//# sourceMappingURL=pairing.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ddd62cf2f022ebe2e92e18967d92d97fe242061c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../../../src/core/pairing.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..393635615f4b5acfbac68451bd38b12d8a67b309 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts +@@ -0,0 +1,19 @@ ++import { IEvents } from "@walletconnect/events"; ++import { Logger } from "@walletconnect/logger"; ++import { IRelayer, RelayerTypes } from "./relayer"; ++export declare namespace PublisherTypes { ++ interface Params { ++ topic: string; ++ message: string; ++ opts: Omit; ++ } ++} ++export declare abstract class IPublisher extends IEvents { ++ relayer: IRelayer; ++ logger: Logger; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(relayer: IRelayer, logger: Logger); ++ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; ++} ++//# sourceMappingURL=publisher.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..6aee29ba86c24c4df155b29495f368d8da1af161 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../src/core/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KACrD;CACF;AAED,8BAAsB,UAAW,SAAQ,OAAO;IAK3B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAJ3D,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,OAAO,CAAC,IAAI,CAAC;CACjB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..fe99e9b168ba2818e8d3d703279bed2c715b63e7 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts +@@ -0,0 +1,96 @@ ++import { IEvents } from "@walletconnect/events"; ++import { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++import { IMessageTracker } from "./messages"; ++import { IPublisher } from "./publisher"; ++import { ISubscriber } from "./subscriber"; ++export declare namespace RelayerTypes { ++ interface ProtocolOptions { ++ protocol: string; ++ data?: string; ++ } ++ interface PublishOptions { ++ relay?: ProtocolOptions; ++ ttl?: number; ++ prompt?: boolean; ++ tag?: number; ++ id?: number; ++ internal?: { ++ throwOnFailedPublish?: boolean; ++ }; ++ attestation?: string; ++ } ++ type TransportType = "relay" | "link_mode"; ++ interface SubscribeOptions { ++ relay?: ProtocolOptions; ++ transportType?: TransportType; ++ } ++ interface UnsubscribeOptions { ++ id?: string; ++ relay: ProtocolOptions; ++ } ++ type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions; ++ interface PublishPayload { ++ topic: string; ++ message: string; ++ opts?: RelayerTypes.PublishOptions; ++ } ++ interface MessageEvent { ++ topic: string; ++ message: string; ++ publishedAt: number; ++ transportType?: TransportType; ++ attestation?: string; ++ } ++ interface RpcUrlParams { ++ protocol: string; ++ version: number; ++ auth: string; ++ relayUrl: string; ++ sdkVersion: string; ++ projectId?: string; ++ useOnCloseEvent?: boolean; ++ bundleId?: string; ++ } ++} ++export interface RelayerOptions { ++ core: ICore; ++ logger?: string | Logger; ++ relayUrl?: string; ++ projectId?: string; ++} ++export interface RelayerClientMetadata { ++ protocol: string; ++ version: number; ++ env: string; ++ host?: string; ++} ++export declare abstract class IRelayer extends IEvents { ++ abstract core: ICore; ++ abstract logger: Logger; ++ abstract subscriber: ISubscriber; ++ abstract publisher: IPublisher; ++ abstract messages: IMessageTracker; ++ abstract provider: IJsonRpcProvider; ++ abstract name: string; ++ abstract transportExplicitlyClosed: boolean; ++ abstract readonly context: string; ++ abstract readonly connected: boolean; ++ abstract readonly connecting: boolean; ++ constructor(opts: RelayerOptions); ++ abstract init(): Promise; ++ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; ++ abstract request(request: RequestArguments): Promise; ++ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; ++ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; ++ abstract transportClose(): Promise; ++ abstract transportOpen(relayUrl?: string): Promise; ++ abstract restartTransport(relayUrl?: string): Promise; ++ abstract confirmOnlineStateOrThrow(): Promise; ++ abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise; ++ abstract onLinkMessageEvent(messageEvent: RelayerTypes.MessageEvent, opts?: { ++ sessionExists?: boolean; ++ }): Promise; ++} ++//# sourceMappingURL=relayer.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8415bb875fcbbd01bf86693f499aaa07d91d9438 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../src/core/relayer.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts b/node_modules/@walletconnect/types/dist/types/core/store.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..112b87ce75749a3806358364995f470a501239d2 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts +@@ -0,0 +1,21 @@ ++import { ErrorResponse } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare abstract class IStore { ++ core: ICore; ++ logger: Logger; ++ name: string; ++ abstract map: Map; ++ abstract readonly context: string; ++ abstract readonly length: number; ++ abstract readonly keys: Key[]; ++ abstract readonly values: Value[]; ++ constructor(core: ICore, logger: Logger, name: string, storagePrefix?: string); ++ abstract init(): Promise; ++ abstract set(key: Key, value: Value): Promise; ++ abstract get(key: Key): Value; ++ abstract getAll(filter?: Partial): Value[]; ++ abstract update(key: Key, update: Partial): Promise; ++ abstract delete(key: Key, reason: ErrorResponse): Promise; ++} ++//# sourceMappingURL=store.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5a99c125668c0072c989dbd37a4564ff6670653c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,MAAM,CAAC,GAAG,EAAE,KAAK;IAY5B,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IAbrB,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAErC,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,GAAG,EAAE,CAAC;IAErC,kBAAyB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAGhC,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAEnB,aAAa,CAAC,EAAE,MAAM;aAGR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;aAE1C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK;aAEpB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;aAExC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;aAEvD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CACvE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dd6aea5407bbcc4f20b6f15472bc5d52b17ce2ec +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts +@@ -0,0 +1,49 @@ ++import { IEvents } from "@walletconnect/events"; ++import { ErrorResponse } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { IRelayer, RelayerTypes } from "./relayer"; ++export declare namespace SubscriberTypes { ++ interface Params extends RelayerTypes.SubscribeOptions { ++ topic: string; ++ } ++ interface Active extends Params { ++ id: string; ++ } ++} ++export declare namespace SubscriberEvents { ++ type Created = SubscriberTypes.Active; ++ interface Deleted extends SubscriberTypes.Active { ++ reason: ErrorResponse; ++ } ++ type Expired = Deleted; ++} ++export declare abstract class ISubscriberTopicMap { ++ map: Map; ++ abstract readonly topics: string[]; ++ abstract set(topic: string, id: string): void; ++ abstract get(topic: string): string[]; ++ abstract exists(topic: string, id: string): boolean; ++ abstract delete(topic: string, id?: string): void; ++ abstract clear(): void; ++} ++export declare abstract class ISubscriber extends IEvents { ++ relayer: IRelayer; ++ logger: Logger; ++ abstract subscriptions: Map; ++ abstract topicMap: ISubscriberTopicMap; ++ abstract pending: Map; ++ abstract readonly length: number; ++ abstract readonly ids: string[]; ++ abstract readonly values: SubscriberTypes.Active[]; ++ abstract readonly topics: string[]; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(relayer: IRelayer, logger: Logger); ++ abstract init(): Promise; ++ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; ++ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; ++ abstract isSubscribed(topic: string): Promise; ++ abstract start(): Promise; ++ abstract stop(): Promise; ++} ++//# sourceMappingURL=subscriber.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5eebf731cbc2107021b9a9d97c6ec5d75751314d +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../../src/core/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,UAAiB,MAAO,SAAQ,YAAY,CAAC,gBAAgB;QAC3D,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,MAAO,SAAQ,MAAM;QACpC,EAAE,EAAE,MAAM,CAAC;KACZ;CACF;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAY,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;IAE7C,UAAiB,OAAQ,SAAQ,eAAe,CAAC,MAAM;QACrD,MAAM,EAAE,aAAa,CAAC;KACvB;IAED,KAAY,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,8BAAsB,mBAAmB;IAChC,GAAG,wBAA+B;IAEzC,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;aAE1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;aAEpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;aAE5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;aAE1C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,KAAK,IAAI,IAAI;CAC9B;AAED,8BAAsB,WAAY,SAAQ,OAAO;IAmB5B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAlB3D,SAAgB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnE,SAAgB,QAAQ,EAAE,mBAAmB,CAAC;IAE9C,SAAgB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAE7D,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,GAAG,EAAE,MAAM,EAAE,CAAC;IAEvC,kBAAyB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;IAE1D,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,YAAY,CAAC,gBAAgB,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aAET,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;aAEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CACtC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c0a1d50f4f400826e8b5bd49e263e07d34077e8f +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts +@@ -0,0 +1,34 @@ ++import { Logger } from "@walletconnect/logger"; ++import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; ++import { ICore } from "./core"; ++export declare namespace Verify { ++ interface Context { ++ verified: { ++ origin: string; ++ validation: "UNKNOWN" | "VALID" | "INVALID"; ++ verifyUrl: string; ++ isScam?: boolean; ++ }; ++ } ++} ++export declare abstract class IVerify { ++ core: ICore; ++ logger: Logger; ++ store: IKeyValueStorage; ++ abstract readonly context: string; ++ constructor(core: ICore, logger: Logger, store: IKeyValueStorage); ++ abstract register(params: { ++ id: string; ++ decryptedId: string; ++ }): Promise; ++ abstract resolve(params: { ++ attestationId?: string; ++ hash?: string; ++ encryptedId?: string; ++ verifyUrl?: string; ++ }): Promise<{ ++ origin: string; ++ isScam?: boolean; ++ }>; ++} ++//# sourceMappingURL=verify.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..1a75b1894ecb118f2816f19f016b88cfdd415bf9 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/core/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,UAAiB,OAAO;QACtB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAC5C,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;CACF;AAED,8BAAsB,OAAO;IAGR,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,KAAK,EAAE,gBAAgB;IAFrF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,KAAK,EAAE,gBAAgB;aAErE,QAAQ,CAAC,MAAM,EAAE;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;aAEf,OAAO,CAAC,MAAM,EAAE;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts b/node_modules/@walletconnect/types/dist/types/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..ed69742e9ae63a17ff5321c699f7f4e9e50ff5b4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/index.d.ts +@@ -0,0 +1,3 @@ ++export * from "./core"; ++export * from "./sign-client"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..da476f2661eb396ee5a01a33c5cb5377c8930d90 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..281e39e34acc58f7f544c7f1d6367d3225e45313 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts +@@ -0,0 +1,153 @@ ++import { ErrorResponse, JsonRpcError, JsonRpcRequest, JsonRpcResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; ++import { CoreTypes, ICore, IStore, RelayerTypes, Verify } from "../core"; ++import { SessionTypes } from "./session"; ++export declare namespace AuthTypes { ++ type Event = "session_authenticate"; ++ interface AuthRequestEventArgs { ++ requester: Participant; ++ authPayload: PayloadParams; ++ expiryTimestamp: number; ++ transportType?: RelayerTypes.TransportType; ++ } ++ type AuthResponseEventArgs = { ++ message: string; ++ code: number; ++ } | JsonRpcResult | JsonRpcError; ++ interface BaseEventArgs { ++ id: number; ++ topic: string; ++ params: T; ++ verifyContext?: Verify.Context; ++ } ++ interface EventArguments { ++ auth_request: BaseEventArgs; ++ auth_response: BaseEventArgs; ++ sign_request: BaseEventArgs<{ ++ request: { ++ method: string; ++ params: any; ++ }; ++ chainId: string; ++ }>; ++ sign_response: BaseEventArgs; ++ } ++ interface Options extends CoreTypes.Options { ++ metadata: Metadata; ++ core?: ICore; ++ projectId: string; ++ } ++ interface Metadata { ++ name: string; ++ description: string; ++ url: string; ++ icons: string[]; ++ redirect?: { ++ native?: string; ++ universal?: string; ++ linkMode?: boolean; ++ }; ++ verifyUrl?: string; ++ } ++ interface EventCallback { ++ topic: string; ++ payload: T; ++ } ++ type FormatMessageParams = { ++ aud?: string; ++ uri?: string; ++ } & Omit; ++ interface BaseAuthRequestParams { ++ domain: string; ++ aud: string; ++ nonce: string; ++ version?: string; ++ iat?: string; ++ nbf?: string; ++ exp?: string; ++ chainId?: string; ++ statement?: string; ++ requestId?: string; ++ resources?: string[]; ++ expiry?: number; ++ type?: string; ++ } ++ type RequestParams = { ++ chains: string[]; ++ } & BaseAuthRequestParams; ++ type SessionAuthenticateParams = { ++ pairingTopic?: string; ++ methods?: string[]; ++ uri: string; ++ } & Omit; ++ type PayloadParams = { ++ version: string; ++ iat: string; ++ } & RequestParams; ++ type CacaoPayload = { ++ iss: string; ++ } & BaseAuthRequestParams; ++ interface CacaoHeader { ++ t: "caip122"; ++ } ++ interface CacaoSignature { ++ t: "eip191" | "eip1271"; ++ s: string; ++ m?: string; ++ } ++ interface Cacao { ++ h: CacaoHeader; ++ p: CacaoPayload; ++ s: CacaoSignature; ++ } ++ interface PendingRequest { ++ id: number; ++ pairingTopic: string; ++ requester: Participant; ++ expiryTimestamp: number; ++ authPayload: PayloadParams; ++ verifyContext: Verify.Context; ++ transportType?: RelayerTypes.TransportType; ++ } ++ interface ApproveSessionAuthenticateParams { ++ id: number; ++ auths: Cacao[]; ++ } ++ interface SessionAuthenticateResponseParams { ++ responder: Participant; ++ cacaos: Cacao[]; ++ } ++ interface AuthErrorResponse { ++ id: number; ++ error: ErrorResponse; ++ } ++ type AuthResponse = SessionAuthenticateResponseParams["cacaos"]; ++ interface Participant { ++ publicKey: string; ++ metadata: Metadata; ++ } ++ interface SessionAuthenticateRequestParams { ++ requester: Participant; ++ authPayload: PayloadParams; ++ expiryTimestamp: number; ++ } ++ interface SessionAuthenticateRequest extends SessionAuthenticateRequestParams { ++ verifyContext: Verify.Context; ++ } ++ type AuthenticateResponseResult = { ++ auths?: AuthTypes.AuthResponse; ++ session: SessionTypes.Struct; ++ }; ++} ++export declare type IAuth = { ++ init(): Promise; ++ authKeys: IStore; ++ pairingTopics: IStore; ++ requests: IStore; ++}; ++//# sourceMappingURL=auth.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7b4c07a2d8f16fb60de4771fd2238cbc2c1f89c3 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/sign-client/auth.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..d1661b7120103ce4fe47428e8ee777de9d3a82de +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts +@@ -0,0 +1,123 @@ ++/// ++import { Logger } from "@walletconnect/logger"; ++import EventEmmiter from "events"; ++import { CoreTypes, ICore } from "../core/core"; ++import { IEngine } from "./engine"; ++import { IPendingRequest } from "./pendingRequest"; ++import { IProposal, ProposalTypes } from "./proposal"; ++import { ISession, SessionTypes } from "./session"; ++import { Verify } from "../core/verify"; ++import { IAuth, AuthTypes } from "./auth"; ++import { RelayerTypes } from "../core"; ++export declare namespace SignClientTypes { ++ type Event = "session_proposal" | "session_update" | "session_extend" | "session_ping" | "session_delete" | "session_expire" | "session_request" | "session_request_sent" | "session_event" | "session_authenticate" | "proposal_expire" | "session_request_expire"; ++ interface BaseEventArgs { ++ id: number; ++ topic: string; ++ params: T; ++ } ++ interface EventArguments { ++ session_proposal: { ++ verifyContext: Verify.Context; ++ } & Omit, "topic">; ++ session_update: BaseEventArgs<{ ++ namespaces: SessionTypes.Namespaces; ++ }>; ++ session_extend: Omit; ++ session_ping: Omit; ++ session_delete: Omit; ++ session_expire: { ++ topic: string; ++ }; ++ session_request: { ++ verifyContext: Verify.Context; ++ } & BaseEventArgs<{ ++ request: { ++ method: string; ++ params: any; ++ expiryTimestamp?: number; ++ }; ++ chainId: string; ++ }>; ++ session_request_sent: { ++ request: { ++ method: string; ++ params: any; ++ }; ++ topic: string; ++ chainId: string; ++ id: number; ++ }; ++ session_event: BaseEventArgs<{ ++ event: { ++ name: string; ++ data: any; ++ }; ++ chainId: string; ++ }>; ++ session_authenticate: { ++ verifyContext: Verify.Context; ++ transportType?: RelayerTypes.TransportType; ++ } & BaseEventArgs; ++ proposal_expire: { ++ id: number; ++ }; ++ session_request_expire: { ++ id: number; ++ }; ++ } ++ type Metadata = CoreTypes.Metadata; ++ type SignConfig = { ++ disableRequestQueue?: boolean; ++ }; ++ interface Options extends CoreTypes.Options { ++ core?: ICore; ++ metadata?: Metadata; ++ signConfig?: SignConfig; ++ } ++} ++export declare abstract class ISignClientEvents extends EventEmmiter { ++ constructor(); ++ abstract emit: (event: E, args: SignClientTypes.EventArguments[E]) => boolean; ++ abstract on: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract once: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract off: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract removeListener: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract removeAllListeners: (event: E) => this; ++} ++export declare abstract class ISignClient { ++ opts?: SignClientTypes.Options | undefined; ++ readonly protocol = "wc"; ++ readonly version = 2; ++ abstract readonly name: string; ++ abstract readonly context: string; ++ abstract readonly metadata: SignClientTypes.Metadata; ++ abstract core: ICore; ++ abstract logger: Logger; ++ abstract events: ISignClientEvents; ++ abstract engine: IEngine; ++ abstract session: ISession; ++ abstract proposal: IProposal; ++ abstract pendingRequest: IPendingRequest; ++ abstract auth: IAuth; ++ abstract signConfig?: SignClientTypes.SignConfig; ++ constructor(opts?: SignClientTypes.Options | undefined); ++ abstract connect: IEngine["connect"]; ++ abstract pair: IEngine["pair"]; ++ abstract approve: IEngine["approve"]; ++ abstract reject: IEngine["reject"]; ++ abstract update: IEngine["update"]; ++ abstract extend: IEngine["extend"]; ++ abstract request: IEngine["request"]; ++ abstract respond: IEngine["respond"]; ++ abstract ping: IEngine["ping"]; ++ abstract emit: IEngine["emit"]; ++ abstract disconnect: IEngine["disconnect"]; ++ abstract find: IEngine["find"]; ++ abstract getPendingSessionRequests: IEngine["getPendingSessionRequests"]; ++ abstract authenticate: IEngine["authenticate"]; ++ abstract formatAuthMessage: IEngine["formatAuthMessage"]; ++ abstract approveSessionAuthenticate: IEngine["approveSessionAuthenticate"]; ++ abstract rejectSessionAuthenticate: IEngine["rejectSessionAuthenticate"]; ++} ++//# sourceMappingURL=client.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..70e9c049668d90e09de3b54e328400408f0c37ad +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/sign-client/client.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..8f6a650283555f5716605ea714d8ad87290164ee +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts +@@ -0,0 +1,279 @@ ++/// ++import { JsonRpcResponse, JsonRpcRequest, ErrorResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; ++import { ISignClient } from "./client"; ++import { RelayerTypes } from "../core/relayer"; ++import { SessionTypes } from "./session"; ++import { ProposalTypes } from "./proposal"; ++import { PairingTypes } from "../core/pairing"; ++import { JsonRpcTypes } from "./jsonrpc"; ++import { EventEmitter } from "events"; ++import { PendingRequestTypes } from "./pendingRequest"; ++import { AuthTypes } from "./auth"; ++import { CryptoTypes } from "../core"; ++export declare namespace EngineTypes { ++ type Event = "session_connect" | "session_approve" | "session_update" | "session_extend" | "session_ping" | "pairing_ping" | "session_request"; ++ interface EventArguments { ++ session_connect: { ++ error?: ErrorResponse; ++ session?: SessionTypes.Struct; ++ }; ++ session_approve: { ++ error?: ErrorResponse; ++ }; ++ session_update: { ++ error?: ErrorResponse; ++ }; ++ session_extend: { ++ error?: ErrorResponse; ++ }; ++ session_ping: { ++ error?: ErrorResponse; ++ }; ++ pairing_ping: { ++ error?: ErrorResponse; ++ }; ++ session_request: { ++ error?: ErrorResponse; ++ result?: any; ++ }; ++ } ++ interface UriParameters { ++ protocol: string; ++ version: number; ++ topic: string; ++ symKey: string; ++ relay: RelayerTypes.ProtocolOptions; ++ methods?: string[]; ++ expiryTimestamp?: number; ++ } ++ interface EventCallback { ++ topic: string; ++ payload: T; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ attestation?: string; ++ encryptedId?: string; ++ } ++ interface ConnectParams { ++ requiredNamespaces?: ProposalTypes.RequiredNamespaces; ++ optionalNamespaces?: ProposalTypes.OptionalNamespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ pairingTopic?: string; ++ relays?: RelayerTypes.ProtocolOptions[]; ++ } ++ interface PairParams { ++ uri: string; ++ } ++ interface ApproveParams { ++ id: number; ++ namespaces: SessionTypes.Namespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ sessionConfig?: SessionTypes.SessionConfig; ++ relayProtocol?: string; ++ } ++ interface RejectParams { ++ id: number; ++ reason: ErrorResponse; ++ } ++ interface UpdateParams { ++ topic: string; ++ namespaces: SessionTypes.Namespaces; ++ } ++ interface ExtendParams { ++ topic: string; ++ } ++ interface RequestParams { ++ topic: string; ++ request: { ++ method: string; ++ params: any; ++ }; ++ chainId: string; ++ expiry?: number; ++ } ++ interface RespondParams { ++ topic: string; ++ response: JsonRpcResponse; ++ } ++ interface EmitParams { ++ topic: string; ++ event: { ++ name: string; ++ data: any; ++ }; ++ chainId: string; ++ } ++ interface PingParams { ++ topic: string; ++ } ++ interface DisconnectParams { ++ topic: string; ++ reason: ErrorResponse; ++ } ++ interface FindParams { ++ requiredNamespaces: ProposalTypes.RequiredNamespaces; ++ } ++ type AcknowledgedPromise = Promise<{ ++ acknowledged: () => Promise; ++ }>; ++ type SessionAuthenticateResponsePromise = { ++ uri: string; ++ response: () => Promise; ++ }; ++ interface RpcOpts { ++ req: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ res: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ reject?: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ autoReject?: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ } ++ type RpcOptsMap = Record; ++ type EngineQueue = { ++ state: "IDLE" | "ACTIVE"; ++ queue: T[]; ++ }; ++} ++export declare abstract class IEngineEvents extends EventEmitter { ++ constructor(); ++ abstract emit: (event: string, args: EngineTypes.EventArguments[E]) => boolean; ++ abstract once: (event: string, listener: (args: EngineTypes.EventArguments[E]) => any) => this; ++} ++export interface EnginePrivate { ++ sendRequest(args: { ++ topic: string; ++ method: M; ++ params: JsonRpcTypes.RequestParams[M]; ++ expiry?: number; ++ relayRpcId?: number; ++ clientRpcId?: number; ++ throwOnFailedPublish?: boolean; ++ appLink?: string; ++ }): Promise; ++ sendResult(args: { ++ id: number; ++ topic: string; ++ result: JsonRpcTypes.Results[M]; ++ throwOnFailedPublish?: boolean; ++ encodeOpts?: CryptoTypes.EncodeOptions; ++ appLink?: string; ++ }): Promise; ++ sendError(params: { ++ id: number; ++ topic: string; ++ error: JsonRpcTypes.Error; ++ encodeOpts?: CryptoTypes.EncodeOptions; ++ rpcOpts?: RelayerTypes.PublishOptions; ++ appLink?: string; ++ }): Promise; ++ onRelayEventRequest(event: EngineTypes.EventCallback): Promise; ++ onRelayEventResponse(event: EngineTypes.EventCallback): Promise; ++ onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise; ++ shouldIgnorePairingRequest(params: { ++ topic: string; ++ requestMethod: string; ++ }): boolean; ++ deleteSession(params: { ++ topic: string; ++ expirerHasDeleted?: boolean; ++ id?: number; ++ emitEvent?: boolean; ++ }): Promise; ++ deleteProposal(id: number, expirerHasDeleted?: boolean): Promise; ++ setExpiry(topic: string, expiry: number): Promise; ++ setProposal(id: number, proposal: ProposalTypes.Struct): Promise; ++ setAuthRequest(id: number, params: { ++ request: AuthTypes.SessionAuthenticateRequest; ++ pairingTopic: string; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ }): Promise; ++ setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise; ++ deletePendingSessionRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; ++ deletePendingAuthRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; ++ cleanupDuplicatePairings(session: SessionTypes.Struct): Promise; ++ cleanup(): Promise; ++ onSessionProposeRequest(params: { ++ topic: string; ++ payload: JsonRpcRequest; ++ attestation?: string; ++ encryptedId?: string; ++ }): Promise; ++ onSessionProposeResponse(topic: string, payload: JsonRpcResult | JsonRpcError, transportType?: RelayerTypes.MessageEvent["transportType"]): Promise; ++ onSessionSettleRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionSettleResponse(topic: string, payload: JsonRpcResult | JsonRpcError): Promise; ++ onSessionUpdateRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionUpdateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionExtendRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionExtendResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionPingRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionRequest(params: { ++ topic: string; ++ payload: JsonRpcRequest; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ attestation?: string; ++ encryptedId?: string; ++ }): Promise; ++ onSessionRequestResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionEventRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionAuthenticateRequest(params: { ++ topic: string; ++ payload: JsonRpcRequest; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ attestation?: string; ++ encryptedId?: string; ++ }): Promise; ++ onSessionAuthenticateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ isValidConnect(params: EngineTypes.ConnectParams): Promise; ++ isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams["wc_sessionSettle"]): void; ++ isValidApprove(params: EngineTypes.ApproveParams): Promise; ++ isValidReject(params: EngineTypes.RejectParams): Promise; ++ isValidUpdate(params: EngineTypes.UpdateParams): Promise; ++ isValidExtend(params: EngineTypes.ExtendParams): Promise; ++ isValidRequest(params: EngineTypes.RequestParams): Promise; ++ isValidRespond(params: EngineTypes.RespondParams): Promise; ++ isValidPing(params: EngineTypes.PingParams): Promise; ++ isValidEmit(params: EngineTypes.EmitParams): Promise; ++ isValidDisconnect(params: EngineTypes.DisconnectParams): Promise; ++} ++export declare abstract class IEngine { ++ client: ISignClient; ++ constructor(client: ISignClient); ++ abstract init(): Promise; ++ abstract connect(params: EngineTypes.ConnectParams): Promise<{ ++ uri?: string; ++ approval: () => Promise; ++ }>; ++ abstract pair(params: EngineTypes.PairParams): Promise; ++ abstract approve(params: EngineTypes.ApproveParams): Promise<{ ++ topic: string; ++ acknowledged: () => Promise; ++ }>; ++ abstract reject(params: EngineTypes.RejectParams): Promise; ++ abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise; ++ abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise; ++ abstract request(params: EngineTypes.RequestParams): Promise; ++ abstract respond(params: EngineTypes.RespondParams): Promise; ++ abstract emit(params: EngineTypes.EmitParams): Promise; ++ abstract ping(params: EngineTypes.PingParams): Promise; ++ abstract disconnect(params: EngineTypes.DisconnectParams): Promise; ++ abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[]; ++ abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[]; ++ abstract authenticate: (params: AuthTypes.SessionAuthenticateParams, walletUniversalLink?: string) => Promise; ++ abstract approveSessionAuthenticate: (params: AuthTypes.ApproveSessionAuthenticateParams) => Promise<{ ++ session: SessionTypes.Struct | undefined; ++ }>; ++ abstract formatAuthMessage: (params: { ++ request: AuthTypes.BaseAuthRequestParams; ++ iss: string; ++ }) => string; ++ abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise; ++ abstract processRelayMessageCache(): void; ++} ++//# sourceMappingURL=engine.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..d7f3548f76ea0708c1c5d2c9ccbe16593cf14f7c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/sign-client/engine.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..242855bed6410d880c0653491d84ce4cb452f9bd +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts +@@ -0,0 +1,8 @@ ++export * from "./client"; ++export * from "./engine"; ++export * from "./jsonrpc"; ++export * from "./proposal"; ++export * from "./session"; ++export * from "./pendingRequest"; ++export * from "./auth"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..63f07513c22550da21ea365c3cbdbbc0d5d65925 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sign-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..5fa4a16c6e1fe95806a2ee82edcf3b4fed072e11 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts +@@ -0,0 +1,82 @@ ++import { ErrorResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; ++import { SignClientTypes } from "./client"; ++import { RelayerTypes } from "../core/relayer"; ++import { SessionTypes } from "./session"; ++import { ProposalTypes } from "./proposal"; ++import { AuthTypes } from "."; ++export declare namespace JsonRpcTypes { ++ type DefaultResponse = true | ErrorResponse; ++ type WcMethod = "wc_sessionPropose" | "wc_sessionSettle" | "wc_sessionUpdate" | "wc_sessionExtend" | "wc_sessionDelete" | "wc_sessionPing" | "wc_sessionRequest" | "wc_sessionEvent" | "wc_sessionAuthenticate"; ++ interface RequestParams { ++ wc_pairingDelete: { ++ code: number; ++ message: string; ++ }; ++ wc_pairingPing: Record; ++ wc_sessionPropose: { ++ relays: RelayerTypes.ProtocolOptions[]; ++ requiredNamespaces: ProposalTypes.RequiredNamespaces; ++ optionalNamespaces: ProposalTypes.OptionalNamespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ proposer: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ expiryTimestamp?: number; ++ }; ++ wc_sessionSettle: { ++ relay: RelayerTypes.ProtocolOptions; ++ namespaces: SessionTypes.Namespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ sessionConfig?: SessionTypes.SessionConfig; ++ expiry: number; ++ controller: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ }; ++ wc_sessionUpdate: { ++ namespaces: SessionTypes.Namespaces; ++ }; ++ wc_sessionExtend: Record; ++ wc_sessionDelete: { ++ code: number; ++ message: string; ++ }; ++ wc_sessionPing: Record; ++ wc_sessionRequest: { ++ request: { ++ method: string; ++ params: any; ++ expiryTimestamp?: number; ++ }; ++ chainId: string; ++ }; ++ wc_sessionEvent: { ++ event: { ++ name: string; ++ data: unknown; ++ }; ++ chainId: string; ++ }; ++ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateRequestParams; ++ } ++ interface Results { ++ wc_pairingDelete: true; ++ wc_pairingPing: true; ++ wc_sessionPropose: { ++ relay: RelayerTypes.ProtocolOptions; ++ responderPublicKey: string; ++ }; ++ wc_sessionSettle: true; ++ wc_sessionUpdate: true; ++ wc_sessionExtend: true; ++ wc_sessionDelete: true; ++ wc_sessionPing: true; ++ wc_sessionRequest: JsonRpcResult; ++ wc_sessionEvent: true; ++ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateResponseParams; ++ } ++ type Error = ErrorResponse; ++} ++//# sourceMappingURL=jsonrpc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..92d29f0e811ea9bdbcd4d8b38b7d88a7bb3cd99e +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../src/sign-client/jsonrpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAE9B,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IAEpC,KAAY,eAAe,GAAG,IAAI,GAAG,aAAa,CAAC;IAEnD,KAAY,QAAQ,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,wBAAwB,CAAC;IAI7B,UAAiB,aAAa;QAC5B,gBAAgB,EAAE;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,iBAAiB,EAAE;YACjB,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;YACvC,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;YACrD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;YACrD,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;YACpD,QAAQ,EAAE;gBACR,SAAS,EAAE,MAAM,CAAC;gBAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;aACpC,CAAC;YACF,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF,gBAAgB,EAAE;YAChB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;YACpC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;YACpC,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;YACpD,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE;gBACV,SAAS,EAAE,MAAM,CAAC;gBAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;aACpC,CAAC;SACH,CAAC;QACF,gBAAgB,EAAE;YAChB,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;SACrC,CAAC;QACF,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,gBAAgB,EAAE;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,iBAAiB,EAAE;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC;gBACf,MAAM,EAAE,GAAG,CAAC;gBACZ,eAAe,CAAC,EAAE,MAAM,CAAC;aAC1B,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,eAAe,EAAE;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,OAAO,CAAC;aACf,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,sBAAsB,EAAE,SAAS,CAAC,gCAAgC,CAAC;KACpE;IAGD,UAAiB,OAAO;QACtB,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,EAAE,IAAI,CAAC;QACrB,iBAAiB,EAAE;YACjB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;YACpC,kBAAkB,EAAE,MAAM,CAAC;SAC5B,CAAC;QACF,gBAAgB,EAAE,IAAI,CAAC;QACvB,gBAAgB,EAAE,IAAI,CAAC;QACvB,gBAAgB,EAAE,IAAI,CAAC;QACvB,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,EAAE,IAAI,CAAC;QACrB,iBAAiB,EAAE,aAAa,CAAC;QACjC,eAAe,EAAE,IAAI,CAAC;QACtB,sBAAsB,EAAE,SAAS,CAAC,iCAAiC,CAAC;KACrE;IAED,KAAY,KAAK,GAAG,aAAa,CAAC;CACnC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c061f9d1ec576e1f27323b621e96f530a037caae +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts +@@ -0,0 +1,12 @@ ++import { IStore, Verify } from "../core"; ++import { SignClientTypes } from "./"; ++export declare namespace PendingRequestTypes { ++ interface Struct { ++ topic: string; ++ id: number; ++ params: SignClientTypes.EventArguments["session_request"]["params"]; ++ verifyContext: Verify.Context; ++ } ++} ++export declare type IPendingRequest = IStore; ++//# sourceMappingURL=pendingRequest.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7a301fe8ff59b665f0e3146dfaa1f193928cba41 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"pendingRequest.d.ts","sourceRoot":"","sources":["../../../src/sign-client/pendingRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;KAC/B;CACF;AACD,oBAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..5503a33768c89d9720900d25303efd2422691ab8 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts +@@ -0,0 +1,30 @@ ++import { SignClientTypes } from "./client"; ++import { RelayerTypes } from "../core/relayer"; ++import { IStore } from "../core/store"; ++export declare namespace ProposalTypes { ++ interface BaseRequiredNamespace { ++ chains?: string[]; ++ methods: string[]; ++ events: string[]; ++ } ++ type RequiredNamespace = BaseRequiredNamespace; ++ type RequiredNamespaces = Record; ++ type OptionalNamespaces = Record; ++ type SessionProperties = Record; ++ interface Struct { ++ id: number; ++ expiry?: number; ++ expiryTimestamp: number; ++ relays: RelayerTypes.ProtocolOptions[]; ++ proposer: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ requiredNamespaces: RequiredNamespaces; ++ optionalNamespaces: OptionalNamespaces; ++ sessionProperties?: SessionProperties; ++ pairingTopic: string; ++ } ++} ++export declare type IProposal = IStore; ++//# sourceMappingURL=proposal.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..fa80071c845054bf2a059788bcdf281dbceb5dba +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/sign-client/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,UAAU,qBAAqB;QAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,iBAAiB,GAAG,qBAAqB,CAAC;IAE/C,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,UAAiB,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC;QAIX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;QACvC,QAAQ,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,YAAY,EAAE,MAAM,CAAC;KACtB;CACF;AAED,oBAAY,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..61d0d35c1c852a15c742bf7acc09cc60a106de89 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts +@@ -0,0 +1,44 @@ ++import { RelayerTypes } from "../core/relayer"; ++import { IStore } from "../core/store"; ++import { SignClientTypes } from "./client"; ++import { ProposalTypes } from "./proposal"; ++import { AuthTypes } from "./auth"; ++export declare namespace SessionTypes { ++ type Expiry = number; ++ interface BaseNamespace { ++ chains?: string[]; ++ accounts: string[]; ++ methods: string[]; ++ events: string[]; ++ } ++ type Namespace = BaseNamespace; ++ type Namespaces = Record; ++ interface SessionConfig { ++ disableDeepLink?: boolean; ++ } ++ interface Struct { ++ topic: string; ++ pairingTopic: string; ++ relay: RelayerTypes.ProtocolOptions; ++ expiry: Expiry; ++ acknowledged: boolean; ++ controller: string; ++ namespaces: Namespaces; ++ requiredNamespaces: ProposalTypes.RequiredNamespaces; ++ optionalNamespaces: ProposalTypes.OptionalNamespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ sessionConfig?: SessionConfig; ++ self: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ peer: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ authentication?: AuthTypes.Cacao[]; ++ transportType?: RelayerTypes.TransportType; ++ } ++} ++export declare type ISession = IStore; ++//# sourceMappingURL=session.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ad7c88b332e708b2ffb396aa9ad1298f740216b7 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/sign-client/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,MAAM,GAAG,MAAM,CAAC;IAErB,UAAU,aAAa;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,SAAS,GAAG,aAAa,CAAC;IAE/B,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE5C,UAAU,aAAa;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;IAED,UAAU,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACpD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,cAAc,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC;KAC5C;CACF;AAED,oBAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/package.json b/node_modules/@walletconnect/types/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..6c714822590402efcf168b7a275f8a4a67ab9779 +--- /dev/null ++++ b/node_modules/@walletconnect/types/package.json +@@ -0,0 +1,67 @@ ++{ ++ "name": "@walletconnect/types", ++ "description": "Typings for WalletConnect Protocol", ++ "version": "2.16.1", ++ "author": "WalletConnect, Inc. ", ++ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", ++ "license": "Apache-2.0", ++ "main": "dist/index.cjs.js", ++ "module": "dist/index.es.js", ++ "unpkg": "dist/index.umd.js", ++ "types": "dist/types/index.d.ts", ++ "sideEffects": false, ++ "files": [ ++ "dist" ++ ], ++ "keywords": [ ++ "wallet", ++ "walletconnect" ++ ], ++ "scripts": { ++ "clean": "rm -rf dist", ++ "build:pre": "npm run clean", ++ "build:types": "tsc", ++ "build:source": "rollup --config rollup.config.js", ++ "build": "npm run build:pre; npm run build:source; npm run build:types", ++ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", ++ "prettier": "prettier --check 'src/**/*.{js,ts,jsx,tsx}'" ++ }, ++ "dependencies": { ++ "@walletconnect/events": "1.0.1", ++ "@walletconnect/heartbeat": "1.2.2", ++ "@walletconnect/jsonrpc-types": "1.0.4", ++ "@walletconnect/keyvaluestorage": "1.1.1", ++ "@walletconnect/logger": "2.1.2", ++ "events": "3.3.0" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/@walletconnect/utils/LICENSE b/node_modules/@walletconnect/utils/LICENSE +new file mode 100644 +index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb +--- /dev/null ++++ b/node_modules/@walletconnect/utils/LICENSE +@@ -0,0 +1,190 @@ ++ Apache License ++ Version 2.0, January 2004 ++ http://www.apache.org/licenses/ ++ ++ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++ 1. Definitions. ++ ++ "License" shall mean the terms and conditions for use, reproduction, ++ and distribution as defined by Sections 1 through 9 of this document. ++ ++ "Licensor" shall mean the copyright owner or entity authorized by ++ the copyright owner that is granting the License. ++ ++ "Legal Entity" shall mean the union of the acting entity and all ++ other entities that control, are controlled by, or are under common ++ control with that entity. For the purposes of this definition, ++ "control" means (i) the power, direct or indirect, to cause the ++ direction or management of such entity, whether by contract or ++ otherwise, or (ii) ownership of fifty percent (50%) or more of the ++ outstanding shares, or (iii) beneficial ownership of such entity. ++ ++ "You" (or "Your") shall mean an individual or Legal Entity ++ exercising permissions granted by this License. ++ ++ "Source" form shall mean the preferred form for making modifications, ++ including but not limited to software source code, documentation ++ source, and configuration files. ++ ++ "Object" form shall mean any form resulting from mechanical ++ transformation or translation of a Source form, including but ++ not limited to compiled object code, generated documentation, ++ and conversions to other media types. ++ ++ "Work" shall mean the work of authorship, whether in Source or ++ Object form, made available under the License, as indicated by a ++ copyright notice that is included in or attached to the work ++ (an example is provided in the Appendix below). ++ ++ "Derivative Works" shall mean any work, whether in Source or Object ++ form, that is based on (or derived from) the Work and for which the ++ editorial revisions, annotations, elaborations, or other modifications ++ represent, as a whole, an original work of authorship. For the purposes ++ of this License, Derivative Works shall not include works that remain ++ separable from, or merely link (or bind by name) to the interfaces of, ++ the Work and Derivative Works thereof. ++ ++ "Contribution" shall mean any work of authorship, including ++ the original version of the Work and any modifications or additions ++ to that Work or Derivative Works thereof, that is intentionally ++ submitted to Licensor for inclusion in the Work by the copyright owner ++ or by an individual or Legal Entity authorized to submit on behalf of ++ the copyright owner. For the purposes of this definition, "submitted" ++ means any form of electronic, verbal, or written communication sent ++ to the Licensor or its representatives, including but not limited to ++ communication on electronic mailing lists, source code control systems, ++ and issue tracking systems that are managed by, or on behalf of, the ++ Licensor for the purpose of discussing and improving the Work, but ++ excluding communication that is conspicuously marked or otherwise ++ designated in writing by the copyright owner as "Not a Contribution." ++ ++ "Contributor" shall mean Licensor and any individual or Legal Entity ++ on behalf of whom a Contribution has been received by Licensor and ++ subsequently incorporated within the Work. ++ ++ 2. Grant of Copyright License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ copyright license to reproduce, prepare Derivative Works of, ++ publicly display, publicly perform, sublicense, and distribute the ++ Work and such Derivative Works in Source or Object form. ++ ++ 3. Grant of Patent License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ (except as stated in this section) patent license to make, have made, ++ use, offer to sell, sell, import, and otherwise transfer the Work, ++ where such license applies only to those patent claims licensable ++ by such Contributor that are necessarily infringed by their ++ Contribution(s) alone or by combination of their Contribution(s) ++ with the Work to which such Contribution(s) was submitted. If You ++ institute patent litigation against any entity (including a ++ cross-claim or counterclaim in a lawsuit) alleging that the Work ++ or a Contribution incorporated within the Work constitutes direct ++ or contributory patent infringement, then any patent licenses ++ granted to You under this License for that Work shall terminate ++ as of the date such litigation is filed. ++ ++ 4. Redistribution. You may reproduce and distribute copies of the ++ Work or Derivative Works thereof in any medium, with or without ++ modifications, and in Source or Object form, provided that You ++ meet the following conditions: ++ ++ (a) You must give any other recipients of the Work or ++ Derivative Works a copy of this License; and ++ ++ (b) You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ (c) You must retain, in the Source form of any Derivative Works ++ that You distribute, all copyright, patent, trademark, and ++ attribution notices from the Source form of the Work, ++ excluding those notices that do not pertain to any part of ++ the Derivative Works; and ++ ++ (d) If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one ++ of the following places: within a NOTICE text file distributed ++ as part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents ++ of the NOTICE file are for informational purposes only and ++ do not modify the License. You may add Your own attribution ++ notices within Derivative Works that You distribute, alongside ++ or as an addendum to the NOTICE text from the Work, provided ++ that such additional attribution notices cannot be construed ++ as modifying the License. ++ ++ You may add Your own copyright statement to Your modifications and ++ may provide additional or different license terms and conditions ++ for use, reproduction, or distribution of Your modifications, or ++ for any such Derivative Works as a whole, provided Your use, ++ reproduction, and distribution of the Work otherwise complies with ++ the conditions stated in this License. ++ ++ 5. Submission of Contributions. Unless You explicitly state otherwise, ++ any Contribution intentionally submitted for inclusion in the Work ++ by You to the Licensor shall be under the terms and conditions of ++ this License, without any additional terms or conditions. ++ Notwithstanding the above, nothing herein shall supersede or modify ++ the terms of any separate license agreement you may have executed ++ with Licensor regarding such Contributions. ++ ++ 6. Trademarks. This License does not grant permission to use the trade ++ names, trademarks, service marks, or product names of the Licensor, ++ except as required for reasonable and customary use in describing the ++ origin of the Work and reproducing the content of the NOTICE file. ++ ++ 7. Disclaimer of Warranty. Unless required by applicable law or ++ agreed to in writing, Licensor provides the Work (and each ++ Contributor provides its Contributions) on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or ++ implied, including, without limitation, any warranties or conditions ++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A ++ PARTICULAR PURPOSE. You are solely responsible for determining the ++ appropriateness of using or redistributing the Work and assume any ++ risks associated with Your exercise of permissions under this License. ++ ++ 8. Limitation of Liability. In no event and under no legal theory, ++ whether in tort (including negligence), contract, or otherwise, ++ unless required by applicable law (such as deliberate and grossly ++ negligent acts) or agreed to in writing, shall any Contributor be ++ liable to You for damages, including any direct, indirect, special, ++ incidental, or consequential damages of any character arising as a ++ result of this License or out of the use or inability to use the ++ Work (including but not limited to damages for loss of goodwill, ++ work stoppage, computer failure or malfunction, or any and all ++ other commercial damages or losses), even if such Contributor ++ has been advised of the possibility of such damages. ++ ++ 9. Accepting Warranty or Additional Liability. While redistributing ++ the Work or Derivative Works thereof, You may choose to offer, ++ and charge a fee for, acceptance of support, warranty, indemnity, ++ or other liability obligations and/or rights consistent with this ++ License. However, in accepting such obligations, You may act only ++ on Your own behalf and on Your sole responsibility, not on behalf ++ of any other Contributor, and only if You agree to indemnify, ++ defend, and hold each Contributor harmless for any liability ++ incurred by, or claims asserted against, such Contributor by reason ++ of your accepting any such warranty or additional liability. ++ ++ END OF TERMS AND CONDITIONS ++ ++ Copyright 2021 WalletConnect, Inc. ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/README.md b/node_modules/@walletconnect/utils/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..35490d649f553e0200a1e1fd2e0a5b964346c234 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/README.md +@@ -0,0 +1,3 @@ ++# @walletconnect/utils ++ ++Utilities for WalletConnect Protocol +diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js b/node_modules/@walletconnect/utils/dist/index.cjs.js +new file mode 100644 +index 0000000000000000000000000000000000000000..580be0b4ae700ad636da44de67ae1e2d30919b98 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.cjs.js +@@ -0,0 +1,35 @@ ++ ++ ++ ++ ++function uniq(arr) { ++ const seen = Object.create(null); ++ const out = []; ++ for (let i = 0, len = arr.length; i < len; i++) { ++ const val = arr[i]; ++ // key must be string — handles numbers, strings, booleans fine ++ const key = typeof val + val; ++ if (seen[key] === undefined) { ++ seen[key] = true; ++ out.push(val); ++ } ++ } ++ return out; ++} ++ ++"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var Zt = require("detect-browser"), U = require("@walletconnect/time"), P = require("@walletconnect/window-getters"), Xt = require("@walletconnect/window-metadata"), en = require("query-string"), Te = require("@ethersproject/hash"), tn = require("@ethersproject/transactions"), Ae = require("@stablelib/chacha20poly1305"), nn = require("@stablelib/hkdf"), B = require("@stablelib/random"), H = require("@stablelib/sha256"), rn = require("@stablelib/x25519"), p = require("uint8arrays"), on = require("elliptic"), sn = require("@walletconnect/relay-auth"), an = require("@walletconnect/relay-api"); function Ie(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach(function (n) { if (n !== "default") { var r = Object.getOwnPropertyDescriptor(e, n); Object.defineProperty(t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] } }) } }), t.default = e, Object.freeze(t) } var J = Ie(en), Pe = Ie(rn); const W = ":"; function ne(e) { const [t, n] = e.split(W); return { namespace: t, reference: n } } function Ce(e) { const { namespace: t, reference: n } = e; return [t, n].join(W) } function re(e) { const [t, n, r] = e.split(W); return { namespace: t, reference: n, address: r } } function $e(e) { const { namespace: t, reference: n, address: r } = e; return [t, n, r].join(W) } function oe(e, t) { const n = []; return e.forEach(r => { const o = t(r); n.includes(o) || n.push(o) }), n } function je(e) { const { address: t } = re(e); return t } function _e(e) { const { namespace: t, reference: n } = re(e); return Ce({ namespace: t, reference: n }) } function cn(e, t) { const { namespace: n, reference: r } = ne(t); return $e({ namespace: n, reference: r, address: e }) } function un(e) { return oe(e, je) } function Ue(e) { return oe(e, _e) } function ln(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...o.accounts) }), n } function dn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...Ue(o.accounts)) }), n } function pn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...z(r, o)) }), n } function z(e, t) { return e.includes(":") ? [e] : t.chains || [] } var fn = Object.defineProperty, De = Object.getOwnPropertySymbols, mn = Object.prototype.hasOwnProperty, gn = Object.prototype.propertyIsEnumerable, Ve = (e, t, n) => t in e ? fn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, ke = (e, t) => { for (var n in t || (t = {})) mn.call(t, n) && Ve(e, n, t[n]); if (De) for (var n of De(t)) gn.call(t, n) && Ve(e, n, t[n]); return e }; const xe = "ReactNative", y = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Y = " ", hn = ":", Me = "/", se = 2, yn = 1e3, Fe = "js"; function ie() { return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u" } function D() { return !P.getDocument() && !!P.getNavigator() && navigator.product === xe } function M() { return !ie() && !!P.getNavigator() && !!P.getDocument() } function C() { return D() ? y.reactNative : ie() ? y.node : M() ? y.browser : y.unknown } function vn() { var e; try { return D() && typeof global < "u" && typeof (global == null ? void 0 : global.Application) < "u" ? (e = global.Application) == null ? void 0 : e.applicationId : void 0 } catch { return } } function Le(e, t) { let n = J.parse(e); return n = ke(ke({}, n), t), e = J.stringify(n), e } function En() { return Xt.getWindowMetadata() || { name: "", description: "", url: "", icons: [""] } } function bn(e, t) { var n; const r = C(), o = { protocol: e, version: t, env: r }; return r === "browser" && (o.host = ((n = P.getLocation()) == null ? void 0 : n.host) || "unknown"), o } function Ke() { if (C() === y.reactNative && typeof global < "u" && typeof (global == null ? void 0 : global.Platform) < "u") { const { OS: n, Version: r } = global.Platform; return [n, r].join("-") } const e = Zt.detect(); if (e === null) return "unknown"; const t = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown"; return e.type === "browser" ? [t, e.name, e.version].join("-") : [t, e.version].join("-") } function qe() { var e; const t = C(); return t === y.browser ? [t, ((e = P.getLocation()) == null ? void 0 : e.host) || "unknown"].join(":") : t } function Be(e, t, n) { const r = Ke(), o = qe(); return [[e, t].join("-"), [Fe, n].join("-"), r, o].join("/") } function Nn({ protocol: e, version: t, relayUrl: n, sdkVersion: r, auth: o, projectId: s, useOnCloseEvent: i, bundleId: u }) { const l = n.split("?"), a = Be(e, t, r), d = { auth: o, ua: a, projectId: s, useOnCloseEvent: i || void 0, origin: u || void 0 }, c = Le(l[1] || "", d); return l[0] + "?" + c } function On(e) { let t = (e.match(/^[^:]+(?=:\/\/)/gi) || [])[0]; const n = typeof t < "u" ? e.split("://")[1] : e; return t = t === "wss" ? "https" : "http", [t, n].join("://") } function Sn(e, t, n) { if (!e[t] || typeof e[t] !== n) throw new Error(`Missing or invalid "${t}" param`) } function He(e, t = se) { return Je(e.split(Me), t) } function wn(e) { return He(e).join(Y) } function w(e, t) { return e.filter(n => t.includes(n)).length === e.length } function Je(e, t = se) { return e.slice(Math.max(e.length - t, 0)) } function Rn(e) { return Object.fromEntries(e.entries()) } function Tn(e) { return new Map(Object.entries(e)) } function An(e, t) { const n = {}; return Object.keys(e).forEach(r => { n[r] = t(e[r]) }), n } const In = e => e; function We(e) { return e.trim().replace(/^\w/, t => t.toUpperCase()) } function Pn(e) { return e.split(Y).map(t => We(t)).join(Y) } function Cn(e = U.FIVE_MINUTES, t) { const n = U.toMiliseconds(e || U.FIVE_MINUTES); let r, o, s; return { resolve: i => { s && r && (clearTimeout(s), r(i)) }, reject: i => { s && o && (clearTimeout(s), o(i)) }, done: () => new Promise((i, u) => { s = setTimeout(() => { u(new Error(t)) }, n), r = i, o = u }) } } function $n(e, t, n) { return new Promise(async (r, o) => { const s = setTimeout(() => o(new Error(n)), t); try { const i = await e; r(i) } catch (i) { o(i) } clearTimeout(s) }) } function ae(e, t) { if (typeof t == "string" && t.startsWith(`${e}:`)) return t; if (e.toLowerCase() === "topic") { if (typeof t != "string") throw new Error('Value must be "string" for expirer target type: topic'); return `topic:${t}` } else if (e.toLowerCase() === "id") { if (typeof t != "number") throw new Error('Value must be "number" for expirer target type: id'); return `id:${t}` } throw new Error(`Unknown expirer target type: ${e}`) } function jn(e) { return ae("topic", e) } function _n(e) { return ae("id", e) } function Un(e) { const [t, n] = e.split(":"), r = { id: void 0, topic: void 0 }; if (t === "topic" && typeof n == "string") r.topic = n; else if (t === "id" && Number.isInteger(Number(n))) r.id = Number(n); else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`); return r } function Dn(e, t) { return U.fromMiliseconds((t || Date.now()) + U.toMiliseconds(e)) } function Vn(e) { return Date.now() >= U.toMiliseconds(e) } function kn(e, t) { return `${e}${t ? `:${t}` : ""}` } function O(e = [], t = []) { return [...uniq([...e, ...t])] } async function xn({ id: e, topic: t, wcDeepLink: n }) { var r; try { if (!n) return; const o = typeof n == "string" ? JSON.parse(n) : n, s = o?.href; if (typeof s != "string") return; const i = ze(s, e, t), u = C(); if (u === y.browser) { if (!((r = P.getDocument()) != null && r.hasFocus())) { console.warn("Document does not have focus, skipping deeplink."); return } i.startsWith("https://") || i.startsWith("http://") ? window.open(i, "_blank", "noreferrer noopener") : window.open(i, Ye() ? "_blank" : "_self", "noreferrer noopener") } else u === y.reactNative && typeof (global == null ? void 0 : global.Linking) < "u" && await global.Linking.openURL(i) } catch (o) { console.error(o) } } function ze(e, t, n) { const r = `requestId=${t}&sessionTopic=${n}`; e.endsWith("/") && (e = e.slice(0, -1)); let o = `${e}`; if (e.startsWith("https://t.me")) { const s = e.includes("?") ? "&startapp=" : "?startapp="; o = `${o}${s}${Ge(r, !0)}` } else o = `${o}/wc?${r}`; return o } async function Mn(e, t) { let n = ""; try { if (M() && (n = localStorage.getItem(t), n)) return n; n = await e.getItem(t) } catch (r) { console.error(r) } return n } function ce(e, t) { return e.filter(n => t.includes(n)) } function Fn(e, t) { if (!e.includes(t)) return null; const n = e.split(/([&,?,=])/), r = n.indexOf(t); return n[r + 2] } function Ln() { return typeof crypto < "u" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu, e => { const t = Math.random() * 16 | 0; return (e === "x" ? t : t & 3 | 8).toString(16) }) } function Kn() { return typeof process < "u" && process.env.IS_VITEST === "true" } function Ye() { return typeof window < "u" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto) } function Ge(e, t = !1) { const n = Buffer.from(e).toString("base64"); return t ? n.replace(/[=]/g, "") : n } function ue(e) { return Buffer.from(e, "base64").toString("utf-8") } const qn = "https://rpc.walletconnect.org/v1"; async function Qe(e, t, n, r, o, s) { switch (n.t) { case "eip191": return Ze(e, t, n.s); case "eip1271": return await Xe(e, t, n.s, r, o, s); default: throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`) } } function Ze(e, t, n) { return tn.recoverAddress(Te.hashMessage(t), n).toLowerCase() === e.toLowerCase() } async function Xe(e, t, n, r, o, s) { const i = ne(r); if (!i.namespace || !i.reference) throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`); try { const u = "0x1626ba7e", l = "0000000000000000000000000000000000000000000000000000000000000040", a = "0000000000000000000000000000000000000000000000000000000000000041", d = n.substring(2), c = Te.hashMessage(t).substring(2), f = u + c + l + a + d, h = await fetch(`${s || qn}/?chainId=${r}&projectId=${o}`, { method: "POST", body: JSON.stringify({ id: Bn(), jsonrpc: "2.0", method: "eth_call", params: [{ to: e, data: f }, "latest"] }) }), { result: m } = await h.json(); return m ? m.slice(0, u.length).toLowerCase() === u.toLowerCase() : !1 } catch (u) { return console.error("isValidEip1271Signature: ", u), !1 } } function Bn() { return Date.now() + Math.floor(Math.random() * 1e3) } var Hn = Object.defineProperty, Jn = Object.defineProperties, Wn = Object.getOwnPropertyDescriptors, et = Object.getOwnPropertySymbols, zn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, tt = (e, t, n) => t in e ? Hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, le = (e, t) => { for (var n in t || (t = {})) zn.call(t, n) && tt(e, n, t[n]); if (et) for (var n of et(t)) Yn.call(t, n) && tt(e, n, t[n]); return e }, nt = (e, t) => Jn(e, Wn(t)); const Gn = "did:pkh:", G = e => e?.split(":"), rt = e => { const t = e && G(e); if (t) return e.includes(Gn) ? t[3] : t[1] }, ot = e => { const t = e && G(e); if (t) return t[2] + ":" + t[3] }, de = e => { const t = e && G(e); if (t) return t.pop() }; async function Qn(e) { const { cacao: t, projectId: n } = e, { s: r, p: o } = t, s = st(o, o.iss), i = de(o.iss); return await Qe(i, s, r, ot(o.iss), n) } const st = (e, t) => { ++ const n = `${e.domain} wants you to sign in with your Ethereum account:`, r = de(t); if (!e.aud && !e.uri) throw new Error("Either `aud` or `uri` is required to construct the message"); let o = e.statement || void 0; const s = `URI: ${e.aud || e.uri}`, i = `Version: ${e.version}`, u = `Chain ID: ${rt(t)}`, l = `Nonce: ${e.nonce}`, a = `Issued At: ${e.iat}`, d = e.exp ? `Expiration Time: ${e.exp}` : void 0, c = e.nbf ? `Not Before: ${e.nbf}` : void 0, f = e.requestId ? `Request ID: ${e.requestId}` : void 0, h = e.resources ? `Resources:${e.resources.map(g => ` ++- ${g}`).join("")}` : void 0, m = Z(e.resources); if (m) { const g = R(m); o = me(o, g) } return [n, r, "", o, "", s, i, u, l, a, d, c, f, h].filter(g => g != null).join(` ++`) ++}; function Zn(e, t, n) { return n.includes("did:pkh:") || (n = `did:pkh:${n}`), { h: { t: "caip122" }, p: { iss: n, domain: e.domain, aud: e.aud, version: e.version, nonce: e.nonce, iat: e.iat, statement: e.statement, requestId: e.requestId, resources: e.resources, nbf: e.nbf, exp: e.exp }, s: t } } function Xn(e) { var t; const { authPayload: n, chains: r, methods: o } = e, s = n.statement || ""; if (!(r != null && r.length)) return n; const i = n.chains, u = ce(i, r); if (!(u != null && u.length)) throw new Error("No supported chains"); const l = it(n.resources); if (!l) return n; N(l); const a = at(l, "eip155"); let d = n?.resources || []; if (a != null && a.length) { const c = ct(a), f = ce(c, o); if (!(f != null && f.length)) throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`); const h = pe("request", f, { chains: u }), m = pt(l, "eip155", h); d = ((t = n?.resources) == null ? void 0 : t.slice(0, -1)) || [], d.push(Q(m)) } return nt(le({}, n), { statement: mt(s, Z(d)), chains: u, resources: n != null && n.resources || d.length > 0 ? d : void 0 }) } function it(e) { const t = Z(e); if (t && fe(t)) return R(t) } function er(e, t) { var n; return (n = e?.att) == null ? void 0 : n.hasOwnProperty(t) } function at(e, t) { var n, r; return (n = e?.att) != null && n[t] ? Object.keys((r = e?.att) == null ? void 0 : r[t]) : [] } function tr(e) { return e?.map(t => Object.keys(t)) || [] } function ct(e) { return e?.map(t => { var n; return (n = t.split("/")) == null ? void 0 : n[1] }) || [] } function ut(e) { return Buffer.from(JSON.stringify(e)).toString("base64") } function lt(e) { return JSON.parse(Buffer.from(e, "base64").toString("utf-8")) } function N(e) { if (!e) throw new Error("No recap provided, value is undefined"); if (!e.att) throw new Error("No `att` property found"); const t = Object.keys(e.att); if (!(t != null && t.length)) throw new Error("No resources found in `att` property"); t.forEach(n => { const r = e.att[n]; if (Array.isArray(r)) throw new Error(`Resource must be an object: ${n}`); if (typeof r != "object") throw new Error(`Resource must be an object: ${n}`); if (!Object.keys(r).length) throw new Error(`Resource object is empty: ${n}`); Object.keys(r).forEach(o => { const s = r[o]; if (!Array.isArray(s)) throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`); if (!s.length) throw new Error(`Value of ${o} is empty array, must be an array with objects`); s.forEach(i => { if (typeof i != "object") throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`) }) }) }) } function dt(e, t, n, r = {}) { return n?.sort((o, s) => o.localeCompare(s)), { att: { [e]: pe(t, n, r) } } } function pt(e, t, n) { var r; return e.att[t] = le({}, n), ((r = Object.keys(e.att)) == null ? void 0 : r.sort((o, s) => o.localeCompare(s))).reduce((o, s) => (o.att[s] = e.att[s], o), { att: {} }) } function pe(e, t, n = {}) { t = t?.sort((o, s) => o.localeCompare(s)); const r = t.map(o => ({ [`${e}/${o}`]: [n] })); return Object.assign({}, ...r) } function Q(e) { return N(e), `urn:recap:${ut(e).replace(/=/g, "")}` } function R(e) { const t = lt(e.replace("urn:recap:", "")); return N(t), t } function nr(e, t, n) { const r = dt(e, t, n); return Q(r) } function fe(e) { return e && e.includes("urn:recap:") } function rr(e, t) { const n = R(e), r = R(t), o = ft(n, r); return Q(o) } function ft(e, t) { N(e), N(t); const n = Object.keys(e.att).concat(Object.keys(t.att)).sort((o, s) => o.localeCompare(s)), r = { att: {} }; return n.forEach(o => { var s, i; Object.keys(((s = e.att) == null ? void 0 : s[o]) || {}).concat(Object.keys(((i = t.att) == null ? void 0 : i[o]) || {})).sort((u, l) => u.localeCompare(l)).forEach(u => { var l, a; r.att[o] = nt(le({}, r.att[o]), { [u]: ((l = e.att[o]) == null ? void 0 : l[u]) || ((a = t.att[o]) == null ? void 0 : a[u]) }) }) }), r } function me(e = "", t) { N(t); const n = "I further authorize the stated URI to perform the following actions on my behalf: "; if (e.includes(n)) return e; const r = []; let o = 0; Object.keys(t.att).forEach(u => { const l = Object.keys(t.att[u]).map(c => ({ ability: c.split("/")[0], action: c.split("/")[1] })); l.sort((c, f) => c.action.localeCompare(f.action)); const a = {}; l.forEach(c => { a[c.ability] || (a[c.ability] = []), a[c.ability].push(c.action) }); const d = Object.keys(a).map(c => (o++, `(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`)); r.push(d.join(", ").replace(".,", ".")) }); const s = r.join(" "), i = `${n}${s}`; return `${e ? e + " " : ""}${i}` } function or(e) { var t; const n = R(e); N(n); const r = (t = n.att) == null ? void 0 : t.eip155; return r ? Object.keys(r).map(o => o.split("/")[1]) : [] } function sr(e) { const t = R(e); N(t); const n = []; return Object.values(t.att).forEach(r => { Object.values(r).forEach(o => { var s; (s = o?.[0]) != null && s.chains && n.push(o[0].chains) }) }), [...uniq(n.flat())] } function mt(e, t) { if (!t) return e; const n = R(t); return N(n), me(e, n) } function Z(e) { if (!e) return; const t = e?.[e.length - 1]; return fe(t) ? t : void 0 } const ge = "base10", v = "base16", he = "base64pad", ir = "base64url", V = "utf8", ye = 0, k = 1, F = 2, ar = 0, gt = 1, L = 12, ve = 32; function cr() { const e = Pe.generateKeyPair(); return { privateKey: p.toString(e.secretKey, v), publicKey: p.toString(e.publicKey, v) } } function ur() { const e = B.randomBytes(ve); return p.toString(e, v) } function lr(e, t) { const n = Pe.sharedKey(p.fromString(e, v), p.fromString(t, v), !0), r = new nn.HKDF(H.SHA256, n).expand(ve); return p.toString(r, v) } function dr(e) { const t = H.hash(p.fromString(e, v)); return p.toString(t, v) } function pr(e) { const t = H.hash(p.fromString(e, V)); return p.toString(t, v) } function Ee(e) { return p.fromString(`${e}`, ge) } function $(e) { return Number(p.toString(e, ge)) } function fr(e) { const t = Ee(typeof e.type < "u" ? e.type : ye); if ($(t) === k && typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); const n = typeof e.senderPublicKey < "u" ? p.fromString(e.senderPublicKey, v) : void 0, r = typeof e.iv < "u" ? p.fromString(e.iv, v) : B.randomBytes(L), o = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)).seal(r, p.fromString(e.message, V)); return be({ type: t, sealed: o, iv: r, senderPublicKey: n, encoding: e.encoding }) } function mr(e, t) { const n = Ee(F), r = B.randomBytes(L), o = p.fromString(e, V); return be({ type: n, sealed: o, iv: r, encoding: t }) } function gr(e) { const t = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)), { sealed: n, iv: r } = X({ encoded: e.encoded, encoding: e?.encoding }), o = t.open(r, n); if (o === null) throw new Error("Failed to decrypt"); return p.toString(o, V) } function hr(e, t) { const { sealed: n } = X({ encoded: e, encoding: t }); return p.toString(n, V) } function be(e) { const { encoding: t = he } = e; if ($(e.type) === F) return p.toString(p.concat([e.type, e.sealed]), t); if ($(e.type) === k) { if (typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); return p.toString(p.concat([e.type, e.senderPublicKey, e.iv, e.sealed]), t) } return p.toString(p.concat([e.type, e.iv, e.sealed]), t) } function X(e) { const { encoded: t, encoding: n = he } = e, r = p.fromString(t, n), o = r.slice(ar, gt), s = gt; if ($(o) === k) { const a = s + ve, d = a + L, c = r.slice(s, a), f = r.slice(a, d), h = r.slice(d); return { type: o, sealed: h, iv: f, senderPublicKey: c } } if ($(o) === F) { const a = r.slice(s), d = B.randomBytes(L); return { type: o, sealed: a, iv: d } } const i = s + L, u = r.slice(s, i), l = r.slice(i); return { type: o, sealed: l, iv: u } } function yr(e, t) { const n = X({ encoded: e, encoding: t?.encoding }); return ht({ type: $(n.type), senderPublicKey: typeof n.senderPublicKey < "u" ? p.toString(n.senderPublicKey, v) : void 0, receiverPublicKey: t?.receiverPublicKey }) } function ht(e) { const t = e?.type || ye; if (t === k) { if (typeof e?.senderPublicKey > "u") throw new Error("missing sender public key"); if (typeof e?.receiverPublicKey > "u") throw new Error("missing receiver public key") } return { type: t, senderPublicKey: e?.senderPublicKey, receiverPublicKey: e?.receiverPublicKey } } function vr(e) { return e.type === k && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string" } function Er(e) { return e.type === F } function yt(e) { return new on.ec("p256").keyFromPublic({ x: Buffer.from(e.x, "base64").toString("hex"), y: Buffer.from(e.y, "base64").toString("hex") }, "hex") } function br(e) { let t = e.replace(/-/g, "+").replace(/_/g, "/"); const n = t.length % 4; return n > 0 && (t += "=".repeat(4 - n)), t } function Nr(e) { return Buffer.from(br(e), "base64") } function Or(e, t) { const [n, r, o] = e.split("."), s = Nr(o); if (s.length !== 64) throw new Error("Invalid signature length"); const i = s.slice(0, 32).toString("hex"), u = s.slice(32, 64).toString("hex"), l = `${n}.${r}`, a = new H.SHA256().update(Buffer.from(l)).digest(), d = yt(t), c = Buffer.from(a).toString("hex"); if (!d.verify(c, { r: i, s: u })) throw new Error("Invalid signature"); return sn.decodeJWT(e).payload } const vt = "irn"; function Sr(e) { return e?.relay || { protocol: vt } } function wr(e) { const t = an.RELAY_JSONRPC[e]; if (typeof t > "u") throw new Error(`Relay Protocol not supported: ${e}`); return t } var Rr = Object.defineProperty, Tr = Object.defineProperties, Ar = Object.getOwnPropertyDescriptors, Et = Object.getOwnPropertySymbols, Ir = Object.prototype.hasOwnProperty, Pr = Object.prototype.propertyIsEnumerable, bt = (e, t, n) => t in e ? Rr(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Nt = (e, t) => { for (var n in t || (t = {})) Ir.call(t, n) && bt(e, n, t[n]); if (Et) for (var n of Et(t)) Pr.call(t, n) && bt(e, n, t[n]); return e }, Cr = (e, t) => Tr(e, Ar(t)); function Ot(e, t = "-") { const n = {}, r = "relay" + t; return Object.keys(e).forEach(o => { if (o.startsWith(r)) { const s = o.replace(r, ""), i = e[o]; n[s] = i } }), n } function $r(e) { if (!e.includes("wc:")) { const l = ue(e); l != null && l.includes("wc:") && (e = l) } e = e.includes("wc://") ? e.replace("wc://", "") : e, e = e.includes("wc:") ? e.replace("wc:", "") : e; const t = e.indexOf(":"), n = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r = e.substring(0, t), o = e.substring(t + 1, n).split("@"), s = typeof n < "u" ? e.substring(n) : "", i = J.parse(s), u = typeof i.methods == "string" ? i.methods.split(",") : void 0; return { protocol: r, topic: St(o[0]), version: parseInt(o[1], 10), symKey: i.symKey, relay: Ot(i), methods: u, expiryTimestamp: i.expiryTimestamp ? parseInt(i.expiryTimestamp, 10) : void 0 } } function St(e) { return e.startsWith("//") ? e.substring(2) : e } function wt(e, t = "-") { const n = "relay", r = {}; return Object.keys(e).forEach(o => { const s = n + t + o; e[o] && (r[s] = e[o]) }), r } function jr(e) { return `${e.protocol}:${e.topic}@${e.version}?` + J.stringify(Nt(Cr(Nt({ symKey: e.symKey }, wt(e.relay)), { expiryTimestamp: e.expiryTimestamp }), e.methods ? { methods: e.methods.join(",") } : {})) } function _r(e, t, n) { return `${e}?wc_ev=${n}&topic=${t}` } var Ur = Object.defineProperty, Dr = Object.defineProperties, Vr = Object.getOwnPropertyDescriptors, Rt = Object.getOwnPropertySymbols, kr = Object.prototype.hasOwnProperty, xr = Object.prototype.propertyIsEnumerable, Tt = (e, t, n) => t in e ? Ur(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Mr = (e, t) => { for (var n in t || (t = {})) kr.call(t, n) && Tt(e, n, t[n]); if (Rt) for (var n of Rt(t)) xr.call(t, n) && Tt(e, n, t[n]); return e }, Fr = (e, t) => Dr(e, Vr(t)); function j(e) { const t = []; return e.forEach(n => { const [r, o] = n.split(":"); t.push(`${r}:${o}`) }), t } function At(e) { const t = []; return Object.values(e).forEach(n => { t.push(...j(n.accounts)) }), t } function It(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.methods) }), n } function Pt(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.events) }), n } function Lr(e, t) { const n = Ft(e, t); if (n) throw new Error(n.message); const r = {}; for (const [o, s] of Object.entries(e)) r[o] = { methods: s.methods, events: s.events, chains: s.accounts.map(i => `${i.split(":")[0]}:${i.split(":")[1]}`) }; return r } function Kr(e) { const { proposal: { requiredNamespaces: t, optionalNamespaces: n = {} }, supportedNamespaces: r } = e, o = Oe(t), s = Oe(n), i = {}; Object.keys(r).forEach(a => { const d = r[a].chains, c = r[a].methods, f = r[a].events, h = r[a].accounts; d.forEach(m => { if (!h.some(g => g.includes(m))) throw new Error(`No accounts provided for chain ${m} in namespace ${a}`) }), i[a] = { chains: d, methods: c, events: f, accounts: h } }); const u = Kt(t, i, "approve()"); if (u) throw new Error(u.message); const l = {}; return !Object.keys(t).length && !Object.keys(n).length ? i : (Object.keys(o).forEach(a => { const d = r[a].chains.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.chains) == null ? void 0 : b.includes(m) }), c = r[a].methods.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.methods) == null ? void 0 : b.includes(m) }), f = r[a].events.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.events) == null ? void 0 : b.includes(m) }), h = d.map(m => r[a].accounts.filter(g => g.includes(`${m}:`))).flat(); l[a] = { chains: d, methods: c, events: f, accounts: h } }), Object.keys(s).forEach(a => { var d, c, f, h, m, g; if (!r[a]) return; const b = (c = (d = s[a]) == null ? void 0 : d.chains) == null ? void 0 : c.filter(A => r[a].chains.includes(A)), Yt = r[a].methods.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.methods) == null ? void 0 : x.includes(A) }), Gt = r[a].events.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.events) == null ? void 0 : x.includes(A) }), Qt = b?.map(A => r[a].accounts.filter(I => I.includes(`${A}:`))).flat(); l[a] = { chains: O((f = l[a]) == null ? void 0 : f.chains, b), methods: O((h = l[a]) == null ? void 0 : h.methods, Yt), events: O((m = l[a]) == null ? void 0 : m.events, Gt), accounts: O((g = l[a]) == null ? void 0 : g.accounts, Qt) } }), l) } function Ne(e) { return e.includes(":") } function Ct(e) { return Ne(e) ? e.split(":")[0] : e } function Oe(e) { var t, n, r; const o = {}; if (!ee(e)) return o; for (const [s, i] of Object.entries(e)) { const u = Ne(s) ? [s] : i.chains, l = i.methods || [], a = i.events || [], d = Ct(s); o[d] = Fr(Mr({}, o[d]), { chains: O(u, (t = o[d]) == null ? void 0 : t.chains), methods: O(l, (n = o[d]) == null ? void 0 : n.methods), events: O(a, (r = o[d]) == null ? void 0 : r.events) }) } return o } function $t(e) { const t = {}; return e?.forEach(n => { const [r, o] = n.split(":"); t[r] || (t[r] = { accounts: [], chains: [], events: [] }), t[r].accounts.push(n), t[r].chains.push(`${r}:${o}`) }), t } function qr(e, t) { t = t.map(r => r.replace("did:pkh:", "")); const n = $t(t); for (const [r, o] of Object.entries(n)) o.methods ? o.methods = O(o.methods, e) : o.methods = e, o.events = ["chainChanged", "accountsChanged"]; return n } const jt = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, _t = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } }; function S(e, t) { const { message: n, code: r } = _t[e]; return { message: t ? `${n} ${t}` : n, code: r } } function _(e, t) { const { message: n, code: r } = jt[e]; return { message: t ? `${n} ${t}` : n, code: r } } function K(e, t) { return Array.isArray(e) ? typeof t < "u" && e.length ? e.every(t) : !0 : !1 } function ee(e) { return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length } function T(e) { return typeof e > "u" } function E(e, t) { return t && T(e) ? !0 : typeof e == "string" && !!e.trim().length } function te(e, t) { return t && T(e) ? !0 : typeof e == "number" && !isNaN(e) } function Br(e, t) { const { requiredNamespaces: n } = t, r = Object.keys(e.namespaces), o = Object.keys(n); let s = !0; return w(o, r) ? (r.forEach(i => { const { accounts: u, methods: l, events: a } = e.namespaces[i], d = j(u), c = n[i]; (!w(z(i, c), d) || !w(c.methods, l) || !w(c.events, a)) && (s = !1) }), s) : !1 } function q(e) { return E(e, !1) && e.includes(":") ? e.split(":").length === 2 : !1 } function Ut(e) { if (E(e, !1) && e.includes(":")) { const t = e.split(":"); if (t.length === 3) { const n = t[0] + ":" + t[1]; return !!t[2] && q(n) } } return !1 } function Hr(e) { function t(n) { try { return typeof new URL(n) < "u" } catch { return !1 } } try { if (E(e, !1)) { if (t(e)) return !0; const n = ue(e); return t(n) } } catch { } return !1 } function Jr(e) { var t; return (t = e?.proposer) == null ? void 0 : t.publicKey } function Wr(e) { return e?.topic } function zr(e, t) { let n = null; return E(e?.publicKey, !1) || (n = S("MISSING_OR_INVALID", `${t} controller public key should be a string`)), n } function Se(e) { let t = !0; return K(e) ? e.length && (t = e.every(n => E(n, !1))) : t = !1, t } function Dt(e, t, n) { let r = null; return K(t) && t.length ? t.forEach(o => { r || q(o) || (r = _("UNSUPPORTED_CHAINS", `${n}, chain ${o} should be a string and conform to "namespace:chainId" format`)) }) : q(e) || (r = _("UNSUPPORTED_CHAINS", `${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)), r } function Vt(e, t, n) { let r = null; return Object.entries(e).forEach(([o, s]) => { if (r) return; const i = Dt(o, z(o, s), `${t} ${n}`); i && (r = i) }), r } function kt(e, t) { let n = null; return K(e) ? e.forEach(r => { n || Ut(r) || (n = _("UNSUPPORTED_ACCOUNTS", `${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`)) }) : n = _("UNSUPPORTED_ACCOUNTS", `${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), n } function xt(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = kt(r?.accounts, `${t} namespace`); o && (n = o) }), n } function Mt(e, t) { let n = null; return Se(e?.methods) ? Se(e?.events) || (n = _("UNSUPPORTED_EVENTS", `${t}, events should be an array of strings or empty array for no events`)) : n = _("UNSUPPORTED_METHODS", `${t}, methods should be an array of strings or empty array for no methods`), n } function we(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = Mt(r, `${t}, namespace`); o && (n = o) }), n } function Yr(e, t, n) { let r = null; if (e && ee(e)) { const o = we(e, t); o && (r = o); const s = Vt(e, t, n); s && (r = s) } else r = S("MISSING_OR_INVALID", `${t}, ${n} should be an object with data`); return r } function Ft(e, t) { let n = null; if (e && ee(e)) { const r = we(e, t); r && (n = r); const o = xt(e, t); o && (n = o) } else n = S("MISSING_OR_INVALID", `${t}, namespaces should be an object with data`); return n } function Lt(e) { return E(e.protocol, !0) } function Gr(e, t) { let n = !1; return t && !e ? n = !0 : e && K(e) && e.length && e.forEach(r => { n = Lt(r) }), n } function Qr(e) { return typeof e == "number" } function Zr(e) { return typeof e < "u" && typeof e !== null } function Xr(e) { return !(!e || typeof e != "object" || !e.code || !te(e.code, !1) || !e.message || !E(e.message, !1)) } function eo(e) { return !(T(e) || !E(e.method, !1)) } function to(e) { return !(T(e) || T(e.result) && T(e.error) || !te(e.id, !1) || !E(e.jsonrpc, !1)) } function no(e) { return !(T(e) || !E(e.name, !1)) } function ro(e, t) { return !(!q(t) || !At(e).includes(t)) } function oo(e, t, n) { return E(n, !1) ? It(e, t).includes(n) : !1 } function so(e, t, n) { return E(n, !1) ? Pt(e, t).includes(n) : !1 } function Kt(e, t, n) { ++ let r = null; const o = io(e), s = ao(t), i = Object.keys(o), u = Object.keys(s), l = qt(Object.keys(e)), a = qt(Object.keys(t)), d = l.filter(c => !a.includes(c)); return d.length && (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces keys don't satisfy requiredNamespaces. ++ Required: ${d.toString()} ++ Received: ${Object.keys(t).toString()}`)), w(i, u) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces chains don't satisfy required namespaces. ++ Required: ${i.toString()} ++ Approved: ${u.toString()}`)), Object.keys(t).forEach(c => { ++ if (!c.includes(":") || r) return; const f = j(t[c].accounts); f.includes(c) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces accounts don't satisfy namespace accounts for ${c} ++ Required: ${c} ++ Approved: ${f.toString()}`)) ++ }), i.forEach(c => { r || (w(o[c].methods, s[c].methods) ? w(o[c].events, s[c].events) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces events don't satisfy namespace events for ${c}`)) : r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces methods don't satisfy namespace methods for ${c}`)) }), r ++} function io(e) { const t = {}; return Object.keys(e).forEach(n => { var r; n.includes(":") ? t[n] = e[n] : (r = e[n].chains) == null || r.forEach(o => { t[o] = { methods: e[n].methods, events: e[n].events } }) }), t } function qt(e) { return [...uniq(e.map(t => t.includes(":") ? t.split(":")[0] : t))] } function ao(e) { const t = {}; return Object.keys(e).forEach(n => { if (n.includes(":")) t[n] = e[n]; else { const r = j(e[n].accounts); r?.forEach(o => { t[o] = { accounts: e[n].accounts.filter(s => s.includes(`${o}:`)), methods: e[n].methods, events: e[n].events } }) } }), t } function co(e, t) { return te(e, !1) && e <= t.max && e >= t.min } function uo() { const e = C(); return new Promise(t => { switch (e) { case y.browser: t(Bt()); break; case y.reactNative: t(Ht()); break; case y.node: t(Jt()); break; default: t(!0) } }) } function Bt() { return M() && navigator?.onLine } async function Ht() { if (D() && typeof global < "u" && global != null && global.NetInfo) { const e = await (global == null ? void 0 : global.NetInfo.fetch()); return e?.isConnected } return !0 } function Jt() { return !0 } function lo(e) { switch (C()) { case y.browser: Wt(e); break; case y.reactNative: zt(e); break; case y.node: break } } function Wt(e) { !D() && M() && (window.addEventListener("online", () => e(!0)), window.addEventListener("offline", () => e(!1))) } function zt(e) { D() && typeof global < "u" && global != null && global.NetInfo && global?.NetInfo.addEventListener(t => e(t?.isConnected)) } const Re = {}; class po { static get(t) { return Re[t] } static set(t, n) { Re[t] = n } static delete(t) { delete Re[t] } } exports.BASE10 = ge, exports.BASE16 = v, exports.BASE64 = he, exports.BASE64URL = ir, exports.COLON = hn, exports.DEFAULT_DEPTH = se, exports.EMPTY_SPACE = Y, exports.ENV_MAP = y, exports.INTERNAL_ERRORS = _t, exports.MemoryStore = po, exports.ONE_THOUSAND = yn, exports.REACT_NATIVE_PRODUCT = xe, exports.RELAYER_DEFAULT_PROTOCOL = vt, exports.SDK_ERRORS = jt, exports.SDK_TYPE = Fe, exports.SLASH = Me, exports.TYPE_0 = ye, exports.TYPE_1 = k, exports.TYPE_2 = F, exports.UTF8 = V, exports.addResourceToRecap = pt, exports.appendToQueryString = Le, exports.assertType = Sn, exports.assignAbilityToActions = pe, exports.base64Decode = lt, exports.base64Encode = ut, exports.buildApprovedNamespaces = Kr, exports.buildAuthObject = Zn, exports.buildNamespacesFromAuth = qr, exports.buildRecapStatement = mt, exports.calcExpiry = Dn, exports.capitalize = Pn, exports.capitalizeWord = We, exports.createDelayedPromise = Cn, exports.createEncodedRecap = nr, exports.createExpiringPromise = $n, exports.createRecap = dt, exports.decodeRecap = R, exports.decodeTypeByte = $, exports.decodeTypeTwoEnvelope = hr, exports.decrypt = gr, exports.deriveSymKey = lr, exports.deserialize = X, exports.encodeRecap = Q, exports.encodeTypeByte = Ee, exports.encodeTypeTwoEnvelope = mr, exports.encrypt = fr, exports.engineEvent = kn, exports.enumify = In, exports.formatAccountId = $e, exports.formatAccountWithChain = cn, exports.formatChainId = Ce, exports.formatDeeplinkUrl = ze, exports.formatExpirerTarget = ae, exports.formatIdTarget = _n, exports.formatMessage = st, exports.formatMessageContext = wn, exports.formatRelayParams = wt, exports.formatRelayRpcUrl = Nn, exports.formatStatementFromRecap = me, exports.formatTopicTarget = jn, exports.formatUA = Be, exports.formatUri = jr, exports.fromBase64 = ue, exports.generateKeyPair = cr, exports.generateRandomBytes32 = ur, exports.getAccountsChains = j, exports.getAccountsFromNamespaces = ln, exports.getAddressFromAccount = je, exports.getAddressesFromAccounts = un, exports.getAppMetadata = En, exports.getBrowserOnlineStatus = Bt, exports.getBundleId = vn, exports.getChainFromAccount = _e, exports.getChainsFromAccounts = Ue, exports.getChainsFromNamespace = z, exports.getChainsFromNamespaces = dn, exports.getChainsFromRecap = sr, exports.getChainsFromRequiredNamespaces = pn, exports.getCommonValuesInArrays = ce, exports.getCryptoKeyFromKeyData = yt, exports.getDecodedRecapFromResources = it, exports.getDeepLink = Mn, exports.getDidAddress = de, exports.getDidAddressSegments = G, exports.getDidChainId = rt, exports.getEnvironment = C, exports.getHttpUrl = On, exports.getInternalError = S, exports.getJavascriptID = qe, exports.getJavascriptOS = Ke, exports.getLastItems = Je, exports.getLinkModeURL = _r, exports.getMethodsFromRecap = or, exports.getNamespacedDidChainId = ot, exports.getNamespacesChains = At, exports.getNamespacesEventsForChainId = Pt, exports.getNamespacesFromAccounts = $t, exports.getNamespacesMethodsForChainId = It, exports.getNodeOnlineStatus = Jt, exports.getReCapActions = ct, exports.getReactNativeOnlineStatus = Ht, exports.getRecapAbilitiesFromResource = tr, exports.getRecapFromResources = Z, exports.getRecapResource = at, exports.getRelayClientMetadata = bn, exports.getRelayProtocolApi = wr, exports.getRelayProtocolName = Sr, exports.getRequiredNamespacesFromNamespaces = Lr, exports.getSdkError = _, exports.getSearchParamFromURL = Fn, exports.getUniqueValues = oe, exports.handleDeeplinkRedirect = xn, exports.hasOverlap = w, exports.hashKey = dr, exports.hashMessage = pr, exports.isBrowser = M, exports.isCaipNamespace = Ne, exports.isConformingNamespaces = Kt, exports.isExpired = Vn, exports.isNode = ie, exports.isOnline = uo, exports.isProposalStruct = Jr, exports.isReactNative = D, exports.isRecap = fe, exports.isSessionCompatible = Br, exports.isSessionStruct = Wr, exports.isTelegram = Ye, exports.isTestRun = Kn, exports.isTypeOneEnvelope = vr, exports.isTypeTwoEnvelope = Er, exports.isUndefined = T, exports.isValidAccountId = Ut, exports.isValidAccounts = kt, exports.isValidActions = Mt, exports.isValidArray = K, exports.isValidChainId = q, exports.isValidChains = Dt, exports.isValidController = zr, exports.isValidEip1271Signature = Xe, exports.isValidEip191Signature = Ze, exports.isValidErrorReason = Xr, exports.isValidEvent = no, exports.isValidId = Qr, exports.isValidNamespaceAccounts = xt, exports.isValidNamespaceActions = we, exports.isValidNamespaceChains = Vt, exports.isValidNamespaceMethodsOrEvents = Se, exports.isValidNamespaces = Ft, exports.isValidNamespacesChainId = ro, exports.isValidNamespacesEvent = so, exports.isValidNamespacesRequest = oo, exports.isValidNumber = te, exports.isValidObject = ee, exports.isValidParams = Zr, exports.isValidRecap = N, exports.isValidRelay = Lt, exports.isValidRelays = Gr, exports.isValidRequest = eo, exports.isValidRequestExpiry = co, exports.isValidRequiredNamespaces = Yr, exports.isValidResponse = to, exports.isValidString = E, exports.isValidUrl = Hr, exports.mapEntries = An, exports.mapToObj = Rn, exports.mergeArrays = O, exports.mergeEncodedRecaps = rr, exports.mergeRecaps = ft, exports.normalizeNamespaces = Oe, exports.objToMap = Tn, exports.parseAccountId = re, exports.parseChainId = ne, exports.parseContextNames = He, exports.parseExpirerTarget = Un, exports.parseNamespaceKey = Ct, exports.parseRelayParams = Ot, exports.parseTopic = St, exports.parseUri = $r, exports.populateAuthPayload = Xn, exports.recapHasResource = er, exports.serialize = be, exports.subscribeToBrowserNetworkChange = Wt, exports.subscribeToNetworkChange = lo, exports.subscribeToReactNativeNetworkChange = zt, exports.toBase64 = Ge, exports.uuidv4 = Ln, exports.validateDecoding = yr, exports.validateEncoding = ht, exports.validateSignedCacao = Qn, exports.verifyP256Jwt = Or, exports.verifySignature = Qe; ++//# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js.map b/node_modules/@walletconnect/utils/dist/index.cjs.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..031b7fb5ae91e997312d6fdb999f34e4e18315d4 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.cjs.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.cjs.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAMA,EAAiB,GAEhB,CAAA,SAAS,aAAaC,CAA8B,CAAA,CACzD,KAAM,CAACC,CAAAA,CAAWC,CAAS,CAAA,CAAIF,EAAM,KAAMD,CAAAA,CAAc,EACzD,OAAO,CAAE,UAAAE,CAAW,CAAA,SAAA,CAAAC,CAAU,CAChC,CAEgB,SAAA,aAAA,CAAcC,EAA+B,CAC3D,KAAM,CAAE,SAAAF,CAAAA,CAAAA,CAAW,SAAAC,CAAAA,CAAU,EAAIC,CACjC,CAAA,OAAO,CAACF,CAAWC,CAAAA,CAAS,EAAE,IAAKH,CAAAA,CAAc,CACnD,UAEgB,cAAeK,CAAAA,CAAAA,CAAkC,CAC/D,KAAM,CAACH,EAAWC,CAAWG,CAAAA,CAAO,CAAID,CAAAA,CAAAA,CAAQ,MAAML,CAAc,CAAA,CACpE,OAAO,CAAE,SAAA,CAAAE,EAAW,SAAAC,CAAAA,CAAAA,CAAW,OAAAG,CAAAA,CAAQ,CACzC,CAEO,SAAS,gBAAgBF,CAAiC,CAAA,CAC/D,KAAM,CAAE,SAAA,CAAAF,EAAW,SAAAC,CAAAA,CAAAA,CAAW,QAAAG,CAAQ,CAAA,CAAIF,EAC1C,OAAO,CAACF,EAAWC,CAAWG,CAAAA,CAAO,CAAE,CAAA,IAAA,CAAKN,CAAc,CAC5D,UAEgB,eAAgBO,CAAAA,CAAAA,CAAiBC,EAA2C,CAC1F,MAAMC,CAAmB,CAAA,GACzB,OAAAF,CAAAA,CAAM,QAASG,CAAQ,EAAA,CACrB,MAAMC,CAAQH,CAAAA,CAAAA,CAAOE,CAAG,CAAA,CACnBD,EAAO,QAASE,CAAAA,CAAK,GAAGF,CAAO,CAAA,IAAA,CAAKE,CAAK,EAChD,CAAC,EACMF,CACT,UAEgB,qBAAsBJ,CAAAA,CAAAA,CAAiB,CACrD,KAAM,CAAE,QAAAC,CAAQ,CAAA,CAAI,cAAeD,CAAAA,CAAO,EAC1C,OAAOC,CACT,CAEgB,SAAA,mBAAA,CAAoBD,EAAiB,CACnD,KAAM,CAAE,SAAA,CAAAH,EAAW,SAAAC,CAAAA,CAAU,EAAI,cAAeE,CAAAA,CAAO,EAEvD,OADc,aAAA,CAAc,CAAE,SAAA,CAAAH,EAAW,SAAAC,CAAAA,CAAU,CAAC,CAEtD,UAEgB,sBAAuBG,CAAAA,CAAAA,CAAiBL,EAAe,CACrE,KAAM,CAAE,SAAAC,CAAAA,CAAAA,CAAW,UAAAC,CAAU,CAAA,CAAI,aAAaF,CAAK,CAAA,CAEnD,OADgB,eAAA,CAAgB,CAAE,SAAAC,CAAAA,CAAAA,CAAW,UAAAC,CAAW,CAAA,OAAA,CAAAG,CAAQ,CAAC,CAEnE,CAEO,SAAS,yBAAyBM,CAAoB,CAAA,CAC3D,OAAO,eAAgBA,CAAAA,CAAAA,CAAU,qBAAqB,CACxD,CAEgB,SAAA,qBAAA,CAAsBA,EAAoB,CACxD,OAAO,gBAAgBA,CAAU,CAAA,mBAAmB,CACtD,CAEO,SAAS,0BACdC,CACAC,CAAAA,CAAAA,CAAiB,EACP,CAAA,CACV,MAAMF,CAAqB,CAAA,GAC3B,OAAO,MAAA,CAAA,IAAA,CAAKC,CAAU,CAAA,CAAE,QAASE,CAAQ,EAAA,CACvC,GAAID,CAAK,CAAA,MAAA,EAAU,CAACA,CAAK,CAAA,QAAA,CAASC,CAAG,CAAA,CAAG,OACxC,MAAMC,CAAAA,CAAKH,EAAWE,CAAG,CAAA,CACzBH,EAAS,IAAK,CAAA,GAAGI,CAAG,CAAA,QAAQ,EAC9B,CAAC,CAAA,CACMJ,CACT,CAEO,SAAS,wBACdC,CACAC,CAAAA,CAAAA,CAAiB,EACP,CAAA,CACV,MAAMG,CAAmB,CAAA,GACzB,OAAO,MAAA,CAAA,IAAA,CAAKJ,CAAU,CAAE,CAAA,OAAA,CAASE,CAAQ,EAAA,CACvC,GAAID,CAAK,CAAA,MAAA,EAAU,CAACA,CAAK,CAAA,QAAA,CAASC,CAAG,CAAG,CAAA,OACxC,MAAMC,CAAAA,CAAKH,EAAWE,CAAG,CAAA,CACzBE,EAAO,IAAK,CAAA,GAAG,sBAAsBD,CAAG,CAAA,QAAQ,CAAC,EACnD,CAAC,CACMC,CAAAA,CACT,CAEgB,SAAA,+BAAA,CACdC,EACAJ,CAAiB,CAAA,GACP,CACV,MAAMG,EAAmB,EAAC,CAC1B,cAAO,IAAKC,CAAAA,CAAkB,EAAE,OAASH,CAAAA,CAAAA,EAAQ,CAC/C,GAAID,EAAK,MAAU,EAAA,CAACA,EAAK,QAASC,CAAAA,CAAG,EAAG,OACxC,MAAMC,CAAKE,CAAAA,CAAAA,CAAmBH,CAAG,CACjCE,CAAAA,CAAAA,CAAO,KAAK,GAAG,sBAAA,CAAuBF,EAAKC,CAAE,CAAC,EAChD,CAAC,EACMC,CACT,UAEgB,sBACdf,CAAAA,CAAAA,CACAiB,EACA,CAEA,OAAOjB,EAAU,QAAS,CAAA,GAAG,EAAI,CAACA,CAAS,EAAIiB,CAAe,CAAA,MAAA,EAAU,EAC1E;;AChHA,IAAAC,GAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAAC,GAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAAC,GAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAAC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAAH,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAD,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAAF,GAAA,CAAA,IAAA,IAAA,CAAA,IAAAA,GAAA,CAAA,CAAA,CAAA,CAAAC,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAeO,MAAM,qBAAuB,aAEvB,CAAA,OAAA,CAAU,CACrB,WAAA,CAAa,eACb,IAAM,CAAA,MAAA,CACN,OAAS,CAAA,SAAA,CACT,OAAS,CAAA,SACX,CAEa,CAAA,WAAA,CAAc,IAEd,KAAQ,CAAA,GAAA,CAER,KAAQ,CAAA,GAAA,CAER,aAAgB,CAAA,CAAA,CAEhB,YAAe,CAAA,GAAA,CAEf,SAAW,KAIjB,SAAS,MAAkB,EAAA,CAChC,OACE,OAAO,OAAY,EAAA,WAAA,EACnB,OAAO,OAAQ,CAAA,QAAA,EAAa,WAC5B,EAAA,OAAO,QAAQ,QAAS,CAAA,IAAA,EAAS,WAErC,UAEgB,aAAyB,EAAA,CACvC,OAAO,CAACE,yBAAY,EAAA,EAAK,CAAC,CAACC,4BAAkB,EAAA,SAAA,CAAU,OAAY,GAAA,oBACrE,CAEO,SAAS,SAAqB,EAAA,CACnC,OAAO,CAAC,MAAA,EAAY,EAAA,CAAC,CAACA,0BAAAA,EAAkB,EAAA,CAAC,CAACD,yBAAY,EACxD,CAEO,SAAS,gBAAyB,CACvC,OAAI,aAAc,EAAA,CAAU,QAAQ,WAChC,CAAA,MAAA,EAAiB,CAAA,OAAA,CAAQ,IACzB,CAAA,SAAA,EAAoB,CAAA,OAAA,CAAQ,QACzB,OAAQ,CAAA,OACjB,CAEO,SAAS,aAAkC,CA7DlD,IAAAE,CA8DE,CAAA,GAAI,CACF,OACE,aAAA,EACA,EAAA,OAAO,MAAW,EAAA,WAAA,EAClB,OAAQ,MAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAgB,cAAgB,WAEhCA,CAAAA,CAAAA,CAAAA,CAAA,MAAe,CAAA,WAAA,GAAf,YAAAA,CAA4B,CAAA,aAAA,CAEtC,KACF,CAAA,CAAA,MAAQC,EAAN,CACA,MACF,CACF,CAIgB,SAAA,mBAAA,CAAoBC,CAAqBC,CAAAA,CAAAA,CAA6B,CACpF,IAAIC,CAAAA,CAAcC,YAAG,CAAA,KAAA,CAAMH,CAAW,CAAA,CAEtC,OAAAE,CAAAA,CAAcE,QAAA,EAAKF,CAAAA,CAAAA,CAAAA,CAAgBD,CAEnCD,CAAAA,CAAAA,CAAAA,CAAcG,YAAG,CAAA,SAAA,CAAUD,CAAW,CAAA,CAE/BF,CACT,CAIO,SAAS,cAA2C,EAAA,CACzD,OACEK,gCAAkB,EAAA,EAAK,CACrB,IAAA,CAAM,GACN,WAAa,CAAA,EAAA,CACb,GAAK,CAAA,EAAA,CACL,KAAO,CAAA,CAAC,EAAE,CACZ,CAEJ,CAEO,SAAS,sBAAuBC,CAAAA,CAAAA,CAAkBC,EAAwC,CArGjG,IAAAT,CAsGE,CAAA,MAAMU,EAAM,cAAe,EAAA,CAErBC,CAAkC,CAAA,CAAE,QAAAH,CAAAA,CAAAA,CAAU,OAAAC,CAAAA,CAAAA,CAAS,IAAAC,CAAI,CAAA,CACjE,OAAIA,CAAAA,GAAQ,YACVC,CAAS,CAAA,IAAA,CAAA,CAAA,CAAOX,CAAAY,CAAAA,yBAAAA,KAAA,IAAAZ,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,IAAQ,GAAA,SAAA,CAAA,CAElCW,CACT,CAIgB,SAAA,eAAA,EAAkB,CAGhC,GAFY,cAAA,EAGF,GAAA,OAAA,CAAQ,WAChB,EAAA,OAAO,MAAW,EAAA,WAAA,EAClB,OAAQ,MAAgB,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,QAAA,CAAA,EAAa,WACrC,CAAA,CACA,KAAM,CAAE,EAAAE,CAAAA,CAAAA,CAAI,QAAAC,CAAQ,CAAA,CAAK,MAAe,CAAA,QAAA,CACxC,OAAO,CAACD,CAAAA,CAAIC,CAAO,CAAA,CAAE,KAAK,GAAG,CAAA,CAG/B,MAAMC,CAAAA,CAAOC,oBAAO,EAAA,CACpB,GAAID,CAAAA,GAAS,KAAM,OAAO,SAAA,CAC1B,MAAME,CAAAA,CAAKF,EAAK,EAAKA,CAAAA,CAAAA,CAAK,EAAG,CAAA,OAAA,CAAQ,IAAK,EAAE,CAAA,CAAE,WAAY,EAAA,CAAI,SAC9D,CAAA,OAAIA,CAAK,CAAA,IAAA,GAAS,UACT,CAACE,CAAAA,CAAIF,CAAK,CAAA,IAAA,CAAMA,EAAK,OAAO,CAAA,CAAE,IAAK,CAAA,GAAG,EAExC,CAACE,CAAAA,CAAIF,CAAK,CAAA,OAAO,CAAE,CAAA,IAAA,CAAK,GAAG,CACpC,CAEgB,SAAA,eAAA,EAAkB,CAtIlC,IAAAf,CAuIE,CAAA,MAAMU,CAAM,CAAA,cAAA,GACZ,OAAOA,CAAAA,GAAQ,OAAQ,CAAA,OAAA,CAAU,CAACA,CAAAA,CAAAA,CAAAA,CAAKV,CAAAY,CAAAA,yBAAAA,KAAA,IAAAZ,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,IAAQ,GAAA,SAAS,EAAE,IAAK,CAAA,GAAG,CAAIU,CAAAA,CACvF,CAEgB,SAAA,QAAA,CAASF,CAAkBC,CAAAA,CAAAA,CAAiBS,CAAoB,CAAA,CAC9E,MAAMD,CAAAA,CAAK,iBACLE,CAAAA,CAAAA,CAAK,eAAgB,EAAA,CAC3B,OAAO,CAAC,CAACX,CAAAA,CAAUC,CAAO,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAAG,CAAC,QAAA,CAAUS,CAAU,CAAA,CAAE,KAAK,GAAG,CAAA,CAAGD,CAAIE,CAAAA,CAAE,EAAE,IAAK,CAAA,GAAG,CAC3F,UAGgB,iBAAkB,CAAA,CAChC,QAAAX,CAAAA,CAAAA,CACA,OAAAC,CAAAA,CAAAA,CACA,QAAAW,CAAAA,CAAAA,CACA,WAAAF,CACA,CAAA,IAAA,CAAAG,CACA,CAAA,SAAA,CAAAC,CACA,CAAA,eAAA,CAAAC,CACA,CAAA,QAAA,CAAAC,CACF,CAA8B,CAAA,CAC5B,MAAMC,CAAAA,CAAWL,CAAS,CAAA,KAAA,CAAM,GAAG,CAAA,CAC7BM,EAAK,QAASlB,CAAAA,CAAAA,CAAUC,CAASS,CAAAA,CAAU,EAC3CzC,CAAS,CAAA,CACb,IAAA4C,CAAAA,CAAAA,CACA,GAAAK,CACA,CAAA,SAAA,CAAAJ,CACA,CAAA,eAAA,CAAiBC,CAAmB,EAAA,KAAA,CAAA,CACpC,MAAQC,CAAAA,CAAAA,EAAY,MACtB,CACMtB,CAAAA,CAAAA,CAAc,mBAAoBuB,CAAAA,CAAAA,CAAS,CAAC,CAAK,EAAA,EAAA,CAAIhD,CAAM,CAAA,CACjE,OAAOgD,CAAS,CAAA,CAAC,CAAI,CAAA,GAAA,CAAMvB,CAC7B,CAEgB,SAAA,UAAA,CAAWyB,EAAa,CAGtC,IAAInB,CADYmB,CAAAA,CAAAA,CAAAA,CAAI,MAAM,mBAAmB,CAAA,EAAK,EAAC,EAC5B,CAAC,CACxB,CAAA,MAAMC,CAAS,CAAA,OAAOpB,CAAa,EAAA,WAAA,CAAcmB,CAAI,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,CAAC,CAAIA,CAAAA,CAAAA,CACvE,OAAAnB,CAAAA,CAAWA,CAAa,GAAA,KAAA,CAAQ,QAAU,MACnC,CAAA,CAACA,CAAUoB,CAAAA,CAAM,CAAE,CAAA,IAAA,CAAK,KAAK,CACtC,CAIgB,SAAA,UAAA,CAAWC,CAAUzC,CAAAA,CAAAA,CAAa0C,EAAc,CAC9D,GAAI,CAACD,CAAAA,CAAIzC,CAAG,CAAK,EAAA,OAAOyC,CAAIzC,CAAAA,CAAG,CAAM0C,GAAAA,CAAAA,CACnC,MAAM,IAAI,MAAM,CAAuB1C,oBAAAA,EAAAA,CAAAA,CAAAA,OAAAA,CAAY,CAEvD,UAIgB,iBAAkB2C,CAAAA,CAAAA,CAAiBC,CAAQ,CAAA,aAAA,CAAe,CACxE,OAAO,YAAA,CAAaD,CAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAGC,CAAK,CACjD,CAEgB,SAAA,oBAAA,CAAqBD,CAAyB,CAAA,CAC5D,OAAO,iBAAkBA,CAAAA,CAAO,CAAE,CAAA,IAAA,CAAK,WAAW,CACpD,CAIgB,SAAA,UAAA,CAAWE,CAAUC,CAAAA,CAAAA,CAAmB,CAEtD,OADgBD,EAAE,MAAQrC,CAAAA,CAAAA,EAAMsC,CAAE,CAAA,QAAA,CAAStC,CAAC,CAAC,CAC9B,CAAA,MAAA,GAAWqC,EAAE,MAC9B,CAEgB,SAAA,YAAA,CAAaE,CAAYH,CAAAA,CAAAA,CAAQ,aAAsB,CAAA,CACrE,OAAOG,CAAI,CAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAIA,EAAI,MAASH,CAAAA,CAAAA,CAAO,CAAC,CAAC,CAClD,CAIO,SAAS,QAAkBI,CAAAA,CAAAA,CAAwC,CACxE,OAAO,MAAO,CAAA,WAAA,CAAYA,EAAI,OAAQ,EAAC,CACzC,UAEgB,QAAkBP,CAAAA,CAAAA,CAAwC,CACxE,OAAO,IAAI,GAAe,CAAA,MAAA,CAAO,OAAWA,CAAAA,CAAG,CAAC,CAClD,CAEO,SAAS,WACdA,CACAQ,CAAAA,CAAAA,CACmB,CACnB,MAAMC,EAAM,EAAC,CACb,OAAO,MAAA,CAAA,IAAA,CAAKT,CAAG,CAAE,CAAA,OAAA,CAASzC,CAAQ,EAAA,CAChCkD,CAAIlD,CAAAA,CAAG,CAAIiD,CAAAA,CAAAA,CAAGR,EAAIzC,CAAG,CAAC,EACxB,CAAC,CACMkD,CAAAA,CACT,CAKO,MAAM,QAA+D1C,CAAYA,EAAAA,EAIxE,SAAA,cAAA,CAAe2C,CAAc,CAAA,CAC3C,OAAOA,CAAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAQC,CAAAA,CAAAA,EAAMA,EAAE,WAAY,EAAC,CAC1D,UAEgB,UAAWzD,CAAAA,CAAAA,CAAa,CACtC,OAAOA,CACJ,CAAA,KAAA,CAAM,WAAW,CAAA,CACjB,IAAK0D,CAAM,EAAA,cAAA,CAAeA,CAAC,CAAC,CAC5B,CAAA,IAAA,CAAK,WAAW,CACrB,CAGgB,SAAA,oBAAA,CACdC,CAAiBC,CAAAA,iBAAAA,CACjBC,CACA,CAAA,CACA,MAAMC,CAAAA,CAAUC,mBAAcJ,CAAUC,EAAAA,iBAAY,CACpD,CAAA,IAAII,EACAC,CACAC,CAAAA,CAAAA,CAuBJ,OAAO,CACL,QAdejE,CAAc,EAAA,CACzBiE,CAAgBF,EAAAA,CAAAA,GAClB,YAAaE,CAAAA,CAAY,CACzBF,CAAAA,CAAAA,CAAa/D,CAAU,CAE3B,EAAA,CAAA,CAUE,MATcA,CAAAA,CAAAA,EAA0B,CACpCiE,CAAAA,EAAgBD,CAClB,GAAA,YAAA,CAAaC,CAAY,CACzBD,CAAAA,CAAAA,CAAYhE,CAAK,CAAA,EAErB,CAKE,CAAA,IAAA,CAxBW,IACX,IAAI,QAAW,CAACkE,CAAAA,CAAgBC,CAAkB,GAAA,CAChDF,EAAe,UAAW,CAAA,IAAM,CAC9BE,CAAAA,CAAc,IAAI,KAAMP,CAAAA,CAAkB,CAAC,EAC7C,CAAGC,CAAAA,CAAO,CACVE,CAAAA,CAAAA,CAAeG,EACfF,CAAcG,CAAAA,EAChB,CAAC,CAkBH,CACF,CAEO,SAAS,qBACdC,CAAAA,CAAAA,CACAV,EACAE,CACA,CAAA,CACA,OAAO,IAAI,OAAQ,CAAA,MAAOS,CAASC,CAAAA,CAAAA,GAAW,CAC5C,MAAMT,CAAAA,CAAU,UAAW,CAAA,IAAMS,EAAO,IAAI,KAAA,CAAMV,CAAkB,CAAC,EAAGF,CAAM,CAAA,CAC9E,GAAI,CACF,MAAMa,CAAAA,CAAS,MAAMH,CAAAA,CACrBC,EAAQE,CAAM,EAChB,CAASC,MAAAA,CAAAA,CAAP,CACAF,CAAAA,CAAOE,CAAK,EACd,CACA,YAAaX,CAAAA,CAAO,EACtB,CAAC,CACH,CAIgB,SAAA,mBAAA,CAAoBf,EAAsB9C,CAAgC,CAAA,CACxF,GAAI,OAAOA,GAAU,QAAYA,EAAAA,CAAAA,CAAM,UAAW,CAAA,CAAA,EAAG8C,IAAO,CAAG,CAAA,OAAO9C,CACtE,CAAA,GAAI8C,CAAK,CAAA,WAAA,EAAkB,GAAA,OAAA,CAAS,CAClC,GAAI,OAAO9C,CAAU,EAAA,QAAA,CACnB,MAAM,IAAI,KAAA,CAAM,uDAAuD,CAAA,CACzE,OAAO,CAASA,MAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,GACP8C,CAAK,CAAA,WAAA,EAAkB,GAAA,IAAA,CAAM,CACtC,GAAI,OAAO9C,CAAU,EAAA,QAAA,CACnB,MAAM,IAAI,MAAM,oDAAoD,CAAA,CACtE,OAAO,CAAA,GAAA,EAAMA,IAEf,MAAM,IAAI,KAAM,CAAA,CAAA,6BAAA,EAAgC8C,CAAM,CAAA,CAAA,CACxD,CAEO,SAAS,kBAAkB2B,CAAuB,CAAA,CACvD,OAAO,mBAAA,CAAoB,OAASA,CAAAA,CAAK,CAC3C,UAEgB,cAAetC,CAAAA,CAAAA,CAAoB,CACjD,OAAO,mBAAoB,CAAA,IAAA,CAAMA,CAAE,CACrC,CAEgB,SAAA,kBAAA,CAAmBuC,CAAgB,CAAA,CACjD,KAAM,CAAC5B,CAAAA,CAAM9C,CAAK,CAAA,CAAI0E,EAAO,KAAM,CAAA,GAAG,CAChCC,CAAAA,CAAAA,CAA0C,CAAE,EAAA,CAAI,KAAW,CAAA,CAAA,KAAA,CAAO,MAAU,CAClF,CAAA,GAAI7B,CAAS,GAAA,OAAA,EAAW,OAAO9C,CAAU,EAAA,QAAA,CACvC2E,CAAO,CAAA,KAAA,CAAQ3E,UACN8C,CAAS,GAAA,IAAA,EAAQ,MAAO,CAAA,SAAA,CAAU,MAAO9C,CAAAA,CAAK,CAAC,CAAA,CACxD2E,EAAO,EAAK,CAAA,MAAA,CAAO3E,CAAK,CAAA,CAAA,WAElB,IAAI,KAAA,CAAM,CAA2D8C,wDAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAQ9C,GAAO,CAG5F,CAAA,OAAO2E,CACT,CAEgB,SAAA,UAAA,CAAWC,CAAaC,CAAAA,CAAAA,CAAsB,CAC5D,OAAOC,oBAAAA,CAAAA,CAAiBD,CAAO,EAAA,IAAA,CAAK,GAAI,EAAA,EAAKf,kBAAcc,CAAAA,CAAG,CAAC,CACjE,CAEgB,SAAA,SAAA,CAAUlB,CAAgB,CAAA,CACxC,OAAO,IAAA,CAAK,KAASI,EAAAA,kBAAAA,CAAcJ,CAAM,CAC3C,CAIgB,SAAA,WAAA,CAAYqB,CAA0B5C,CAAAA,CAAAA,CAAkC,CACtF,OAAO,CAAA,EAAG4C,CAAQ5C,CAAAA,EAAAA,CAAAA,CAAK,CAAIA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAO,EACpC,CAAA,CAAA,UAEgB,WAAec,CAAAA,CAAAA,CAAS,EAAC,CAAGC,EAAS,EAAC,CAAQ,CAC5D,OAAO,CAAC,GAAG,IAAI,GAAI,CAAA,CAAC,GAAGD,CAAAA,CAAG,GAAGC,CAAC,CAAC,CAAC,CAClC,CAEA,eAAsB,uBAAuB,CAC3C,EAAA,CAAAf,CACA,CAAA,KAAA,CAAAsC,EACA,UAAAO,CAAAA,CACF,CAIG,CAAA,CA7WH,IAAAhE,CAAAA,CA8WE,GAAI,CACF,GAAI,CAACgE,CAAAA,CAAY,OAEjB,MAAMC,CAAO,CAAA,OAAOD,CAAe,EAAA,QAAA,CAAW,KAAK,KAAMA,CAAAA,CAAU,CAAIA,CAAAA,CAAAA,CACvE,IAAIE,CAAAA,CAAWD,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAAM,IAErB,CAAA,GAAI,OAAOC,CAAAA,EAAa,SAAU,OAE9BA,CAAAA,CAAS,QAAS,CAAA,GAAG,IAAGA,CAAWA,CAAAA,CAAAA,CAAS,KAAM,CAAA,CAAA,CAAG,CAAE,CAAA,CAAA,CAAA,CAE3D,MAAMC,CAAAA,CAAO,GAAGD,CAAyB/C,CAAAA,cAAAA,EAAAA,CAAAA,CAAAA,cAAAA,EAAmBsC,CAEtD/C,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,gBAEZ,CAAA,GAAIA,CAAQ,GAAA,OAAA,CAAQ,QAAS,CAC3B,GAAI,EAACV,CAAAA,CAAAA,CAAAF,yBAAY,EAAA,GAAZ,IAAAE,EAAAA,CAAAA,CAAe,YAAY,CAC9B,OAAA,CAAQ,IAAK,CAAA,kDAAkD,EAC/D,MAGEmE,CAAAA,CAAAA,CAAK,UAAW,CAAA,UAAU,GAAKA,CAAK,CAAA,UAAA,CAAW,SAAS,CAAA,CAC1D,MAAO,CAAA,IAAA,CAAKA,CAAM,CAAA,QAAA,CAAU,qBAAqB,CAEjD,CAAA,MAAA,CAAO,IAAKA,CAAAA,CAAAA,CAAM,OAAS,CAAA,qBAAqB,EAEzCzD,CAAAA,KAAAA,CAAAA,GAAQ,QAAQ,WAErB,EAAA,OAAQ,MAAgB,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,EAAY,WACtC,EAAA,MAAO,MAAe,CAAA,OAAA,CAAQ,QAAQyD,CAAI,EAGhD,CAASC,MAAAA,CAAAA,CAAP,CAGA,OAAQ,CAAA,KAAA,CAAMA,CAAG,EACnB,CACF,CAEA,eAAsB,WAAYC,CAAAA,CAAAA,CAAyBjF,CAAa,CAAA,CACtE,GAAI,CACF,MAAMkF,CAAW,CAAA,MAAMD,CAAM,CAAA,OAAA,CAAQjF,CAAG,CACxC,CAAA,OAAIkF,CAGC,GAAA,SAAA,GACE,YAAa,CAAA,OAAA,CAAQlF,CAAG,CAAA,CADb,KAEpB,CAAA,CAAA,CAAA,MAASgF,CAAP,CAAA,CAEA,QAAQ,KAAMA,CAAAA,CAAG,EACnB,CACF,CAEgB,SAAA,uBAAA,CAAuDG,CAAWC,CAAAA,CAAAA,CAAgB,CAChG,OAAOD,CAAAA,CAAK,MAAQvF,CAAAA,CAAAA,EAAUwF,CAAK,CAAA,QAAA,CAASxF,CAAK,CAAC,CACpD,CAEO,SAAS,qBAAsB2C,CAAAA,CAAAA,CAAa8C,CAAY,CAAA,CAE7D,GAAI,CADY9C,EAAI,QAAS8C,CAAAA,CAAK,CACpB,CAAA,OAAO,IACrB,CAAA,MAAMhG,CAASkD,CAAAA,CAAAA,CAAI,MAAM,WAAW,CAAA,CAC9B+C,CAAQjG,CAAAA,CAAAA,CAAO,QAAQgG,CAAK,CAAA,CAElC,OADchG,CAAAA,CAAOiG,EAAQ,CAAC,CAEhC,CAEO,SAAS,MAAS,EAAA,CACvB,OAAI,OAAO,QAAW,WAAe,GAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAQ,UACpC,CAAA,CAAA,MAAA,CAAO,YAGT,CAAA,sCAAA,CAAuC,OAAQ,CAAA,QAAA,CAAWlC,GAAM,CACrE,MAAMmC,CAAK,CAAA,IAAA,CAAK,MAAO,EAAA,CAAI,EAAM,CAAA,CAAA,CAGjC,QAFUnC,CAAM,GAAA,GAAA,CAAMmC,CAAKA,CAAAA,CAAAA,CAAI,EAAO,CAE7B,EAAA,QAAA,CAAS,EAAE,CACtB,CAAC,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClbA;AACA,CAAA,CAAC,YAAY;AAEb;AACA,GAAE,IAAI,WAAW,GAAG,uBAAuB,CAAC;AAC5C,GAAE,IAAI,cAAc,GAAG,yBAAyB,CAAC;AACjD,GAAE,IAAI,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;GACxC,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AAClC,GAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;KAC1B,MAAM,GAAG,KAAK,CAAC;IAChB;GACD,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;GACrD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;GACnH,IAAI,OAAO,EAAE;KACX,IAAI,GAAGC,cAAM,CAAC;IACf,MAAM,IAAI,UAAU,EAAE;KACrB,IAAI,GAAG,IAAI,CAAC;IACb;AACH,GAAE,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,QAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;AAE7F,GAAE,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,OAAO,WAAW,KAAK,WAAW,CAAC;GACvF,IAAI,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,GAAE,IAAI,aAAa,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACrD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACnD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7C,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;GAC3B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU;KACvF,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAC/E,KAAI,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;AAC3E,KAAI,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU;AACpF,KAAI,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACtF,GAAE,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GAChC,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,GAAE,IAAI,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;GACvE,IAAI,cAAc,GAAG;KACnB,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;AACd,IAAG,CAAC;AACJ;GACE,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACjD,KAAI,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;AACnC,OAAM,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;AACtE,MAAK,CAAC;IACH;AACH;AACA,GAAE,IAAI,YAAY,KAAK,IAAI,CAAC,+BAA+B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACrF,KAAI,WAAW,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE;AACxC,OAAM,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;AAC7F,MAAK,CAAC;IACH;AACH;GACE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;KAC5D,OAAO,UAAU,OAAO,EAAE;AAC9B,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3E,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,uBAAuB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AACrE,KAAI,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE;AAC1C,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACjF,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,wBAAwB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;KAClE,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;OAC1C,OAAO,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACtF,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,sBAAsB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;KAChE,OAAO,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;OAC5C,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACtF,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,mBAAmB,GAAG,UAAU,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3E,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAClD,OAAM,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACjC,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;MAClD;KACD,OAAO,MAAM,CAAC;AAClB,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;KAC1C,IAAI,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1D,KAAI,MAAM,CAAC,MAAM,GAAG,YAAY;OAC1B,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,MAAK,CAAC;AACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;OACjC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1E,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;KAC/C,IAAI,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/D,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE;OACpC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACnD,MAAK,CAAC;KACF,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE;AACnD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/E,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AACpD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B,IAAI,MAAM,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KAC5D,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;AAChD,OAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpB,SAAQ,OAAO,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAO,MAAM;SACL,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE;AACP,MAAK,CAAC;AACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;AACzD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7D,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChF,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,gBAAgB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AAClD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B,IAAI,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KAC1D,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;AAClD,OAAM,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,MAAK,CAAC;AACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;AAC3D,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/D,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,IAAG,CAAC;AACJ;GACE,IAAI,UAAU,GAAG;AACnB,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;AACvF,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;AAC9E,KAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE;AAChG,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE;AACnG,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE;AAC/F,IAAG,CAAC;AACJ;GACE,IAAI,OAAO,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,CAAC;AACrC;AACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9C,KAAI,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAClC,KAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1C,OAAM,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtD,OAAM,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,OAAM,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/E,OAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;SAC7B,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,SAAQ,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAChC,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C;MACF;IACF;AACH;GACE,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AAC7C,KAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,KAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAChB,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,KAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;KAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC1C,KAAI,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC;KACpC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACf;IACF;AACH;GACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;AAC/C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;MACjC;AACL,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,OAAO,CAAC;AACzC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC7B,SAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B,MAAM,IAAI,YAAY,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE;AACxE,WAAU,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;UACnC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;WAClC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC7D,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B;UACF;AACT,QAAO,MAAM;AACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B;OACD,SAAS,GAAG,IAAI,CAAC;MAClB;AACL,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM;AACjF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACnE;AACA,KAAI,OAAO,KAAK,GAAG,MAAM,EAAE;AAC3B,OAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAC7C,WAAU,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACf;QACF;OACD,IAAI,SAAS,EAAE;AACrB,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;AACvE,WAAU,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;UACpD;AACT,QAAO,MAAM;AACb,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;WAC7D,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,WAAU,IAAI,IAAI,GAAG,IAAI,EAAE;AAC3B,aAAY,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD,YAAW,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;aACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;aAC1C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvE,YAAW,MAAM;aACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aAClF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACnE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D;UACF;QACF;AACP,OAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,OAAM,IAAI,CAAC,IAAI,SAAS,EAAE;AAC1B,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;SAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;WAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;UACnB;AACT,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,SAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB;MACF;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACf,KAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAClB,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;OACZ,EAAE,CAAC,CAAC;MACL;KACD,IAAI,KAAK,EAAE;AACf,OAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,KAAI,OAAO,KAAK,CAAC,MAAM,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,EAAE;AACjD,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,CAAC;AACrC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC7B,SAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B,MAAM,IAAI,YAAY,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE;AACpE,WAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;UAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;WAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACzD,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B;UACF;AACT,QAAO,MAAM;AACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B;OACD,SAAS,GAAG,IAAI,CAAC;MAClB;KACD,IAAI,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;KACnC,IAAI,SAAS,EAAE;OACb,KAAK,GAAG,MAAM,CAAC;AACrB,MAAK,MAAM;AACX,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;SACnC,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,SAAQ,IAAI,IAAI,GAAG,IAAI,EAAE;WACf,KAAK,IAAI,CAAC,CAAC;AACrB,UAAS,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;WACvB,KAAK,IAAI,CAAC,CAAC;UACZ,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;WAC1C,KAAK,IAAI,CAAC,CAAC;AACrB,UAAS,MAAM;WACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;WAC1E,KAAK,IAAI,CAAC,CAAC;UACZ;QACF;MACF;KACD,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACpC,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACjB,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC,EAAE;KAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;OACpC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MACrC;KACD,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACrC,KAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,KAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AAChC,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACnB,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAC1C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,OAAO;MACR;AACL,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/F,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACtC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,SAAS,EAAE;OACzC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAC3C,SAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf;MACF;KACD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;KACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;OAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;MACnB;AACL,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;AAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjD,KAAI,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC;AACxB,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;AAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AAChE,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,SAAQ,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AACvE,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC1E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;AAC3E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QACrE;AACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SACL,CAAC,GAAG,CAAC,CAAC;QACP;MACF;KACD,IAAI,UAAU,EAAE;AACpB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,OAAM,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACtE,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;SAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzE;AACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;SAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAC1E;MACF;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;AAC7C,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;AAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;KACjC,IAAI,MAAM,CAAC;KACX,IAAI,UAAU,EAAE;AACpB,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,MAAK,MAAM;AACX,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;MACjC;KACD,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;AAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;SACxD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB;AACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACN;MACF;KACD,IAAI,UAAU,EAAE;OACd,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OAChB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;MACjC;KACD,OAAO,MAAM,CAAC;AAClB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;AACzD;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;AAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KAC7C,IAAI,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;AAClC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;AAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AAChE,SAAQ,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACrC,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAChD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;AACjD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;QAC1C;AACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACN;MACF;KACD,IAAI,UAAU,EAAE;AACpB,OAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACnC,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;QACzC;AACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;QAC1C;MACF;KACD,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AAC3C,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9C;AACH;AACA,GAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;KACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACnC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,GAAG,UAAU,CAAC,EAAE;KACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvD,OAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;OAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;AACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,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AC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,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C,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,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UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAASY,QAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;AAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;AACA,EAAEb,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AACDlB,OAAK,CAAC,QAAQ,CAAC+B,QAAM,EAAEb,WAAS,CAAC,CAAC;IAClC,IAAc,GAAGa,QAAM,CAAC;AACxB;AACAA,QAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxBA,QAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,QAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,QAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;AACAA,QAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;AACpE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;AACA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU;AACrB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AACzB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB,GAAG;AACH,CAAC,CAAC;AACF;AACAA,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACxD,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB;AACA,EAAEnC,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACxC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAM,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB;AACA,IAAI,IAAI,KAAK,GAAG,UAAU;AAC1B,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB,IAAI,IAAI,KAAK,GAAG,UAAU;AAC1B,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAM,CAAC,CAAC;AAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrD,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AACF;AACAmC,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO/B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACrC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACzC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX;;ACvUA,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC;AACA,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;AAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,CAAC;AACDC,OAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;AACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;;AChCW,GAAA,CAAA,IAAA,GAAGF,GAAmB;AACpB,GAAA,CAAA,MAAA,GAAGC,KAAqB;AACxB,GAAA,CAAA,MAAA,GAAG6B,KAAqB;AACxB,GAAA,CAAA,MAAA,GAAGC,KAAqB;AACtC,GAAA,CAAA,MAAc,GAAGG;;;;ACJjB,IAAIhC,OAAK,GAAGF,OAAkB,CAAC;AAC/B,IAAI,MAAM,GAAGC,QAAmB,CAAC;AACjC;AACA,IAAI,MAAM,GAAGC,OAAK,CAAC,MAAM,CAAC;AAC1B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;AACxB,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;AACA,SAAS,SAAS,GAAG;AACrB,EAAE,IAAI,EAAE,IAAI,YAAY,SAAS,CAAC;AAClC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;AAC3B;AACA,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC1E,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACzB,CAAC;AACDA,OAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACpB,MAAA,CAAA,SAAA,GAAG,UAAU;AAC9B;AACA,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC;AAC1B,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;AACxB,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC;AAC7B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB;AACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,KAAK;AACjB,MAAM,MAAM;AACZ,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,MAAM,CAAC,CAAC,CAAC;AACT,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,KAAK;AACb,MAAM,MAAM;AACZ,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,MAAM,EAAE,CAAC,CAAC;AACV,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACxB,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,GAAG;AACH,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AACnD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3C;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD;AACA,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB;AACA,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD;AACA,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB;AACA,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD;AACA,IAAI,CAAC,GAAG;AACR,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAA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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/index.es.js b/node_modules/@walletconnect/utils/dist/index.es.js +new file mode 100644 +index 0000000000000000000000000000000000000000..6bb30571f9a75c9921d8cdb6a8b16f461cf9d4f9 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.es.js +@@ -0,0 +1,18 @@ ++import{detect as Uo}from"detect-browser";import{toMiliseconds as di,FIVE_MINUTES as hn,fromMiliseconds as ko}from"@walletconnect/time";import{getDocument as pi,getNavigator as cn,getLocation as ln}from"@walletconnect/window-getters";import{getWindowMetadata as qo}from"@walletconnect/window-metadata";import*as Br from"query-string";import{ChaCha20Poly1305 as dn}from"@stablelib/chacha20poly1305";import{HKDF as Ko}from"@stablelib/hkdf";import{randomBytes as Cr}from"@stablelib/random";import{SHA256 as pn,hash as vn}from"@stablelib/sha256";import*as gn from"@stablelib/x25519";import{toString as Qt,fromString as Xt,concat as vi}from"uint8arrays";import{ec as Ho}from"elliptic";import{decodeJWT as Lo}from"@walletconnect/relay-auth";import{RELAY_JSONRPC as zo}from"@walletconnect/relay-api";const Rr=":";function mn(e){const[t,r]=e.split(Rr);return{namespace:t,reference:r}}function An(e){const{namespace:t,reference:r}=e;return[t,r].join(Rr)}function gi(e){const[t,r,i]=e.split(Rr);return{namespace:t,reference:r,address:i}}function bn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(Rr)}function mi(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function yn(e){const{address:t}=gi(e);return t}function wn(e){const{namespace:t,reference:r}=gi(e);return An({namespace:t,reference:r})}function jo(e,t){const{namespace:r,reference:i}=mn(t);return bn({namespace:r,reference:i,address:e})}function Qo(e){return mi(e,yn)}function xn(e){return mi(e,wn)}function Jo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function Go(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...xn(n.accounts))}),r}function Yo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...Or(i,n))}),r}function Or(e,t){return e.includes(":")?[e]:t.chains||[]}var Vo=Object.defineProperty,Mn=Object.getOwnPropertySymbols,Wo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable,En=(e,t,r)=>t in e?Vo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Sn=(e,t)=>{for(var r in t||(t={}))Wo.call(t,r)&&En(e,r,t[r]);if(Mn)for(var r of Mn(t))Xo.call(t,r)&&En(e,r,t[r]);return e};const Nn="ReactNative",qt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Pr=" ",Zo=":",In="/",Ai=2,$o=1e3,_n="js";function bi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function rr(){return!pi()&&!!cn()&&navigator.product===Nn}function gr(){return!bi()&&!!cn()&&!!pi()}function We(){return rr()?qt.reactNative:bi()?qt.node:gr()?qt.browser:qt.unknown}function ts(){var e;try{return rr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Bn(e,t){let r=Br.parse(e);return r=Sn(Sn({},r),t),e=Br.stringify(r),e}function es(){return qo()||{name:"",description:"",url:"",icons:[""]}}function rs(e,t){var r;const i=We(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=ln())==null?void 0:r.host)||"unknown"),n}function Cn(){if(We()===qt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Uo();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Rn(){var e;const t=We();return t===qt.browser?[t,((e=ln())==null?void 0:e.host)||"unknown"].join(":"):t}function On(e,t,r){const i=Cn(),n=Rn();return[[e,t].join("-"),[_n,r].join("-"),i,n].join("/")}function is({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const A=r.split("?"),v=On(e,t,i),w={auth:n,ua:v,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=Bn(A[1]||"",w);return A[0]+"?"+y}function ns(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function fs(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Pn(e,t=Ai){return Dn(e.split(In),t)}function os(e){return Pn(e).join(Pr)}function _e(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Dn(e,t=Ai){return e.slice(Math.max(e.length-t,0))}function ss(e){return Object.fromEntries(e.entries())}function as(e){return new Map(Object.entries(e))}function us(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const hs=e=>e;function Fn(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function cs(e){return e.split(Pr).map(t=>Fn(t)).join(Pr)}function ls(e=hn,t){const r=di(e||hn);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function ds(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function yi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function ps(e){return yi("topic",e)}function vs(e){return yi("id",e)}function gs(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function ms(e,t){return ko((t||Date.now())+di(e))}function As(e){return Date.now()>=di(e)}function bs(e,t){return`${e}${t?`:${t}`:""}`}function me(e=[],t=[]){return[...new Set([...e,...t])]}async function ys({id:e,topic:t,wcDeepLink:r}){var i;try{if(!r)return;const n=typeof r=="string"?JSON.parse(r):r;let o=n?.href;if(typeof o!="string")return;o.endsWith("/")&&(o=o.slice(0,-1));const h=`${o}/wc?requestId=${e}&sessionTopic=${t}`,p=We();if(p===qt.browser){if(!((i=pi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}h.startsWith("https://")||h.startsWith("http://")?window.open(h,"_blank","noreferrer noopener"):window.open(h,"_self","noreferrer noopener")}else p===qt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(h)}catch(n){console.error(n)}}async function ws(e,t){try{return await e.getItem(t)||(gr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function wi(e,t){return e.filter(r=>t.includes(r))}function xs(e,t){if(!e.includes(t))return null;const r=e.split(/([&,?,=])/),i=r.indexOf(t);return r[i+2]}function Ms(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Es(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Un={exports:{}};/** ++ * [js-sha3]{@link https://github.com/emn178/js-sha3} ++ * ++ * @version 0.8.0 ++ * @author Chen, Yi-Cyuan [emn178@gmail.com] ++ * @copyright Chen, Yi-Cyuan 2015-2018 ++ * @license MIT ++ */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=Tn:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,A=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],C=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],J=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),A&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var G=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,R){return new s(u,E,R).update(B)[_]()}},L=function(u,E,_){return function(B,R,T,P){return f["cshake"+u].update(B,R,T,P)[_]()}},Pt=function(u,E,_){return function(B,R,T,P){return f["kmac"+u].update(B,R,T,P)[_]()}},W=function(u,E,_,B){for(var R=0;R>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,R=this.byteCount,T=u.length,P=this.blockCount,O=0,Ct=this.s,D,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[D>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=R){for(this.start=D-R,this.block=B[P],D=0;D>8,_=u&255;_>0;)R.unshift(_),u=u>>8,_=u&255,++B;return E?R.push(B):R.unshift(B),this.update(R),R.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,R=u.length;if(E)B=R;else for(var T=0;T=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++T)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P="",O;T<_;){for(R=0;R>4&15]+v[O&15]+v[O>>12&15]+v[O>>8&15]+v[O>>20&15]+v[O>>16&15]+v[O>>28&15]+v[O>>24&15];T%u===0&&(k(E),R=0)}return B&&(O=E[R],P+=v[O>>4&15]+v[O&15],B>1&&(P+=v[O>>12&15]+v[O>>8&15]),B>2&&(P+=v[O>>20&15]+v[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);T<_;){for(R=0;R>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;T%u===0&&k(E)}return B&&(O=T<<2,Ct=E[R],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function g(u,E,_){s.call(this,u,E,_)}g.prototype=new s,g.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,R,T,P,O,Ct,D,q,De,X,Z,Fe,$,tt,Te,et,rt,Ue,it,nt,ke,ft,ot,qe,st,at,Ke,ut,ht,He,ct,lt,Le,dt,pt,ze,vt,gt,je,mt,At,Qe,bt,yt,Je,wt,xt,Ge,Mt,Et,Ye,St,Nt,Ve,It,_t,Me,Ee,Se,Ne,Ie;for(B=0;B<48;B+=2)R=u[0]^u[10]^u[20]^u[30]^u[40],T=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],D=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],De=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=R^(Ct<<1|D>>>31),_=T^(D<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|De>>>31),_=O^(De<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=D^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(R<<1|T>>>31),_=De^(T<<1|R>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Fe=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Je=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,Ke=u[21]<<3|u[20]>>>29,Ee=u[31]<<9|u[30]>>>23,Se=u[30]<<9|u[31]>>>23,mt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,Le=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Te=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Ne=u[42]<<2|u[43]>>>30,Ie=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Ge=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,He=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ve=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,ze=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,Ue=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Ye=u[46]<<24|u[47]>>>8,Qe=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,qe=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,Me=u[28]<<7|u[29]>>>25,gt=u[38]<<8|u[39]>>>24,je=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,ke=u[49]<<14|u[48]>>>18,u[0]=Fe^~tt&et,u[1]=$^~Te&rt,u[10]=ft^~qe&at,u[11]=ot^~st&Ke,u[20]=lt^~dt&ze,u[21]=Le^~pt&vt,u[30]=Qe^~yt&wt,u[31]=bt^~Je&xt,u[40]=St^~Ve&_t,u[41]=Nt^~It&Me,u[2]=tt^~et&Ue,u[3]=Te^~rt&it,u[12]=qe^~at&ut,u[13]=st^~Ke&ht,u[22]=dt^~ze>,u[23]=pt^~vt&je,u[32]=yt^~wt&Ge,u[33]=Je^~xt&Mt,u[42]=Ve^~_t&Ee,u[43]=It^~Me&Se,u[4]=et^~Ue&nt,u[5]=rt^~it&ke,u[14]=at^~ut&He,u[15]=Ke^~ht&ct,u[24]=ze^~gt&mt,u[25]=vt^~je&At,u[34]=wt^~Ge&Et,u[35]=xt^~Mt&Ye,u[44]=_t^~Ee&Ne,u[45]=Me^~Se&Ie,u[6]=Ue^~nt&Fe,u[7]=it^~ke&$,u[16]=ut^~He&ft,u[17]=ht^~ct&ot,u[26]=gt^~mt<,u[27]=je^~At&Le,u[36]=Ge^~Et&Qe,u[37]=Mt^~Ye&bt,u[46]=Ee^~Ne&St,u[47]=Se^~Ie&Nt,u[8]=nt^~Fe&tt,u[9]=ke^~$&Te,u[18]=He^~ft&qe,u[19]=ct^~ot&st,u[28]=mt^~lt&dt,u[29]=At^~Le&pt,u[38]=Et^~Qe&yt,u[39]=Ye^~bt&Je,u[48]=Ne^~St&Ve,u[49]=Ie^~Nt&It,u[0]^=C[B],u[1]^=C[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Hn=Is();var Mi;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Mi||(Mi={}));var re;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(re||(re={}));const Ln="0123456789abcdef";class z{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Dr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Kn>Dr[i])&&console.log.apply(console,r)}debug(...t){this._log(z.levels.DEBUG,t)}info(...t){this._log(z.levels.INFO,t)}warn(...t){this._log(z.levels.WARNING,t)}makeError(t,r,i){if(qn)return this.makeError("censored error",r,{});r||(r=z.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(A=>{const v=i[A];try{if(v instanceof Uint8Array){let w="";for(let y=0;y>4],w+=Ln[v[y]&15];n.push(A+"=Uint8Array(0x"+w+")")}else n.push(A+"="+JSON.stringify(v))}catch{n.push(A+"="+JSON.stringify(i[A].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case re.NUMERIC_FAULT:{h="NUMERIC_FAULT";const A=t;switch(A){case"overflow":case"underflow":case"division-by-zero":h+="-"+A;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case re.CALL_EXCEPTION:case re.INSUFFICIENT_FUNDS:case re.MISSING_NEW:case re.NONCE_EXPIRED:case re.REPLACEMENT_UNDERPRICED:case re.TRANSACTION_REPLACED:case re.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(A){p[A]=i[A]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,z.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Hn&&this.throwError("platform missing String.prototype.normalize",z.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Hn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,z.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",z.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return xi||(xi=new z(Ns)),xi}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),kn){if(!t)return;this.globalLogger().throwError("error censorship permanent",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}qn=!!t,kn=!!r}static setLogLevel(t){const r=Dr[t.toLowerCase()];if(r==null){z.globalLogger().warn("invalid log level - "+t);return}Kn=r}static from(t){return new z(t)}}z.errors=re,z.levels=Mi;const _s="bytes/5.7.0",Dt=new z(_s);function zn(e){return!!e.toHexString}function ir(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ir(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Bs(e){return Jt(e)&&!(e.length%2)||nr(e)}function jn(e){return typeof e=="number"&&e==e&&e%1===0}function nr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!jn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ot(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),ir(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e)&&(e=e.toHexString()),Jt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Dt.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nOt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),ir(i)}function Rs(e,t){e=Ot(e),e.length>t&&Dt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),ir(r)}function Jt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const Ei="0123456789abcdef";function Kt(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=Ei[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e))return e.toHexString();if(Jt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Dt.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(nr(e)){let r="0x";for(let i=0;i>4]+Ei[n&15]}return r}return Dt.throwArgumentError("invalid hexlify value","value",e)}function Os(e){if(typeof e!="string")e=Kt(e);else if(!Jt(e)||e.length%2)return null;return(e.length-2)/2}function Qn(e,t,r){return typeof e!="string"?e=Kt(e):(!Jt(e)||e.length%2)&&Dt.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function oe(e,t){for(typeof e!="string"?e=Kt(e):Jt(e)||Dt.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Dt.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Jn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Bs(e)){let r=Ot(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64))):r.length===65?(t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64)),t.v=r[64]):Dt.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Dt.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Kt(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=Rs(Ot(t._vs),32);t._vs=Kt(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Dt.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Kt(n);t.s==null?t.s=h:t.s!==h&&Dt.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Dt.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Dt.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Jt(t.r)?Dt.throwArgumentError("signature missing or invalid r","signature",e):t.r=oe(t.r,32),t.s==null||!Jt(t.s)?Dt.throwArgumentError("signature missing or invalid s","signature",e):t.s=oe(t.s,32);const r=Ot(t.s);r[0]>=128&&Dt.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Kt(r);t._vs&&(Jt(t._vs)||Dt.throwArgumentError("signature invalid _vs","signature",e),t._vs=oe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Dt.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function Si(e){return"0x"+Ss.keccak_256(Ot(e))}var Gn={exports:{}},Ps={},Ds=Object.freeze({__proto__:null,default:Ps}),Fs=Es(Ds);(function(e){(function(t,r){function i(b,f){if(!b)throw new Error(f||"Assertion failed")}function n(b,f){b.super_=f;var a=function(){};a.prototype=f.prototype,b.prototype=new a,b.prototype.constructor=b}function o(b,f,a){if(o.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(b||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Fs.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[m]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);else if(c==="le")for(d=0,m=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);return this._strip()};function p(b,f){var a=b.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+b)}function A(b,f,a){var c=p(b,a);return a-1>=f&&(c|=p(b,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=A(f,a,d)<=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8}this._strip()};function v(b,f,a,c){for(var d=0,m=0,x=Math.min(b.length,a),M=f;M=49?m=l-49+10:l>=17?m=l-17+10:m=l,i(l>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,m=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),m!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(m!==0&&(c=m.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],g=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(g).toString(f);k=k.idivn(g),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var C=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),m=c||Math.max(1,d);i(d<=m,"byte array longer than desired length"),i(m>0,"Requested array length <= 0");var x=C(f,m),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,m=0,x=0;m>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(b){for(var f=new Array(b.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var m=0,x=0;x>>26;for(;m!==0&&x>>26;if(this.length=c.length,m!==0)this.words[this.length]=m,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,m;c>0?(d=this,m=f):(d=f,m=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-b.length+1);E<=u;E++){var _=s-E|0;d=b.words[_]|0,m=f.words[E]|0,x=d*m+k,g+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=g|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var J=function(f,a,c){var d=f.words,m=a.words,x=c.words,M=0,l,s,g,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,R=_>>>13,T=d[2]|0,P=T&8191,O=T>>>13,Ct=d[3]|0,D=Ct&8191,q=Ct>>>13,De=d[4]|0,X=De&8191,Z=De>>>13,Fe=d[5]|0,$=Fe&8191,tt=Fe>>>13,Te=d[6]|0,et=Te&8191,rt=Te>>>13,Ue=d[7]|0,it=Ue&8191,nt=Ue>>>13,ke=d[8]|0,ft=ke&8191,ot=ke>>>13,qe=d[9]|0,st=qe&8191,at=qe>>>13,Ke=m[0]|0,ut=Ke&8191,ht=Ke>>>13,He=m[1]|0,ct=He&8191,lt=He>>>13,Le=m[2]|0,dt=Le&8191,pt=Le>>>13,ze=m[3]|0,vt=ze&8191,gt=ze>>>13,je=m[4]|0,mt=je&8191,At=je>>>13,Qe=m[5]|0,bt=Qe&8191,yt=Qe>>>13,Je=m[6]|0,wt=Je&8191,xt=Je>>>13,Ge=m[7]|0,Mt=Ge&8191,Et=Ge>>>13,Ye=m[8]|0,St=Ye&8191,Nt=Ye>>>13,Ve=m[9]|0,It=Ve&8191,_t=Ve>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,g=Math.imul(E,ht);var Me=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(R,ut)|0,g=Math.imul(R,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,g=g+Math.imul(E,lt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,g=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(R,ct)|0,g=g+Math.imul(R,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,g=g+Math.imul(E,pt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(D,ut),s=Math.imul(D,ht),s=s+Math.imul(q,ut)|0,g=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,g=g+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(R,dt)|0,g=g+Math.imul(R,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,gt)|0,s=s+Math.imul(E,vt)|0,g=g+Math.imul(E,gt)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,g=Math.imul(Z,ht),l=l+Math.imul(D,ct)|0,s=s+Math.imul(D,lt)|0,s=s+Math.imul(q,ct)|0,g=g+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,g=g+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,gt)|0,s=s+Math.imul(R,vt)|0,g=g+Math.imul(R,gt)|0,l=l+Math.imul(u,mt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,mt)|0,g=g+Math.imul(E,At)|0;var Ie=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,g=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,g=g+Math.imul(Z,lt)|0,l=l+Math.imul(D,dt)|0,s=s+Math.imul(D,pt)|0,s=s+Math.imul(q,dt)|0,g=g+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,gt)|0,s=s+Math.imul(O,vt)|0,g=g+Math.imul(O,gt)|0,l=l+Math.imul(B,mt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(R,mt)|0,g=g+Math.imul(R,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,g=g+Math.imul(E,yt)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,g=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,g=g+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,g=g+Math.imul(Z,pt)|0,l=l+Math.imul(D,vt)|0,s=s+Math.imul(D,gt)|0,s=s+Math.imul(q,vt)|0,g=g+Math.imul(q,gt)|0,l=l+Math.imul(P,mt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,mt)|0,g=g+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(R,bt)|0,g=g+Math.imul(R,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,g=g+Math.imul(E,xt)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,g=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,g=g+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,g=g+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,gt)|0,s=s+Math.imul(Z,vt)|0,g=g+Math.imul(Z,gt)|0,l=l+Math.imul(D,mt)|0,s=s+Math.imul(D,At)|0,s=s+Math.imul(q,mt)|0,g=g+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,g=g+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(R,wt)|0,g=g+Math.imul(R,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,g=g+Math.imul(E,Et)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,g=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,g=g+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,g=g+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,gt)|0,s=s+Math.imul(tt,vt)|0,g=g+Math.imul(tt,gt)|0,l=l+Math.imul(X,mt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,mt)|0,g=g+Math.imul(Z,At)|0,l=l+Math.imul(D,bt)|0,s=s+Math.imul(D,yt)|0,s=s+Math.imul(q,bt)|0,g=g+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,g=g+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(R,Mt)|0,g=g+Math.imul(R,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,g=g+Math.imul(E,Nt)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,g=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,g=g+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,g=g+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,gt)|0,s=s+Math.imul(rt,vt)|0,g=g+Math.imul(rt,gt)|0,l=l+Math.imul($,mt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,mt)|0,g=g+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,g=g+Math.imul(Z,yt)|0,l=l+Math.imul(D,wt)|0,s=s+Math.imul(D,xt)|0,s=s+Math.imul(q,wt)|0,g=g+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,g=g+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(R,St)|0,g=g+Math.imul(R,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,g=g+Math.imul(E,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,g=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,g=g+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,gt)|0,s=s+Math.imul(nt,vt)|0,g=g+Math.imul(nt,gt)|0,l=l+Math.imul(et,mt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,mt)|0,g=g+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,g=g+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,g=g+Math.imul(Z,xt)|0,l=l+Math.imul(D,Mt)|0,s=s+Math.imul(D,Et)|0,s=s+Math.imul(q,Mt)|0,g=g+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,g=g+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(R,It)|0,g=g+Math.imul(R,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,g=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,gt)|0,s=s+Math.imul(ot,vt)|0,g=g+Math.imul(ot,gt)|0,l=l+Math.imul(it,mt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,mt)|0,g=g+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,g=g+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,g=g+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,g=g+Math.imul(Z,Et)|0,l=l+Math.imul(D,St)|0,s=s+Math.imul(D,Nt)|0,s=s+Math.imul(q,St)|0,g=g+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,g=g+Math.imul(O,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,vt),s=Math.imul(st,gt),s=s+Math.imul(at,vt)|0,g=Math.imul(at,gt),l=l+Math.imul(ft,mt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,mt)|0,g=g+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,g=g+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,g=g+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,g=g+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,g=g+Math.imul(Z,Nt)|0,l=l+Math.imul(D,It)|0,s=s+Math.imul(D,_t)|0,s=s+Math.imul(q,It)|0,g=g+Math.imul(q,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,mt),s=Math.imul(st,At),s=s+Math.imul(at,mt)|0,g=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,g=g+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,g=g+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,g=g+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,g=g+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,g=g+Math.imul(Z,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,g=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,g=g+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,g=g+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,g=g+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,g=g+Math.imul(tt,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,g=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,g=g+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,g=g+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,g=g+Math.imul(rt,_t)|0;var ui=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,g=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,g=g+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,g=g+Math.imul(nt,_t)|0;var hi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(hi>>>26)|0,hi&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,g=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,g=g+Math.imul(ot,_t)|0;var ci=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ci>>>26)|0,ci&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,g=Math.imul(at,_t);var li=(M+l|0)+((s&8191)<<13)|0;return M=(g+(s>>>13)|0)+(li>>>26)|0,li&=67108863,x[0]=Me,x[1]=Ee,x[2]=Se,x[3]=Ne,x[4]=Ie,x[5]=$r,x[6]=ti,x[7]=ei,x[8]=ri,x[9]=ii,x[10]=ni,x[11]=fi,x[12]=oi,x[13]=si,x[14]=ai,x[15]=ui,x[16]=hi,x[17]=ci,x[18]=li,M!==0&&(x[19]=M,c.length++),c};Math.imul||(J=U);function Bt(b,f,a){a.negative=f.negative^b.negative,a.length=b.length+f.length;for(var c=0,d=0,m=0;m>>26)|0,d+=x>>>26,x&=67108863}a.words[m]=M,c=x,x=d}return c!==0?a.words[m]=c:a.length--,a._strip()}function G(b,f,a){return Bt(b,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=J(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=G(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),G(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=m/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,m;if(a!==0){var x=0;for(m=0;m>>26-a}x&&(this.words[m]=x,this.length++)}if(c!==0){for(m=this.length-1;m>=0;m--)this.words[m+c]=this.words[m];for(m=0;m=0);var d;a?d=(a-a%26)/26:d=0;var m=f%26,x=Math.min((f-m)/26,this.length),M=67108863^67108863>>>m<x)for(this.length-=x,s=0;s=0&&(g!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=g<<26-m|k>>>m,g=k&M}return l&&g!==0&&(l.words[l.length++]=g),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[m+c]=x&67108863}for(;m>26,this.words[m+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,m=0;m>26,this.words[m]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),m=f,x=m.words[m.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(m=m.ushln(c),d.iushln(c),x=m.words[m.length-1]|0);var l=d.length-m.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var g=0;g=0;u--){var E=(d.words[m.length+u]|0)*67108864+(d.words[m.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(m,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(m,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,m,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.iadd(f)),{div:d,mod:m}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.isub(f)),{div:x.div,mod:m}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),m=f.andln(1),x=c.cmp(d);return x<0||m===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,m=this.length-1;m>=0;m--)d=(c*d+(this.words[m]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var m=(this.words[d]|0)+c*67108864;this.words[d]=m/f|0,c=m%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),g=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||m.isOdd())&&(d.iadd(s),m.isub(g)),d.iushrn(1),m.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(g)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),m.isub(M)):(c.isub(a),x.isub(d),M.isub(m))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,g=1;!(c.words[0]&g)&&s<26;++s,g<<=1);if(s>0)for(c.iushrn(s);s-- >0;)m.isOdd()&&m.iadd(x),m.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(m)):(c.isub(a),m.isub(d))}var k;return a.cmpn(1)===0?k=d:k=m,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var m=a.cmp(c);if(m<0){var x=a;a=c,c=x}else if(m===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return m!==0&&(this.words[x]=m,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,m=f.words[c]|0;if(d!==m){dm&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function L(b,f){this.name=b,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},L.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},L.prototype.split=function(f,a){f.iushrn(this.n,0,a)},L.prototype.imulK=function(f){return f.imul(this.k)};function Pt(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Pt,L),Pt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),m=0;m>>22,x=M}x>>>=22,f.words[m-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Pt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=m,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Pt;else if(f==="p224")a=new W;else if(f==="p192")a=new Rt;else if(f==="p25519")a=new Vt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(b){if(typeof b=="string"){var f=o._prime(b);this.m=f.p,this.prime=f}else i(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),m=0;!d.isZero()&&d.andln(1)===0;)m++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var g=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=m;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;m--){for(var g=a.words[m],k=s-1;k>=0;k--){var u=g>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(m!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Wt(f)};function Wt(b){Y.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Wt,Y),Wt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Wt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Wt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,Tn)})(Gn);var K=Gn.exports;const Yn="bignumber/5.7.0";var Fr=K.BN;const Ae=new z(Yn),Ni={},Vn=9007199254740991;function Ts(e){return e!=null&&(V.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Jt(e)||typeof e=="bigint"||nr(e))}let Wn=!1;class V{constructor(t,r){t!==Ni&&Ae.throwError("cannot call constructor directly; use BigNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return zt(j(this).fromTwos(t))}toTwos(t){return zt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?V.from(this._hex.substring(1)):this}add(t){return zt(j(this).add(j(t)))}sub(t){return zt(j(this).sub(j(t)))}div(t){return V.from(t).isZero()&&Zt("division-by-zero","div"),zt(j(this).div(j(t)))}mul(t){return zt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Zt("division-by-zero","mod"),zt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Zt("negative-power","pow"),zt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","and"),zt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","or"),zt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","xor"),zt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Zt("negative-width","mask"),zt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Zt("negative-width","shl"),zt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Zt("negative-width","shr"),zt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Zt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Ae.throwError("this platform does not support BigInt",z.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Wn||(Wn=!0,Ae.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Ae.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",z.errors.UNEXPECTED_ARGUMENT,{}):Ae.throwError("BigNumber.toString does not accept parameters",z.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new V(Ni,mr(t)):t.match(/^-?[0-9]+$/)?new V(Ni,mr(new Fr(t))):Ae.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Zt("underflow","BigNumber.from",t),(t>=Vn||t<=-Vn)&&Zt("overflow","BigNumber.from",t),V.from(String(t));const r=t;if(typeof r=="bigint")return V.from(r.toString());if(nr(r))return V.from(Kt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return V.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Jt(i)||i[0]==="-"&&Jt(i.substring(1))))return V.from(i)}return Ae.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function mr(e){if(typeof e!="string")return mr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Ae.throwArgumentError("invalid hex","value",e),e=mr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function zt(e){return V.from(mr(e))}function j(e){const t=V.from(e).toHexString();return t[0]==="-"?new Fr("-"+t.substring(3),16):new Fr(t.substring(2),16)}function Zt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),Ae.throwError(e,z.errors.NUMERIC_FAULT,i)}function Us(e){return new Fr(e,36).toString(16)}const Ht=new z(Yn),Ar={},Xn=V.from(0),Zn=V.from(-1);function $n(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Ht.throwError(e,z.errors.NUMERIC_FAULT,n)}let br="0";for(;br.length<256;)br+=br;function Ii(e){if(typeof e!="number")try{e=V.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+br.substring(0,e):Ht.throwArgumentError("invalid decimal size","decimals",e)}function _i(e,t){t==null&&(t=0);const r=Ii(t);e=V.from(e);const i=e.lt(Xn);i&&(e=e.mul(Zn));let n=e.mod(r).toString();for(;n.length2&&Ht.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&$n("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?A:(typeof t[h]!==p&&Ht.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Ht.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Ht.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new vr(Ar,r,i,n)}}class Ut{constructor(t,r,i,n){t!==Ar&&Ht.throwError("cannot use FixedNumber constructor; use FixedNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ht.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(tf.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(tf.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ht.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=Ut.from("1"+br.substring(0,t),this.format),n=ks.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ht.throwArgumentError("invalid byte width","width",t);const r=V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return oe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ut.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Ts(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),Ut.fromString(_i(t,r),vr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=vr.from(r),n=be(t,i.decimals);!i.signed&&n.lt(Xn)&&$n("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=oe(o,i.width/8));const h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=vr.from(r);if(Ot(t).length>i.width/8)throw new Error("overflow");let n=V.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static from(t,r){if(typeof t=="string")return Ut.fromString(t,r);if(nr(t))return Ut.fromBytes(t,r);try{return Ut.fromValue(t,0,r)}catch(i){if(i.code!==z.errors.INVALID_ARGUMENT)throw i}return Ht.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const tf=Ut.from(1),ks=Ut.from("0.5"),qs="strings/5.7.0",ef=new z(qs);var Tr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Tr||(Tr={}));var fr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(fr||(fr={}));function Ks(e,t,r,i,n){return ef.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function rf(e,t,r,i,n){if(e===fr.BAD_PREFIX||e===fr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===fr.OVERRUN?r.length-t-1:0}function Hs(e,t,r,i,n){return e===fr.OVERLONG?(i.push(n),0):(i.push(65533),rf(e,t,r))}Object.freeze({error:Ks,ignore:rf,replace:Hs});function Bi(e,t=Tr.current){t!=Tr.current&&(ef.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Ot(r)}function Ls(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function nf(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}nf("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Ci("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Ci("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ci("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Ls),nf("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const ff="hash/5.7.0";function zs(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function js(e){const t={};for(let r=0;r>--A&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,C=S-1;let F=0;for(let H=0;H1;){let Vt=L+Pt>>>1;H>>1|w(),W=W<<1^I,Rt=(Rt^I)<<1|I|1;J=W,Bt=1+Rt-W}let G=i-4;return U.map(H=>{switch(H-G){case 3:return G+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return G+256+(e[p++]<<8|e[p++]);case 1:return G+e[p++];default:return H-1}})}function Js(e){let t=0;return()=>e[t++]}function Gs(e){return Js(Qs(e))}function Ys(e){return e&1?~e>>1:e>>1}function Vs(e,t){let r=Array(e);for(let i=0;it[h]):r}function Xs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push($s(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(t0(r,e))}return js(of(t))}function Zs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function af(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function $s(e,t){let r=1+t(),i=t(),n=Zs(t),o=af(n.length,1+e,t);return of(o.map((h,p)=>{const A=h[0],v=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[A+y*r,v.map(I=>I+S)]})}))}function t0(e,t){let r=1+t();return af(r,1+e,t).map(n=>[n[0],n.slice(1)])}function e0(e){let t=Ur(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let v=Ur(e,t);if(v.length==0)break;i.push({set:new Set(v),node:r()})}i.sort((v,w)=>w.set.size-v.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,A=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:A}}}function r0(){return Gs(zs("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"))}const kr=r0();new Set(Ur(kr)),new Set(Ur(kr)),Xs(kr),e0(kr),new z(ff);const i0=new Uint8Array(32);i0.fill(0);const n0=`Ethereum Signed Message: ++`;function uf(e){return typeof e=="string"&&(e=Bi(e)),Si(Cs([Bi(n0),Bi(String(e.length)),e]))}const f0="rlp/5.7.0";new z(f0);const o0="address/5.7.0",yr=new z(o0);function hf(e){Jt(e,20)||yr.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Ot(Si(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const s0=9007199254740991;function a0(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ri={};for(let e=0;e<10;e++)Ri[String(e)]=String(e);for(let e=0;e<26;e++)Ri[String.fromCharCode(65+e)]=String(10+e);const cf=Math.floor(a0(s0));function u0(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ri[i]).join("");for(;t.length>=cf;){let i=t.substring(0,cf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function h0(e){let t=null;if(typeof e!="string"&&yr.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=hf(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&yr.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==u0(e)&&yr.throwArgumentError("bad icap checksum","address",e),t=Us(e.substring(4));t.length<40;)t="0"+t;t=hf("0x"+t)}else yr.throwArgumentError("invalid address","address",e);return t}const c0="properties/5.7.0";new z(c0);function wr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new z(ff);const l0=new Uint8Array(32);l0.fill(0),V.from(-1);const d0=V.from(0),p0=V.from(1);V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oe(p0.toHexString(),32),oe(d0.toHexString(),32);var se={},Q={},xr=lf;function lf(e,t){if(!e)throw new Error(t||"Assertion failed")}lf.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var Oi={exports:{}};typeof Object.create=="function"?Oi.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Oi.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var v0=xr,g0=Oi.exports;Q.inherits=g0;function m0(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function A0(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):m0(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Q.htonl=df;function y0(e,t){for(var r="",i=0;i>>0}return o}Q.join32=w0;function x0(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}Q.split32=x0;function M0(e,t){return e>>>t|e<<32-t}Q.rotr32=M0;function E0(e,t){return e<>>32-t}Q.rotl32=E0;function S0(e,t){return e+t>>>0}Q.sum32=S0;function N0(e,t,r){return e+t+r>>>0}Q.sum32_3=N0;function I0(e,t,r,i){return e+t+r+i>>>0}Q.sum32_4=I0;function _0(e,t,r,i,n){return e+t+r+i+n>>>0}Q.sum32_5=_0;function B0(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}Q.sum64=B0;function C0(e,t,r,i){var n=t+i>>>0,o=(n>>0}Q.sum64_hi=C0;function R0(e,t,r,i){var n=t+i;return n>>>0}Q.sum64_lo=R0;function O0(e,t,r,i,n,o,h,p){var A=0,v=t;v=v+i>>>0,A+=v>>0,A+=v>>0,A+=v>>0}Q.sum64_4_hi=O0;function P0(e,t,r,i,n,o,h,p){var A=t+i+o+p;return A>>>0}Q.sum64_4_lo=P0;function D0(e,t,r,i,n,o,h,p,A,v){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}Q.sum64_5_hi=D0;function F0(e,t,r,i,n,o,h,p,A,v){var w=t+i+o+p+v;return w>>>0}Q.sum64_5_lo=F0;function T0(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}Q.rotr64_hi=T0;function U0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.rotr64_lo=U0;function k0(e,t,r){return e>>>r}Q.shr64_hi=k0;function q0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.shr64_lo=q0;var or={},gf=Q,K0=xr;function qr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}or.BlockHash=qr,qr.prototype.update=function(t,r){if(t=gf.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=gf.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}ae.g0_256=Q0;function J0(e){return ue(e,17)^ue(e,19)^e>>>10}ae.g1_256=J0;var ar=Q,G0=or,Y0=ae,Pi=ar.rotl32,Mr=ar.sum32,V0=ar.sum32_5,W0=Y0.ft_1,yf=G0.BlockHash,X0=[1518500249,1859775393,2400959708,3395469782];function he(){if(!(this instanceof he))return new he;yf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ar.inherits(he,yf);var Z0=he;he.blockSize=512,he.outSize=160,he.hmacStrength=80,he.padLength=64,he.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),qa(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?A.push(y,S):A.push(S)}return A}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",A=0;A(S>>1)-1?C=(S>>1)-F:C=F,I.isubn(C)):C=0,y[N]=C,I.iushrn(1)}return y}r.getNAF=i;function n(A,v){var w=[[],[]];A=A.clone(),v=v.clone();for(var y=0,S=0,I;A.cmpn(-y)>0||v.cmpn(-S)>0;){var N=A.andln(3)+y&3,C=v.andln(3)+S&3;N===3&&(N=-1),C===3&&(C=-1);var F;N&1?(I=A.andln(7)+y&7,(I===3||I===5)&&C===2?F=-N:F=N):F=0,w[0].push(F);var U;C&1?(I=v.andln(7)+S&7,(I===3||I===5)&&N===2?U=-C:U=C):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),A.iushrn(1),v.iushrn(1)}return w}r.getJSF=n;function o(A,v,w){var y="_"+v;A.prototype[v]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(A){return typeof A=="string"?r.toArray(A,"hex"):A}r.parseBytes=h;function p(A){return new K(A,"hex","le")}r.intFromLE=p}),Hr=Gt.getNAF,La=Gt.getJSF,Lr=Gt.assert;function Ce(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ze=Ce;Ce.prototype.point=function(){throw new Error("Not implemented")},Ce.prototype.validate=function(){throw new Error("Not implemented")},Ce.prototype._fixedNafMul=function(t,r){Lr(t.precomputed);var i=t._getDoubles(),n=Hr(r,1,this._bitLength),o=(1<=p;v--)A=(A<<1)+n[v];h.push(A)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;A--){for(var v=0;A>=0&&h[A]===0;A--)v++;if(A>=0&&v++,p=p.dblp(v),A<0)break;var w=h[A];Lr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Ce.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,A=this._wnafT3,v=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,C=w;if(h[N]!==1||h[C]!==1){A[N]=Hr(i[N],h[N],this._bitLength),A[C]=Hr(i[C],h[C],this._bitLength),v=Math.max(A[N].length,v),v=Math.max(A[C].length,v);continue}var F=[r[N],null,null,r[C]];r[N].y.cmp(r[C].y)===0?(F[1]=r[N].add(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg())):r[N].y.cmp(r[C].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].add(r[C].neg())):(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],J=La(i[N],i[C]);for(v=Math.max(J[0].length,v),A[N]=new Array(v),A[C]=new Array(v),y=0;y=0;w--){for(var Pt=0;w>=0;){var W=!0;for(y=0;y=0&&Pt++,H=H.dblp(Pt),w<0)break;for(y=0;y0?S=p[y][Rt-1>>1]:Rt<0&&(S=p[y][-Rt-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},$t.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=v,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},te.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),A=h.mul(n.a),v=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(A),S=v.add(w).neg();return{k1:y,k2:S}},te.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},te.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},te.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Ft.prototype.isInfinity=function(){return this.inf},Ft.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Ft.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Ft.prototype.getX=function(){return this.x.fromRed()},Ft.prototype.getY=function(){return this.y.fromRed()},Ft.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ft.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Ft.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Ft.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ft.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Tt(e,t,r,i){Ze.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}qi(Tt,Ze.BasePoint),te.prototype.jpoint=function(t,r,i){return new Tt(this,t,r,i)},Tt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Tt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Tt.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),A=n.redSub(o),v=h.redSub(p);if(A.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=A.redSqr(),y=w.redMul(A),S=n.redMul(w),I=v.redSqr().redIAdd(y).redISub(S).redISub(S),N=v.redMul(S.redISub(I)).redISub(h.redMul(y)),C=this.z.redMul(t.z).redMul(A);return this.curve.jpoint(I,N,C)},Tt.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),A=o.redSub(h);if(p.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=p.redSqr(),w=v.redMul(p),y=i.redMul(v),S=A.redSqr().redIAdd(w).redISub(y).redISub(y),I=A.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Tt.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Tt.prototype.inspect=function(){return this.isInfinity()?"":""},Tt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var zr=lr(function(e,t){var r=t;r.base=Ze,r.short=ja,r.mont=null,r.edwards=null}),jr=lr(function(e,t){var r=t,i=Gt.assert;function n(p){p.type==="short"?this.curve=new zr.short(p):p.type==="edwards"?this.curve=new zr.edwards(p):this.curve=new zr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,A){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var v=new n(A);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:v}),v}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:se.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:se.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:se.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:se.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:se.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:se.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=fe.toArray(e.entropy,e.entropyEnc||"hex"),r=fe.toArray(e.nonce,e.nonceEnc||"hex"),i=fe.toArray(e.pers,e.persEnc||"hex");ki(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Ff=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=fe.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var Qa=Gt.assert;function Qr(e,t){if(e instanceof Qr)return e;this._importDER(e,t)||(Qa(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var Jr=Qr;function Ja(){this.place=0}function Li(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Tf(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Qr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Tf(r),i=Tf(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];zi(n,r.length),n=n.concat(r),n.push(2),zi(n,i.length);var o=n.concat(i),h=[48];return zi(h,o.length),h=h.concat(o),Gt.encode(h,t)};var Ga=function(){throw new Error("unsupported")},Uf=Gt.assert;function ee(e){if(!(this instanceof ee))return new ee(e);typeof e=="string"&&(Uf(Object.prototype.hasOwnProperty.call(jr,e),"Unknown curve "+e),e=jr[e]),e instanceof jr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var Ya=ee;ee.prototype.keyPair=function(t){return new Hi(this,t)},ee.prototype.keyFromPrivate=function(t,r){return Hi.fromPrivate(this,t,r)},ee.prototype.keyFromPublic=function(t,r){return Hi.fromPublic(this,t,r)},ee.prototype.genKeyPair=function(t){t||(t={});for(var r=new Ff({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Ga(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},ee.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},ee.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),A=new Ff({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),v=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(A.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(v)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var C=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(C=C.umod(this.n),C.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&C.cmp(this.nh)>0&&(C=this.n.sub(C),F^=1),new Jr({r:N,s:C,recoveryParam:F})}}}}}},ee.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new Jr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),A=p.mul(t).umod(this.n),v=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},ee.prototype.recoverPubKey=function(e,t,r,i){Uf((3&r)===r,"The recovery param is more than two bits"),t=new Jr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,A=r&1,v=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?h=this.curve.pointFromX(h.add(this.curve.n),A):h=this.curve.pointFromX(h,A);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},ee.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new Jr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var Va=lr(function(e,t){var r=t;r.version="6.5.4",r.utils=Gt,r.rand=function(){throw new Error("unsupported")},r.curve=zr,r.curves=jr,r.ec=Ya,r.eddsa=null}),Wa=Va.ec;const Xa="signing-key/5.7.0",ji=new z(Xa);let Qi=null;function ve(){return Qi||(Qi=new Wa("secp256k1")),Qi}class Za{constructor(t){wr(this,"curve","secp256k1"),wr(this,"privateKey",Kt(t)),Os(this.privateKey)!==32&&ji.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=ve().keyFromPrivate(Ot(this.privateKey));wr(this,"publicKey","0x"+r.getPublic(!1,"hex")),wr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),wr(this,"_isSigningKey",!0)}_addPoint(t){const r=ve().keyFromPublic(Ot(this.publicKey)),i=ve().keyFromPublic(Ot(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=Ot(t);i.length!==32&&ji.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return Jn({recoveryParam:n.recoveryParam,r:oe("0x"+n.r.toString(16),32),s:oe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=ve().keyFromPublic(Ot(kf(t)));return oe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function $a(e,t){const r=Jn(t),i={r:Ot(r.r),s:Ot(r.s)};return"0x"+ve().recoverPubKey(Ot(e),i,r.recoveryParam).encode("hex",!1)}function kf(e,t){const r=Ot(e);if(r.length===32){const i=new Za(r);return t?"0x"+ve().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Kt(r):"0x"+ve().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+ve().keyFromPublic(r).getPublic(!0,"hex"):Kt(r)}return ji.throwArgumentError("invalid public or private key","key","[REDACTED]")}const tu="transactions/5.7.0";new z(tu);var qf;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(qf||(qf={}));function eu(e){const t=kf(e);return h0(Qn(Si(Qn(t,1)),12))}function ru(e,t){return eu($a(Ot(e),t))}const iu="https://rpc.walletconnect.com/v1";async function Kf(e,t,r,i,n,o){switch(r.t){case"eip191":return Hf(e,t,r.s);case"eip1271":return await Lf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Hf(e,t,r){return ru(uf(t),r).toLowerCase()===e.toLowerCase()}async function Lf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",A="0000000000000000000000000000000000000000000000000000000000000041",v=r.substring(2),w=uf(t).substring(2),y=h+w+p+A+v,S=await fetch(`${o||iu}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:nu(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function nu(){return Date.now()+Math.floor(Math.random()*1e3)}var fu=Object.defineProperty,ou=Object.defineProperties,su=Object.getOwnPropertyDescriptors,zf=Object.getOwnPropertySymbols,au=Object.prototype.hasOwnProperty,uu=Object.prototype.propertyIsEnumerable,jf=(e,t,r)=>t in e?fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ji=(e,t)=>{for(var r in t||(t={}))au.call(t,r)&&jf(e,r,t[r]);if(zf)for(var r of zf(t))uu.call(t,r)&&jf(e,r,t[r]);return e},Qf=(e,t)=>ou(e,su(t));const hu="did:pkh:",Gr=e=>e?.split(":"),Gi=e=>{const t=e&&Gr(e);if(t)return e.includes(hu)?t[3]:t[1]},cu=e=>{const t=e&&Gr(e);if(t)return t[2]+":"+t[3]},Yi=e=>{const t=e&&Gr(e);if(t)return t.pop()};async function lu(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=Jf(n,n.iss),h=Yi(n.iss);return await Kf(h,o,i,Gi(n.iss),r)}const Jf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=Yi(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${Gi(t)}`,A=`Nonce: ${e.nonce}`,v=`Issued At: ${e.iat}`,w=e.exp?`Expiration Time: ${e.exp}`:void 0,y=e.nbf?`Not Before: ${e.nbf}`:void 0,S=e.requestId?`Request ID: ${e.requestId}`:void 0,I=e.resources?`Resources:${e.resources.map(C=>` ++- ${C}`).join("")}`:void 0,N=Vr(e.resources);if(N){const C=Oe(N);n=Xi(n,C)}return[r,i,"",n,"",o,h,p,A,v,w,y,S,I].filter(C=>C!=null).join(` ++`)};function du(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function pu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=wi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const A=Gf(r.resources);if(!A)return r;ge(A);const v=Yf(A,"eip155");let w=r?.resources||[];if(v!=null&&v.length){const y=Vf(v),S=wi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=Vi("request",S,{chains:p}),N=$f(A,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(Yr(N))}return Qf(Ji({},r),{statement:eo(o,Vr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function Gf(e){const t=Vr(e);if(t&&Wi(t))return Oe(t)}function vu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Yf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function gu(e){return e?.map(t=>Object.keys(t))||[]}function Vf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Wf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function Xf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function ge(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Zf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:Vi(t,r,i)}}}function $f(e,t,r){var i;return e.att[t]=Ji({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function Vi(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function Yr(e){return ge(e),`urn:recap:${Wf(e).replace(/=/g,"")}`}function Oe(e){const t=Xf(e.replace("urn:recap:",""));return ge(t),t}function mu(e,t,r){const i=Zf(e,t,r);return Yr(i)}function Wi(e){return e&&e.includes("urn:recap:")}function Au(e,t){const r=Oe(e),i=Oe(t),n=to(r,i);return Yr(n)}function to(e,t){ge(e),ge(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,A)=>p.localeCompare(A)).forEach(p=>{var A,v;i.att[n]=Qf(Ji({},i.att[n]),{[p]:((A=e.att[n])==null?void 0:A[p])||((v=t.att[n])==null?void 0:v[p])})})}),i}function Xi(e="",t){ge(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const A=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));A.sort((y,S)=>y.action.localeCompare(S.action));const v={};A.forEach(y=>{v[y.ability]||(v[y.ability]=[]),v[y.ability].push(y.action)});const w=Object.keys(v).map(y=>(n++,`(${n}) '${y}': '${v[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function bu(e){var t;const r=Oe(e);ge(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function yu(e){const t=Oe(e);ge(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function eo(e,t){if(!t)return e;const r=Oe(t);return ge(r),Xi(e,r)}function Vr(e){if(!e)return;const t=e?.[e.length-1];return Wi(t)?t:void 0}const Zi="base10",Lt="base16",$i="base64pad",wu="base64url",dr="utf8",tn=0,pr=1,Sr=2,xu=0,ro=1,Nr=12,en=32;function Mu(){const e=gn.generateKeyPair();return{privateKey:Qt(e.secretKey,Lt),publicKey:Qt(e.publicKey,Lt)}}function Eu(){const e=Cr(en);return Qt(e,Lt)}function Su(e,t){const r=gn.sharedKey(Xt(e,Lt),Xt(t,Lt),!0),i=new Ko(pn,r).expand(en);return Qt(i,Lt)}function Nu(e){const t=vn(Xt(e,Lt));return Qt(t,Lt)}function Iu(e){const t=vn(Xt(e,dr));return Qt(t,Lt)}function rn(e){return Xt(`${e}`,Zi)}function $e(e){return Number(Qt(e,Zi))}function _u(e){const t=rn(typeof e.type<"u"?e.type:tn);if($e(t)===pr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?Xt(e.senderPublicKey,Lt):void 0,i=typeof e.iv<"u"?Xt(e.iv,Lt):Cr(Nr),n=new dn(Xt(e.symKey,Lt)).seal(i,Xt(e.message,dr));return nn({type:t,sealed:n,iv:i,senderPublicKey:r,encoding:e.encoding})}function Bu(e,t){const r=rn(Sr),i=Cr(Nr),n=Xt(e,dr);return nn({type:r,sealed:n,iv:i,encoding:t})}function Cu(e){const t=new dn(Xt(e.symKey,Lt)),{sealed:r,iv:i}=Wr({encoded:e.encoded,encoding:e?.encoding}),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return Qt(n,dr)}function Ru(e,t){const{sealed:r}=Wr({encoded:e,encoding:t});return Qt(r,dr)}function nn(e){const{encoding:t=$i}=e;if($e(e.type)===Sr)return Qt(vi([e.type,e.sealed]),t);if($e(e.type)===pr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Qt(vi([e.type,e.senderPublicKey,e.iv,e.sealed]),t)}return Qt(vi([e.type,e.iv,e.sealed]),t)}function Wr(e){const{encoded:t,encoding:r=$i}=e,i=Xt(t,r),n=i.slice(xu,ro),o=ro;if($e(n)===pr){const v=o+en,w=v+Nr,y=i.slice(o,v),S=i.slice(v,w),I=i.slice(w);return{type:n,sealed:I,iv:S,senderPublicKey:y}}if($e(n)===Sr){const v=i.slice(o),w=Cr(Nr);return{type:n,sealed:v,iv:w}}const h=o+Nr,p=i.slice(o,h),A=i.slice(h);return{type:n,sealed:A,iv:p}}function Ou(e,t){const r=Wr({encoded:e,encoding:t?.encoding});return io({type:$e(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?Qt(r.senderPublicKey,Lt):void 0,receiverPublicKey:t?.receiverPublicKey})}function io(e){const t=e?.type||tn;if(t===pr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function Pu(e){return e.type===pr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}function Du(e){return e.type===Sr}function no(e){return new Ho("p256").keyFromPublic({x:Buffer.from(e.x,"base64").toString("hex"),y:Buffer.from(e.y,"base64").toString("hex")},"hex")}function Fu(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");const r=t.length%4;return r>0&&(t+="=".repeat(4-r)),t}function Tu(e){return Buffer.from(Fu(e),"base64")}function Uu(e,t){const[r,i,n]=e.split("."),o=Tu(n);if(o.length!==64)throw new Error("Invalid signature length");const h=o.slice(0,32).toString("hex"),p=o.slice(32,64).toString("hex"),A=`${r}.${i}`,v=new pn().update(Buffer.from(A)).digest(),w=no(t),y=Buffer.from(v).toString("hex");if(!w.verify(y,{r:h,s:p}))throw new Error("Invalid signature");return Lo(e).payload}const fo="irn";function ku(e){return e?.relay||{protocol:fo}}function qu(e){const t=zo[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Ku=Object.defineProperty,Hu=Object.defineProperties,Lu=Object.getOwnPropertyDescriptors,oo=Object.getOwnPropertySymbols,zu=Object.prototype.hasOwnProperty,ju=Object.prototype.propertyIsEnumerable,so=(e,t,r)=>t in e?Ku(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ao=(e,t)=>{for(var r in t||(t={}))zu.call(t,r)&&so(e,r,t[r]);if(oo)for(var r of oo(t))ju.call(t,r)&&so(e,r,t[r]);return e},Qu=(e,t)=>Hu(e,Lu(t));function uo(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Ju(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Br.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:ho(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:uo(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function ho(e){return e.startsWith("//")?e.substring(2):e}function co(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Gu(e){return`${e.protocol}:${e.topic}@${e.version}?`+Br.stringify(ao(Qu(ao({symKey:e.symKey},co(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}function Yu(e,t,r){return`${e}?wc_ev=${r}&topic=${t}`}var Vu=Object.defineProperty,Wu=Object.defineProperties,Xu=Object.getOwnPropertyDescriptors,lo=Object.getOwnPropertySymbols,Zu=Object.prototype.hasOwnProperty,$u=Object.prototype.propertyIsEnumerable,po=(e,t,r)=>t in e?Vu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,th=(e,t)=>{for(var r in t||(t={}))Zu.call(t,r)&&po(e,r,t[r]);if(lo)for(var r of lo(t))$u.call(t,r)&&po(e,r,t[r]);return e},eh=(e,t)=>Wu(e,Xu(t));function tr(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function vo(e){const t=[];return Object.values(e).forEach(r=>{t.push(...tr(r.accounts))}),t}function go(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.methods)}),r}function mo(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.events)}),r}function rh(e,t){const r=_o(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function ih(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=on(t),o=on(r),h={};Object.keys(i).forEach(v=>{const w=i[v].chains,y=i[v].methods,S=i[v].events,I=i[v].accounts;w.forEach(N=>{if(!I.some(C=>C.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${v}`)}),h[v]={chains:w,methods:y,events:S,accounts:I}});const p=Co(t,h,"approve()");if(p)throw new Error(p.message);const A={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(v=>{const w=i[v].chains.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.chains)==null?void 0:F.includes(N)}),y=i[v].methods.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.methods)==null?void 0:F.includes(N)}),S=i[v].events.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[v].accounts.filter(C=>C.includes(`${N}:`))).flat();A[v]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(v=>{var w,y,S,I,N,C;if(!i[v])return;const F=(y=(w=o[v])==null?void 0:w.chains)==null?void 0:y.filter(G=>i[v].chains.includes(G)),U=i[v].methods.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.methods)==null?void 0:L.includes(G)}),J=i[v].events.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.events)==null?void 0:L.includes(G)}),Bt=F?.map(G=>i[v].accounts.filter(H=>H.includes(`${G}:`))).flat();A[v]={chains:me((S=A[v])==null?void 0:S.chains,F),methods:me((I=A[v])==null?void 0:I.methods,U),events:me((N=A[v])==null?void 0:N.events,J),accounts:me((C=A[v])==null?void 0:C.accounts,Bt)}}),A)}function fn(e){return e.includes(":")}function Ao(e){return fn(e)?e.split(":")[0]:e}function on(e){var t,r,i;const n={};if(!Xr(e))return n;for(const[o,h]of Object.entries(e)){const p=fn(o)?[o]:h.chains,A=h.methods||[],v=h.events||[],w=Ao(o);n[w]=eh(th({},n[w]),{chains:me(p,(t=n[w])==null?void 0:t.chains),methods:me(A,(r=n[w])==null?void 0:r.methods),events:me(v,(i=n[w])==null?void 0:i.events)})}return n}function bo(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function nh(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=bo(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=me(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const yo={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},wo={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function xe(e,t){const{message:r,code:i}=wo[e];return{message:t?`${r} ${t}`:r,code:i}}function er(e,t){const{message:r,code:i}=yo[e];return{message:t?`${r} ${t}`:r,code:i}}function Ir(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Xr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Pe(e){return typeof e>"u"}function Yt(e,t){return t&&Pe(e)?!0:typeof e=="string"&&!!e.trim().length}function Zr(e,t){return t&&Pe(e)?!0:typeof e=="number"&&!isNaN(e)}function fh(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return _e(n,i)?(i.forEach(h=>{const{accounts:p,methods:A,events:v}=e.namespaces[h],w=tr(p),y=r[h];(!_e(Or(h,y),w)||!_e(y.methods,A)||!_e(y.events,v))&&(o=!1)}),o):!1}function _r(e){return Yt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function xo(e){if(Yt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&_r(r)}}return!1}function oh(e){if(Yt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function sh(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function ah(e){return e?.topic}function uh(e,t){let r=null;return Yt(e?.publicKey,!1)||(r=xe("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function sn(e){let t=!0;return Ir(e)?e.length&&(t=e.every(r=>Yt(r,!1))):t=!1,t}function Mo(e,t,r){let i=null;return Ir(t)&&t.length?t.forEach(n=>{i||_r(n)||(i=er("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):_r(e)||(i=er("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Eo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=Mo(n,Or(n,o),`${t} ${r}`);h&&(i=h)}),i}function So(e,t){let r=null;return Ir(e)?e.forEach(i=>{r||xo(i)||(r=er("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=er("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function No(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=So(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function Io(e,t){let r=null;return sn(e?.methods)?sn(e?.events)||(r=er("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=er("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function an(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Io(i,`${t}, namespace`);n&&(r=n)}),r}function hh(e,t,r){let i=null;if(e&&Xr(e)){const n=an(e,t);n&&(i=n);const o=Eo(e,t,r);o&&(i=o)}else i=xe("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function _o(e,t){let r=null;if(e&&Xr(e)){const i=an(e,t);i&&(r=i);const n=No(e,t);n&&(r=n)}else r=xe("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function Bo(e){return Yt(e.protocol,!0)}function ch(e,t){let r=!1;return t&&!e?r=!0:e&&Ir(e)&&e.length&&e.forEach(i=>{r=Bo(i)}),r}function lh(e){return typeof e=="number"}function dh(e){return typeof e<"u"&&typeof e!==null}function ph(e){return!(!e||typeof e!="object"||!e.code||!Zr(e.code,!1)||!e.message||!Yt(e.message,!1))}function vh(e){return!(Pe(e)||!Yt(e.method,!1))}function gh(e){return!(Pe(e)||Pe(e.result)&&Pe(e.error)||!Zr(e.id,!1)||!Yt(e.jsonrpc,!1))}function mh(e){return!(Pe(e)||!Yt(e.name,!1))}function Ah(e,t){return!(!_r(t)||!vo(e).includes(t))}function bh(e,t,r){return Yt(r,!1)?go(e,t).includes(r):!1}function yh(e,t,r){return Yt(r,!1)?mo(e,t).includes(r):!1}function Co(e,t,r){let i=null;const n=wh(e),o=xh(t),h=Object.keys(n),p=Object.keys(o),A=Ro(Object.keys(e)),v=Ro(Object.keys(t)),w=A.filter(y=>!v.includes(y));return w.length&&(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++ Required: ${w.toString()} ++ Received: ${Object.keys(t).toString()}`)),_e(h,p)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. ++ Required: ${h.toString()} ++ Approved: ${p.toString()}`)),Object.keys(t).forEach(y=>{if(!y.includes(":")||i)return;const S=tr(t[y].accounts);S.includes(y)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${y} ++ Required: ${y} ++ Approved: ${S.toString()}`))}),h.forEach(y=>{i||(_e(n[y].methods,o[y].methods)?_e(n[y].events,o[y].events)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function wh(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function Ro(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function xh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=tr(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function Mh(e,t){return Zr(e,!1)&&e<=t.max&&e>=t.min}function Eh(){const e=We();return new Promise(t=>{switch(e){case qt.browser:t(Oo());break;case qt.reactNative:t(Po());break;case qt.node:t(Do());break;default:t(!0)}})}function Oo(){return gr()&&navigator?.onLine}async function Po(){if(rr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Do(){return!0}function Sh(e){switch(We()){case qt.browser:Fo(e);break;case qt.reactNative:To(e);break;case qt.node:break}}function Fo(e){!rr()&&gr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function To(e){rr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const un={};class Nh{static get(t){return un[t]}static set(t,r){un[t]=r}static delete(t){delete un[t]}}export{Zi as BASE10,Lt as BASE16,$i as BASE64,wu as BASE64URL,Zo as COLON,Ai as DEFAULT_DEPTH,Pr as EMPTY_SPACE,qt as ENV_MAP,wo as INTERNAL_ERRORS,Nh as MemoryStore,$o as ONE_THOUSAND,Nn as REACT_NATIVE_PRODUCT,fo as RELAYER_DEFAULT_PROTOCOL,yo as SDK_ERRORS,_n as SDK_TYPE,In as SLASH,tn as TYPE_0,pr as TYPE_1,Sr as TYPE_2,dr as UTF8,$f as addResourceToRecap,Bn as appendToQueryString,fs as assertType,Vi as assignAbilityToActions,Xf as base64Decode,Wf as base64Encode,ih as buildApprovedNamespaces,du as buildAuthObject,nh as buildNamespacesFromAuth,eo as buildRecapStatement,ms as calcExpiry,cs as capitalize,Fn as capitalizeWord,ls as createDelayedPromise,mu as createEncodedRecap,ds as createExpiringPromise,Zf as createRecap,Oe as decodeRecap,$e as decodeTypeByte,Ru as decodeTypeTwoEnvelope,Cu as decrypt,Su as deriveSymKey,Wr as deserialize,Yr as encodeRecap,rn as encodeTypeByte,Bu as encodeTypeTwoEnvelope,_u as encrypt,bs as engineEvent,hs as enumify,bn as formatAccountId,jo as formatAccountWithChain,An as formatChainId,yi as formatExpirerTarget,vs as formatIdTarget,Jf as formatMessage,os as formatMessageContext,co as formatRelayParams,is as formatRelayRpcUrl,Xi as formatStatementFromRecap,ps as formatTopicTarget,On as formatUA,Gu as formatUri,Mu as generateKeyPair,Eu as generateRandomBytes32,tr as getAccountsChains,Jo as getAccountsFromNamespaces,yn as getAddressFromAccount,Qo as getAddressesFromAccounts,es as getAppMetadata,Oo as getBrowserOnlineStatus,ts as getBundleId,wn as getChainFromAccount,xn as getChainsFromAccounts,Or as getChainsFromNamespace,Go as getChainsFromNamespaces,yu as getChainsFromRecap,Yo as getChainsFromRequiredNamespaces,wi as getCommonValuesInArrays,no as getCryptoKeyFromKeyData,Gf as getDecodedRecapFromResources,ws as getDeepLink,Yi as getDidAddress,Gr as getDidAddressSegments,Gi as getDidChainId,We as getEnvironment,ns as getHttpUrl,xe as getInternalError,Rn as getJavascriptID,Cn as getJavascriptOS,Dn as getLastItems,Yu as getLinkModeURL,bu as getMethodsFromRecap,cu as getNamespacedDidChainId,vo as getNamespacesChains,mo as getNamespacesEventsForChainId,bo as getNamespacesFromAccounts,go as getNamespacesMethodsForChainId,Do as getNodeOnlineStatus,Vf as getReCapActions,Po as getReactNativeOnlineStatus,gu as getRecapAbilitiesFromResource,Vr as getRecapFromResources,Yf as getRecapResource,rs as getRelayClientMetadata,qu as getRelayProtocolApi,ku as getRelayProtocolName,rh as getRequiredNamespacesFromNamespaces,er as getSdkError,xs as getSearchParamFromURL,mi as getUniqueValues,ys as handleDeeplinkRedirect,_e as hasOverlap,Nu as hashKey,Iu as hashMessage,gr as isBrowser,fn as isCaipNamespace,Co as isConformingNamespaces,As as isExpired,bi as isNode,Eh as isOnline,sh as isProposalStruct,rr as isReactNative,Wi as isRecap,fh as isSessionCompatible,ah as isSessionStruct,Pu as isTypeOneEnvelope,Du as isTypeTwoEnvelope,Pe as isUndefined,xo as isValidAccountId,So as isValidAccounts,Io as isValidActions,Ir as isValidArray,_r as isValidChainId,Mo as isValidChains,uh as isValidController,Lf as isValidEip1271Signature,Hf as isValidEip191Signature,ph as isValidErrorReason,mh as isValidEvent,lh as isValidId,No as isValidNamespaceAccounts,an as isValidNamespaceActions,Eo as isValidNamespaceChains,sn as isValidNamespaceMethodsOrEvents,_o as isValidNamespaces,Ah as isValidNamespacesChainId,yh as isValidNamespacesEvent,bh as isValidNamespacesRequest,Zr as isValidNumber,Xr as isValidObject,dh as isValidParams,ge as isValidRecap,Bo as isValidRelay,ch as isValidRelays,vh as isValidRequest,Mh as isValidRequestExpiry,hh as isValidRequiredNamespaces,gh as isValidResponse,Yt as isValidString,oh as isValidUrl,us as mapEntries,ss as mapToObj,me as mergeArrays,Au as mergeEncodedRecaps,to as mergeRecaps,on as normalizeNamespaces,as as objToMap,gi as parseAccountId,mn as parseChainId,Pn as parseContextNames,gs as parseExpirerTarget,Ao as parseNamespaceKey,uo as parseRelayParams,ho as parseTopic,Ju as parseUri,pu as populateAuthPayload,vu as recapHasResource,nn as serialize,Fo as subscribeToBrowserNetworkChange,Sh as subscribeToNetworkChange,To as subscribeToReactNativeNetworkChange,Ms as uuidv4,Ou as validateDecoding,io as validateEncoding,lu as validateSignedCacao,Uu as verifyP256Jwt,Kf as verifySignature}; ++//# sourceMappingURL=index.es.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.es.js.map b/node_modules/@walletconnect/utils/dist/index.es.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..1eeba5f0a497cd2413ea5f8a874b75483ee9d6f4 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.es.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.es.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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jB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAA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GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI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AG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CA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CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI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D,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EA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EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AA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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js b/node_modules/@walletconnect/utils/dist/index.umd.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e76a0973fdda33fb46b864846fee9be7495101d1 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.umd.js +@@ -0,0 +1,31 @@ ++(function(K,dr){typeof exports=="object"&&typeof module<"u"?dr(exports):typeof define=="function"&&define.amd?define(["exports"],dr):(K=typeof globalThis<"u"?globalThis:K||self,dr(K["@walletconnect/utils"]={}))})(this,function(K){"use strict";const dr=":";function ua(t){const[e,r]=t.split(dr);return{namespace:e,reference:r}}function ha(t){const{namespace:e,reference:r}=t;return[e,r].join(dr)}function Bn(t){const[e,r,i]=t.split(dr);return{namespace:e,reference:r,address:i}}function ca(t){const{namespace:e,reference:r,address:i}=t;return[e,r,i].join(dr)}function On(t,e){const r=[];return t.forEach(i=>{const f=e(i);r.includes(f)||r.push(f)}),r}function da(t){const{address:e}=Bn(t);return e}function la(t){const{namespace:e,reference:r}=Bn(t);return ha({namespace:e,reference:r})}function Ys(t,e){const{namespace:r,reference:i}=ua(e);return ca({namespace:r,reference:i,address:t})}function Js(t){return On(t,da)}function ba(t){return On(t,la)}function Ws(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...f.accounts)}),r}function Qs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...ba(f.accounts))}),r}function Xs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...zi(i,f))}),r}function zi(t,e){return t.includes(":")?[t]:e.chains||[]}var va=function(t,e,r){if(r||arguments.length===2)for(var i=0,f=e.length,n;i"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new iu:typeof navigator<"u"?ga(navigator.userAgent):hu()}function su(t){return t!==""&&au.reduce(function(e,r){var i=r[0],f=r[1];if(e)return e;var n=f.exec(t);return!!n&&[i,n]},!1)}function ga(t){var e=su(t);if(!e)return null;var r=e[0],i=e[1];if(r==="searchbot")return new ru;var f=i[1]&&i[1].split(".").join("_").split("_").slice(0,3);f?f.length=0;c--)(d=t[c])&&(n=(f<3?d(n):f>3?d(e,r,n):d(e,r))||n);return f>3&&n&&Object.defineProperty(e,r,n),n}function vu(t,e){return function(r,i){e(r,i,t)}}function pu(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function mu(t,e,r,i){function f(n){return n instanceof r?n:new r(function(d){d(n)})}return new(r||(r=Promise))(function(n,d){function c(x){try{A(i.next(x))}catch(E){d(E)}}function y(x){try{A(i.throw(x))}catch(E){d(E)}}function A(x){x.done?n(x.value):f(x.value).then(c,y)}A((i=i.apply(t,e||[])).next())})}function gu(t,e){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,f,n,d;return d={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(d[Symbol.iterator]=function(){return this}),d;function c(A){return function(x){return y([A,x])}}function y(A){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,f&&(n=A[0]&2?f.return:A[0]?f.throw||((n=f.return)&&n.call(f),0):f.next)&&!(n=n.call(f,A[1])).done)return n;switch(f=0,n&&(A=[A[0]&2,n.value]),A[0]){case 0:case 1:n=A;break;case 4:return r.label++,{value:A[1],done:!1};case 5:r.label++,f=A[1],A=[0];continue;case 7:A=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(A[0]===6||A[0]===2)){r=0;continue}if(A[0]===3&&(!n||A[1]>n[0]&&A[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function wa(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var i=r.call(t),f,n=[],d;try{for(;(e===void 0||e-- >0)&&!(f=i.next()).done;)n.push(f.value)}catch(c){d={error:c}}finally{try{f&&!f.done&&(r=i.return)&&r.call(i)}finally{if(d)throw d.error}}return n}function Au(){for(var t=[],e=0;e1||c(N,D)})})}function c(N,D){try{y(i[N](D))}catch(I){E(n[0][3],I)}}function y(N){N.value instanceof yi?Promise.resolve(N.value.v).then(A,x):E(n[0][2],N)}function A(N){c("next",N)}function x(N){c("throw",N)}function E(N,D){N(D),n.shift(),n.length&&c(n[0][0],n[0][1])}}function Mu(t){var e,r;return e={},i("next"),i("throw",function(f){throw f}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(f,n){e[f]=t[f]?function(d){return(r=!r)?{value:yi(t[f](d)),done:f==="return"}:n?n(d):d}:n}}function Eu(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Fn=="function"?Fn(t):t[Symbol.iterator](),r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=t[n]&&function(d){return new Promise(function(c,y){d=t[n](d),f(c,y,d.done,d.value)})}}function f(n,d,c,y){Promise.resolve(y).then(function(A){n({value:A,done:c})},d)}}function Su(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Du(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Iu(t){return t&&t.__esModule?t:{default:t}}function Nu(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function Cu(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var Bu=Object.freeze({__proto__:null,__extends:du,get __assign(){return Tn},__rest:lu,__decorate:bu,__param:vu,__metadata:pu,__awaiter:mu,__generator:gu,__createBinding:yu,__exportStar:wu,__values:Fn,__read:wa,__spread:Au,__spreadArrays:xu,__await:yi,__asyncGenerator:_u,__asyncDelegator:Mu,__asyncValues:Eu,__makeTemplateObject:Su,__importStar:Du,__importDefault:Iu,__classPrivateFieldGet:Nu,__classPrivateFieldSet:Cu}),ki=ya(Bu),Un={},wi={},Aa;function Ou(){if(Aa)return wi;Aa=1,Object.defineProperty(wi,"__esModule",{value:!0}),wi.delay=void 0;function t(e){return new Promise(r=>{setTimeout(()=>{r(!0)},e)})}return wi.delay=t,wi}var Mr={},Ln={},Er={},xa;function Ru(){return xa||(xa=1,Object.defineProperty(Er,"__esModule",{value:!0}),Er.ONE_THOUSAND=Er.ONE_HUNDRED=void 0,Er.ONE_HUNDRED=100,Er.ONE_THOUSAND=1e3),Er}var qn={},_a;function Pu(){return _a||(_a=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.ONE_YEAR=t.FOUR_WEEKS=t.THREE_WEEKS=t.TWO_WEEKS=t.ONE_WEEK=t.THIRTY_DAYS=t.SEVEN_DAYS=t.FIVE_DAYS=t.THREE_DAYS=t.ONE_DAY=t.TWENTY_FOUR_HOURS=t.TWELVE_HOURS=t.SIX_HOURS=t.THREE_HOURS=t.ONE_HOUR=t.SIXTY_MINUTES=t.THIRTY_MINUTES=t.TEN_MINUTES=t.FIVE_MINUTES=t.ONE_MINUTE=t.SIXTY_SECONDS=t.THIRTY_SECONDS=t.TEN_SECONDS=t.FIVE_SECONDS=t.ONE_SECOND=void 0,t.ONE_SECOND=1,t.FIVE_SECONDS=5,t.TEN_SECONDS=10,t.THIRTY_SECONDS=30,t.SIXTY_SECONDS=60,t.ONE_MINUTE=t.SIXTY_SECONDS,t.FIVE_MINUTES=t.ONE_MINUTE*5,t.TEN_MINUTES=t.ONE_MINUTE*10,t.THIRTY_MINUTES=t.ONE_MINUTE*30,t.SIXTY_MINUTES=t.ONE_MINUTE*60,t.ONE_HOUR=t.SIXTY_MINUTES,t.THREE_HOURS=t.ONE_HOUR*3,t.SIX_HOURS=t.ONE_HOUR*6,t.TWELVE_HOURS=t.ONE_HOUR*12,t.TWENTY_FOUR_HOURS=t.ONE_HOUR*24,t.ONE_DAY=t.TWENTY_FOUR_HOURS,t.THREE_DAYS=t.ONE_DAY*3,t.FIVE_DAYS=t.ONE_DAY*5,t.SEVEN_DAYS=t.ONE_DAY*7,t.THIRTY_DAYS=t.ONE_DAY*30,t.ONE_WEEK=t.SEVEN_DAYS,t.TWO_WEEKS=t.ONE_WEEK*2,t.THREE_WEEKS=t.ONE_WEEK*3,t.FOUR_WEEKS=t.ONE_WEEK*4,t.ONE_YEAR=t.ONE_DAY*365}(qn)),qn}var Ma;function Ea(){return Ma||(Ma=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ru(),t),e.__exportStar(Pu(),t)}(Ln)),Ln}var Sa;function Tu(){if(Sa)return Mr;Sa=1,Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.fromMiliseconds=Mr.toMiliseconds=void 0;const t=Ea();function e(i){return i*t.ONE_THOUSAND}Mr.toMiliseconds=e;function r(i){return Math.floor(i/t.ONE_THOUSAND)}return Mr.fromMiliseconds=r,Mr}var Da;function Fu(){return Da||(Da=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ou(),t),e.__exportStar(Tu(),t)}(Un)),Un}var Qr={},Ia;function Uu(){if(Ia)return Qr;Ia=1,Object.defineProperty(Qr,"__esModule",{value:!0}),Qr.Watch=void 0;class t{constructor(){this.timestamps=new Map}start(r){if(this.timestamps.has(r))throw new Error(`Watch already started for label: ${r}`);this.timestamps.set(r,{started:Date.now()})}stop(r){const i=this.get(r);if(typeof i.elapsed<"u")throw new Error(`Watch already stopped for label: ${r}`);const f=Date.now()-i.started;this.timestamps.set(r,{started:i.started,elapsed:f})}get(r){const i=this.timestamps.get(r);if(typeof i>"u")throw new Error(`No timestamp found for label: ${r}`);return i}elapsed(r){const i=this.get(r);return i.elapsed||Date.now()-i.started}}return Qr.Watch=t,Qr.default=t,Qr}var zn={},Ai={},Na;function Lu(){if(Na)return Ai;Na=1,Object.defineProperty(Ai,"__esModule",{value:!0}),Ai.IWatch=void 0;class t{}return Ai.IWatch=t,Ai}var Ca;function qu(){return Ca||(Ca=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),ki.__exportStar(Lu(),t)}(zn)),zn}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Fu(),t),e.__exportStar(Uu(),t),e.__exportStar(qu(),t),e.__exportStar(Ea(),t)})(_r);var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.getLocalStorage=Xe.getLocalStorageOrThrow=Xe.getCrypto=Xe.getCryptoOrThrow=Hn=Xe.getLocation=Xe.getLocationOrThrow=kn=Xe.getNavigator=Xe.getNavigatorOrThrow=Hi=Xe.getDocument=Xe.getDocumentOrThrow=Xe.getFromWindowOrThrow=Xe.getFromWindow=void 0;function Sr(t){let e;return typeof window<"u"&&typeof window[t]<"u"&&(e=window[t]),e}Xe.getFromWindow=Sr;function Xr(t){const e=Sr(t);if(!e)throw new Error(`${t} is not defined in Window`);return e}Xe.getFromWindowOrThrow=Xr;function zu(){return Xr("document")}Xe.getDocumentOrThrow=zu;function ku(){return Sr("document")}var Hi=Xe.getDocument=ku;function Hu(){return Xr("navigator")}Xe.getNavigatorOrThrow=Hu;function Ku(){return Sr("navigator")}var kn=Xe.getNavigator=Ku;function ju(){return Xr("location")}Xe.getLocationOrThrow=ju;function $u(){return Sr("location")}var Hn=Xe.getLocation=$u;function Vu(){return Xr("crypto")}Xe.getCryptoOrThrow=Vu;function Gu(){return Sr("crypto")}Xe.getCrypto=Gu;function Yu(){return Xr("localStorage")}Xe.getLocalStorageOrThrow=Yu;function Ju(){return Sr("localStorage")}Xe.getLocalStorage=Ju;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0});var Ba=Kn.getWindowMetadata=void 0;const Oa=Xe;function Wu(){let t,e;try{t=Oa.getDocumentOrThrow(),e=Oa.getLocationOrThrow()}catch{return null}function r(){const E=t.getElementsByTagName("link"),N=[];for(let D=0;D-1){const H=I.getAttribute("href");if(H)if(H.toLowerCase().indexOf("https:")===-1&&H.toLowerCase().indexOf("http:")===-1&&H.indexOf("//")!==0){let V=e.protocol+"//"+e.host;if(H.indexOf("/")===0)V+=H;else{const z=e.pathname.split("/");z.pop();const j=z.join("/");V+=j+"/"+H}N.push(V)}else if(H.indexOf("//")===0){const V=e.protocol+H;N.push(V)}else N.push(H)}}return N}function i(...E){const N=t.getElementsByTagName("meta");for(let D=0;DI.getAttribute(H)).filter(H=>H?E.includes(H):!1);if(q.length&&q){const H=I.getAttribute("content");if(H)return H}}return""}function f(){let E=i("name","og:site_name","og:title","twitter:title");return E||(E=t.title),E}function n(){return i("description","og:description","twitter:description","keywords")}const d=f(),c=n(),y=e.origin,A=r();return{description:c,url:y,icons:A,name:d}}Ba=Kn.getWindowMetadata=Wu;var xi={},Qu=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),Ra="%[a-f0-9]{2}",Pa=new RegExp("("+Ra+")|([^%]+?)","gi"),Ta=new RegExp("("+Ra+")+","gi");function jn(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),i=t.slice(e);return Array.prototype.concat.call([],jn(r),jn(i))}function Xu(t){try{return decodeURIComponent(t)}catch{for(var e=t.match(Pa)||[],r=1;r{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];const r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]},rh=function(t,e){for(var r={},i=Object.keys(t),f=Array.isArray(e),n=0;nz==null,d=Symbol("encodeFragmentIdentifier");function c(z){switch(z.arrayFormat){case"index":return j=>(F,U)=>{const L=F.length;return U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[",L,"]"].join("")]:[...F,[x(j,z),"[",x(L,z),"]=",x(U,z)].join("")]};case"bracket":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[]"].join("")]:[...F,[x(j,z),"[]=",x(U,z)].join("")];case"colon-list-separator":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),":list="].join("")]:[...F,[x(j,z),":list=",x(U,z)].join("")];case"comma":case"separator":case"bracket-separator":{const j=z.arrayFormat==="bracket-separator"?"[]=":"=";return F=>(U,L)=>L===void 0||z.skipNull&&L===null||z.skipEmptyString&&L===""?U:(L=L===null?"":L,U.length===0?[[x(F,z),j,x(L,z)].join("")]:[[U,x(L,z)].join(z.arrayFormatSeparator)])}default:return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,x(j,z)]:[...F,[x(j,z),"=",x(U,z)].join("")]}}function y(z){let j;switch(z.arrayFormat){case"index":return(F,U,L)=>{if(j=/\[(\d*)\]$/.exec(F),F=F.replace(/\[\d*\]$/,""),!j){L[F]=U;return}L[F]===void 0&&(L[F]={}),L[F][j[1]]=U};case"bracket":return(F,U,L)=>{if(j=/(\[\])$/.exec(F),F=F.replace(/\[\]$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"colon-list-separator":return(F,U,L)=>{if(j=/(:list)$/.exec(F),F=F.replace(/:list$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"comma":case"separator":return(F,U,L)=>{const m=typeof U=="string"&&U.includes(z.arrayFormatSeparator),P=typeof U=="string"&&!m&&E(U,z).includes(z.arrayFormatSeparator);U=P?E(U,z):U;const Y=m||P?U.split(z.arrayFormatSeparator).map(Q=>E(Q,z)):U===null?U:E(U,z);L[F]=Y};case"bracket-separator":return(F,U,L)=>{const m=/(\[\])$/.test(F);if(F=F.replace(/\[\]$/,""),!m){L[F]=U&&E(U,z);return}const P=U===null?[]:U.split(z.arrayFormatSeparator).map(Y=>E(Y,z));if(L[F]===void 0){L[F]=P;return}L[F]=[].concat(L[F],P)};default:return(F,U,L)=>{if(L[F]===void 0){L[F]=U;return}L[F]=[].concat(L[F],U)}}}function A(z){if(typeof z!="string"||z.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function x(z,j){return j.encode?j.strict?e(z):encodeURIComponent(z):z}function E(z,j){return j.decode?r(z):z}function N(z){return Array.isArray(z)?z.sort():typeof z=="object"?N(Object.keys(z)).sort((j,F)=>Number(j)-Number(F)).map(j=>z[j]):z}function D(z){const j=z.indexOf("#");return j!==-1&&(z=z.slice(0,j)),z}function I(z){let j="";const F=z.indexOf("#");return F!==-1&&(j=z.slice(F)),j}function q(z){z=D(z);const j=z.indexOf("?");return j===-1?"":z.slice(j+1)}function H(z,j){return j.parseNumbers&&!Number.isNaN(Number(z))&&typeof z=="string"&&z.trim()!==""?z=Number(z):j.parseBooleans&&z!==null&&(z.toLowerCase()==="true"||z.toLowerCase()==="false")&&(z=z.toLowerCase()==="true"),z}function V(z,j){j=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},j),A(j.arrayFormatSeparator);const F=y(j),U=Object.create(null);if(typeof z!="string"||(z=z.trim().replace(/^[?#&]/,""),!z))return U;for(const L of z.split("&")){if(L==="")continue;let[m,P]=i(j.decode?L.replace(/\+/g," "):L,"=");P=P===void 0?null:["comma","separator","bracket-separator"].includes(j.arrayFormat)?P:E(P,j),F(E(m,j),P,U)}for(const L of Object.keys(U)){const m=U[L];if(typeof m=="object"&&m!==null)for(const P of Object.keys(m))m[P]=H(m[P],j);else U[L]=H(m,j)}return j.sort===!1?U:(j.sort===!0?Object.keys(U).sort():Object.keys(U).sort(j.sort)).reduce((L,m)=>{const P=U[m];return P&&typeof P=="object"&&!Array.isArray(P)?L[m]=N(P):L[m]=P,L},Object.create(null))}t.extract=q,t.parse=V,t.stringify=(z,j)=>{if(!z)return"";j=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},j),A(j.arrayFormatSeparator);const F=P=>j.skipNull&&n(z[P])||j.skipEmptyString&&z[P]==="",U=c(j),L={};for(const P of Object.keys(z))F(P)||(L[P]=z[P]);const m=Object.keys(L);return j.sort!==!1&&m.sort(j.sort),m.map(P=>{const Y=z[P];return Y===void 0?"":Y===null?x(P,j):Array.isArray(Y)?Y.length===0&&j.arrayFormat==="bracket-separator"?x(P,j)+"[]":Y.reduce(U(P),[]).join("&"):x(P,j)+"="+x(Y,j)}).filter(P=>P.length>0).join("&")},t.parseUrl=(z,j)=>{j=Object.assign({decode:!0},j);const[F,U]=i(z,"#");return Object.assign({url:F.split("?")[0]||"",query:V(q(z),j)},j&&j.parseFragmentIdentifier&&U?{fragmentIdentifier:E(U,j)}:{})},t.stringifyUrl=(z,j)=>{j=Object.assign({encode:!0,strict:!0,[d]:!0},j);const F=D(z.url).split("?")[0]||"",U=t.extract(z.url),L=t.parse(U,{sort:!1}),m=Object.assign(L,z.query);let P=t.stringify(m,j);P&&(P=`?${P}`);let Y=I(z.url);return z.fragmentIdentifier&&(Y=`#${j[d]?x(z.fragmentIdentifier,j):z.fragmentIdentifier}`),`${F}${P}${Y}`},t.pick=(z,j,F)=>{F=Object.assign({parseFragmentIdentifier:!0,[d]:!1},F);const{url:U,query:L,fragmentIdentifier:m}=t.parseUrl(z,F);return t.stringifyUrl({url:U,query:f(L,j),fragmentIdentifier:m},F)},t.exclude=(z,j,F)=>{const U=Array.isArray(j)?L=>!j.includes(L):(L,m)=>!j(L,m);return t.pick(z,U,F)}})(xi);var ih=Object.defineProperty,Fa=Object.getOwnPropertySymbols,nh=Object.prototype.hasOwnProperty,fh=Object.prototype.propertyIsEnumerable,Ua=(t,e,r)=>e in t?ih(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,La=(t,e)=>{for(var r in e||(e={}))nh.call(e,r)&&Ua(t,r,e[r]);if(Fa)for(var r of Fa(e))fh.call(e,r)&&Ua(t,r,e[r]);return t};const qa="ReactNative",vt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Ki=" ",ah=":",za="/",$n=2,oh=1e3,ka="js";function Vn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function Zr(){return!Hi()&&!!kn()&&navigator.product===qa}function _i(){return!Vn()&&!!kn()&&!!Hi()}function Dr(){return Zr()?vt.reactNative:Vn()?vt.node:_i()?vt.browser:vt.unknown}function sh(){var t;try{return Zr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Ha(t,e){let r=xi.parse(t);return r=La(La({},r),e),t=xi.stringify(r),t}function uh(){return Ba()||{name:"",description:"",url:"",icons:[""]}}function hh(t,e){var r;const i=Dr(),f={protocol:t,version:e,env:i};return i==="browser"&&(f.host=((r=Hn())==null?void 0:r.host)||"unknown"),f}function Ka(){if(Dr()===vt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const t=ou();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function ja(){var t;const e=Dr();return e===vt.browser?[e,((t=Hn())==null?void 0:t.host)||"unknown"].join(":"):e}function $a(t,e,r){const i=Ka(),f=ja();return[[t,e].join("-"),[ka,r].join("-"),i,f].join("/")}function ch({protocol:t,version:e,relayUrl:r,sdkVersion:i,auth:f,projectId:n,useOnCloseEvent:d,bundleId:c}){const y=r.split("?"),A=$a(t,e,i),x={auth:f,ua:A,projectId:n,useOnCloseEvent:d||void 0,origin:c||void 0},E=Ha(y[1]||"",x);return y[0]+"?"+E}function dh(t){let e=(t.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof e<"u"?t.split("://")[1]:t;return e=e==="wss"?"https":"http",[e,r].join("://")}function lh(t,e,r){if(!t[e]||typeof t[e]!==r)throw new Error(`Missing or invalid "${e}" param`)}function Va(t,e=$n){return Ga(t.split(za),e)}function bh(t){return Va(t).join(Ki)}function lr(t,e){return t.filter(r=>e.includes(r)).length===t.length}function Ga(t,e=$n){return t.slice(Math.max(t.length-e,0))}function vh(t){return Object.fromEntries(t.entries())}function ph(t){return new Map(Object.entries(t))}function mh(t,e){const r={};return Object.keys(t).forEach(i=>{r[i]=e(t[i])}),r}const gh=t=>t;function Ya(t){return t.trim().replace(/^\w/,e=>e.toUpperCase())}function yh(t){return t.split(Ki).map(e=>Ya(e)).join(Ki)}function wh(t=_r.FIVE_MINUTES,e){const r=_r.toMiliseconds(t||_r.FIVE_MINUTES);let i,f,n;return{resolve:d=>{n&&i&&(clearTimeout(n),i(d))},reject:d=>{n&&f&&(clearTimeout(n),f(d))},done:()=>new Promise((d,c)=>{n=setTimeout(()=>{c(new Error(e))},r),i=d,f=c})}}function Ah(t,e,r){return new Promise(async(i,f)=>{const n=setTimeout(()=>f(new Error(r)),e);try{const d=await t;i(d)}catch(d){f(d)}clearTimeout(n)})}function Gn(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function xh(t){return Gn("topic",t)}function _h(t){return Gn("id",t)}function Mh(t){const[e,r]=t.split(":"),i={id:void 0,topic:void 0};if(e==="topic"&&typeof r=="string")i.topic=r;else if(e==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${r}`);return i}function Eh(t,e){return _r.fromMiliseconds((e||Date.now())+_r.toMiliseconds(t))}function Sh(t){return Date.now()>=_r.toMiliseconds(t)}function Dh(t,e){return`${t}${e?`:${e}`:""}`}function fr(t=[],e=[]){return[...new Set([...t,...e])]}async function Ih({id:t,topic:e,wcDeepLink:r}){var i;try{if(!r)return;const f=typeof r=="string"?JSON.parse(r):r;let n=f?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const d=`${n}/wc?requestId=${t}&sessionTopic=${e}`,c=Dr();if(c===vt.browser){if(!((i=Hi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}d.startsWith("https://")||d.startsWith("http://")?window.open(d,"_blank","noreferrer noopener"):window.open(d,"_self","noreferrer noopener")}else c===vt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(d)}catch(f){console.error(f)}}async function Nh(t,e){try{return await t.getItem(e)||(_i()?localStorage.getItem(e):void 0)}catch(r){console.error(r)}}function Yn(t,e){return t.filter(r=>e.includes(r))}function Ch(t,e){if(!t.includes(e))return null;const r=t.split(/([&,?,=])/),i=r.indexOf(e);return r[i+2]}function Bh(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}var Ja={exports:{}};/** ++ * [js-sha3]{@link https://github.com/emn178/js-sha3} ++ * ++ * @version 0.8.0 ++ * @author Chen, Yi-Cyuan [emn178@gmail.com] ++ * @copyright Chen, Yi-Cyuan 2015-2018 ++ * @license MIT ++ */(function(t){(function(){var e="input is invalid type",r="finalize already called",i=typeof window=="object",f=i?window:{};f.JS_SHA3_NO_WINDOW&&(i=!1);var n=!i&&typeof self=="object",d=!f.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?f=Rn:n&&(f=self);var c=!f.JS_SHA3_NO_COMMON_JS&&!0&&t.exports,y=!f.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",A="0123456789abcdef".split(""),x=[31,7936,2031616,520093696],E=[4,1024,262144,67108864],N=[1,256,65536,16777216],D=[6,1536,393216,100663296],I=[0,8,16,24],q=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],H=[224,256,384,512],V=[128,256],z=["hex","buffer","arrayBuffer","array","digest"],j={128:168,256:136};(f.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(M){return Object.prototype.toString.call(M)==="[object Array]"}),y&&(f.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(M){return typeof M=="object"&&M.buffer&&M.buffer.constructor===ArrayBuffer});for(var F=function(M,k,B){return function(T){return new b(M,k,M).update(T)[B]()}},U=function(M,k,B){return function(T,O){return new b(M,k,O).update(T)[B]()}},L=function(M,k,B){return function(T,O,v,R){return a["cshake"+M].update(T,O,v,R)[B]()}},m=function(M,k,B){return function(T,O,v,R){return a["kmac"+M].update(T,O,v,R)[B]()}},P=function(M,k,B,T){for(var O=0;O>5,this.byteCount=this.blockCount<<2,this.outputBlocks=B>>5,this.extraBytes=(B&31)>>3;for(var T=0;T<50;++T)this.s[T]=0}b.prototype.update=function(M){if(this.finalized)throw new Error(r);var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}for(var T=this.blocks,O=this.byteCount,v=M.length,R=this.blockCount,$=0,J=this.s,W,X;$>2]|=M[$]<>2]|=X<>2]|=(192|X>>6)<>2]|=(128|X&63)<=57344?(T[W>>2]|=(224|X>>12)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<>2]|=(240|X>>18)<>2]|=(128|X>>12&63)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<=O){for(this.start=W-O,this.block=T[R],W=0;W>8,B=M&255;B>0;)O.unshift(B),M=M>>8,B=M&255,++T;return k?O.push(T):O.unshift(T),this.update(O),O.length},b.prototype.encodeString=function(M){var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}var T=0,O=M.length;if(k)T=O;else for(var v=0;v=57344?T+=3:(R=65536+((R&1023)<<10|M.charCodeAt(++v)&1023),T+=4)}return T+=this.encode(T*8),this.update(M),T},b.prototype.bytepad=function(M,k){for(var B=this.encode(k),T=0;T>2]|=this.padding[k&3],this.lastByteIndex===this.byteCount)for(M[0]=M[B],k=1;k>4&15]+A[$&15]+A[$>>12&15]+A[$>>8&15]+A[$>>20&15]+A[$>>16&15]+A[$>>28&15]+A[$>>24&15];v%M===0&&(G(k),O=0)}return T&&($=k[O],R+=A[$>>4&15]+A[$&15],T>1&&(R+=A[$>>12&15]+A[$>>8&15]),T>2&&(R+=A[$>>20&15]+A[$>>16&15])),R},b.prototype.arrayBuffer=function(){this.finalize();var M=this.blockCount,k=this.s,B=this.outputBlocks,T=this.extraBytes,O=0,v=0,R=this.outputBits>>3,$;T?$=new ArrayBuffer(B+1<<2):$=new ArrayBuffer(R);for(var J=new Uint32Array($);v>8&255,R[$+2]=J>>16&255,R[$+3]=J>>24&255;v%M===0&&G(k)}return T&&($=v<<2,J=k[O],R[$]=J&255,T>1&&(R[$+1]=J>>8&255),T>2&&(R[$+2]=J>>16&255)),R};function S(M,k,B){b.call(this,M,k,B)}S.prototype=new b,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),b.prototype.finalize.call(this)};var G=function(M){var k,B,T,O,v,R,$,J,W,X,be,ye,fe,Ee,pe,te,se,oe,ee,ae,ne,Z,ve,me,re,ge,we,ie,Ae,xe,_e,je,$e,Me,Ve,Ge,Se,Ie,Ne,ue,Ce,Be,he,Oe,Re,ce,Pe,Te,de,Fe,Ue,le,Le,We,De,Qe,Ye,Je,Ut,Lt,qt,zt,kt;for(T=0;T<48;T+=2)O=M[0]^M[10]^M[20]^M[30]^M[40],v=M[1]^M[11]^M[21]^M[31]^M[41],R=M[2]^M[12]^M[22]^M[32]^M[42],$=M[3]^M[13]^M[23]^M[33]^M[43],J=M[4]^M[14]^M[24]^M[34]^M[44],W=M[5]^M[15]^M[25]^M[35]^M[45],X=M[6]^M[16]^M[26]^M[36]^M[46],be=M[7]^M[17]^M[27]^M[37]^M[47],ye=M[8]^M[18]^M[28]^M[38]^M[48],fe=M[9]^M[19]^M[29]^M[39]^M[49],k=ye^(R<<1|$>>>31),B=fe^($<<1|R>>>31),M[0]^=k,M[1]^=B,M[10]^=k,M[11]^=B,M[20]^=k,M[21]^=B,M[30]^=k,M[31]^=B,M[40]^=k,M[41]^=B,k=O^(J<<1|W>>>31),B=v^(W<<1|J>>>31),M[2]^=k,M[3]^=B,M[12]^=k,M[13]^=B,M[22]^=k,M[23]^=B,M[32]^=k,M[33]^=B,M[42]^=k,M[43]^=B,k=R^(X<<1|be>>>31),B=$^(be<<1|X>>>31),M[4]^=k,M[5]^=B,M[14]^=k,M[15]^=B,M[24]^=k,M[25]^=B,M[34]^=k,M[35]^=B,M[44]^=k,M[45]^=B,k=J^(ye<<1|fe>>>31),B=W^(fe<<1|ye>>>31),M[6]^=k,M[7]^=B,M[16]^=k,M[17]^=B,M[26]^=k,M[27]^=B,M[36]^=k,M[37]^=B,M[46]^=k,M[47]^=B,k=X^(O<<1|v>>>31),B=be^(v<<1|O>>>31),M[8]^=k,M[9]^=B,M[18]^=k,M[19]^=B,M[28]^=k,M[29]^=B,M[38]^=k,M[39]^=B,M[48]^=k,M[49]^=B,Ee=M[0],pe=M[1],ce=M[11]<<4|M[10]>>>28,Pe=M[10]<<4|M[11]>>>28,ie=M[20]<<3|M[21]>>>29,Ae=M[21]<<3|M[20]>>>29,Lt=M[31]<<9|M[30]>>>23,qt=M[30]<<9|M[31]>>>23,Be=M[40]<<18|M[41]>>>14,he=M[41]<<18|M[40]>>>14,Me=M[2]<<1|M[3]>>>31,Ve=M[3]<<1|M[2]>>>31,te=M[13]<<12|M[12]>>>20,se=M[12]<<12|M[13]>>>20,Te=M[22]<<10|M[23]>>>22,de=M[23]<<10|M[22]>>>22,xe=M[33]<<13|M[32]>>>19,_e=M[32]<<13|M[33]>>>19,zt=M[42]<<2|M[43]>>>30,kt=M[43]<<2|M[42]>>>30,We=M[5]<<30|M[4]>>>2,De=M[4]<<30|M[5]>>>2,Ge=M[14]<<6|M[15]>>>26,Se=M[15]<<6|M[14]>>>26,oe=M[25]<<11|M[24]>>>21,ee=M[24]<<11|M[25]>>>21,Fe=M[34]<<15|M[35]>>>17,Ue=M[35]<<15|M[34]>>>17,je=M[45]<<29|M[44]>>>3,$e=M[44]<<29|M[45]>>>3,me=M[6]<<28|M[7]>>>4,re=M[7]<<28|M[6]>>>4,Qe=M[17]<<23|M[16]>>>9,Ye=M[16]<<23|M[17]>>>9,Ie=M[26]<<25|M[27]>>>7,Ne=M[27]<<25|M[26]>>>7,ae=M[36]<<21|M[37]>>>11,ne=M[37]<<21|M[36]>>>11,le=M[47]<<24|M[46]>>>8,Le=M[46]<<24|M[47]>>>8,Oe=M[8]<<27|M[9]>>>5,Re=M[9]<<27|M[8]>>>5,ge=M[18]<<20|M[19]>>>12,we=M[19]<<20|M[18]>>>12,Je=M[29]<<7|M[28]>>>25,Ut=M[28]<<7|M[29]>>>25,ue=M[38]<<8|M[39]>>>24,Ce=M[39]<<8|M[38]>>>24,Z=M[48]<<14|M[49]>>>18,ve=M[49]<<14|M[48]>>>18,M[0]=Ee^~te&oe,M[1]=pe^~se&ee,M[10]=me^~ge&ie,M[11]=re^~we&Ae,M[20]=Me^~Ge&Ie,M[21]=Ve^~Se&Ne,M[30]=Oe^~ce&Te,M[31]=Re^~Pe&de,M[40]=We^~Qe&Je,M[41]=De^~Ye&Ut,M[2]=te^~oe&ae,M[3]=se^~ee&ne,M[12]=ge^~ie&xe,M[13]=we^~Ae&_e,M[22]=Ge^~Ie&ue,M[23]=Se^~Ne&Ce,M[32]=ce^~Te&Fe,M[33]=Pe^~de&Ue,M[42]=Qe^~Je&Lt,M[43]=Ye^~Ut&qt,M[4]=oe^~ae&Z,M[5]=ee^~ne&ve,M[14]=ie^~xe&je,M[15]=Ae^~_e&$e,M[24]=Ie^~ue&Be,M[25]=Ne^~Ce&he,M[34]=Te^~Fe&le,M[35]=de^~Ue&Le,M[44]=Je^~Lt&zt,M[45]=Ut^~qt&kt,M[6]=ae^~Z&Ee,M[7]=ne^~ve&pe,M[16]=xe^~je&me,M[17]=_e^~$e&re,M[26]=ue^~Be&Me,M[27]=Ce^~he&Ve,M[36]=Fe^~le&Oe,M[37]=Ue^~Le&Re,M[46]=Lt^~zt&We,M[47]=qt^~kt&De,M[8]=Z^~Ee&te,M[9]=ve^~pe&se,M[18]=je^~me&ge,M[19]=$e^~re&we,M[28]=Be^~Me&Ge,M[29]=he^~Ve&Se,M[38]=le^~Oe&ce,M[39]=Le^~Re&Pe,M[48]=zt^~We&Qe,M[49]=kt^~De&Ye,M[0]^=q[T],M[1]^=q[T+1]};if(c)t.exports=a;else for(l=0;l{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}const Za=Ph();var Wn;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Wn||(Wn={}));var Ht;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Ht||(Ht={}));const e0="0123456789abcdef";class ke{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const i=e.toLowerCase();ji[i]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Xa>ji[i])&&console.log.apply(console,r)}debug(...e){this._log(ke.levels.DEBUG,e)}info(...e){this._log(ke.levels.INFO,e)}warn(...e){this._log(ke.levels.WARNING,e)}makeError(e,r,i){if(Qa)return this.makeError("censored error",r,{});r||(r=ke.errors.UNKNOWN_ERROR),i||(i={});const f=[];Object.keys(i).forEach(y=>{const A=i[y];try{if(A instanceof Uint8Array){let x="";for(let E=0;E>4],x+=e0[A[E]&15];f.push(y+"=Uint8Array(0x"+x+")")}else f.push(y+"="+JSON.stringify(A))}catch{f.push(y+"="+JSON.stringify(i[y].toString()))}}),f.push(`code=${r}`),f.push(`version=${this.version}`);const n=e;let d="";switch(r){case Ht.NUMERIC_FAULT:{d="NUMERIC_FAULT";const y=e;switch(y){case"overflow":case"underflow":case"division-by-zero":d+="-"+y;break;case"negative-power":case"negative-width":d+="-unsupported";break;case"unbound-bitwise-result":d+="-unbound-result";break}break}case Ht.CALL_EXCEPTION:case Ht.INSUFFICIENT_FUNDS:case Ht.MISSING_NEW:case Ht.NONCE_EXPIRED:case Ht.REPLACEMENT_UNDERPRICED:case Ht.TRANSACTION_REPLACED:case Ht.UNPREDICTABLE_GAS_LIMIT:d=r;break}d&&(e+=" [ See: https://links.ethers.org/v5-errors-"+d+" ]"),f.length&&(e+=" ("+f.join(", ")+")");const c=new Error(e);return c.reason=n,c.code=r,Object.keys(i).forEach(function(y){c[y]=i[y]}),c}throwError(e,r,i){throw this.makeError(e,r,i)}throwArgumentError(e,r,i){return this.throwError(e,ke.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(e,r,i,f){e||this.throwError(r,i,f)}assertArgument(e,r,i,f){e||this.throwArgumentError(r,i,f)}checkNormalize(e){Za&&this.throwError("platform missing String.prototype.normalize",ke.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Za})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,i){i?i=": "+i:i="",er&&this.throwError("too many arguments"+i,ke.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ke.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Jn||(Jn=new ke(Rh)),Jn}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Wa){if(!e)return;this.globalLogger().throwError("error censorship permanent",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Qa=!!e,Wa=!!r}static setLogLevel(e){const r=ji[e.toLowerCase()];if(r==null){ke.globalLogger().warn("invalid log level - "+e);return}Xa=r}static from(e){return new ke(e)}}ke.errors=Ht,ke.levels=Wn;const Th="bytes/5.7.0",it=new ke(Th);function t0(t){return!!t.toHexString}function ei(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return ei(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function Fh(t){return xt(t)&&!(t.length%2)||ti(t)}function r0(t){return typeof t=="number"&&t==t&&t%1===0}function ti(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!r0(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function tt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),ei(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t)&&(t=t.toHexString()),xt(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":it.throwArgumentError("hex data is odd-length","value",t));const i=[];for(let f=0;ftt(f)),r=e.reduce((f,n)=>f+n.length,0),i=new Uint8Array(r);return e.reduce((f,n)=>(i.set(n,f),f+n.length),0),ei(i)}function Lh(t,e){t=tt(t),t.length>e&&it.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),ei(r)}function xt(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const Qn="0123456789abcdef";function pt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=Qn[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t))return t.toHexString();if(xt(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":it.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(ti(t)){let r="0x";for(let i=0;i>4]+Qn[f&15]}return r}return it.throwArgumentError("invalid hexlify value","value",t)}function qh(t){if(typeof t!="string")t=pt(t);else if(!xt(t)||t.length%2)return null;return(t.length-2)/2}function i0(t,e,r){return typeof t!="string"?t=pt(t):(!xt(t)||t.length%2)&&it.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function Vt(t,e){for(typeof t!="string"?t=pt(t):xt(t)||it.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&it.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function n0(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Fh(t)){let r=tt(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64))):r.length===65?(e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64)),e.v=r[64]):it.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:it.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=pt(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const f=Lh(tt(e._vs),32);e._vs=pt(f);const n=f[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=n:e.recoveryParam!==n&&it.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),f[0]&=127;const d=pt(f);e.s==null?e.s=d:e.s!==d&&it.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?it.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const f=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==f&&it.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!xt(e.r)?it.throwArgumentError("signature missing or invalid r","signature",t):e.r=Vt(e.r,32),e.s==null||!xt(e.s)?it.throwArgumentError("signature missing or invalid s","signature",t):e.s=Vt(e.s,32);const r=tt(e.s);r[0]>=128&&it.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const i=pt(r);e._vs&&(xt(e._vs)||it.throwArgumentError("signature invalid _vs","signature",t),e._vs=Vt(e._vs,32)),e._vs==null?e._vs=i:e._vs!==i&&it.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function Xn(t){return"0x"+Oh.keccak_256(tt(t))}var f0={exports:{}},zh={},kh=Object.freeze({__proto__:null,default:zh}),$i=ya(kh);(function(t){(function(e,r){function i(u,a){if(!u)throw new Error(a||"Assertion failed")}function f(u,a){u.super_=a;var o=function(){};o.prototype=a.prototype,u.prototype=new o,u.prototype.constructor=u}function n(u,a,o){if(n.isBN(u))return u;this.negative=0,this.words=null,this.length=0,this.red=null,u!==null&&((a==="le"||a==="be")&&(o=a,a=10),this._init(u||0,a||10,o||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(a){return a instanceof n?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===n.wordSize&&Array.isArray(a.words)},n.max=function(a,o){return a.cmp(o)>0?a:o},n.min=function(a,o){return a.cmp(o)<0?a:o},n.prototype._init=function(a,o,l){if(typeof a=="number")return this._initNumber(a,o,l);if(typeof a=="object")return this._initArray(a,o,l);o==="hex"&&(o=16),i(o===(o|0)&&o>=2&&o<=36),a=a.toString().replace(/\s+/g,"");var w=0;a[0]==="-"&&(w++,this.negative=1),w=0;w-=3)g=a[w]|a[w-1]<<8|a[w-2]<<16,this.words[_]|=g<>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);else if(l==="le")for(w=0,_=0;w>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);return this._strip()};function c(u,a){var o=u.charCodeAt(a);if(o>=48&&o<=57)return o-48;if(o>=65&&o<=70)return o-55;if(o>=97&&o<=102)return o-87;i(!1,"Invalid character in "+u)}function y(u,a,o){var l=c(u,o);return o-1>=a&&(l|=c(u,o-1)<<4),l}n.prototype._parseHex=function(a,o,l){this.length=Math.ceil((a.length-o)/6),this.words=new Array(this.length);for(var w=0;w=o;w-=2)s=y(a,o,w)<<_,this.words[g]|=s&67108863,_>=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8;else{var p=a.length-o;for(w=p%2===0?o+1:o;w=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8}this._strip()};function A(u,a,o,l){for(var w=0,_=0,g=Math.min(u.length,o),s=a;s=49?_=p-49+10:p>=17?_=p-17+10:_=p,i(p>=0&&_1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=E}catch{n.prototype.inspect=E}else n.prototype.inspect=E;function E(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],D=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],I=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(a,o){a=a||10,o=o|0||1;var l;if(a===16||a==="hex"){l="";for(var w=0,_=0,g=0;g>>24-w&16777215,w+=2,w>=26&&(w-=26,g--),_!==0||g!==this.length-1?l=N[6-p.length]+p+l:l=p+l}for(_!==0&&(l=_.toString(16)+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}if(a===(a|0)&&a>=2&&a<=36){var b=D[a],S=I[a];l="";var G=this.clone();for(G.negative=0;!G.isZero();){var M=G.modrn(S).toString(a);G=G.idivn(S),G.isZero()?l=M+l:l=N[b-M.length]+M+l}for(this.isZero()&&(l="0"+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},n.prototype.toJSON=function(){return this.toString(16,2)},d&&(n.prototype.toBuffer=function(a,o){return this.toArrayLike(d,a,o)}),n.prototype.toArray=function(a,o){return this.toArrayLike(Array,a,o)};var q=function(a,o){return a.allocUnsafe?a.allocUnsafe(o):new a(o)};n.prototype.toArrayLike=function(a,o,l){this._strip();var w=this.byteLength(),_=l||Math.max(1,w);i(w<=_,"byte array longer than desired length"),i(_>0,"Requested array length <= 0");var g=q(a,_),s=o==="le"?"LE":"BE";return this["_toArrayLike"+s](g,w),g},n.prototype._toArrayLikeLE=function(a,o){for(var l=0,w=0,_=0,g=0;_>8&255),l>16&255),g===6?(l>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l=0&&(a[l--]=s>>8&255),l>=0&&(a[l--]=s>>16&255),g===6?(l>=0&&(a[l--]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l>=0)for(a[l--]=w;l>=0;)a[l--]=0},Math.clz32?n.prototype._countBits=function(a){return 32-Math.clz32(a)}:n.prototype._countBits=function(a){var o=a,l=0;return o>=4096&&(l+=13,o>>>=13),o>=64&&(l+=7,o>>>=7),o>=8&&(l+=4,o>>>=4),o>=2&&(l+=2,o>>>=2),l+o},n.prototype._zeroBits=function(a){if(a===0)return 26;var o=a,l=0;return o&8191||(l+=13,o>>>=13),o&127||(l+=7,o>>>=7),o&15||(l+=4,o>>>=4),o&3||(l+=2,o>>>=2),o&1||l++,l},n.prototype.bitLength=function(){var a=this.words[this.length-1],o=this._countBits(a);return(this.length-1)*26+o};function H(u){for(var a=new Array(u.bitLength()),o=0;o>>w&1}return a}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,o=0;oa.length?this.clone().ior(a):a.clone().ior(this)},n.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},n.prototype.iuand=function(a){var o;this.length>a.length?o=a:o=this;for(var l=0;la.length?this.clone().iand(a):a.clone().iand(this)},n.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},n.prototype.iuxor=function(a){var o,l;this.length>a.length?(o=this,l=a):(o=a,l=this);for(var w=0;wa.length?this.clone().ixor(a):a.clone().ixor(this)},n.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},n.prototype.inotn=function(a){i(typeof a=="number"&&a>=0);var o=Math.ceil(a/26)|0,l=a%26;this._expand(o),l>0&&o--;for(var w=0;w0&&(this.words[w]=~this.words[w]&67108863>>26-l),this._strip()},n.prototype.notn=function(a){return this.clone().inotn(a)},n.prototype.setn=function(a,o){i(typeof a=="number"&&a>=0);var l=a/26|0,w=a%26;return this._expand(l+1),o?this.words[l]=this.words[l]|1<a.length?(l=this,w=a):(l=a,w=this);for(var _=0,g=0;g>>26;for(;_!==0&&g>>26;if(this.length=l.length,_!==0)this.words[this.length]=_,this.length++;else if(l!==this)for(;ga.length?this.clone().iadd(a):a.clone().iadd(this)},n.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var o=this.iadd(a);return a.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var l=this.cmp(a);if(l===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,_;l>0?(w=this,_=a):(w=a,_=this);for(var g=0,s=0;s<_.length;s++)o=(w.words[s]|0)-(_.words[s]|0)+g,g=o>>26,this.words[s]=o&67108863;for(;g!==0&&s>26,this.words[s]=o&67108863;if(g===0&&s>>26,G=p&67108863,M=Math.min(b,a.length-1),k=Math.max(0,b-u.length+1);k<=M;k++){var B=b-k|0;w=u.words[B]|0,_=a.words[k]|0,g=w*_+G,S+=g/67108864|0,G=g&67108863}o.words[b]=G|0,p=S|0}return p!==0?o.words[b]=p|0:o.length--,o._strip()}var z=function(a,o,l){var w=a.words,_=o.words,g=l.words,s=0,p,b,S,G=w[0]|0,M=G&8191,k=G>>>13,B=w[1]|0,T=B&8191,O=B>>>13,v=w[2]|0,R=v&8191,$=v>>>13,J=w[3]|0,W=J&8191,X=J>>>13,be=w[4]|0,ye=be&8191,fe=be>>>13,Ee=w[5]|0,pe=Ee&8191,te=Ee>>>13,se=w[6]|0,oe=se&8191,ee=se>>>13,ae=w[7]|0,ne=ae&8191,Z=ae>>>13,ve=w[8]|0,me=ve&8191,re=ve>>>13,ge=w[9]|0,we=ge&8191,ie=ge>>>13,Ae=_[0]|0,xe=Ae&8191,_e=Ae>>>13,je=_[1]|0,$e=je&8191,Me=je>>>13,Ve=_[2]|0,Ge=Ve&8191,Se=Ve>>>13,Ie=_[3]|0,Ne=Ie&8191,ue=Ie>>>13,Ce=_[4]|0,Be=Ce&8191,he=Ce>>>13,Oe=_[5]|0,Re=Oe&8191,ce=Oe>>>13,Pe=_[6]|0,Te=Pe&8191,de=Pe>>>13,Fe=_[7]|0,Ue=Fe&8191,le=Fe>>>13,Le=_[8]|0,We=Le&8191,De=Le>>>13,Qe=_[9]|0,Ye=Qe&8191,Je=Qe>>>13;l.negative=a.negative^o.negative,l.length=19,p=Math.imul(M,xe),b=Math.imul(M,_e),b=b+Math.imul(k,xe)|0,S=Math.imul(k,_e);var Ut=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,p=Math.imul(T,xe),b=Math.imul(T,_e),b=b+Math.imul(O,xe)|0,S=Math.imul(O,_e),p=p+Math.imul(M,$e)|0,b=b+Math.imul(M,Me)|0,b=b+Math.imul(k,$e)|0,S=S+Math.imul(k,Me)|0;var Lt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,p=Math.imul(R,xe),b=Math.imul(R,_e),b=b+Math.imul($,xe)|0,S=Math.imul($,_e),p=p+Math.imul(T,$e)|0,b=b+Math.imul(T,Me)|0,b=b+Math.imul(O,$e)|0,S=S+Math.imul(O,Me)|0,p=p+Math.imul(M,Ge)|0,b=b+Math.imul(M,Se)|0,b=b+Math.imul(k,Ge)|0,S=S+Math.imul(k,Se)|0;var qt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qt>>>26)|0,qt&=67108863,p=Math.imul(W,xe),b=Math.imul(W,_e),b=b+Math.imul(X,xe)|0,S=Math.imul(X,_e),p=p+Math.imul(R,$e)|0,b=b+Math.imul(R,Me)|0,b=b+Math.imul($,$e)|0,S=S+Math.imul($,Me)|0,p=p+Math.imul(T,Ge)|0,b=b+Math.imul(T,Se)|0,b=b+Math.imul(O,Ge)|0,S=S+Math.imul(O,Se)|0,p=p+Math.imul(M,Ne)|0,b=b+Math.imul(M,ue)|0,b=b+Math.imul(k,Ne)|0,S=S+Math.imul(k,ue)|0;var zt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zt>>>26)|0,zt&=67108863,p=Math.imul(ye,xe),b=Math.imul(ye,_e),b=b+Math.imul(fe,xe)|0,S=Math.imul(fe,_e),p=p+Math.imul(W,$e)|0,b=b+Math.imul(W,Me)|0,b=b+Math.imul(X,$e)|0,S=S+Math.imul(X,Me)|0,p=p+Math.imul(R,Ge)|0,b=b+Math.imul(R,Se)|0,b=b+Math.imul($,Ge)|0,S=S+Math.imul($,Se)|0,p=p+Math.imul(T,Ne)|0,b=b+Math.imul(T,ue)|0,b=b+Math.imul(O,Ne)|0,S=S+Math.imul(O,ue)|0,p=p+Math.imul(M,Be)|0,b=b+Math.imul(M,he)|0,b=b+Math.imul(k,Be)|0,S=S+Math.imul(k,he)|0;var kt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kt>>>26)|0,kt&=67108863,p=Math.imul(pe,xe),b=Math.imul(pe,_e),b=b+Math.imul(te,xe)|0,S=Math.imul(te,_e),p=p+Math.imul(ye,$e)|0,b=b+Math.imul(ye,Me)|0,b=b+Math.imul(fe,$e)|0,S=S+Math.imul(fe,Me)|0,p=p+Math.imul(W,Ge)|0,b=b+Math.imul(W,Se)|0,b=b+Math.imul(X,Ge)|0,S=S+Math.imul(X,Se)|0,p=p+Math.imul(R,Ne)|0,b=b+Math.imul(R,ue)|0,b=b+Math.imul($,Ne)|0,S=S+Math.imul($,ue)|0,p=p+Math.imul(T,Be)|0,b=b+Math.imul(T,he)|0,b=b+Math.imul(O,Be)|0,S=S+Math.imul(O,he)|0,p=p+Math.imul(M,Re)|0,b=b+Math.imul(M,ce)|0,b=b+Math.imul(k,Re)|0,S=S+Math.imul(k,ce)|0;var qr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qr>>>26)|0,qr&=67108863,p=Math.imul(oe,xe),b=Math.imul(oe,_e),b=b+Math.imul(ee,xe)|0,S=Math.imul(ee,_e),p=p+Math.imul(pe,$e)|0,b=b+Math.imul(pe,Me)|0,b=b+Math.imul(te,$e)|0,S=S+Math.imul(te,Me)|0,p=p+Math.imul(ye,Ge)|0,b=b+Math.imul(ye,Se)|0,b=b+Math.imul(fe,Ge)|0,S=S+Math.imul(fe,Se)|0,p=p+Math.imul(W,Ne)|0,b=b+Math.imul(W,ue)|0,b=b+Math.imul(X,Ne)|0,S=S+Math.imul(X,ue)|0,p=p+Math.imul(R,Be)|0,b=b+Math.imul(R,he)|0,b=b+Math.imul($,Be)|0,S=S+Math.imul($,he)|0,p=p+Math.imul(T,Re)|0,b=b+Math.imul(T,ce)|0,b=b+Math.imul(O,Re)|0,S=S+Math.imul(O,ce)|0,p=p+Math.imul(M,Te)|0,b=b+Math.imul(M,de)|0,b=b+Math.imul(k,Te)|0,S=S+Math.imul(k,de)|0;var zr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zr>>>26)|0,zr&=67108863,p=Math.imul(ne,xe),b=Math.imul(ne,_e),b=b+Math.imul(Z,xe)|0,S=Math.imul(Z,_e),p=p+Math.imul(oe,$e)|0,b=b+Math.imul(oe,Me)|0,b=b+Math.imul(ee,$e)|0,S=S+Math.imul(ee,Me)|0,p=p+Math.imul(pe,Ge)|0,b=b+Math.imul(pe,Se)|0,b=b+Math.imul(te,Ge)|0,S=S+Math.imul(te,Se)|0,p=p+Math.imul(ye,Ne)|0,b=b+Math.imul(ye,ue)|0,b=b+Math.imul(fe,Ne)|0,S=S+Math.imul(fe,ue)|0,p=p+Math.imul(W,Be)|0,b=b+Math.imul(W,he)|0,b=b+Math.imul(X,Be)|0,S=S+Math.imul(X,he)|0,p=p+Math.imul(R,Re)|0,b=b+Math.imul(R,ce)|0,b=b+Math.imul($,Re)|0,S=S+Math.imul($,ce)|0,p=p+Math.imul(T,Te)|0,b=b+Math.imul(T,de)|0,b=b+Math.imul(O,Te)|0,S=S+Math.imul(O,de)|0,p=p+Math.imul(M,Ue)|0,b=b+Math.imul(M,le)|0,b=b+Math.imul(k,Ue)|0,S=S+Math.imul(k,le)|0;var kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kr>>>26)|0,kr&=67108863,p=Math.imul(me,xe),b=Math.imul(me,_e),b=b+Math.imul(re,xe)|0,S=Math.imul(re,_e),p=p+Math.imul(ne,$e)|0,b=b+Math.imul(ne,Me)|0,b=b+Math.imul(Z,$e)|0,S=S+Math.imul(Z,Me)|0,p=p+Math.imul(oe,Ge)|0,b=b+Math.imul(oe,Se)|0,b=b+Math.imul(ee,Ge)|0,S=S+Math.imul(ee,Se)|0,p=p+Math.imul(pe,Ne)|0,b=b+Math.imul(pe,ue)|0,b=b+Math.imul(te,Ne)|0,S=S+Math.imul(te,ue)|0,p=p+Math.imul(ye,Be)|0,b=b+Math.imul(ye,he)|0,b=b+Math.imul(fe,Be)|0,S=S+Math.imul(fe,he)|0,p=p+Math.imul(W,Re)|0,b=b+Math.imul(W,ce)|0,b=b+Math.imul(X,Re)|0,S=S+Math.imul(X,ce)|0,p=p+Math.imul(R,Te)|0,b=b+Math.imul(R,de)|0,b=b+Math.imul($,Te)|0,S=S+Math.imul($,de)|0,p=p+Math.imul(T,Ue)|0,b=b+Math.imul(T,le)|0,b=b+Math.imul(O,Ue)|0,S=S+Math.imul(O,le)|0,p=p+Math.imul(M,We)|0,b=b+Math.imul(M,De)|0,b=b+Math.imul(k,We)|0,S=S+Math.imul(k,De)|0;var Hr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,p=Math.imul(we,xe),b=Math.imul(we,_e),b=b+Math.imul(ie,xe)|0,S=Math.imul(ie,_e),p=p+Math.imul(me,$e)|0,b=b+Math.imul(me,Me)|0,b=b+Math.imul(re,$e)|0,S=S+Math.imul(re,Me)|0,p=p+Math.imul(ne,Ge)|0,b=b+Math.imul(ne,Se)|0,b=b+Math.imul(Z,Ge)|0,S=S+Math.imul(Z,Se)|0,p=p+Math.imul(oe,Ne)|0,b=b+Math.imul(oe,ue)|0,b=b+Math.imul(ee,Ne)|0,S=S+Math.imul(ee,ue)|0,p=p+Math.imul(pe,Be)|0,b=b+Math.imul(pe,he)|0,b=b+Math.imul(te,Be)|0,S=S+Math.imul(te,he)|0,p=p+Math.imul(ye,Re)|0,b=b+Math.imul(ye,ce)|0,b=b+Math.imul(fe,Re)|0,S=S+Math.imul(fe,ce)|0,p=p+Math.imul(W,Te)|0,b=b+Math.imul(W,de)|0,b=b+Math.imul(X,Te)|0,S=S+Math.imul(X,de)|0,p=p+Math.imul(R,Ue)|0,b=b+Math.imul(R,le)|0,b=b+Math.imul($,Ue)|0,S=S+Math.imul($,le)|0,p=p+Math.imul(T,We)|0,b=b+Math.imul(T,De)|0,b=b+Math.imul(O,We)|0,S=S+Math.imul(O,De)|0,p=p+Math.imul(M,Ye)|0,b=b+Math.imul(M,Je)|0,b=b+Math.imul(k,Ye)|0,S=S+Math.imul(k,Je)|0;var Kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,p=Math.imul(we,$e),b=Math.imul(we,Me),b=b+Math.imul(ie,$e)|0,S=Math.imul(ie,Me),p=p+Math.imul(me,Ge)|0,b=b+Math.imul(me,Se)|0,b=b+Math.imul(re,Ge)|0,S=S+Math.imul(re,Se)|0,p=p+Math.imul(ne,Ne)|0,b=b+Math.imul(ne,ue)|0,b=b+Math.imul(Z,Ne)|0,S=S+Math.imul(Z,ue)|0,p=p+Math.imul(oe,Be)|0,b=b+Math.imul(oe,he)|0,b=b+Math.imul(ee,Be)|0,S=S+Math.imul(ee,he)|0,p=p+Math.imul(pe,Re)|0,b=b+Math.imul(pe,ce)|0,b=b+Math.imul(te,Re)|0,S=S+Math.imul(te,ce)|0,p=p+Math.imul(ye,Te)|0,b=b+Math.imul(ye,de)|0,b=b+Math.imul(fe,Te)|0,S=S+Math.imul(fe,de)|0,p=p+Math.imul(W,Ue)|0,b=b+Math.imul(W,le)|0,b=b+Math.imul(X,Ue)|0,S=S+Math.imul(X,le)|0,p=p+Math.imul(R,We)|0,b=b+Math.imul(R,De)|0,b=b+Math.imul($,We)|0,S=S+Math.imul($,De)|0,p=p+Math.imul(T,Ye)|0,b=b+Math.imul(T,Je)|0,b=b+Math.imul(O,Ye)|0,S=S+Math.imul(O,Je)|0;var jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(jr>>>26)|0,jr&=67108863,p=Math.imul(we,Ge),b=Math.imul(we,Se),b=b+Math.imul(ie,Ge)|0,S=Math.imul(ie,Se),p=p+Math.imul(me,Ne)|0,b=b+Math.imul(me,ue)|0,b=b+Math.imul(re,Ne)|0,S=S+Math.imul(re,ue)|0,p=p+Math.imul(ne,Be)|0,b=b+Math.imul(ne,he)|0,b=b+Math.imul(Z,Be)|0,S=S+Math.imul(Z,he)|0,p=p+Math.imul(oe,Re)|0,b=b+Math.imul(oe,ce)|0,b=b+Math.imul(ee,Re)|0,S=S+Math.imul(ee,ce)|0,p=p+Math.imul(pe,Te)|0,b=b+Math.imul(pe,de)|0,b=b+Math.imul(te,Te)|0,S=S+Math.imul(te,de)|0,p=p+Math.imul(ye,Ue)|0,b=b+Math.imul(ye,le)|0,b=b+Math.imul(fe,Ue)|0,S=S+Math.imul(fe,le)|0,p=p+Math.imul(W,We)|0,b=b+Math.imul(W,De)|0,b=b+Math.imul(X,We)|0,S=S+Math.imul(X,De)|0,p=p+Math.imul(R,Ye)|0,b=b+Math.imul(R,Je)|0,b=b+Math.imul($,Ye)|0,S=S+Math.imul($,Je)|0;var $r=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+($r>>>26)|0,$r&=67108863,p=Math.imul(we,Ne),b=Math.imul(we,ue),b=b+Math.imul(ie,Ne)|0,S=Math.imul(ie,ue),p=p+Math.imul(me,Be)|0,b=b+Math.imul(me,he)|0,b=b+Math.imul(re,Be)|0,S=S+Math.imul(re,he)|0,p=p+Math.imul(ne,Re)|0,b=b+Math.imul(ne,ce)|0,b=b+Math.imul(Z,Re)|0,S=S+Math.imul(Z,ce)|0,p=p+Math.imul(oe,Te)|0,b=b+Math.imul(oe,de)|0,b=b+Math.imul(ee,Te)|0,S=S+Math.imul(ee,de)|0,p=p+Math.imul(pe,Ue)|0,b=b+Math.imul(pe,le)|0,b=b+Math.imul(te,Ue)|0,S=S+Math.imul(te,le)|0,p=p+Math.imul(ye,We)|0,b=b+Math.imul(ye,De)|0,b=b+Math.imul(fe,We)|0,S=S+Math.imul(fe,De)|0,p=p+Math.imul(W,Ye)|0,b=b+Math.imul(W,Je)|0,b=b+Math.imul(X,Ye)|0,S=S+Math.imul(X,Je)|0;var Vr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,p=Math.imul(we,Be),b=Math.imul(we,he),b=b+Math.imul(ie,Be)|0,S=Math.imul(ie,he),p=p+Math.imul(me,Re)|0,b=b+Math.imul(me,ce)|0,b=b+Math.imul(re,Re)|0,S=S+Math.imul(re,ce)|0,p=p+Math.imul(ne,Te)|0,b=b+Math.imul(ne,de)|0,b=b+Math.imul(Z,Te)|0,S=S+Math.imul(Z,de)|0,p=p+Math.imul(oe,Ue)|0,b=b+Math.imul(oe,le)|0,b=b+Math.imul(ee,Ue)|0,S=S+Math.imul(ee,le)|0,p=p+Math.imul(pe,We)|0,b=b+Math.imul(pe,De)|0,b=b+Math.imul(te,We)|0,S=S+Math.imul(te,De)|0,p=p+Math.imul(ye,Ye)|0,b=b+Math.imul(ye,Je)|0,b=b+Math.imul(fe,Ye)|0,S=S+Math.imul(fe,Je)|0;var Gr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,p=Math.imul(we,Re),b=Math.imul(we,ce),b=b+Math.imul(ie,Re)|0,S=Math.imul(ie,ce),p=p+Math.imul(me,Te)|0,b=b+Math.imul(me,de)|0,b=b+Math.imul(re,Te)|0,S=S+Math.imul(re,de)|0,p=p+Math.imul(ne,Ue)|0,b=b+Math.imul(ne,le)|0,b=b+Math.imul(Z,Ue)|0,S=S+Math.imul(Z,le)|0,p=p+Math.imul(oe,We)|0,b=b+Math.imul(oe,De)|0,b=b+Math.imul(ee,We)|0,S=S+Math.imul(ee,De)|0,p=p+Math.imul(pe,Ye)|0,b=b+Math.imul(pe,Je)|0,b=b+Math.imul(te,Ye)|0,S=S+Math.imul(te,Je)|0;var Yr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,p=Math.imul(we,Te),b=Math.imul(we,de),b=b+Math.imul(ie,Te)|0,S=Math.imul(ie,de),p=p+Math.imul(me,Ue)|0,b=b+Math.imul(me,le)|0,b=b+Math.imul(re,Ue)|0,S=S+Math.imul(re,le)|0,p=p+Math.imul(ne,We)|0,b=b+Math.imul(ne,De)|0,b=b+Math.imul(Z,We)|0,S=S+Math.imul(Z,De)|0,p=p+Math.imul(oe,Ye)|0,b=b+Math.imul(oe,Je)|0,b=b+Math.imul(ee,Ye)|0,S=S+Math.imul(ee,Je)|0;var Jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,p=Math.imul(we,Ue),b=Math.imul(we,le),b=b+Math.imul(ie,Ue)|0,S=Math.imul(ie,le),p=p+Math.imul(me,We)|0,b=b+Math.imul(me,De)|0,b=b+Math.imul(re,We)|0,S=S+Math.imul(re,De)|0,p=p+Math.imul(ne,Ye)|0,b=b+Math.imul(ne,Je)|0,b=b+Math.imul(Z,Ye)|0,S=S+Math.imul(Z,Je)|0;var Wr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,p=Math.imul(we,We),b=Math.imul(we,De),b=b+Math.imul(ie,We)|0,S=Math.imul(ie,De),p=p+Math.imul(me,Ye)|0,b=b+Math.imul(me,Je)|0,b=b+Math.imul(re,Ye)|0,S=S+Math.imul(re,Je)|0;var oa=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(oa>>>26)|0,oa&=67108863,p=Math.imul(we,Ye),b=Math.imul(we,Je),b=b+Math.imul(ie,Ye)|0,S=Math.imul(ie,Je);var sa=(s+p|0)+((b&8191)<<13)|0;return s=(S+(b>>>13)|0)+(sa>>>26)|0,sa&=67108863,g[0]=Ut,g[1]=Lt,g[2]=qt,g[3]=zt,g[4]=kt,g[5]=qr,g[6]=zr,g[7]=kr,g[8]=Hr,g[9]=Kr,g[10]=jr,g[11]=$r,g[12]=Vr,g[13]=Gr,g[14]=Yr,g[15]=Jr,g[16]=Wr,g[17]=oa,g[18]=sa,s!==0&&(g[19]=s,l.length++),l};Math.imul||(z=V);function j(u,a,o){o.negative=a.negative^u.negative,o.length=u.length+a.length;for(var l=0,w=0,_=0;_>>26)|0,w+=g>>>26,g&=67108863}o.words[_]=s,l=g,g=w}return l!==0?o.words[_]=l:o.length--,o._strip()}function F(u,a,o){return j(u,a,o)}n.prototype.mulTo=function(a,o){var l,w=this.length+a.length;return this.length===10&&a.length===10?l=z(this,a,o):w<63?l=V(this,a,o):w<1024?l=j(this,a,o):l=F(this,a,o),l},n.prototype.mul=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),this.mulTo(a,o)},n.prototype.mulf=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),F(this,a,o)},n.prototype.imul=function(a){return this.clone().mulTo(a,this)},n.prototype.imuln=function(a){var o=a<0;o&&(a=-a),i(typeof a=="number"),i(a<67108864);for(var l=0,w=0;w>=26,l+=_/67108864|0,l+=g>>>26,this.words[w]=g&67108863}return l!==0&&(this.words[w]=l,this.length++),o?this.ineg():this},n.prototype.muln=function(a){return this.clone().imuln(a)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(a){var o=H(a);if(o.length===0)return new n(1);for(var l=this,w=0;w=0);var o=a%26,l=(a-o)/26,w=67108863>>>26-o<<26-o,_;if(o!==0){var g=0;for(_=0;_>>26-o}g&&(this.words[_]=g,this.length++)}if(l!==0){for(_=this.length-1;_>=0;_--)this.words[_+l]=this.words[_];for(_=0;_=0);var w;o?w=(o-o%26)/26:w=0;var _=a%26,g=Math.min((a-_)/26,this.length),s=67108863^67108863>>>_<<_,p=l;if(w-=g,w=Math.max(0,w),p){for(var b=0;bg)for(this.length-=g,b=0;b=0&&(S!==0||b>=w);b--){var G=this.words[b]|0;this.words[b]=S<<26-_|G>>>_,S=G&s}return p&&S!==0&&(p.words[p.length++]=S),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(a,o,l){return i(this.negative===0),this.iushrn(a,o,l)},n.prototype.shln=function(a){return this.clone().ishln(a)},n.prototype.ushln=function(a){return this.clone().iushln(a)},n.prototype.shrn=function(a){return this.clone().ishrn(a)},n.prototype.ushrn=function(a){return this.clone().iushrn(a)},n.prototype.testn=function(a){i(typeof a=="number"&&a>=0);var o=a%26,l=(a-o)/26,w=1<=0);var o=a%26,l=(a-o)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=l)return this;if(o!==0&&l++,this.length=Math.min(l,this.length),o!==0){var w=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(a){if(i(typeof a=="number"),i(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(p/67108864|0),this.words[_+l]=g&67108863}for(;_>26,this.words[_+l]=g&67108863;if(s===0)return this._strip();for(i(s===-1),s=0,_=0;_>26,this.words[_]=g&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(a,o){var l=this.length-a.length,w=this.clone(),_=a,g=_.words[_.length-1]|0,s=this._countBits(g);l=26-s,l!==0&&(_=_.ushln(l),w.iushln(l),g=_.words[_.length-1]|0);var p=w.length-_.length,b;if(o!=="mod"){b=new n(null),b.length=p+1,b.words=new Array(b.length);for(var S=0;S=0;M--){var k=(w.words[_.length+M]|0)*67108864+(w.words[_.length+M-1]|0);for(k=Math.min(k/g|0,67108863),w._ishlnsubmul(_,k,M);w.negative!==0;)k--,w.negative=0,w._ishlnsubmul(_,1,M),w.isZero()||(w.negative^=1);b&&(b.words[M]=k)}return b&&b._strip(),w._strip(),o!=="div"&&l!==0&&w.iushrn(l),{div:b||null,mod:w}},n.prototype.divmod=function(a,o,l){if(i(!a.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var w,_,g;return this.negative!==0&&a.negative===0?(g=this.neg().divmod(a,o),o!=="mod"&&(w=g.div.neg()),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.iadd(a)),{div:w,mod:_}):this.negative===0&&a.negative!==0?(g=this.divmod(a.neg(),o),o!=="mod"&&(w=g.div.neg()),{div:w,mod:g.mod}):this.negative&a.negative?(g=this.neg().divmod(a.neg(),o),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.isub(a)),{div:g.div,mod:_}):a.length>this.length||this.cmp(a)<0?{div:new n(0),mod:this}:a.length===1?o==="div"?{div:this.divn(a.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new n(this.modrn(a.words[0]))}:this._wordDiv(a,o)},n.prototype.div=function(a){return this.divmod(a,"div",!1).div},n.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},n.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},n.prototype.divRound=function(a){var o=this.divmod(a);if(o.mod.isZero())return o.div;var l=o.div.negative!==0?o.mod.isub(a):o.mod,w=a.ushrn(1),_=a.andln(1),g=l.cmp(w);return g<0||_===1&&g===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modrn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=(1<<26)%a,w=0,_=this.length-1;_>=0;_--)w=(l*w+(this.words[_]|0))%a;return o?-w:w},n.prototype.modn=function(a){return this.modrn(a)},n.prototype.idivn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=0,w=this.length-1;w>=0;w--){var _=(this.words[w]|0)+l*67108864;this.words[w]=_/a|0,l=_%a}return this._strip(),o?this.ineg():this},n.prototype.divn=function(a){return this.clone().idivn(a)},n.prototype.egcd=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=new n(0),s=new n(1),p=0;o.isEven()&&l.isEven();)o.iushrn(1),l.iushrn(1),++p;for(var b=l.clone(),S=o.clone();!o.isZero();){for(var G=0,M=1;!(o.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(o.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(b),_.isub(S)),w.iushrn(1),_.iushrn(1);for(var k=0,B=1;!(l.words[0]&B)&&k<26;++k,B<<=1);if(k>0)for(l.iushrn(k);k-- >0;)(g.isOdd()||s.isOdd())&&(g.iadd(b),s.isub(S)),g.iushrn(1),s.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(g),_.isub(s)):(l.isub(o),g.isub(w),s.isub(_))}return{a:g,b:s,gcd:l.iushln(p)}},n.prototype._invmp=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=l.clone();o.cmpn(1)>0&&l.cmpn(1)>0;){for(var s=0,p=1;!(o.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(o.iushrn(s);s-- >0;)w.isOdd()&&w.iadd(g),w.iushrn(1);for(var b=0,S=1;!(l.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(l.iushrn(b);b-- >0;)_.isOdd()&&_.iadd(g),_.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(_)):(l.isub(o),_.isub(w))}var G;return o.cmpn(1)===0?G=w:G=_,G.cmpn(0)<0&&G.iadd(a),G},n.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var o=this.clone(),l=a.clone();o.negative=0,l.negative=0;for(var w=0;o.isEven()&&l.isEven();w++)o.iushrn(1),l.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;l.isEven();)l.iushrn(1);var _=o.cmp(l);if(_<0){var g=o;o=l,l=g}else if(_===0||l.cmpn(1)===0)break;o.isub(l)}while(!0);return l.iushln(w)},n.prototype.invm=function(a){return this.egcd(a).a.umod(a)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(a){return this.words[0]&a},n.prototype.bincn=function(a){i(typeof a=="number");var o=a%26,l=(a-o)/26,w=1<>>26,s&=67108863,this.words[g]=s}return _!==0&&(this.words[g]=_,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(a){var o=a<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this._strip();var l;if(this.length>1)l=1;else{o&&(a=-a),i(a<=67108863,"Number is too big");var w=this.words[0]|0;l=w===a?0:wa.length)return 1;if(this.length=0;l--){var w=this.words[l]|0,_=a.words[l]|0;if(w!==_){w<_?o=-1:w>_&&(o=1);break}}return o},n.prototype.gtn=function(a){return this.cmpn(a)===1},n.prototype.gt=function(a){return this.cmp(a)===1},n.prototype.gten=function(a){return this.cmpn(a)>=0},n.prototype.gte=function(a){return this.cmp(a)>=0},n.prototype.ltn=function(a){return this.cmpn(a)===-1},n.prototype.lt=function(a){return this.cmp(a)===-1},n.prototype.lten=function(a){return this.cmpn(a)<=0},n.prototype.lte=function(a){return this.cmp(a)<=0},n.prototype.eqn=function(a){return this.cmpn(a)===0},n.prototype.eq=function(a){return this.cmp(a)===0},n.red=function(a){return new C(a)},n.prototype.toRed=function(a){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(a){return this.red=a,this},n.prototype.forceRed=function(a){return i(!this.red,"Already a number in reduction context"),this._forceRed(a)},n.prototype.redAdd=function(a){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},n.prototype.redIAdd=function(a){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},n.prototype.redSub=function(a){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},n.prototype.redISub=function(a){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},n.prototype.redShl=function(a){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},n.prototype.redMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},n.prototype.redIMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(a){return i(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var U={k256:null,p224:null,p192:null,p25519:null};function L(u,a){this.name=u,this.p=new n(a,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var a=new n(null);return a.words=new Array(Math.ceil(this.n/13)),a},L.prototype.ireduce=function(a){var o=a,l;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),l=o.bitLength();while(l>this.n);var w=l0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},L.prototype.split=function(a,o){a.iushrn(this.n,0,o)},L.prototype.imulK=function(a){return a.imul(this.k)};function m(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(m,L),m.prototype.split=function(a,o){for(var l=4194303,w=Math.min(a.length,9),_=0;_>>22,g=s}g>>>=22,a.words[_-10]=g,g===0&&a.length>10?a.length-=10:a.length-=9},m.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var o=0,l=0;l>>=26,a.words[l]=_,o=w}return o!==0&&(a.words[a.length++]=o),a},n._prime=function(a){if(U[a])return U[a];var o;if(a==="k256")o=new m;else if(a==="p224")o=new P;else if(a==="p192")o=new Y;else if(a==="p25519")o=new Q;else throw new Error("Unknown prime "+a);return U[a]=o,o};function C(u){if(typeof u=="string"){var a=n._prime(u);this.m=a.p,this.prime=a}else i(u.gtn(1),"modulus must be greater than 1"),this.m=u,this.prime=null}C.prototype._verify1=function(a){i(a.negative===0,"red works only with positives"),i(a.red,"red works only with red numbers")},C.prototype._verify2=function(a,o){i((a.negative|o.negative)===0,"red works only with positives"),i(a.red&&a.red===o.red,"red works only with red numbers")},C.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(x(a,a.umod(this.m)._forceRed(this)),a)},C.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},C.prototype.add=function(a,o){this._verify2(a,o);var l=a.add(o);return l.cmp(this.m)>=0&&l.isub(this.m),l._forceRed(this)},C.prototype.iadd=function(a,o){this._verify2(a,o);var l=a.iadd(o);return l.cmp(this.m)>=0&&l.isub(this.m),l},C.prototype.sub=function(a,o){this._verify2(a,o);var l=a.sub(o);return l.cmpn(0)<0&&l.iadd(this.m),l._forceRed(this)},C.prototype.isub=function(a,o){this._verify2(a,o);var l=a.isub(o);return l.cmpn(0)<0&&l.iadd(this.m),l},C.prototype.shl=function(a,o){return this._verify1(a),this.imod(a.ushln(o))},C.prototype.imul=function(a,o){return this._verify2(a,o),this.imod(a.imul(o))},C.prototype.mul=function(a,o){return this._verify2(a,o),this.imod(a.mul(o))},C.prototype.isqr=function(a){return this.imul(a,a.clone())},C.prototype.sqr=function(a){return this.mul(a,a)},C.prototype.sqrt=function(a){if(a.isZero())return a.clone();var o=this.m.andln(3);if(i(o%2===1),o===3){var l=this.m.add(new n(1)).iushrn(2);return this.pow(a,l)}for(var w=this.m.subn(1),_=0;!w.isZero()&&w.andln(1)===0;)_++,w.iushrn(1);i(!w.isZero());var g=new n(1).toRed(this),s=g.redNeg(),p=this.m.subn(1).iushrn(1),b=this.m.bitLength();for(b=new n(2*b*b).toRed(this);this.pow(b,p).cmp(s)!==0;)b.redIAdd(s);for(var S=this.pow(b,w),G=this.pow(a,w.addn(1).iushrn(1)),M=this.pow(a,w),k=_;M.cmp(g)!==0;){for(var B=M,T=0;B.cmp(g)!==0;T++)B=B.redSqr();i(T=0;_--){for(var S=o.words[_],G=b-1;G>=0;G--){var M=S>>G&1;if(g!==w[0]&&(g=this.sqr(g)),M===0&&s===0){p=0;continue}s<<=1,s|=M,p++,!(p!==l&&(_!==0||G!==0))&&(g=this.mul(g,w[s]),p=0,s=0)}b=26}return g},C.prototype.convertTo=function(a){var o=a.umod(this.m);return o===a?o.clone():o},C.prototype.convertFrom=function(a){var o=a.clone();return o.red=null,o},n.mont=function(a){return new h(a)};function h(u){C.call(this,u),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(h,C),h.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},h.prototype.convertFrom=function(a){var o=this.imod(a.mul(this.rinv));return o.red=null,o},h.prototype.imul=function(a,o){if(a.isZero()||o.isZero())return a.words[0]=0,a.length=1,a;var l=a.imul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.mul=function(a,o){if(a.isZero()||o.isZero())return new n(0)._forceRed(this);var l=a.mul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.invm=function(a){var o=this.imod(a._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(t,Rn)})(f0);var qe=f0.exports;const a0="bignumber/5.7.0";var Vi=qe.BN;const ar=new ke(a0),Zn={},o0=9007199254740991;function Hh(t){return t!=null&&(Ze.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||xt(t)||typeof t=="bigint"||ti(t))}let s0=!1;class Ze{constructor(e,r){e!==Zn&&ar.throwError("cannot call constructor directly; use BigNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return yt(He(this).fromTwos(e))}toTwos(e){return yt(He(this).toTwos(e))}abs(){return this._hex[0]==="-"?Ze.from(this._hex.substring(1)):this}add(e){return yt(He(this).add(He(e)))}sub(e){return yt(He(this).sub(He(e)))}div(e){return Ze.from(e).isZero()&&Nt("division-by-zero","div"),yt(He(this).div(He(e)))}mul(e){return yt(He(this).mul(He(e)))}mod(e){const r=He(e);return r.isNeg()&&Nt("division-by-zero","mod"),yt(He(this).umod(r))}pow(e){const r=He(e);return r.isNeg()&&Nt("negative-power","pow"),yt(He(this).pow(r))}and(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","and"),yt(He(this).and(r))}or(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","or"),yt(He(this).or(r))}xor(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","xor"),yt(He(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&Nt("negative-width","mask"),yt(He(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&Nt("negative-width","shl"),yt(He(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&Nt("negative-width","shr"),yt(He(this).shrn(e))}eq(e){return He(this).eq(He(e))}lt(e){return He(this).lt(He(e))}lte(e){return He(this).lte(He(e))}gt(e){return He(this).gt(He(e))}gte(e){return He(this).gte(He(e))}isNegative(){return this._hex[0]==="-"}isZero(){return He(this).isZero()}toNumber(){try{return He(this).toNumber()}catch{Nt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return ar.throwError("this platform does not support BigInt",ke.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?s0||(s0=!0,ar.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?ar.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",ke.errors.UNEXPECTED_ARGUMENT,{}):ar.throwError("BigNumber.toString does not accept parameters",ke.errors.UNEXPECTED_ARGUMENT,{})),He(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof Ze)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new Ze(Zn,Mi(e)):e.match(/^-?[0-9]+$/)?new Ze(Zn,Mi(new Vi(e))):ar.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&Nt("underflow","BigNumber.from",e),(e>=o0||e<=-o0)&&Nt("overflow","BigNumber.from",e),Ze.from(String(e));const r=e;if(typeof r=="bigint")return Ze.from(r.toString());if(ti(r))return Ze.from(pt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return Ze.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(xt(i)||i[0]==="-"&&xt(i.substring(1))))return Ze.from(i)}return ar.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Mi(t){if(typeof t!="string")return Mi(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&ar.throwArgumentError("invalid hex","value",t),t=Mi(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function yt(t){return Ze.from(Mi(t))}function He(t){const e=Ze.from(t).toHexString();return e[0]==="-"?new Vi("-"+e.substring(3),16):new Vi(e.substring(2),16)}function Nt(t,e,r){const i={fault:t,operation:e};return r!=null&&(i.value=r),ar.throwError(t,ke.errors.NUMERIC_FAULT,i)}function Kh(t){return new Vi(t,36).toString(16)}const mt=new ke(a0),Ei={},u0=Ze.from(0),h0=Ze.from(-1);function c0(t,e,r,i){const f={fault:e,operation:r};return i!==void 0&&(f.value=i),mt.throwError(t,ke.errors.NUMERIC_FAULT,f)}let Si="0";for(;Si.length<256;)Si+=Si;function ef(t){if(typeof t!="number")try{t=Ze.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+Si.substring(0,t):mt.throwArgumentError("invalid decimal size","decimals",t)}function tf(t,e){e==null&&(e=0);const r=ef(e);t=Ze.from(t);const i=t.lt(u0);i&&(t=t.mul(h0));let f=t.mod(r).toString();for(;f.length2&&mt.throwArgumentError("too many decimal points","value",t);let n=f[0],d=f[1];for(n||(n="0"),d||(d="0");d[d.length-1]==="0";)d=d.substring(0,d.length-1);for(d.length>r.length-1&&c0("fractional component exceeds decimals","underflow","parseFixed"),d===""&&(d="0");d.lengthe[d]==null?y:(typeof e[d]!==c&&mt.throwArgumentError("invalid fixed format ("+d+" not "+c+")","format."+d,e[d]),e[d]);r=n("signed","boolean",r),i=n("width","number",i),f=n("decimals","number",f)}return i%8&&mt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),f>80&&mt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",f),new ri(Ei,r,i,f)}}class st{constructor(e,r,i,f){e!==Ei&&mt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=f,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&mt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(d0.toFormat(r.format))),r}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(d0.toFormat(r.format))),r}round(e){e==null&&(e=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&mt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;const i=st.from("1"+Si.substring(0,e),this.format),f=jh.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(f).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&mt.throwArgumentError("invalid byte width","width",e);const r=Ze.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Vt(r,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return st.fromString(this._value,e)}static fromValue(e,r,i){return i==null&&r!=null&&!Hh(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),st.fromString(tf(e,r),ri.from(i))}static fromString(e,r){r==null&&(r="fixed");const i=ri.from(r),f=or(e,i.decimals);!i.signed&&f.lt(u0)&&c0("unsigned value cannot be negative","overflow","value",e);let n=null;i.signed?n=f.toTwos(i.width).toHexString():(n=f.toHexString(),n=Vt(n,i.width/8));const d=tf(f,i.decimals);return new st(Ei,n,d,i)}static fromBytes(e,r){r==null&&(r="fixed");const i=ri.from(r);if(tt(e).length>i.width/8)throw new Error("overflow");let f=Ze.from(e);i.signed&&(f=f.fromTwos(i.width));const n=f.toTwos((i.signed?0:1)+i.width).toHexString(),d=tf(f,i.decimals);return new st(Ei,n,d,i)}static from(e,r){if(typeof e=="string")return st.fromString(e,r);if(ti(e))return st.fromBytes(e,r);try{return st.fromValue(e,0,r)}catch(i){if(i.code!==ke.errors.INVALID_ARGUMENT)throw i}return mt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const d0=st.from(1),jh=st.from("0.5"),$h="strings/5.7.0",l0=new ke($h);var Gi;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Gi||(Gi={}));var ii;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(ii||(ii={}));function Vh(t,e,r,i,f){return l0.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)}function b0(t,e,r,i,f){if(t===ii.BAD_PREFIX||t===ii.UNEXPECTED_CONTINUE){let n=0;for(let d=e+1;d>6===2;d++)n++;return n}return t===ii.OVERRUN?r.length-e-1:0}function Gh(t,e,r,i,f){return t===ii.OVERLONG?(i.push(f),0):(i.push(65533),b0(t,e,r))}Object.freeze({error:Vh,ignore:b0,replace:Gh});function rf(t,e=Gi.current){e!=Gi.current&&(l0.checkNormalize(),t=t.normalize(e));let r=[];for(let i=0;i>6|192),r.push(f&63|128);else if((f&64512)==55296){i++;const n=t.charCodeAt(i);if(i>=t.length||(n&64512)!==56320)throw new Error("invalid utf-8 string");const d=65536+((f&1023)<<10)+(n&1023);r.push(d>>18|240),r.push(d>>12&63|128),r.push(d>>6&63|128),r.push(d&63|128)}else r.push(f>>12|224),r.push(f>>6&63|128),r.push(f&63|128)}return tt(r)}function Yh(t){if(t.length%4!==0)throw new Error("bad data");let e=[];for(let r=0;r{let n=f.split(":");r+=parseInt(n[0],16),i[r]=e(n[1])}),i}function v0(t){let e=0;return t.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let f=e+parseInt(i[0],16);return e=parseInt(i[1],16),{l:f,h:e}})}v0("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nf("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),nf("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),nf("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Yh),v0("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const p0="hash/5.7.0";function Jh(t){t=atob(t);const e=[];for(let r=0;r0&&Array.isArray(c)?f(c,d-1):r.push(c)})};return f(t,e),r}function Wh(t){const e={};for(let r=0;r>--y&1}const E=31,N=Math.pow(2,E),D=N>>>1,I=D>>1,q=N-1;let H=0;for(let U=0;U1;){let Q=L+m>>>1;U>>1|x(),P=P<<1^D,Y=(Y^D)<<1|D|1;z=P,j=1+Y-P}let F=i-4;return V.map(U=>{switch(U-F){case 3:return F+65792+(t[c++]<<16|t[c++]<<8|t[c++]);case 2:return F+256+(t[c++]<<8|t[c++]);case 1:return F+t[c++];default:return U-1}})}function Xh(t){let e=0;return()=>t[e++]}function Zh(t){return Xh(Qh(t))}function ec(t){return t&1?~t>>1:t>>1}function tc(t,e){let r=Array(t);for(let i=0;ie[d]):r}function ic(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(fc(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(ac(r,t))}return Wh(m0(e))}function nc(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(r)}return e}function y0(t,e,r){let i=Array(t).fill(void 0).map(()=>[]);for(let f=0;fi[d].push(n));return i}function fc(t,e){let r=1+e(),i=e(),f=nc(e),n=y0(f.length,1+t,e);return m0(n.map((d,c)=>{const y=d[0],A=d.slice(1);return Array(f[c]).fill(void 0).map((x,E)=>{let N=E*i;return[y+E*r,A.map(D=>D+N)]})}))}function ac(t,e){let r=1+e();return y0(r,1+t,e).map(f=>[f[0],f.slice(1)])}function oc(t){let e=Yi(t).sort((i,f)=>i-f);return r();function r(){let i=[];for(;;){let A=Yi(t,e);if(A.length==0)break;i.push({set:new Set(A),node:r()})}i.sort((A,x)=>x.set.size-A.set.size);let f=t(),n=f%3;f=f/3|0;let d=!!(f&1);f>>=1;let c=f==1,y=f==2;return{branches:i,valid:n,fe0f:d,save:c,check:y}}}function sc(){return Zh(Jh("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"))}const Ji=sc();new Set(Yi(Ji)),new Set(Yi(Ji)),ic(Ji),oc(Ji),new ke(p0),new Uint8Array(32).fill(0);const uc=`Ethereum Signed Message: ++`;function w0(t){return typeof t=="string"&&(t=rf(t)),Xn(Uh([rf(uc),rf(String(t.length)),t]))}const hc="rlp/5.7.0";new ke(hc);const cc="address/5.7.0",Di=new ke(cc);function A0(t){xt(t,20)||Di.throwArgumentError("invalid address","address",t),t=t.toLowerCase();const e=t.substring(2).split(""),r=new Uint8Array(40);for(let f=0;f<40;f++)r[f]=e[f].charCodeAt(0);const i=tt(Xn(r));for(let f=0;f<40;f+=2)i[f>>1]>>4>=8&&(e[f]=e[f].toUpperCase()),(i[f>>1]&15)>=8&&(e[f+1]=e[f+1].toUpperCase());return"0x"+e.join("")}const dc=9007199254740991;function lc(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}const ff={};for(let t=0;t<10;t++)ff[String(t)]=String(t);for(let t=0;t<26;t++)ff[String.fromCharCode(65+t)]=String(10+t);const x0=Math.floor(lc(dc));function bc(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";let e=t.split("").map(i=>ff[i]).join("");for(;e.length>=x0;){let i=e.substring(0,x0);e=parseInt(i,10)%97+e.substring(i.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function vc(t){let e=null;if(typeof t!="string"&&Di.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=A0(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&Di.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==bc(t)&&Di.throwArgumentError("bad icap checksum","address",t),e=Kh(t.substring(4));e.length<40;)e="0"+e;e=A0("0x"+e)}else Di.throwArgumentError("invalid address","address",t);return e}const pc="properties/5.7.0";new ke(pc);function Ii(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}new ke(p0),new Uint8Array(32).fill(0),Ze.from(-1);const mc=Ze.from(0),gc=Ze.from(1);Ze.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Vt(gc.toHexString(),32),Vt(mc.toHexString(),32);var _t={},Ke={},Ir=_0;function _0(t,e){if(!t)throw new Error(e||"Assertion failed")}_0.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)};var ni={exports:{}};typeof Object.create=="function"?ni.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:ni.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}};var yc=Ir,wc=ni.exports;Ke.inherits=wc;function Ac(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function xc(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),f=0;f>6|192,r[i++]=n&63|128):Ac(t,f)?(n=65536+((n&1023)<<10)+(t.charCodeAt(++f)&1023),r[i++]=n>>18|240,r[i++]=n>>12&63|128,r[i++]=n>>6&63|128,r[i++]=n&63|128):(r[i++]=n>>12|224,r[i++]=n>>6&63|128,r[i++]=n&63|128)}else for(f=0;f>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Ke.htonl=M0;function Mc(t,e){for(var r="",i=0;i>>0}return n}Ke.join32=Ec;function Sc(t,e){for(var r=new Array(t.length*4),i=0,f=0;i>>24,r[f+1]=n>>>16&255,r[f+2]=n>>>8&255,r[f+3]=n&255):(r[f+3]=n>>>24,r[f+2]=n>>>16&255,r[f+1]=n>>>8&255,r[f]=n&255)}return r}Ke.split32=Sc;function Dc(t,e){return t>>>e|t<<32-e}Ke.rotr32=Dc;function Ic(t,e){return t<>>32-e}Ke.rotl32=Ic;function Nc(t,e){return t+e>>>0}Ke.sum32=Nc;function Cc(t,e,r){return t+e+r>>>0}Ke.sum32_3=Cc;function Bc(t,e,r,i){return t+e+r+i>>>0}Ke.sum32_4=Bc;function Oc(t,e,r,i,f){return t+e+r+i+f>>>0}Ke.sum32_5=Oc;function Rc(t,e,r,i){var f=t[e],n=t[e+1],d=i+n>>>0,c=(d>>0,t[e+1]=d}Ke.sum64=Rc;function Pc(t,e,r,i){var f=e+i>>>0,n=(f>>0}Ke.sum64_hi=Pc;function Tc(t,e,r,i){var f=e+i;return f>>>0}Ke.sum64_lo=Tc;function Fc(t,e,r,i,f,n,d,c){var y=0,A=e;A=A+i>>>0,y+=A>>0,y+=A>>0,y+=A>>0}Ke.sum64_4_hi=Fc;function Uc(t,e,r,i,f,n,d,c){var y=e+i+n+c;return y>>>0}Ke.sum64_4_lo=Uc;function Lc(t,e,r,i,f,n,d,c,y,A){var x=0,E=e;E=E+i>>>0,x+=E>>0,x+=E>>0,x+=E>>0,x+=E>>0}Ke.sum64_5_hi=Lc;function qc(t,e,r,i,f,n,d,c,y,A){var x=e+i+n+c+A;return x>>>0}Ke.sum64_5_lo=qc;function zc(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Ke.rotr64_hi=zc;function kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.rotr64_lo=kc;function Hc(t,e,r){return t>>>r}Ke.shr64_hi=Hc;function Kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.shr64_lo=Kc;var fi={},D0=Ke,jc=Ir;function Wi(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}fi.BlockHash=Wi,Wi.prototype.update=function(e,r){if(e=D0.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=D0.join32(e,0,e.length-i,this.endian);for(var f=0;f>>24&255,f[n++]=e>>>16&255,f[n++]=e>>>8&255,f[n++]=e&255}else for(f[n++]=e&255,f[n++]=e>>>8&255,f[n++]=e>>>16&255,f[n++]=e>>>24&255,f[n++]=0,f[n++]=0,f[n++]=0,f[n++]=0,d=8;d>>3}Gt.g0_256=Jc;function Wc(t){return Yt(t,17)^Yt(t,19)^t>>>10}Gt.g1_256=Wc;var oi=Ke,Qc=fi,Xc=Gt,af=oi.rotl32,Ni=oi.sum32,Zc=oi.sum32_5,ed=Xc.ft_1,B0=Qc.BlockHash,td=[1518500249,1859775393,2400959708,3395469782];function Jt(){if(!(this instanceof Jt))return new Jt;B0.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}oi.inherits(Jt,B0);var rd=Jt;Jt.blockSize=512,Jt.outSize=160,Jt.hmacStrength=80,Jt.padLength=64,Jt.prototype._update=function(e,r){for(var i=this.W,f=0;f<16;f++)i[f]=e[r+f];for(;fthis.blockSize&&(e=new this.Hash().update(e).digest()),Kd(e.length<=this.blockSize);for(var r=e.length;r>8,N=x&255;E?y.push(E,N):y.push(N)}return y}r.toArray=i;function f(d){return d.length===1?"0"+d:d}r.zero2=f;function n(d){for(var c="",y=0;y(N>>1)-1?q=(N>>1)-H:q=H,D.isubn(q)):q=0,E[I]=q,D.iushrn(1)}return E}r.getNAF=i;function f(y,A){var x=[[],[]];y=y.clone(),A=A.clone();for(var E=0,N=0,D;y.cmpn(-E)>0||A.cmpn(-N)>0;){var I=y.andln(3)+E&3,q=A.andln(3)+N&3;I===3&&(I=-1),q===3&&(q=-1);var H;I&1?(D=y.andln(7)+E&7,(D===3||D===5)&&q===2?H=-I:H=I):H=0,x[0].push(H);var V;q&1?(D=A.andln(7)+N&7,(D===3||D===5)&&I===2?V=-q:V=q):V=0,x[1].push(V),2*E===H+1&&(E=1-E),2*N===V+1&&(N=1-N),y.iushrn(1),A.iushrn(1)}return x}r.getJSF=f;function n(y,A,x){var E="_"+A;y.prototype[A]=function(){return this[E]!==void 0?this[E]:this[E]=x.call(this)}}r.cachedProperty=n;function d(y){return typeof y=="string"?r.toArray(y,"hex"):y}r.parseBytes=d;function c(y){return new qe(y,"hex","le")}r.intFromLE=c}),Xi=Mt.getNAF,Vd=Mt.getJSF,Zi=Mt.assert;function vr(t,e){this.type=t,this.p=new qe(e.p,16),this.red=e.prime?qe.red(e.prime):qe.mont(this.p),this.zero=new qe(0).toRed(this.red),this.one=new qe(1).toRed(this.red),this.two=new qe(2).toRed(this.red),this.n=e.n&&new qe(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Cr=vr;vr.prototype.point=function(){throw new Error("Not implemented")},vr.prototype.validate=function(){throw new Error("Not implemented")},vr.prototype._fixedNafMul=function(e,r){Zi(e.precomputed);var i=e._getDoubles(),f=Xi(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];Zi(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},vr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=Xi(i[I],d[I],this._bitLength),y[q]=Xi(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=Vd(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Ct.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Bt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Bt.prototype.pointFromX=function(e,r){e=new qe(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Bt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Bt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},nt.prototype.isInfinity=function(){return this.inf},nt.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},nt.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},nt.prototype.getX=function(){return this.x.fromRed()},nt.prototype.getY=function(){return this.y.fromRed()},nt.prototype.mul=function(e){return e=new qe(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},nt.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},nt.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},nt.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},nt.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},nt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ut(t,e,r,i){Cr.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new qe(0)):(this.x=new qe(e,16),this.y=new qe(r,16),this.z=new qe(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}df(ut,Cr.BasePoint),Bt.prototype.jpoint=function(e,r,i){return new ut(this,e,r,i)},ut.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ut.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ut.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ut.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ut.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ut.prototype.inspect=function(){return this.isInfinity()?"":""},ut.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var en=ci(function(t,e){var r=e;r.base=Cr,r.short=Yd,r.mont=null,r.edwards=null}),tn=ci(function(t,e){var r=e,i=Mt.assert;function f(c){c.type==="short"?this.curve=new en.short(c):c.type==="edwards"?this.curve=new en.edwards(c):this.curve=new en.mont(c),this.g=this.curve.g,this.n=this.curve.n,this.hash=c.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=f;function n(c,y){Object.defineProperty(r,c,{configurable:!0,enumerable:!0,get:function(){var A=new f(y);return Object.defineProperty(r,c,{configurable:!0,enumerable:!0,value:A}),A}})}n("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:_t.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),n("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:_t.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),n("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:_t.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),n("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:_t.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),n("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:_t.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),n("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["9"]}),n("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var d;try{d=null.crash()}catch{d=void 0}n("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:_t.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",d]})});function pr(t){if(!(this instanceof pr))return new pr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=$t.toArray(t.entropy,t.entropyEnc||"hex"),r=$t.toArray(t.nonce,t.nonceEnc||"hex"),i=$t.toArray(t.pers,t.persEnc||"hex");cf(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var V0=pr;pr.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},pr.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=$t.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var Jd=Mt.assert;function rn(t,e){if(t instanceof rn)return t;this._importDER(t,e)||(Jd(t.r&&t.s,"Signature without r or s"),this.r=new qe(t.r,16),this.s=new qe(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var nn=rn;function Wd(){this.place=0}function vf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function G0(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}rn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=G0(r),i=G0(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];pf(f,r.length),f=f.concat(r),f.push(2),pf(f,i.length);var n=f.concat(i),d=[48];return pf(d,n.length),d=d.concat(n),Mt.encode(d,e)};var Qd=function(){throw new Error("unsupported")},Y0=Mt.assert;function Ot(t){if(!(this instanceof Ot))return new Ot(t);typeof t=="string"&&(Y0(Object.prototype.hasOwnProperty.call(tn,t),"Unknown curve "+t),t=tn[t]),t instanceof tn.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Xd=Ot;Ot.prototype.keyPair=function(e){return new bf(this,e)},Ot.prototype.keyFromPrivate=function(e,r){return bf.fromPrivate(this,e,r)},Ot.prototype.keyFromPublic=function(e,r){return bf.fromPublic(this,e,r)},Ot.prototype.genKeyPair=function(e){e||(e={});for(var r=new V0({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Qd(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new qe(2));;){var n=new qe(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ot.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ot.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new qe(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new V0({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new qe(1)),x=0;;x++){var E=f.k?f.k(x):new qe(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new nn({r:I,s:q,recoveryParam:H})}}}}}},Ot.prototype.verify=function(e,r,i,f){e=this._truncateToN(new qe(e,16)),i=this.keyFromPublic(i,f),r=new nn(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ot.prototype.recoverPubKey=function(t,e,r,i){Y0((3&r)===r,"The recovery param is more than two bits"),e=new nn(e,i);var f=this.n,n=new qe(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ot.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new nn(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Zd=ci(function(t,e){var r=e;r.version="6.5.4",r.utils=Mt,r.rand=function(){throw new Error("unsupported")},r.curve=en,r.curves=tn,r.ec=Xd,r.eddsa=null}),el=Zd.ec;const tl="signing-key/5.7.0",mf=new ke(tl);let gf=null;function er(){return gf||(gf=new el("secp256k1")),gf}class rl{constructor(e){Ii(this,"curve","secp256k1"),Ii(this,"privateKey",pt(e)),qh(this.privateKey)!==32&&mf.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=er().keyFromPrivate(tt(this.privateKey));Ii(this,"publicKey","0x"+r.getPublic(!1,"hex")),Ii(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),Ii(this,"_isSigningKey",!0)}_addPoint(e){const r=er().keyFromPublic(tt(this.publicKey)),i=er().keyFromPublic(tt(e));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=tt(e);i.length!==32&&mf.throwArgumentError("bad digest length","digest",e);const f=r.sign(i,{canonical:!0});return n0({recoveryParam:f.recoveryParam,r:Vt("0x"+f.r.toString(16),32),s:Vt("0x"+f.s.toString(16),32)})}computeSharedSecret(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=er().keyFromPublic(tt(J0(e)));return Vt("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(e){return!!(e&&e._isSigningKey)}}function il(t,e){const r=n0(e),i={r:tt(r.r),s:tt(r.s)};return"0x"+er().recoverPubKey(tt(t),i,r.recoveryParam).encode("hex",!1)}function J0(t,e){const r=tt(t);if(r.length===32){const i=new rl(r);return e?"0x"+er().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return e?pt(r):"0x"+er().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+er().keyFromPublic(r).getPublic(!0,"hex"):pt(r)}return mf.throwArgumentError("invalid public or private key","key","[REDACTED]")}const nl="transactions/5.7.0";new ke(nl);var W0;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(W0||(W0={}));function fl(t){const e=J0(t);return vc(i0(Xn(i0(e,1)),12))}function al(t,e){return fl(il(tt(t),e))}const ol="https://rpc.walletconnect.com/v1";async function Q0(t,e,r,i,f,n){switch(r.t){case"eip191":return X0(t,e,r.s);case"eip1271":return await Z0(t,e,r.s,i,f,n);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function X0(t,e,r){return al(w0(e),r).toLowerCase()===t.toLowerCase()}async function Z0(t,e,r,i,f,n){try{const d="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",y="0000000000000000000000000000000000000000000000000000000000000041",A=r.substring(2),x=w0(e).substring(2),E=d+x+c+y+A,N=await fetch(`${n||ol}/?chainId=${i}&projectId=${f}`,{method:"POST",body:JSON.stringify({id:sl(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:E},"latest"]})}),{result:D}=await N.json();return D?D.slice(0,d.length).toLowerCase()===d.toLowerCase():!1}catch(d){return console.error("isValidEip1271Signature: ",d),!1}}function sl(){return Date.now()+Math.floor(Math.random()*1e3)}var ul=Object.defineProperty,hl=Object.defineProperties,cl=Object.getOwnPropertyDescriptors,eo=Object.getOwnPropertySymbols,dl=Object.prototype.hasOwnProperty,ll=Object.prototype.propertyIsEnumerable,to=(t,e,r)=>e in t?ul(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,yf=(t,e)=>{for(var r in e||(e={}))dl.call(e,r)&&to(t,r,e[r]);if(eo)for(var r of eo(e))ll.call(e,r)&&to(t,r,e[r]);return t},ro=(t,e)=>hl(t,cl(e));const bl="did:pkh:",fn=t=>t?.split(":"),wf=t=>{const e=t&&fn(t);if(e)return t.includes(bl)?e[3]:e[1]},vl=t=>{const e=t&&fn(t);if(e)return e[2]+":"+e[3]},Af=t=>{const e=t&&fn(t);if(e)return e.pop()};async function pl(t){const{cacao:e,projectId:r}=t,{s:i,p:f}=e,n=io(f,f.iss),d=Af(f.iss);return await Q0(d,n,i,wf(f.iss),r)}const io=(t,e)=>{const r=`${t.domain} wants you to sign in with your Ethereum account:`,i=Af(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let f=t.statement||void 0;const n=`URI: ${t.aud||t.uri}`,d=`Version: ${t.version}`,c=`Chain ID: ${wf(e)}`,y=`Nonce: ${t.nonce}`,A=`Issued At: ${t.iat}`,x=t.exp?`Expiration Time: ${t.exp}`:void 0,E=t.nbf?`Not Before: ${t.nbf}`:void 0,N=t.requestId?`Request ID: ${t.requestId}`:void 0,D=t.resources?`Resources:${t.resources.map(q=>` ++- ${q}`).join("")}`:void 0,I=on(t.resources);if(I){const q=mr(I);f=Mf(f,q)}return[r,i,"",f,"",n,d,c,y,A,x,E,N,D].filter(q=>q!=null).join(` ++`)};function ml(t,e,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:t.domain,aud:t.aud,version:t.version,nonce:t.nonce,iat:t.iat,statement:t.statement,requestId:t.requestId,resources:t.resources,nbf:t.nbf,exp:t.exp},s:e}}function gl(t){var e;const{authPayload:r,chains:i,methods:f}=t,n=r.statement||"";if(!(i!=null&&i.length))return r;const d=r.chains,c=Yn(d,i);if(!(c!=null&&c.length))throw new Error("No supported chains");const y=no(r.resources);if(!y)return r;tr(y);const A=fo(y,"eip155");let x=r?.resources||[];if(A!=null&&A.length){const E=ao(A),N=Yn(E,f);if(!(N!=null&&N.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(E)}, supported: ${JSON.stringify(f)}`);const D=xf("request",N,{chains:c}),I=ho(y,"eip155",D);x=((e=r?.resources)==null?void 0:e.slice(0,-1))||[],x.push(an(I))}return ro(yf({},r),{statement:lo(n,on(x)),chains:c,resources:r!=null&&r.resources||x.length>0?x:void 0})}function no(t){const e=on(t);if(e&&_f(e))return mr(e)}function yl(t,e){var r;return(r=t?.att)==null?void 0:r.hasOwnProperty(e)}function fo(t,e){var r,i;return(r=t?.att)!=null&&r[e]?Object.keys((i=t?.att)==null?void 0:i[e]):[]}function wl(t){return t?.map(e=>Object.keys(e))||[]}function ao(t){return t?.map(e=>{var r;return(r=e.split("/"))==null?void 0:r[1]})||[]}function oo(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function so(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function tr(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(r=>{const i=t.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(f=>{const n=i[f];if(!Array.isArray(n))throw new Error(`Ability limits ${f} must be an array of objects, found: ${n}`);if(!n.length)throw new Error(`Value of ${f} is empty array, must be an array with objects`);n.forEach(d=>{if(typeof d!="object")throw new Error(`Ability limits (${f}) must be an array of objects, found: ${d}`)})})})}function uo(t,e,r,i={}){return r?.sort((f,n)=>f.localeCompare(n)),{att:{[t]:xf(e,r,i)}}}function ho(t,e,r){var i;return t.att[e]=yf({},r),((i=Object.keys(t.att))==null?void 0:i.sort((f,n)=>f.localeCompare(n))).reduce((f,n)=>(f.att[n]=t.att[n],f),{att:{}})}function xf(t,e,r={}){e=e?.sort((f,n)=>f.localeCompare(n));const i=e.map(f=>({[`${t}/${f}`]:[r]}));return Object.assign({},...i)}function an(t){return tr(t),`urn:recap:${oo(t).replace(/=/g,"")}`}function mr(t){const e=so(t.replace("urn:recap:",""));return tr(e),e}function Al(t,e,r){const i=uo(t,e,r);return an(i)}function _f(t){return t&&t.includes("urn:recap:")}function xl(t,e){const r=mr(t),i=mr(e),f=co(r,i);return an(f)}function co(t,e){tr(t),tr(e);const r=Object.keys(t.att).concat(Object.keys(e.att)).sort((f,n)=>f.localeCompare(n)),i={att:{}};return r.forEach(f=>{var n,d;Object.keys(((n=t.att)==null?void 0:n[f])||{}).concat(Object.keys(((d=e.att)==null?void 0:d[f])||{})).sort((c,y)=>c.localeCompare(y)).forEach(c=>{var y,A;i.att[f]=ro(yf({},i.att[f]),{[c]:((y=t.att[f])==null?void 0:y[c])||((A=e.att[f])==null?void 0:A[c])})})}),i}function Mf(t="",e){tr(e);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(r))return t;const i=[];let f=0;Object.keys(e.att).forEach(c=>{const y=Object.keys(e.att[c]).map(E=>({ability:E.split("/")[0],action:E.split("/")[1]}));y.sort((E,N)=>E.action.localeCompare(N.action));const A={};y.forEach(E=>{A[E.ability]||(A[E.ability]=[]),A[E.ability].push(E.action)});const x=Object.keys(A).map(E=>(f++,`(${f}) '${E}': '${A[E].join("', '")}' for '${c}'.`));i.push(x.join(", ").replace(".,","."))});const n=i.join(" "),d=`${r}${n}`;return`${t?t+" ":""}${d}`}function _l(t){var e;const r=mr(t);tr(r);const i=(e=r.att)==null?void 0:e.eip155;return i?Object.keys(i).map(f=>f.split("/")[1]):[]}function Ml(t){const e=mr(t);tr(e);const r=[];return Object.values(e.att).forEach(i=>{Object.values(i).forEach(f=>{var n;(n=f?.[0])!=null&&n.chains&&r.push(f[0].chains)})}),[...new Set(r.flat())]}function lo(t,e){if(!e)return t;const r=mr(e);return tr(r),Mf(t,r)}function on(t){if(!t)return;const e=t?.[t.length-1];return _f(e)?e:void 0}var Ef={},sn={},ze={},bo={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(c,y){var A=c>>>16&65535,x=c&65535,E=y>>>16&65535,N=y&65535;return x*N+(A*N+x*E<<16>>>0)|0}t.mul=Math.imul||e;function r(c,y){return c+y|0}t.add=r;function i(c,y){return c-y|0}t.sub=i;function f(c,y){return c<>>32-y}t.rotl=f;function n(c,y){return c<<32-y|c>>>y}t.rotr=n;function d(c){return typeof c=="number"&&isFinite(c)&&Math.floor(c)===c}t.isInteger=Number.isInteger||d,t.MAX_SAFE_INTEGER=9007199254740991,t.isSafeInteger=function(c){return t.isInteger(c)&&c>=-t.MAX_SAFE_INTEGER&&c<=t.MAX_SAFE_INTEGER}})(bo),Object.defineProperty(ze,"__esModule",{value:!0});var vo=bo;function El(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])<<16>>16}ze.readInt16BE=El;function Sl(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])>>>0}ze.readUint16BE=Sl;function Dl(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])<<16>>16}ze.readInt16LE=Dl;function Il(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])>>>0}ze.readUint16LE=Il;function po(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>8,e[r+1]=t>>>0,e}ze.writeUint16BE=po,ze.writeInt16BE=po;function mo(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e}ze.writeUint16LE=mo,ze.writeInt16LE=mo;function Sf(t,e){return e===void 0&&(e=0),t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}ze.readInt32BE=Sf;function Df(t,e){return e===void 0&&(e=0),(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}ze.readUint32BE=Df;function If(t,e){return e===void 0&&(e=0),t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e]}ze.readInt32LE=If;function Nf(t,e){return e===void 0&&(e=0),(t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e])>>>0}ze.readUint32LE=Nf;function un(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>24,e[r+1]=t>>>16,e[r+2]=t>>>8,e[r+3]=t>>>0,e}ze.writeUint32BE=un,ze.writeInt32BE=un;function hn(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e[r+2]=t>>>16,e[r+3]=t>>>24,e}ze.writeUint32LE=hn,ze.writeInt32LE=hn;function Nl(t,e){e===void 0&&(e=0);var r=Sf(t,e),i=Sf(t,e+4);return r*4294967296+i-(i>>31)*4294967296}ze.readInt64BE=Nl;function Cl(t,e){e===void 0&&(e=0);var r=Df(t,e),i=Df(t,e+4);return r*4294967296+i}ze.readUint64BE=Cl;function Bl(t,e){e===void 0&&(e=0);var r=If(t,e),i=If(t,e+4);return i*4294967296+r-(r>>31)*4294967296}ze.readInt64LE=Bl;function Ol(t,e){e===void 0&&(e=0);var r=Nf(t,e),i=Nf(t,e+4);return i*4294967296+r}ze.readUint64LE=Ol;function go(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),un(t/4294967296>>>0,e,r),un(t>>>0,e,r+4),e}ze.writeUint64BE=go,ze.writeInt64BE=go;function yo(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),hn(t>>>0,e,r),hn(t/4294967296>>>0,e,r+4),e}ze.writeUint64LE=yo,ze.writeInt64LE=yo;function Rl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintBE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintBE: array is too short for the given bitLength");for(var i=0,f=1,n=t/8+r-1;n>=r;n--)i+=e[n]*f,f*=256;return i}ze.readUintBE=Rl;function Pl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintLE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintLE: array is too short for the given bitLength");for(var i=0,f=1,n=r;n=i;n--)r[n]=e/f&255,f*=256;return r}ze.writeUintBE=Tl;function Fl(t,e,r,i){if(r===void 0&&(r=new Uint8Array(t/8)),i===void 0&&(i=0),t%8!==0)throw new Error("writeUintLE supports only bitLengths divisible by 8");if(!vo.isSafeInteger(e))throw new Error("writeUintLE value must be an integer");for(var f=1,n=i;n>>32-16|o<<16,C=C+o|0,m^=C,m=m>>>32-12|m<<12,F=F+P|0,l^=F,l=l>>>32-16|l<<16,h=h+l|0,P^=h,P=P>>>32-12|P<<12,U=U+Y|0,w^=U,w=w>>>32-16|w<<16,u=u+w|0,Y^=u,Y=Y>>>32-12|Y<<12,L=L+Q|0,_^=L,_=_>>>32-16|_<<16,a=a+_|0,Q^=a,Q=Q>>>32-12|Q<<12,U=U+Y|0,w^=U,w=w>>>32-8|w<<8,u=u+w|0,Y^=u,Y=Y>>>32-7|Y<<7,L=L+Q|0,_^=L,_=_>>>32-8|_<<8,a=a+_|0,Q^=a,Q=Q>>>32-7|Q<<7,F=F+P|0,l^=F,l=l>>>32-8|l<<8,h=h+l|0,P^=h,P=P>>>32-7|P<<7,j=j+m|0,o^=j,o=o>>>32-8|o<<8,C=C+o|0,m^=C,m=m>>>32-7|m<<7,j=j+P|0,_^=j,_=_>>>32-16|_<<16,u=u+_|0,P^=u,P=P>>>32-12|P<<12,F=F+Y|0,o^=F,o=o>>>32-16|o<<16,a=a+o|0,Y^=a,Y=Y>>>32-12|Y<<12,U=U+Q|0,l^=U,l=l>>>32-16|l<<16,C=C+l|0,Q^=C,Q=Q>>>32-12|Q<<12,L=L+m|0,w^=L,w=w>>>32-16|w<<16,h=h+w|0,m^=h,m=m>>>32-12|m<<12,U=U+Q|0,l^=U,l=l>>>32-8|l<<8,C=C+l|0,Q^=C,Q=Q>>>32-7|Q<<7,L=L+m|0,w^=L,w=w>>>32-8|w<<8,h=h+w|0,m^=h,m=m>>>32-7|m<<7,F=F+Y|0,o^=F,o=o>>>32-8|o<<8,a=a+o|0,Y^=a,Y=Y>>>32-7|Y<<7,j=j+P|0,_^=j,_=_>>>32-8|_<<8,u=u+_|0,P^=u,P=P>>>32-7|P<<7;lt.writeUint32LE(j+i|0,t,0),lt.writeUint32LE(F+f|0,t,4),lt.writeUint32LE(U+n|0,t,8),lt.writeUint32LE(L+d|0,t,12),lt.writeUint32LE(m+c|0,t,16),lt.writeUint32LE(P+y|0,t,20),lt.writeUint32LE(Y+A|0,t,24),lt.writeUint32LE(Q+x|0,t,28),lt.writeUint32LE(C+E|0,t,32),lt.writeUint32LE(h+N|0,t,36),lt.writeUint32LE(u+D|0,t,40),lt.writeUint32LE(a+I|0,t,44),lt.writeUint32LE(o+q|0,t,48),lt.writeUint32LE(l+H|0,t,52),lt.writeUint32LE(w+V|0,t,56),lt.writeUint32LE(_+z|0,t,60)}function wo(t,e,r,i,f){if(f===void 0&&(f=0),t.length!==32)throw new Error("ChaCha: key size must be 32 bytes");if(i.length>>=8,e++;if(i>0)throw new Error("ChaCha: counter overflow")}var Ao={},gr={};Object.defineProperty(gr,"__esModule",{value:!0});function Wl(t,e,r){return~(t-1)&e|t-1&r}gr.select=Wl;function Ql(t,e){return(t|0)-(e|0)-1>>>31&1}gr.lessOrEqual=Ql;function xo(t,e){if(t.length!==e.length)return 0;for(var r=0,i=0;i>>8}gr.compare=xo;function Xl(t,e){return t.length===0||e.length===0?!1:xo(t,e)!==0}gr.equal=Xl,function(t){Object.defineProperty(t,"__esModule",{value:!0});var e=gr,r=Et;t.DIGEST_LENGTH=16;var i=function(){function d(c){this.digestLength=t.DIGEST_LENGTH,this._buffer=new Uint8Array(16),this._r=new Uint16Array(10),this._h=new Uint16Array(10),this._pad=new Uint16Array(8),this._leftover=0,this._fin=0,this._finished=!1;var y=c[0]|c[1]<<8;this._r[0]=y&8191;var A=c[2]|c[3]<<8;this._r[1]=(y>>>13|A<<3)&8191;var x=c[4]|c[5]<<8;this._r[2]=(A>>>10|x<<6)&7939;var E=c[6]|c[7]<<8;this._r[3]=(x>>>7|E<<9)&8191;var N=c[8]|c[9]<<8;this._r[4]=(E>>>4|N<<12)&255,this._r[5]=N>>>1&8190;var D=c[10]|c[11]<<8;this._r[6]=(N>>>14|D<<2)&8191;var I=c[12]|c[13]<<8;this._r[7]=(D>>>11|I<<5)&8065;var q=c[14]|c[15]<<8;this._r[8]=(I>>>8|q<<8)&8191,this._r[9]=q>>>5&127,this._pad[0]=c[16]|c[17]<<8,this._pad[1]=c[18]|c[19]<<8,this._pad[2]=c[20]|c[21]<<8,this._pad[3]=c[22]|c[23]<<8,this._pad[4]=c[24]|c[25]<<8,this._pad[5]=c[26]|c[27]<<8,this._pad[6]=c[28]|c[29]<<8,this._pad[7]=c[30]|c[31]<<8}return d.prototype._blocks=function(c,y,A){for(var x=this._fin?0:2048,E=this._h[0],N=this._h[1],D=this._h[2],I=this._h[3],q=this._h[4],H=this._h[5],V=this._h[6],z=this._h[7],j=this._h[8],F=this._h[9],U=this._r[0],L=this._r[1],m=this._r[2],P=this._r[3],Y=this._r[4],Q=this._r[5],C=this._r[6],h=this._r[7],u=this._r[8],a=this._r[9];A>=16;){var o=c[y+0]|c[y+1]<<8;E+=o&8191;var l=c[y+2]|c[y+3]<<8;N+=(o>>>13|l<<3)&8191;var w=c[y+4]|c[y+5]<<8;D+=(l>>>10|w<<6)&8191;var _=c[y+6]|c[y+7]<<8;I+=(w>>>7|_<<9)&8191;var g=c[y+8]|c[y+9]<<8;q+=(_>>>4|g<<12)&8191,H+=g>>>1&8191;var s=c[y+10]|c[y+11]<<8;V+=(g>>>14|s<<2)&8191;var p=c[y+12]|c[y+13]<<8;z+=(s>>>11|p<<5)&8191;var b=c[y+14]|c[y+15]<<8;j+=(p>>>8|b<<8)&8191,F+=b>>>5|x;var S=0,G=S;G+=E*U,G+=N*(5*a),G+=D*(5*u),G+=I*(5*h),G+=q*(5*C),S=G>>>13,G&=8191,G+=H*(5*Q),G+=V*(5*Y),G+=z*(5*P),G+=j*(5*m),G+=F*(5*L),S+=G>>>13,G&=8191;var M=S;M+=E*L,M+=N*U,M+=D*(5*a),M+=I*(5*u),M+=q*(5*h),S=M>>>13,M&=8191,M+=H*(5*C),M+=V*(5*Q),M+=z*(5*Y),M+=j*(5*P),M+=F*(5*m),S+=M>>>13,M&=8191;var k=S;k+=E*m,k+=N*L,k+=D*U,k+=I*(5*a),k+=q*(5*u),S=k>>>13,k&=8191,k+=H*(5*h),k+=V*(5*C),k+=z*(5*Q),k+=j*(5*Y),k+=F*(5*P),S+=k>>>13,k&=8191;var B=S;B+=E*P,B+=N*m,B+=D*L,B+=I*U,B+=q*(5*a),S=B>>>13,B&=8191,B+=H*(5*u),B+=V*(5*h),B+=z*(5*C),B+=j*(5*Q),B+=F*(5*Y),S+=B>>>13,B&=8191;var T=S;T+=E*Y,T+=N*P,T+=D*m,T+=I*L,T+=q*U,S=T>>>13,T&=8191,T+=H*(5*a),T+=V*(5*u),T+=z*(5*h),T+=j*(5*C),T+=F*(5*Q),S+=T>>>13,T&=8191;var O=S;O+=E*Q,O+=N*Y,O+=D*P,O+=I*m,O+=q*L,S=O>>>13,O&=8191,O+=H*U,O+=V*(5*a),O+=z*(5*u),O+=j*(5*h),O+=F*(5*C),S+=O>>>13,O&=8191;var v=S;v+=E*C,v+=N*Q,v+=D*Y,v+=I*P,v+=q*m,S=v>>>13,v&=8191,v+=H*L,v+=V*U,v+=z*(5*a),v+=j*(5*u),v+=F*(5*h),S+=v>>>13,v&=8191;var R=S;R+=E*h,R+=N*C,R+=D*Q,R+=I*Y,R+=q*P,S=R>>>13,R&=8191,R+=H*m,R+=V*L,R+=z*U,R+=j*(5*a),R+=F*(5*u),S+=R>>>13,R&=8191;var $=S;$+=E*u,$+=N*h,$+=D*C,$+=I*Q,$+=q*Y,S=$>>>13,$&=8191,$+=H*P,$+=V*m,$+=z*L,$+=j*U,$+=F*(5*a),S+=$>>>13,$&=8191;var J=S;J+=E*a,J+=N*u,J+=D*h,J+=I*C,J+=q*Q,S=J>>>13,J&=8191,J+=H*Y,J+=V*P,J+=z*m,J+=j*L,J+=F*U,S+=J>>>13,J&=8191,S=(S<<2)+S|0,S=S+G|0,G=S&8191,S=S>>>13,M+=S,E=G,N=M,D=k,I=B,q=T,H=O,V=v,z=R,j=$,F=J,y+=16,A-=16}this._h[0]=E,this._h[1]=N,this._h[2]=D,this._h[3]=I,this._h[4]=q,this._h[5]=H,this._h[6]=V,this._h[7]=z,this._h[8]=j,this._h[9]=F},d.prototype.finish=function(c,y){y===void 0&&(y=0);var A=new Uint16Array(10),x,E,N,D;if(this._leftover){for(D=this._leftover,this._buffer[D++]=1;D<16;D++)this._buffer[D]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(x=this._h[1]>>>13,this._h[1]&=8191,D=2;D<10;D++)this._h[D]+=x,x=this._h[D]>>>13,this._h[D]&=8191;for(this._h[0]+=x*5,x=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=x,x=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=x,A[0]=this._h[0]+5,x=A[0]>>>13,A[0]&=8191,D=1;D<10;D++)A[D]=this._h[D]+x,x=A[D]>>>13,A[D]&=8191;for(A[9]-=8192,E=(x^1)-1,D=0;D<10;D++)A[D]&=E;for(E=~E,D=0;D<10;D++)this._h[D]=this._h[D]&E|A[D];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,N=this._h[0]+this._pad[0],this._h[0]=N&65535,D=1;D<8;D++)N=(this._h[D]+this._pad[D]|0)+(N>>>16)|0,this._h[D]=N&65535;return c[y+0]=this._h[0]>>>0,c[y+1]=this._h[0]>>>8,c[y+2]=this._h[1]>>>0,c[y+3]=this._h[1]>>>8,c[y+4]=this._h[2]>>>0,c[y+5]=this._h[2]>>>8,c[y+6]=this._h[3]>>>0,c[y+7]=this._h[3]>>>8,c[y+8]=this._h[4]>>>0,c[y+9]=this._h[4]>>>8,c[y+10]=this._h[5]>>>0,c[y+11]=this._h[5]>>>8,c[y+12]=this._h[6]>>>0,c[y+13]=this._h[6]>>>8,c[y+14]=this._h[7]>>>0,c[y+15]=this._h[7]>>>8,this._finished=!0,this},d.prototype.update=function(c){var y=0,A=c.length,x;if(this._leftover){x=16-this._leftover,x>A&&(x=A);for(var E=0;E=16&&(x=A-A%16,this._blocks(c,y,x),y+=x,A-=x),A){for(var E=0;E16)throw new Error("ChaCha20Poly1305: incorrect nonce length");var D=new Uint8Array(16);D.set(A,D.length-A.length);var I=new Uint8Array(32);e.stream(this._key,D,I,4);var q=x.length+this.tagLength,H;if(N){if(N.length!==q)throw new Error("ChaCha20Poly1305: incorrect destination length");H=N}else H=new Uint8Array(q);return e.streamXOR(this._key,D,x,H,4),this._authenticate(H.subarray(H.length-this.tagLength,H.length),I,H.subarray(0,H.length-this.tagLength),E),i.wipe(D),H},y.prototype.open=function(A,x,E,N){if(A.length>16)throw new Error("ChaCha20Poly1305: incorrect nonce length");if(x.length0&&D.update(d.subarray(N.length%16))),D.update(E),E.length%16>0&&D.update(d.subarray(E.length%16));var I=new Uint8Array(8);N&&f.writeUint64LE(N.length,I),D.update(I),f.writeUint64LE(E.length,I),D.update(I);for(var q=D.digest(),H=0;Hthis.blockSize?this._inner.update(r).finish(i).clean():i.set(r);for(var f=0;f1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0},t.prototype.expand=function(e){for(var r=new Uint8Array(e),i=0;i256)throw new Error("randomString charset is too long");let N="";const D=x.length,I=256-256%D;for(;A>0;){const q=f(Math.ceil(A*256/I),E);for(let H=0;H0;H++){const V=q[H];V0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._temp,this._state,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%64<56?64:128;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._state.set(y.state),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.state),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA256=i;var f=new Int32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(c,y,A,x,E){for(;E>=64;){for(var N=y[0],D=y[1],I=y[2],q=y[3],H=y[4],V=y[5],z=y[6],j=y[7],F=0;F<16;F++){var U=x+F*4;c[F]=e.readUint32BE(A,U)}for(var F=16;F<64;F++){var L=c[F-2],m=(L>>>17|L<<32-17)^(L>>>19|L<<32-19)^L>>>10;L=c[F-15];var P=(L>>>7|L<<32-7)^(L>>>18|L<<32-18)^L>>>3;c[F]=(m+c[F-7]|0)+(P+c[F-16]|0)}for(var F=0;F<64;F++){var m=(((H>>>6|H<<26)^(H>>>11|H<<21)^(H>>>25|H<<7))+(H&V^~H&z)|0)+(j+(f[F]+c[F]|0)|0)|0,P=((N>>>2|N<<32-2)^(N>>>13|N<<32-13)^(N>>>22|N<<32-22))+(N&D^N&I^D&I)|0;j=z,z=V,V=H,H=q+m|0,q=I,I=D,D=N,N=m+P|0}y[0]+=N,y[1]+=D,y[2]+=I,y[3]+=q,y[4]+=H,y[5]+=V,y[6]+=z,y[7]+=j,x+=64,E-=64}return x}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(Oi);var Of={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.sharedKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.scalarMultBase=t.scalarMult=t.SHARED_KEY_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=void 0;const e=Br,r=Et;t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=32,t.SHARED_KEY_LENGTH=32;function i(F){const U=new Float64Array(16);if(F)for(let L=0;L>16&1),L[Q-1]&=65535;L[15]=m[15]-32767-(L[14]>>16&1);const Y=L[15]>>16&1;L[14]&=65535,c(m,L,1-Y)}for(let P=0;P<16;P++)F[2*P]=m[P]&255,F[2*P+1]=m[P]>>8}function A(F,U){for(let L=0;L<16;L++)F[L]=U[2*L]+(U[2*L+1]<<8);F[15]&=32767}function x(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]+L[m]}function E(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]-L[m]}function N(F,U,L){let m,P,Y=0,Q=0,C=0,h=0,u=0,a=0,o=0,l=0,w=0,_=0,g=0,s=0,p=0,b=0,S=0,G=0,M=0,k=0,B=0,T=0,O=0,v=0,R=0,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=L[0],te=L[1],se=L[2],oe=L[3],ee=L[4],ae=L[5],ne=L[6],Z=L[7],ve=L[8],me=L[9],re=L[10],ge=L[11],we=L[12],ie=L[13],Ae=L[14],xe=L[15];m=U[0],Y+=m*pe,Q+=m*te,C+=m*se,h+=m*oe,u+=m*ee,a+=m*ae,o+=m*ne,l+=m*Z,w+=m*ve,_+=m*me,g+=m*re,s+=m*ge,p+=m*we,b+=m*ie,S+=m*Ae,G+=m*xe,m=U[1],Q+=m*pe,C+=m*te,h+=m*se,u+=m*oe,a+=m*ee,o+=m*ae,l+=m*ne,w+=m*Z,_+=m*ve,g+=m*me,s+=m*re,p+=m*ge,b+=m*we,S+=m*ie,G+=m*Ae,M+=m*xe,m=U[2],C+=m*pe,h+=m*te,u+=m*se,a+=m*oe,o+=m*ee,l+=m*ae,w+=m*ne,_+=m*Z,g+=m*ve,s+=m*me,p+=m*re,b+=m*ge,S+=m*we,G+=m*ie,M+=m*Ae,k+=m*xe,m=U[3],h+=m*pe,u+=m*te,a+=m*se,o+=m*oe,l+=m*ee,w+=m*ae,_+=m*ne,g+=m*Z,s+=m*ve,p+=m*me,b+=m*re,S+=m*ge,G+=m*we,M+=m*ie,k+=m*Ae,B+=m*xe,m=U[4],u+=m*pe,a+=m*te,o+=m*se,l+=m*oe,w+=m*ee,_+=m*ae,g+=m*ne,s+=m*Z,p+=m*ve,b+=m*me,S+=m*re,G+=m*ge,M+=m*we,k+=m*ie,B+=m*Ae,T+=m*xe,m=U[5],a+=m*pe,o+=m*te,l+=m*se,w+=m*oe,_+=m*ee,g+=m*ae,s+=m*ne,p+=m*Z,b+=m*ve,S+=m*me,G+=m*re,M+=m*ge,k+=m*we,B+=m*ie,T+=m*Ae,O+=m*xe,m=U[6],o+=m*pe,l+=m*te,w+=m*se,_+=m*oe,g+=m*ee,s+=m*ae,p+=m*ne,b+=m*Z,S+=m*ve,G+=m*me,M+=m*re,k+=m*ge,B+=m*we,T+=m*ie,O+=m*Ae,v+=m*xe,m=U[7],l+=m*pe,w+=m*te,_+=m*se,g+=m*oe,s+=m*ee,p+=m*ae,b+=m*ne,S+=m*Z,G+=m*ve,M+=m*me,k+=m*re,B+=m*ge,T+=m*we,O+=m*ie,v+=m*Ae,R+=m*xe,m=U[8],w+=m*pe,_+=m*te,g+=m*se,s+=m*oe,p+=m*ee,b+=m*ae,S+=m*ne,G+=m*Z,M+=m*ve,k+=m*me,B+=m*re,T+=m*ge,O+=m*we,v+=m*ie,R+=m*Ae,$+=m*xe,m=U[9],_+=m*pe,g+=m*te,s+=m*se,p+=m*oe,b+=m*ee,S+=m*ae,G+=m*ne,M+=m*Z,k+=m*ve,B+=m*me,T+=m*re,O+=m*ge,v+=m*we,R+=m*ie,$+=m*Ae,J+=m*xe,m=U[10],g+=m*pe,s+=m*te,p+=m*se,b+=m*oe,S+=m*ee,G+=m*ae,M+=m*ne,k+=m*Z,B+=m*ve,T+=m*me,O+=m*re,v+=m*ge,R+=m*we,$+=m*ie,J+=m*Ae,W+=m*xe,m=U[11],s+=m*pe,p+=m*te,b+=m*se,S+=m*oe,G+=m*ee,M+=m*ae,k+=m*ne,B+=m*Z,T+=m*ve,O+=m*me,v+=m*re,R+=m*ge,$+=m*we,J+=m*ie,W+=m*Ae,X+=m*xe,m=U[12],p+=m*pe,b+=m*te,S+=m*se,G+=m*oe,M+=m*ee,k+=m*ae,B+=m*ne,T+=m*Z,O+=m*ve,v+=m*me,R+=m*re,$+=m*ge,J+=m*we,W+=m*ie,X+=m*Ae,be+=m*xe,m=U[13],b+=m*pe,S+=m*te,G+=m*se,M+=m*oe,k+=m*ee,B+=m*ae,T+=m*ne,O+=m*Z,v+=m*ve,R+=m*me,$+=m*re,J+=m*ge,W+=m*we,X+=m*ie,be+=m*Ae,ye+=m*xe,m=U[14],S+=m*pe,G+=m*te,M+=m*se,k+=m*oe,B+=m*ee,T+=m*ae,O+=m*ne,v+=m*Z,R+=m*ve,$+=m*me,J+=m*re,W+=m*ge,X+=m*we,be+=m*ie,ye+=m*Ae,fe+=m*xe,m=U[15],G+=m*pe,M+=m*te,k+=m*se,B+=m*oe,T+=m*ee,O+=m*ae,v+=m*ne,R+=m*Z,$+=m*ve,J+=m*me,W+=m*re,X+=m*ge,be+=m*we,ye+=m*ie,fe+=m*Ae,Ee+=m*xe,Y+=38*M,Q+=38*k,C+=38*B,h+=38*T,u+=38*O,a+=38*v,o+=38*R,l+=38*$,w+=38*J,_+=38*W,g+=38*X,s+=38*be,p+=38*ye,b+=38*fe,S+=38*Ee,P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),F[0]=Y,F[1]=Q,F[2]=C,F[3]=h,F[4]=u,F[5]=a,F[6]=o,F[7]=l,F[8]=w,F[9]=_,F[10]=g,F[11]=s,F[12]=p,F[13]=b,F[14]=S,F[15]=G}function D(F,U){N(F,U,U)}function I(F,U){const L=i();for(let m=0;m<16;m++)L[m]=U[m];for(let m=253;m>=0;m--)D(L,L),m!==2&&m!==4&&N(L,L,U);for(let m=0;m<16;m++)F[m]=L[m]}function q(F,U){const L=new Uint8Array(32),m=new Float64Array(80),P=i(),Y=i(),Q=i(),C=i(),h=i(),u=i();for(let w=0;w<31;w++)L[w]=F[w];L[31]=F[31]&127|64,L[0]&=248,A(m,U);for(let w=0;w<16;w++)Y[w]=m[w];P[0]=C[0]=1;for(let w=254;w>=0;--w){const _=L[w>>>3]>>>(w&7)&1;c(P,Y,_),c(Q,C,_),x(h,P,Q),E(P,P,Q),x(Q,Y,C),E(Y,Y,C),D(C,h),D(u,P),N(P,Q,P),N(Q,Y,h),x(h,P,Q),E(P,P,Q),D(Y,P),E(Q,C,u),N(P,Q,n),x(P,P,C),N(Q,Q,P),N(P,C,u),N(C,Y,m),D(Y,h),c(P,Y,_),c(Q,C,_)}for(let w=0;w<16;w++)m[w+16]=P[w],m[w+32]=Q[w],m[w+48]=Y[w],m[w+64]=C[w];const a=m.subarray(32),o=m.subarray(16);I(a,a),N(o,o,a);const l=new Uint8Array(32);return y(l,o),l}t.scalarMult=q;function H(F){return q(F,f)}t.scalarMultBase=H;function V(F){if(F.length!==t.SECRET_KEY_LENGTH)throw new Error(`x25519: seed must be ${t.SECRET_KEY_LENGTH} bytes`);const U=new Uint8Array(F);return{publicKey:H(U),secretKey:U}}t.generateKeyPairFromSeed=V;function z(F){const U=(0,e.randomBytes)(32,F),L=V(U);return(0,r.wipe)(U),L}t.generateKeyPair=z;function j(F,U,L=!1){if(F.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect secret key length");if(U.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect public key length");const m=q(F,U);if(L){let P=0;for(let Y=0;Yf+n.length,0));const r=Io(e);let i=0;for(const f of t)r.set(f,i),i+=f.length;return r}function d1(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),i=0;i>>0,F=new Uint8Array(j);V!==z;){for(var U=I[V],L=0,m=j-1;(U!==0||L>>0,F[m]=U%c>>>0,U=U/c>>>0;if(U!==0)throw new Error("Non-zero carry");H=L,V++}for(var P=j-H;P!==j&&F[P]===0;)P++;for(var Y=y.repeat(q);P>>0,j=new Uint8Array(z);I[q];){var F=r[I.charCodeAt(q)];if(F===255)return;for(var U=0,L=z-1;(F!==0||U>>0,j[L]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");V=U,q++}if(I[q]!==" "){for(var m=z-V;m!==z&&j[m]===0;)m++;for(var P=new Uint8Array(H+(z-m)),Y=H;m!==z;)P[Y++]=j[m++];return P}}}function D(I){var q=N(I);if(q)return q;throw new Error(`Non-${e} character`)}return{encode:E,decodeUnsafe:N,decode:D}}var l1=d1,b1=l1;const No=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},v1=t=>new TextEncoder().encode(t),p1=t=>new TextDecoder().decode(t);class m1{constructor(e,r,i){this.name=e,this.prefix=r,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class g1{constructor(e,r,i){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Co(this,e)}}class y1{constructor(e){this.decoders=e}or(e){return Co(this,e)}decode(e){const r=e[0],i=this.decoders[r];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Co=(t,e)=>new y1({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class w1{constructor(e,r,i,f){this.name=e,this.prefix=r,this.baseEncode=i,this.baseDecode=f,this.encoder=new m1(e,r,i),this.decoder=new g1(e,r,f)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const bn=({name:t,prefix:e,encode:r,decode:i})=>new w1(t,e,r,i),Ri=({prefix:t,name:e,alphabet:r})=>{const{encode:i,decode:f}=b1(r,e);return bn({prefix:t,name:e,encode:i,decode:n=>No(f(n))})},A1=(t,e,r,i)=>{const f={};for(let x=0;x=8&&(c-=8,d[A++]=255&y>>c)}if(c>=r||255&y<<8-c)throw new SyntaxError("Unexpected end of data");return d},x1=(t,e,r)=>{const i=e[e.length-1]==="=",f=(1<r;)d-=r,n+=e[f&c>>d];if(d&&(n+=e[f&c<bn({prefix:e,name:t,encode(f){return x1(f,i,r)},decode(f){return A1(f,i,r,t)}}),_1=bn({prefix:"\0",name:"identity",encode:t=>p1(t),decode:t=>v1(t)});var M1=Object.freeze({__proto__:null,identity:_1});const E1=ht({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var S1=Object.freeze({__proto__:null,base2:E1});const D1=ht({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var I1=Object.freeze({__proto__:null,base8:D1});const N1=Ri({prefix:"9",name:"base10",alphabet:"0123456789"});var C1=Object.freeze({__proto__:null,base10:N1});const B1=ht({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),O1=ht({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var R1=Object.freeze({__proto__:null,base16:B1,base16upper:O1});const P1=ht({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),T1=ht({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),F1=ht({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),U1=ht({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),L1=ht({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),q1=ht({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),z1=ht({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),k1=ht({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),H1=ht({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var K1=Object.freeze({__proto__:null,base32:P1,base32upper:T1,base32pad:F1,base32padupper:U1,base32hex:L1,base32hexupper:q1,base32hexpad:z1,base32hexpadupper:k1,base32z:H1});const j1=Ri({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),$1=Ri({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var V1=Object.freeze({__proto__:null,base36:j1,base36upper:$1});const G1=Ri({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Y1=Ri({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var J1=Object.freeze({__proto__:null,base58btc:G1,base58flickr:Y1});const W1=ht({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Q1=ht({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),X1=ht({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Z1=ht({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var e2=Object.freeze({__proto__:null,base64:W1,base64pad:Q1,base64url:X1,base64urlpad:Z1});const Bo=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),t2=Bo.reduce((t,e,r)=>(t[r]=e,t),[]),r2=Bo.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function i2(t){return t.reduce((e,r)=>(e+=t2[r],e),"")}function n2(t){const e=[];for(const r of t){const i=r2[r.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(i)}return new Uint8Array(e)}const f2=bn({prefix:"\u{1F680}",name:"base256emoji",encode:i2,decode:n2});var a2=Object.freeze({__proto__:null,base256emoji:f2}),o2=Ro,Oo=128,s2=127,u2=~s2,h2=Math.pow(2,31);function Ro(t,e,r){e=e||[],r=r||0;for(var i=r;t>=h2;)e[r++]=t&255|Oo,t/=128;for(;t&u2;)e[r++]=t&255|Oo,t>>>=7;return e[r]=t|0,Ro.bytes=r-i+1,e}var c2=Pf,d2=128,Po=127;function Pf(t,i){var r=0,i=i||0,f=0,n=i,d,c=t.length;do{if(n>=c)throw Pf.bytes=0,new RangeError("Could not decode varint");d=t[n++],r+=f<28?(d&Po)<=d2);return Pf.bytes=n-i,r}var l2=Math.pow(2,7),b2=Math.pow(2,14),v2=Math.pow(2,21),p2=Math.pow(2,28),m2=Math.pow(2,35),g2=Math.pow(2,42),y2=Math.pow(2,49),w2=Math.pow(2,56),A2=Math.pow(2,63),x2=function(t){return t(To.encode(t,e,r),e),Uo=t=>To.encodingLength(t),Tf=(t,e)=>{const r=e.byteLength,i=Uo(t),f=i+Uo(r),n=new Uint8Array(f+r);return Fo(t,n,0),Fo(r,n,i),n.set(e,f),new M2(t,r,e,n)};class M2{constructor(e,r,i,f){this.code=e,this.size=r,this.digest=i,this.bytes=f}}const Lo=({name:t,code:e,encode:r})=>new E2(t,e,r);class E2{constructor(e,r,i){this.name=e,this.code=r,this.encode=i}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?Tf(this.code,r):r.then(i=>Tf(this.code,i))}else throw Error("Unknown type, must be binary type")}}const qo=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),S2=Lo({name:"sha2-256",code:18,encode:qo("SHA-256")}),D2=Lo({name:"sha2-512",code:19,encode:qo("SHA-512")});var I2=Object.freeze({__proto__:null,sha256:S2,sha512:D2});const zo=0,N2="identity",ko=No;var C2=Object.freeze({__proto__:null,identity:{code:zo,name:N2,encode:ko,digest:t=>Tf(zo,ko(t))}});new TextEncoder,new TextDecoder;const vn={...M1,...S1,...I1,...C1,...R1,...K1,...V1,...J1,...e2,...a2};({...I2,...C2});function Ho(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const Ko=Ho("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ff=Ho("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=Io(t.length);for(let r=0;r",z2="MIT",k2={url:"https://github.com/indutny/elliptic/issues"},H2="https://github.com/indutny/elliptic",K2={brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},j2={"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},$2={name:B2,version:O2,description:R2,main:P2,files:T2,scripts:F2,repository:U2,keywords:L2,author:q2,license:z2,bugs:k2,homepage:H2,devDependencies:K2,dependencies:j2},Dt={},ir={exports:{}};(function(t){(function(e,r){function i(C,h){if(!C)throw new Error(h||"Assertion failed")}function f(C,h){C.super_=h;var u=function(){};u.prototype=h.prototype,C.prototype=new u,C.prototype.constructor=C}function n(C,h,u){if(n.isBN(C))return C;this.negative=0,this.words=null,this.length=0,this.red=null,C!==null&&((h==="le"||h==="be")&&(u=h,h=10),this._init(C||0,h||10,u||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(h){return h instanceof n?!0:h!==null&&typeof h=="object"&&h.constructor.wordSize===n.wordSize&&Array.isArray(h.words)},n.max=function(h,u){return h.cmp(u)>0?h:u},n.min=function(h,u){return h.cmp(u)<0?h:u},n.prototype._init=function(h,u,a){if(typeof h=="number")return this._initNumber(h,u,a);if(typeof h=="object")return this._initArray(h,u,a);u==="hex"&&(u=16),i(u===(u|0)&&u>=2&&u<=36),h=h.toString().replace(/\s+/g,"");var o=0;h[0]==="-"&&(o++,this.negative=1),o=0;o-=3)w=h[o]|h[o-1]<<8|h[o-2]<<16,this.words[l]|=w<<_&67108863,this.words[l+1]=w>>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);else if(a==="le")for(o=0,l=0;o>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);return this.strip()};function c(C,h){var u=C.charCodeAt(h);return u>=65&&u<=70?u-55:u>=97&&u<=102?u-87:u-48&15}function y(C,h,u){var a=c(C,u);return u-1>=h&&(a|=c(C,u-1)<<4),a}n.prototype._parseHex=function(h,u,a){this.length=Math.ceil((h.length-u)/6),this.words=new Array(this.length);for(var o=0;o=u;o-=2)_=y(h,u,o)<=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8;else{var g=h.length-u;for(o=g%2===0?u+1:u;o=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8}this.strip()};function A(C,h,u,a){for(var o=0,l=Math.min(C.length,u),w=h;w=49?o+=_-49+10:_>=17?o+=_-17+10:o+=_}return o}n.prototype._parseBase=function(h,u,a){this.words=[0],this.length=1;for(var o=0,l=1;l<=67108863;l*=u)o++;o--,l=l/u|0;for(var w=h.length-a,_=w%o,g=Math.min(w,w-_)+a,s=0,p=a;p1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var x=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],E=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(h,u){h=h||10,u=u|0||1;var a;if(h===16||h==="hex"){a="";for(var o=0,l=0,w=0;w>>24-o&16777215,l!==0||w!==this.length-1?a=x[6-g.length]+g+a:a=g+a,o+=2,o>=26&&(o-=26,w--)}for(l!==0&&(a=l.toString(16)+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}if(h===(h|0)&&h>=2&&h<=36){var s=E[h],p=N[h];a="";var b=this.clone();for(b.negative=0;!b.isZero();){var S=b.modn(p).toString(h);b=b.idivn(p),b.isZero()?a=S+a:a=x[s-S.length]+S+a}for(this.isZero()&&(a="0"+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var h=this.words[0];return this.length===2?h+=this.words[1]*67108864:this.length===3&&this.words[2]===1?h+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-h:h},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(h,u){return i(typeof d<"u"),this.toArrayLike(d,h,u)},n.prototype.toArray=function(h,u){return this.toArrayLike(Array,h,u)},n.prototype.toArrayLike=function(h,u,a){var o=this.byteLength(),l=a||Math.max(1,o);i(o<=l,"byte array longer than desired length"),i(l>0,"Requested array length <= 0"),this.strip();var w=u==="le",_=new h(l),g,s,p=this.clone();if(w){for(s=0;!p.isZero();s++)g=p.andln(255),p.iushrn(8),_[s]=g;for(;s=4096&&(a+=13,u>>>=13),u>=64&&(a+=7,u>>>=7),u>=8&&(a+=4,u>>>=4),u>=2&&(a+=2,u>>>=2),a+u},n.prototype._zeroBits=function(h){if(h===0)return 26;var u=h,a=0;return u&8191||(a+=13,u>>>=13),u&127||(a+=7,u>>>=7),u&15||(a+=4,u>>>=4),u&3||(a+=2,u>>>=2),u&1||a++,a},n.prototype.bitLength=function(){var h=this.words[this.length-1],u=this._countBits(h);return(this.length-1)*26+u};function D(C){for(var h=new Array(C.bitLength()),u=0;u>>o}return h}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var h=0,u=0;uh.length?this.clone().ior(h):h.clone().ior(this)},n.prototype.uor=function(h){return this.length>h.length?this.clone().iuor(h):h.clone().iuor(this)},n.prototype.iuand=function(h){var u;this.length>h.length?u=h:u=this;for(var a=0;ah.length?this.clone().iand(h):h.clone().iand(this)},n.prototype.uand=function(h){return this.length>h.length?this.clone().iuand(h):h.clone().iuand(this)},n.prototype.iuxor=function(h){var u,a;this.length>h.length?(u=this,a=h):(u=h,a=this);for(var o=0;oh.length?this.clone().ixor(h):h.clone().ixor(this)},n.prototype.uxor=function(h){return this.length>h.length?this.clone().iuxor(h):h.clone().iuxor(this)},n.prototype.inotn=function(h){i(typeof h=="number"&&h>=0);var u=Math.ceil(h/26)|0,a=h%26;this._expand(u),a>0&&u--;for(var o=0;o0&&(this.words[o]=~this.words[o]&67108863>>26-a),this.strip()},n.prototype.notn=function(h){return this.clone().inotn(h)},n.prototype.setn=function(h,u){i(typeof h=="number"&&h>=0);var a=h/26|0,o=h%26;return this._expand(a+1),u?this.words[a]=this.words[a]|1<h.length?(a=this,o=h):(a=h,o=this);for(var l=0,w=0;w>>26;for(;l!==0&&w>>26;if(this.length=a.length,l!==0)this.words[this.length]=l,this.length++;else if(a!==this)for(;wh.length?this.clone().iadd(h):h.clone().iadd(this)},n.prototype.isub=function(h){if(h.negative!==0){h.negative=0;var u=this.iadd(h);return h.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(h),this.negative=1,this._normSign();var a=this.cmp(h);if(a===0)return this.negative=0,this.length=1,this.words[0]=0,this;var o,l;a>0?(o=this,l=h):(o=h,l=this);for(var w=0,_=0;_>26,this.words[_]=u&67108863;for(;w!==0&&_>26,this.words[_]=u&67108863;if(w===0&&_>>26,b=g&67108863,S=Math.min(s,h.length-1),G=Math.max(0,s-C.length+1);G<=S;G++){var M=s-G|0;o=C.words[M]|0,l=h.words[G]|0,w=o*l+b,p+=w/67108864|0,b=w&67108863}u.words[s]=b|0,g=p|0}return g!==0?u.words[s]=g|0:u.length--,u.strip()}var q=function(h,u,a){var o=h.words,l=u.words,w=a.words,_=0,g,s,p,b=o[0]|0,S=b&8191,G=b>>>13,M=o[1]|0,k=M&8191,B=M>>>13,T=o[2]|0,O=T&8191,v=T>>>13,R=o[3]|0,$=R&8191,J=R>>>13,W=o[4]|0,X=W&8191,be=W>>>13,ye=o[5]|0,fe=ye&8191,Ee=ye>>>13,pe=o[6]|0,te=pe&8191,se=pe>>>13,oe=o[7]|0,ee=oe&8191,ae=oe>>>13,ne=o[8]|0,Z=ne&8191,ve=ne>>>13,me=o[9]|0,re=me&8191,ge=me>>>13,we=l[0]|0,ie=we&8191,Ae=we>>>13,xe=l[1]|0,_e=xe&8191,je=xe>>>13,$e=l[2]|0,Me=$e&8191,Ve=$e>>>13,Ge=l[3]|0,Se=Ge&8191,Ie=Ge>>>13,Ne=l[4]|0,ue=Ne&8191,Ce=Ne>>>13,Be=l[5]|0,he=Be&8191,Oe=Be>>>13,Re=l[6]|0,ce=Re&8191,Pe=Re>>>13,Te=l[7]|0,de=Te&8191,Fe=Te>>>13,Ue=l[8]|0,le=Ue&8191,Le=Ue>>>13,We=l[9]|0,De=We&8191,Qe=We>>>13;a.negative=h.negative^u.negative,a.length=19,g=Math.imul(S,ie),s=Math.imul(S,Ae),s=s+Math.imul(G,ie)|0,p=Math.imul(G,Ae);var Ye=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,g=Math.imul(k,ie),s=Math.imul(k,Ae),s=s+Math.imul(B,ie)|0,p=Math.imul(B,Ae),g=g+Math.imul(S,_e)|0,s=s+Math.imul(S,je)|0,s=s+Math.imul(G,_e)|0,p=p+Math.imul(G,je)|0;var Je=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Je>>>26)|0,Je&=67108863,g=Math.imul(O,ie),s=Math.imul(O,Ae),s=s+Math.imul(v,ie)|0,p=Math.imul(v,Ae),g=g+Math.imul(k,_e)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(B,_e)|0,p=p+Math.imul(B,je)|0,g=g+Math.imul(S,Me)|0,s=s+Math.imul(S,Ve)|0,s=s+Math.imul(G,Me)|0,p=p+Math.imul(G,Ve)|0;var Ut=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul($,ie),s=Math.imul($,Ae),s=s+Math.imul(J,ie)|0,p=Math.imul(J,Ae),g=g+Math.imul(O,_e)|0,s=s+Math.imul(O,je)|0,s=s+Math.imul(v,_e)|0,p=p+Math.imul(v,je)|0,g=g+Math.imul(k,Me)|0,s=s+Math.imul(k,Ve)|0,s=s+Math.imul(B,Me)|0,p=p+Math.imul(B,Ve)|0,g=g+Math.imul(S,Se)|0,s=s+Math.imul(S,Ie)|0,s=s+Math.imul(G,Se)|0,p=p+Math.imul(G,Ie)|0;var Lt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(X,ie),s=Math.imul(X,Ae),s=s+Math.imul(be,ie)|0,p=Math.imul(be,Ae),g=g+Math.imul($,_e)|0,s=s+Math.imul($,je)|0,s=s+Math.imul(J,_e)|0,p=p+Math.imul(J,je)|0,g=g+Math.imul(O,Me)|0,s=s+Math.imul(O,Ve)|0,s=s+Math.imul(v,Me)|0,p=p+Math.imul(v,Ve)|0,g=g+Math.imul(k,Se)|0,s=s+Math.imul(k,Ie)|0,s=s+Math.imul(B,Se)|0,p=p+Math.imul(B,Ie)|0,g=g+Math.imul(S,ue)|0,s=s+Math.imul(S,Ce)|0,s=s+Math.imul(G,ue)|0,p=p+Math.imul(G,Ce)|0;var qt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(fe,ie),s=Math.imul(fe,Ae),s=s+Math.imul(Ee,ie)|0,p=Math.imul(Ee,Ae),g=g+Math.imul(X,_e)|0,s=s+Math.imul(X,je)|0,s=s+Math.imul(be,_e)|0,p=p+Math.imul(be,je)|0,g=g+Math.imul($,Me)|0,s=s+Math.imul($,Ve)|0,s=s+Math.imul(J,Me)|0,p=p+Math.imul(J,Ve)|0,g=g+Math.imul(O,Se)|0,s=s+Math.imul(O,Ie)|0,s=s+Math.imul(v,Se)|0,p=p+Math.imul(v,Ie)|0,g=g+Math.imul(k,ue)|0,s=s+Math.imul(k,Ce)|0,s=s+Math.imul(B,ue)|0,p=p+Math.imul(B,Ce)|0,g=g+Math.imul(S,he)|0,s=s+Math.imul(S,Oe)|0,s=s+Math.imul(G,he)|0,p=p+Math.imul(G,Oe)|0;var zt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zt>>>26)|0,zt&=67108863,g=Math.imul(te,ie),s=Math.imul(te,Ae),s=s+Math.imul(se,ie)|0,p=Math.imul(se,Ae),g=g+Math.imul(fe,_e)|0,s=s+Math.imul(fe,je)|0,s=s+Math.imul(Ee,_e)|0,p=p+Math.imul(Ee,je)|0,g=g+Math.imul(X,Me)|0,s=s+Math.imul(X,Ve)|0,s=s+Math.imul(be,Me)|0,p=p+Math.imul(be,Ve)|0,g=g+Math.imul($,Se)|0,s=s+Math.imul($,Ie)|0,s=s+Math.imul(J,Se)|0,p=p+Math.imul(J,Ie)|0,g=g+Math.imul(O,ue)|0,s=s+Math.imul(O,Ce)|0,s=s+Math.imul(v,ue)|0,p=p+Math.imul(v,Ce)|0,g=g+Math.imul(k,he)|0,s=s+Math.imul(k,Oe)|0,s=s+Math.imul(B,he)|0,p=p+Math.imul(B,Oe)|0,g=g+Math.imul(S,ce)|0,s=s+Math.imul(S,Pe)|0,s=s+Math.imul(G,ce)|0,p=p+Math.imul(G,Pe)|0;var kt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(ee,ie),s=Math.imul(ee,Ae),s=s+Math.imul(ae,ie)|0,p=Math.imul(ae,Ae),g=g+Math.imul(te,_e)|0,s=s+Math.imul(te,je)|0,s=s+Math.imul(se,_e)|0,p=p+Math.imul(se,je)|0,g=g+Math.imul(fe,Me)|0,s=s+Math.imul(fe,Ve)|0,s=s+Math.imul(Ee,Me)|0,p=p+Math.imul(Ee,Ve)|0,g=g+Math.imul(X,Se)|0,s=s+Math.imul(X,Ie)|0,s=s+Math.imul(be,Se)|0,p=p+Math.imul(be,Ie)|0,g=g+Math.imul($,ue)|0,s=s+Math.imul($,Ce)|0,s=s+Math.imul(J,ue)|0,p=p+Math.imul(J,Ce)|0,g=g+Math.imul(O,he)|0,s=s+Math.imul(O,Oe)|0,s=s+Math.imul(v,he)|0,p=p+Math.imul(v,Oe)|0,g=g+Math.imul(k,ce)|0,s=s+Math.imul(k,Pe)|0,s=s+Math.imul(B,ce)|0,p=p+Math.imul(B,Pe)|0,g=g+Math.imul(S,de)|0,s=s+Math.imul(S,Fe)|0,s=s+Math.imul(G,de)|0,p=p+Math.imul(G,Fe)|0;var qr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qr>>>26)|0,qr&=67108863,g=Math.imul(Z,ie),s=Math.imul(Z,Ae),s=s+Math.imul(ve,ie)|0,p=Math.imul(ve,Ae),g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ae,_e)|0,p=p+Math.imul(ae,je)|0,g=g+Math.imul(te,Me)|0,s=s+Math.imul(te,Ve)|0,s=s+Math.imul(se,Me)|0,p=p+Math.imul(se,Ve)|0,g=g+Math.imul(fe,Se)|0,s=s+Math.imul(fe,Ie)|0,s=s+Math.imul(Ee,Se)|0,p=p+Math.imul(Ee,Ie)|0,g=g+Math.imul(X,ue)|0,s=s+Math.imul(X,Ce)|0,s=s+Math.imul(be,ue)|0,p=p+Math.imul(be,Ce)|0,g=g+Math.imul($,he)|0,s=s+Math.imul($,Oe)|0,s=s+Math.imul(J,he)|0,p=p+Math.imul(J,Oe)|0,g=g+Math.imul(O,ce)|0,s=s+Math.imul(O,Pe)|0,s=s+Math.imul(v,ce)|0,p=p+Math.imul(v,Pe)|0,g=g+Math.imul(k,de)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(B,de)|0,p=p+Math.imul(B,Fe)|0,g=g+Math.imul(S,le)|0,s=s+Math.imul(S,Le)|0,s=s+Math.imul(G,le)|0,p=p+Math.imul(G,Le)|0;var zr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zr>>>26)|0,zr&=67108863,g=Math.imul(re,ie),s=Math.imul(re,Ae),s=s+Math.imul(ge,ie)|0,p=Math.imul(ge,Ae),g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(ve,_e)|0,p=p+Math.imul(ve,je)|0,g=g+Math.imul(ee,Me)|0,s=s+Math.imul(ee,Ve)|0,s=s+Math.imul(ae,Me)|0,p=p+Math.imul(ae,Ve)|0,g=g+Math.imul(te,Se)|0,s=s+Math.imul(te,Ie)|0,s=s+Math.imul(se,Se)|0,p=p+Math.imul(se,Ie)|0,g=g+Math.imul(fe,ue)|0,s=s+Math.imul(fe,Ce)|0,s=s+Math.imul(Ee,ue)|0,p=p+Math.imul(Ee,Ce)|0,g=g+Math.imul(X,he)|0,s=s+Math.imul(X,Oe)|0,s=s+Math.imul(be,he)|0,p=p+Math.imul(be,Oe)|0,g=g+Math.imul($,ce)|0,s=s+Math.imul($,Pe)|0,s=s+Math.imul(J,ce)|0,p=p+Math.imul(J,Pe)|0,g=g+Math.imul(O,de)|0,s=s+Math.imul(O,Fe)|0,s=s+Math.imul(v,de)|0,p=p+Math.imul(v,Fe)|0,g=g+Math.imul(k,le)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(B,le)|0,p=p+Math.imul(B,Le)|0,g=g+Math.imul(S,De)|0,s=s+Math.imul(S,Qe)|0,s=s+Math.imul(G,De)|0,p=p+Math.imul(G,Qe)|0;var kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kr>>>26)|0,kr&=67108863,g=Math.imul(re,_e),s=Math.imul(re,je),s=s+Math.imul(ge,_e)|0,p=Math.imul(ge,je),g=g+Math.imul(Z,Me)|0,s=s+Math.imul(Z,Ve)|0,s=s+Math.imul(ve,Me)|0,p=p+Math.imul(ve,Ve)|0,g=g+Math.imul(ee,Se)|0,s=s+Math.imul(ee,Ie)|0,s=s+Math.imul(ae,Se)|0,p=p+Math.imul(ae,Ie)|0,g=g+Math.imul(te,ue)|0,s=s+Math.imul(te,Ce)|0,s=s+Math.imul(se,ue)|0,p=p+Math.imul(se,Ce)|0,g=g+Math.imul(fe,he)|0,s=s+Math.imul(fe,Oe)|0,s=s+Math.imul(Ee,he)|0,p=p+Math.imul(Ee,Oe)|0,g=g+Math.imul(X,ce)|0,s=s+Math.imul(X,Pe)|0,s=s+Math.imul(be,ce)|0,p=p+Math.imul(be,Pe)|0,g=g+Math.imul($,de)|0,s=s+Math.imul($,Fe)|0,s=s+Math.imul(J,de)|0,p=p+Math.imul(J,Fe)|0,g=g+Math.imul(O,le)|0,s=s+Math.imul(O,Le)|0,s=s+Math.imul(v,le)|0,p=p+Math.imul(v,Le)|0,g=g+Math.imul(k,De)|0,s=s+Math.imul(k,Qe)|0,s=s+Math.imul(B,De)|0,p=p+Math.imul(B,Qe)|0;var Hr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,g=Math.imul(re,Me),s=Math.imul(re,Ve),s=s+Math.imul(ge,Me)|0,p=Math.imul(ge,Ve),g=g+Math.imul(Z,Se)|0,s=s+Math.imul(Z,Ie)|0,s=s+Math.imul(ve,Se)|0,p=p+Math.imul(ve,Ie)|0,g=g+Math.imul(ee,ue)|0,s=s+Math.imul(ee,Ce)|0,s=s+Math.imul(ae,ue)|0,p=p+Math.imul(ae,Ce)|0,g=g+Math.imul(te,he)|0,s=s+Math.imul(te,Oe)|0,s=s+Math.imul(se,he)|0,p=p+Math.imul(se,Oe)|0,g=g+Math.imul(fe,ce)|0,s=s+Math.imul(fe,Pe)|0,s=s+Math.imul(Ee,ce)|0,p=p+Math.imul(Ee,Pe)|0,g=g+Math.imul(X,de)|0,s=s+Math.imul(X,Fe)|0,s=s+Math.imul(be,de)|0,p=p+Math.imul(be,Fe)|0,g=g+Math.imul($,le)|0,s=s+Math.imul($,Le)|0,s=s+Math.imul(J,le)|0,p=p+Math.imul(J,Le)|0,g=g+Math.imul(O,De)|0,s=s+Math.imul(O,Qe)|0,s=s+Math.imul(v,De)|0,p=p+Math.imul(v,Qe)|0;var Kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,g=Math.imul(re,Se),s=Math.imul(re,Ie),s=s+Math.imul(ge,Se)|0,p=Math.imul(ge,Ie),g=g+Math.imul(Z,ue)|0,s=s+Math.imul(Z,Ce)|0,s=s+Math.imul(ve,ue)|0,p=p+Math.imul(ve,Ce)|0,g=g+Math.imul(ee,he)|0,s=s+Math.imul(ee,Oe)|0,s=s+Math.imul(ae,he)|0,p=p+Math.imul(ae,Oe)|0,g=g+Math.imul(te,ce)|0,s=s+Math.imul(te,Pe)|0,s=s+Math.imul(se,ce)|0,p=p+Math.imul(se,Pe)|0,g=g+Math.imul(fe,de)|0,s=s+Math.imul(fe,Fe)|0,s=s+Math.imul(Ee,de)|0,p=p+Math.imul(Ee,Fe)|0,g=g+Math.imul(X,le)|0,s=s+Math.imul(X,Le)|0,s=s+Math.imul(be,le)|0,p=p+Math.imul(be,Le)|0,g=g+Math.imul($,De)|0,s=s+Math.imul($,Qe)|0,s=s+Math.imul(J,De)|0,p=p+Math.imul(J,Qe)|0;var jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(jr>>>26)|0,jr&=67108863,g=Math.imul(re,ue),s=Math.imul(re,Ce),s=s+Math.imul(ge,ue)|0,p=Math.imul(ge,Ce),g=g+Math.imul(Z,he)|0,s=s+Math.imul(Z,Oe)|0,s=s+Math.imul(ve,he)|0,p=p+Math.imul(ve,Oe)|0,g=g+Math.imul(ee,ce)|0,s=s+Math.imul(ee,Pe)|0,s=s+Math.imul(ae,ce)|0,p=p+Math.imul(ae,Pe)|0,g=g+Math.imul(te,de)|0,s=s+Math.imul(te,Fe)|0,s=s+Math.imul(se,de)|0,p=p+Math.imul(se,Fe)|0,g=g+Math.imul(fe,le)|0,s=s+Math.imul(fe,Le)|0,s=s+Math.imul(Ee,le)|0,p=p+Math.imul(Ee,Le)|0,g=g+Math.imul(X,De)|0,s=s+Math.imul(X,Qe)|0,s=s+Math.imul(be,De)|0,p=p+Math.imul(be,Qe)|0;var $r=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,g=Math.imul(re,he),s=Math.imul(re,Oe),s=s+Math.imul(ge,he)|0,p=Math.imul(ge,Oe),g=g+Math.imul(Z,ce)|0,s=s+Math.imul(Z,Pe)|0,s=s+Math.imul(ve,ce)|0,p=p+Math.imul(ve,Pe)|0,g=g+Math.imul(ee,de)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ae,de)|0,p=p+Math.imul(ae,Fe)|0,g=g+Math.imul(te,le)|0,s=s+Math.imul(te,Le)|0,s=s+Math.imul(se,le)|0,p=p+Math.imul(se,Le)|0,g=g+Math.imul(fe,De)|0,s=s+Math.imul(fe,Qe)|0,s=s+Math.imul(Ee,De)|0,p=p+Math.imul(Ee,Qe)|0;var Vr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,g=Math.imul(re,ce),s=Math.imul(re,Pe),s=s+Math.imul(ge,ce)|0,p=Math.imul(ge,Pe),g=g+Math.imul(Z,de)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(ve,de)|0,p=p+Math.imul(ve,Fe)|0,g=g+Math.imul(ee,le)|0,s=s+Math.imul(ee,Le)|0,s=s+Math.imul(ae,le)|0,p=p+Math.imul(ae,Le)|0,g=g+Math.imul(te,De)|0,s=s+Math.imul(te,Qe)|0,s=s+Math.imul(se,De)|0,p=p+Math.imul(se,Qe)|0;var Gr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,g=Math.imul(re,de),s=Math.imul(re,Fe),s=s+Math.imul(ge,de)|0,p=Math.imul(ge,Fe),g=g+Math.imul(Z,le)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(ve,le)|0,p=p+Math.imul(ve,Le)|0,g=g+Math.imul(ee,De)|0,s=s+Math.imul(ee,Qe)|0,s=s+Math.imul(ae,De)|0,p=p+Math.imul(ae,Qe)|0;var Yr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,g=Math.imul(re,le),s=Math.imul(re,Le),s=s+Math.imul(ge,le)|0,p=Math.imul(ge,Le),g=g+Math.imul(Z,De)|0,s=s+Math.imul(Z,Qe)|0,s=s+Math.imul(ve,De)|0,p=p+Math.imul(ve,Qe)|0;var Jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,g=Math.imul(re,De),s=Math.imul(re,Qe),s=s+Math.imul(ge,De)|0,p=Math.imul(ge,Qe);var Wr=(_+g|0)+((s&8191)<<13)|0;return _=(p+(s>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,w[0]=Ye,w[1]=Je,w[2]=Ut,w[3]=Lt,w[4]=qt,w[5]=zt,w[6]=kt,w[7]=qr,w[8]=zr,w[9]=kr,w[10]=Hr,w[11]=Kr,w[12]=jr,w[13]=$r,w[14]=Vr,w[15]=Gr,w[16]=Yr,w[17]=Jr,w[18]=Wr,_!==0&&(w[19]=_,a.length++),a};Math.imul||(q=I);function H(C,h,u){u.negative=h.negative^C.negative,u.length=C.length+h.length;for(var a=0,o=0,l=0;l>>26)|0,o+=w>>>26,w&=67108863}u.words[l]=_,a=w,w=o}return a!==0?u.words[l]=a:u.length--,u.strip()}function V(C,h,u){var a=new z;return a.mulp(C,h,u)}n.prototype.mulTo=function(h,u){var a,o=this.length+h.length;return this.length===10&&h.length===10?a=q(this,h,u):o<63?a=I(this,h,u):o<1024?a=H(this,h,u):a=V(this,h,u),a};function z(C,h){this.x=C,this.y=h}z.prototype.makeRBT=function(h){for(var u=new Array(h),a=n.prototype._countBits(h)-1,o=0;o>=1;return o},z.prototype.permute=function(h,u,a,o,l,w){for(var _=0;_>>1)l++;return 1<>>13,a[2*w+1]=l&8191,l=l>>>13;for(w=2*u;w>=26,u+=o/67108864|0,u+=l>>>26,this.words[a]=l&67108863}return u!==0&&(this.words[a]=u,this.length++),this},n.prototype.muln=function(h){return this.clone().imuln(h)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(h){var u=D(h);if(u.length===0)return new n(1);for(var a=this,o=0;o=0);var u=h%26,a=(h-u)/26,o=67108863>>>26-u<<26-u,l;if(u!==0){var w=0;for(l=0;l>>26-u}w&&(this.words[l]=w,this.length++)}if(a!==0){for(l=this.length-1;l>=0;l--)this.words[l+a]=this.words[l];for(l=0;l=0);var o;u?o=(u-u%26)/26:o=0;var l=h%26,w=Math.min((h-l)/26,this.length),_=67108863^67108863>>>l<w)for(this.length-=w,s=0;s=0&&(p!==0||s>=o);s--){var b=this.words[s]|0;this.words[s]=p<<26-l|b>>>l,p=b&_}return g&&p!==0&&(g.words[g.length++]=p),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(h,u,a){return i(this.negative===0),this.iushrn(h,u,a)},n.prototype.shln=function(h){return this.clone().ishln(h)},n.prototype.ushln=function(h){return this.clone().iushln(h)},n.prototype.shrn=function(h){return this.clone().ishrn(h)},n.prototype.ushrn=function(h){return this.clone().iushrn(h)},n.prototype.testn=function(h){i(typeof h=="number"&&h>=0);var u=h%26,a=(h-u)/26,o=1<=0);var u=h%26,a=(h-u)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=a)return this;if(u!==0&&a++,this.length=Math.min(a,this.length),u!==0){var o=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},n.prototype.isubn=function(h){if(i(typeof h=="number"),i(h<67108864),h<0)return this.iaddn(-h);if(this.negative!==0)return this.negative=0,this.iaddn(h),this.negative=1,this;if(this.words[0]-=h,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(g/67108864|0),this.words[l+a]=w&67108863}for(;l>26,this.words[l+a]=w&67108863;if(_===0)return this.strip();for(i(_===-1),_=0,l=0;l>26,this.words[l]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(h,u){var a=this.length-h.length,o=this.clone(),l=h,w=l.words[l.length-1]|0,_=this._countBits(w);a=26-_,a!==0&&(l=l.ushln(a),o.iushln(a),w=l.words[l.length-1]|0);var g=o.length-l.length,s;if(u!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var p=0;p=0;S--){var G=(o.words[l.length+S]|0)*67108864+(o.words[l.length+S-1]|0);for(G=Math.min(G/w|0,67108863),o._ishlnsubmul(l,G,S);o.negative!==0;)G--,o.negative=0,o._ishlnsubmul(l,1,S),o.isZero()||(o.negative^=1);s&&(s.words[S]=G)}return s&&s.strip(),o.strip(),u!=="div"&&a!==0&&o.iushrn(a),{div:s||null,mod:o}},n.prototype.divmod=function(h,u,a){if(i(!h.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var o,l,w;return this.negative!==0&&h.negative===0?(w=this.neg().divmod(h,u),u!=="mod"&&(o=w.div.neg()),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.iadd(h)),{div:o,mod:l}):this.negative===0&&h.negative!==0?(w=this.divmod(h.neg(),u),u!=="mod"&&(o=w.div.neg()),{div:o,mod:w.mod}):this.negative&h.negative?(w=this.neg().divmod(h.neg(),u),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.isub(h)),{div:w.div,mod:l}):h.length>this.length||this.cmp(h)<0?{div:new n(0),mod:this}:h.length===1?u==="div"?{div:this.divn(h.words[0]),mod:null}:u==="mod"?{div:null,mod:new n(this.modn(h.words[0]))}:{div:this.divn(h.words[0]),mod:new n(this.modn(h.words[0]))}:this._wordDiv(h,u)},n.prototype.div=function(h){return this.divmod(h,"div",!1).div},n.prototype.mod=function(h){return this.divmod(h,"mod",!1).mod},n.prototype.umod=function(h){return this.divmod(h,"mod",!0).mod},n.prototype.divRound=function(h){var u=this.divmod(h);if(u.mod.isZero())return u.div;var a=u.div.negative!==0?u.mod.isub(h):u.mod,o=h.ushrn(1),l=h.andln(1),w=a.cmp(o);return w<0||l===1&&w===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},n.prototype.modn=function(h){i(h<=67108863);for(var u=(1<<26)%h,a=0,o=this.length-1;o>=0;o--)a=(u*a+(this.words[o]|0))%h;return a},n.prototype.idivn=function(h){i(h<=67108863);for(var u=0,a=this.length-1;a>=0;a--){var o=(this.words[a]|0)+u*67108864;this.words[a]=o/h|0,u=o%h}return this.strip()},n.prototype.divn=function(h){return this.clone().idivn(h)},n.prototype.egcd=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=new n(0),_=new n(1),g=0;u.isEven()&&a.isEven();)u.iushrn(1),a.iushrn(1),++g;for(var s=a.clone(),p=u.clone();!u.isZero();){for(var b=0,S=1;!(u.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(u.iushrn(b);b-- >0;)(o.isOdd()||l.isOdd())&&(o.iadd(s),l.isub(p)),o.iushrn(1),l.iushrn(1);for(var G=0,M=1;!(a.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(a.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(s),_.isub(p)),w.iushrn(1),_.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(w),l.isub(_)):(a.isub(u),w.isub(o),_.isub(l))}return{a:w,b:_,gcd:a.iushln(g)}},n.prototype._invmp=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=a.clone();u.cmpn(1)>0&&a.cmpn(1)>0;){for(var _=0,g=1;!(u.words[0]&g)&&_<26;++_,g<<=1);if(_>0)for(u.iushrn(_);_-- >0;)o.isOdd()&&o.iadd(w),o.iushrn(1);for(var s=0,p=1;!(a.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(a.iushrn(s);s-- >0;)l.isOdd()&&l.iadd(w),l.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(l)):(a.isub(u),l.isub(o))}var b;return u.cmpn(1)===0?b=o:b=l,b.cmpn(0)<0&&b.iadd(h),b},n.prototype.gcd=function(h){if(this.isZero())return h.abs();if(h.isZero())return this.abs();var u=this.clone(),a=h.clone();u.negative=0,a.negative=0;for(var o=0;u.isEven()&&a.isEven();o++)u.iushrn(1),a.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;a.isEven();)a.iushrn(1);var l=u.cmp(a);if(l<0){var w=u;u=a,a=w}else if(l===0||a.cmpn(1)===0)break;u.isub(a)}while(!0);return a.iushln(o)},n.prototype.invm=function(h){return this.egcd(h).a.umod(h)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(h){return this.words[0]&h},n.prototype.bincn=function(h){i(typeof h=="number");var u=h%26,a=(h-u)/26,o=1<>>26,_&=67108863,this.words[w]=_}return l!==0&&(this.words[w]=l,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(h){var u=h<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this.strip();var a;if(this.length>1)a=1;else{u&&(h=-h),i(h<=67108863,"Number is too big");var o=this.words[0]|0;a=o===h?0:oh.length)return 1;if(this.length=0;a--){var o=this.words[a]|0,l=h.words[a]|0;if(o!==l){ol&&(u=1);break}}return u},n.prototype.gtn=function(h){return this.cmpn(h)===1},n.prototype.gt=function(h){return this.cmp(h)===1},n.prototype.gten=function(h){return this.cmpn(h)>=0},n.prototype.gte=function(h){return this.cmp(h)>=0},n.prototype.ltn=function(h){return this.cmpn(h)===-1},n.prototype.lt=function(h){return this.cmp(h)===-1},n.prototype.lten=function(h){return this.cmpn(h)<=0},n.prototype.lte=function(h){return this.cmp(h)<=0},n.prototype.eqn=function(h){return this.cmpn(h)===0},n.prototype.eq=function(h){return this.cmp(h)===0},n.red=function(h){return new Y(h)},n.prototype.toRed=function(h){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),h.convertTo(this)._forceRed(h)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(h){return this.red=h,this},n.prototype.forceRed=function(h){return i(!this.red,"Already a number in reduction context"),this._forceRed(h)},n.prototype.redAdd=function(h){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,h)},n.prototype.redIAdd=function(h){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,h)},n.prototype.redSub=function(h){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,h)},n.prototype.redISub=function(h){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,h)},n.prototype.redShl=function(h){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,h)},n.prototype.redMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.mul(this,h)},n.prototype.redIMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.imul(this,h)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(h){return i(this.red&&!h.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,h)};var j={k256:null,p224:null,p192:null,p25519:null};function F(C,h){this.name=C,this.p=new n(h,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}F.prototype._tmp=function(){var h=new n(null);return h.words=new Array(Math.ceil(this.n/13)),h},F.prototype.ireduce=function(h){var u=h,a;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),a=u.bitLength();while(a>this.n);var o=a0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},F.prototype.split=function(h,u){h.iushrn(this.n,0,u)},F.prototype.imulK=function(h){return h.imul(this.k)};function U(){F.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(U,F),U.prototype.split=function(h,u){for(var a=4194303,o=Math.min(h.length,9),l=0;l>>22,w=_}w>>>=22,h.words[l-10]=w,w===0&&h.length>10?h.length-=10:h.length-=9},U.prototype.imulK=function(h){h.words[h.length]=0,h.words[h.length+1]=0,h.length+=2;for(var u=0,a=0;a>>=26,h.words[a]=l,u=o}return u!==0&&(h.words[h.length++]=u),h},n._prime=function(h){if(j[h])return j[h];var u;if(h==="k256")u=new U;else if(h==="p224")u=new L;else if(h==="p192")u=new m;else if(h==="p25519")u=new P;else throw new Error("Unknown prime "+h);return j[h]=u,u};function Y(C){if(typeof C=="string"){var h=n._prime(C);this.m=h.p,this.prime=h}else i(C.gtn(1),"modulus must be greater than 1"),this.m=C,this.prime=null}Y.prototype._verify1=function(h){i(h.negative===0,"red works only with positives"),i(h.red,"red works only with red numbers")},Y.prototype._verify2=function(h,u){i((h.negative|u.negative)===0,"red works only with positives"),i(h.red&&h.red===u.red,"red works only with red numbers")},Y.prototype.imod=function(h){return this.prime?this.prime.ireduce(h)._forceRed(this):h.umod(this.m)._forceRed(this)},Y.prototype.neg=function(h){return h.isZero()?h.clone():this.m.sub(h)._forceRed(this)},Y.prototype.add=function(h,u){this._verify2(h,u);var a=h.add(u);return a.cmp(this.m)>=0&&a.isub(this.m),a._forceRed(this)},Y.prototype.iadd=function(h,u){this._verify2(h,u);var a=h.iadd(u);return a.cmp(this.m)>=0&&a.isub(this.m),a},Y.prototype.sub=function(h,u){this._verify2(h,u);var a=h.sub(u);return a.cmpn(0)<0&&a.iadd(this.m),a._forceRed(this)},Y.prototype.isub=function(h,u){this._verify2(h,u);var a=h.isub(u);return a.cmpn(0)<0&&a.iadd(this.m),a},Y.prototype.shl=function(h,u){return this._verify1(h),this.imod(h.ushln(u))},Y.prototype.imul=function(h,u){return this._verify2(h,u),this.imod(h.imul(u))},Y.prototype.mul=function(h,u){return this._verify2(h,u),this.imod(h.mul(u))},Y.prototype.isqr=function(h){return this.imul(h,h.clone())},Y.prototype.sqr=function(h){return this.mul(h,h)},Y.prototype.sqrt=function(h){if(h.isZero())return h.clone();var u=this.m.andln(3);if(i(u%2===1),u===3){var a=this.m.add(new n(1)).iushrn(2);return this.pow(h,a)}for(var o=this.m.subn(1),l=0;!o.isZero()&&o.andln(1)===0;)l++,o.iushrn(1);i(!o.isZero());var w=new n(1).toRed(this),_=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(_)!==0;)s.redIAdd(_);for(var p=this.pow(s,o),b=this.pow(h,o.addn(1).iushrn(1)),S=this.pow(h,o),G=l;S.cmp(w)!==0;){for(var M=S,k=0;M.cmp(w)!==0;k++)M=M.redSqr();i(k=0;l--){for(var p=u.words[l],b=s-1;b>=0;b--){var S=p>>b&1;if(w!==o[0]&&(w=this.sqr(w)),S===0&&_===0){g=0;continue}_<<=1,_|=S,g++,!(g!==a&&(l!==0||b!==0))&&(w=this.mul(w,o[_]),g=0,_=0)}s=26}return w},Y.prototype.convertTo=function(h){var u=h.umod(this.m);return u===h?u.clone():u},Y.prototype.convertFrom=function(h){var u=h.clone();return u.red=null,u},n.mont=function(h){return new Q(h)};function Q(C){Y.call(this,C),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(Q,Y),Q.prototype.convertTo=function(h){return this.imod(h.ushln(this.shift))},Q.prototype.convertFrom=function(h){var u=this.imod(h.mul(this.rinv));return u.red=null,u},Q.prototype.imul=function(h,u){if(h.isZero()||u.isZero())return h.words[0]=0,h.length=1,h;var a=h.imul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.mul=function(h,u){if(h.isZero()||u.isZero())return new n(0)._forceRed(this);var a=h.mul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.invm=function(h){var u=this.imod(h._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(t,Rn)})(ir);var Uf={};(function(t){var e=t;function r(n,d){if(Array.isArray(n))return n.slice();if(!n)return[];var c=[];if(typeof n!="string"){for(var y=0;y>8,E=A&255;x?c.push(x,E):c.push(E)}return c}e.toArray=r;function i(n){return n.length===1?"0"+n:n}e.zero2=i;function f(n){for(var d="",c=0;c(q>>1)-1?V=(q>>1)-z:V=z,H.isubn(V)):V=0,D[I]=V,H.iushrn(1)}return D}e.getNAF=n;function d(x,E){var N=[[],[]];x=x.clone(),E=E.clone();for(var D=0,I=0,q;x.cmpn(-D)>0||E.cmpn(-I)>0;){var H=x.andln(3)+D&3,V=E.andln(3)+I&3;H===3&&(H=-1),V===3&&(V=-1);var z;H&1?(q=x.andln(7)+D&7,(q===3||q===5)&&V===2?z=-H:z=H):z=0,N[0].push(z);var j;V&1?(q=E.andln(7)+I&7,(q===3||q===5)&&H===2?j=-V:j=V):j=0,N[1].push(j),2*D===z+1&&(D=1-D),2*I===j+1&&(I=1-I),x.iushrn(1),E.iushrn(1)}return N}e.getJSF=d;function c(x,E,N){var D="_"+E;x.prototype[E]=function(){return this[D]!==void 0?this[D]:this[D]=N.call(this)}}e.cachedProperty=c;function y(x){return typeof x=="string"?e.toArray(x,"hex"):x}e.parseBytes=y;function A(x){return new r(x,"hex","le")}e.intFromLE=A}(Dt);var pn={exports:{}},Lf;pn.exports=function(e){return Lf||(Lf=new yr(null)),Lf.generate(e)};function yr(t){this.rand=t}if(pn.exports.Rand=yr,yr.prototype.generate=function(e){return this._rand(e)},yr.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var yn=wr;wr.prototype.point=function(){throw new Error("Not implemented")},wr.prototype.validate=function(){throw new Error("Not implemented")},wr.prototype._fixedNafMul=function(e,r){gn(e.precomputed);var i=e._getDoubles(),f=mn(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];gn(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},wr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=mn(i[I],d[I],this._bitLength),y[q]=mn(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=V2(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Pt.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Tt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Tt.prototype.pointFromX=function(e,r){e=new rt(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Tt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Tt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},ft.prototype.isInfinity=function(){return this.inf},ft.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},ft.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},ft.prototype.getX=function(){return this.x.fromRed()},ft.prototype.getY=function(){return this.y.fromRed()},ft.prototype.mul=function(e){return e=new rt(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},ft.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},ft.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},ft.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},ft.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ct(t,e,r,i){di.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new rt(0)):(this.x=new rt(e,16),this.y=new rt(r,16),this.z=new rt(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}zf(ct,di.BasePoint),Tt.prototype.jpoint=function(e,r,i){return new ct(this,e,r,i)},ct.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ct.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ct.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ct.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ct.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ct.prototype.inspect=function(){return this.isInfinity()?"":""},ct.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var li=ir.exports,Go=ni.exports,wn=yn,W2=Dt;function bi(t){wn.call(this,"mont",t),this.a=new li(t.a,16).toRed(this.red),this.b=new li(t.b,16).toRed(this.red),this.i4=new li(4).toRed(this.red).redInvm(),this.two=new li(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Go(bi,wn);var Q2=bi;bi.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),f=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),n=f.redSqrt();return n.redSqr().cmp(f)===0};function at(t,e,r){wn.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new li(e,16),this.z=new li(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Go(at,wn.BasePoint),bi.prototype.decodePoint=function(e,r){return this.point(W2.toArray(e,r),1)},bi.prototype.point=function(e,r){return new at(this,e,r)},bi.prototype.pointFromJSON=function(e){return at.fromJSON(this,e)},at.prototype.precompute=function(){},at.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},at.fromJSON=function(e,r){return new at(e,r[0],r[1]||e.one)},at.prototype.inspect=function(){return this.isInfinity()?"":""},at.prototype.isInfinity=function(){return this.z.cmpn(0)===0},at.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),f=i.redSqr(),n=r.redSub(f),d=r.redMul(f),c=n.redMul(f.redAdd(this.curve.a24.redMul(n)));return this.curve.point(d,c)},at.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),f=this.x.redSub(this.z),n=e.x.redAdd(e.z),d=e.x.redSub(e.z),c=d.redMul(i),y=n.redMul(f),A=r.z.redMul(c.redAdd(y).redSqr()),x=r.x.redMul(c.redISub(y).redSqr());return this.curve.point(A,x)},at.prototype.mul=function(e){for(var r=e.clone(),i=this,f=this.curve.point(null,null),n=this,d=[];r.cmpn(0)!==0;r.iushrn(1))d.push(r.andln(1));for(var c=d.length-1;c>=0;c--)d[c]===0?(i=i.diffAdd(f,n),f=f.dbl()):(f=i.diffAdd(f,n),i=i.dbl());return f},at.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.eq=function(e){return this.getX().cmp(e.getX())===0},at.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},at.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var X2=Dt,hr=ir.exports,Yo=ni.exports,An=yn,Z2=X2.assert;function nr(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,An.call(this,"edwards",t),this.a=new hr(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new hr(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new hr(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),Z2(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Yo(nr,An);var e3=nr;nr.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},nr.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},nr.prototype.jpoint=function(e,r,i,f){return this.point(e,r,i,f)},nr.prototype.pointFromX=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=this.c2.redSub(this.a.redMul(i)),n=this.one.redSub(this.c2.redMul(this.d).redMul(i)),d=f.redMul(n.redInvm()),c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");var y=c.fromRed().isOdd();return(r&&!y||!r&&y)&&(c=c.redNeg()),this.point(e,c)},nr.prototype.pointFromY=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=i.redSub(this.c2),n=i.redMul(this.d).redMul(this.c2).redSub(this.a),d=f.redMul(n.redInvm());if(d.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)},nr.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),f=r.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return f.cmp(n)===0};function et(t,e,r,i,f){An.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new hr(e,16),this.y=new hr(r,16),this.z=i?new hr(i,16):this.curve.one,this.t=f&&new hr(f,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Yo(et,An.BasePoint),nr.prototype.pointFromJSON=function(e){return et.fromJSON(this,e)},nr.prototype.point=function(e,r,i,f){return new et(this,e,r,i,f)},et.fromJSON=function(e,r){return new et(e,r[0],r[1],r[2])},et.prototype.inspect=function(){return this.isInfinity()?"":""},et.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},et.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var f=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),d=f.redAdd(r),c=d.redSub(i),y=f.redSub(r),A=n.redMul(c),x=d.redMul(y),E=n.redMul(y),N=c.redMul(d);return this.curve.point(A,x,N,E)},et.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),f,n,d,c,y,A;if(this.curve.twisted){c=this.curve._mulA(r);var x=c.redAdd(i);this.zOne?(f=e.redSub(r).redSub(i).redMul(x.redSub(this.curve.two)),n=x.redMul(c.redSub(i)),d=x.redSqr().redSub(x).redSub(x)):(y=this.z.redSqr(),A=x.redSub(y).redISub(y),f=e.redSub(r).redISub(i).redMul(A),n=x.redMul(c.redSub(i)),d=x.redMul(A))}else c=r.redAdd(i),y=this.curve._mulC(this.z).redSqr(),A=c.redSub(y).redSub(y),f=this.curve._mulC(e.redISub(c)).redMul(A),n=this.curve._mulC(c).redMul(r.redISub(i)),d=c.redMul(A);return this.curve.point(f,n,d)},et.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},et.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),f=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),d=i.redSub(r),c=n.redSub(f),y=n.redAdd(f),A=i.redAdd(r),x=d.redMul(c),E=y.redMul(A),N=d.redMul(A),D=c.redMul(y);return this.curve.point(x,E,D,N)},et.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),f=this.x.redMul(e.x),n=this.y.redMul(e.y),d=this.curve.d.redMul(f).redMul(n),c=i.redSub(d),y=i.redAdd(d),A=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(f).redISub(n),x=r.redMul(c).redMul(A),E,N;return this.curve.twisted?(E=r.redMul(y).redMul(n.redSub(this.curve._mulA(f))),N=c.redMul(y)):(E=r.redMul(y).redMul(n.redSub(f)),N=this.curve._mulC(c).redMul(y)),this.curve.point(x,E,N)},et.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},et.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},et.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)},et.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)},et.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},et.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},et.prototype.getX=function(){return this.normalize(),this.x.fromRed()},et.prototype.getY=function(){return this.normalize(),this.y.fromRed()},et.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0},et.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),f=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(f),this.x.cmp(r)===0)return!0}},et.prototype.toP=et.prototype.normalize,et.prototype.mixedAdd=et.prototype.add,function(t){var e=t;e.base=yn,e.short=J2,e.mont=Q2,e.edwards=e3}(qf);var xn={},kf,Jo;function t3(){return Jo||(Jo=1,kf={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}),kf}(function(t){var e=t,r=_t,i=qf,f=Dt,n=f.assert;function d(A){A.type==="short"?this.curve=new i.short(A):A.type==="edwards"?this.curve=new i.edwards(A):this.curve=new i.mont(A),this.g=this.curve.g,this.n=this.curve.n,this.hash=A.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}e.PresetCurve=d;function c(A,x){Object.defineProperty(e,A,{configurable:!0,enumerable:!0,get:function(){var E=new d(x);return Object.defineProperty(e,A,{configurable:!0,enumerable:!0,value:E}),E}})}c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:r.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:r.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:r.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:r.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:r.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var y;try{y=t3()}catch{y=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:r.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",y]})})(xn);var r3=_t,Rr=Uf,Wo=Ir;function Ar(t){if(!(this instanceof Ar))return new Ar(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Rr.toArray(t.entropy,t.entropyEnc||"hex"),r=Rr.toArray(t.nonce,t.nonceEnc||"hex"),i=Rr.toArray(t.pers,t.persEnc||"hex");Wo(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i3=Ar;Ar.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},Ar.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=Rr.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var _n=ir.exports,Kf=Dt,o3=Kf.assert;function Mn(t,e){if(t instanceof Mn)return t;this._importDER(t,e)||(o3(t.r&&t.s,"Signature without r or s"),this.r=new _n(t.r,16),this.s=new _n(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var s3=Mn;function u3(){this.place=0}function jf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4||t[e.place]===0)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function Qo(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}Mn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Qo(r),i=Qo(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];$f(f,r.length),f=f.concat(r),f.push(2),$f(f,i.length);var n=f.concat(i),d=[48];return $f(d,n.length),d=d.concat(n),Kf.encode(d,e)};var Pr=ir.exports,Xo=i3,h3=Dt,Vf=xn,c3=pn.exports,Zo=h3.assert,Gf=a3,En=s3;function Ft(t){if(!(this instanceof Ft))return new Ft(t);typeof t=="string"&&(Zo(Object.prototype.hasOwnProperty.call(Vf,t),"Unknown curve "+t),t=Vf[t]),t instanceof Vf.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var d3=Ft;Ft.prototype.keyPair=function(e){return new Gf(this,e)},Ft.prototype.keyFromPrivate=function(e,r){return Gf.fromPrivate(this,e,r)},Ft.prototype.keyFromPublic=function(e,r){return Gf.fromPublic(this,e,r)},Ft.prototype.genKeyPair=function(e){e||(e={});for(var r=new Xo({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||c3(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new Pr(2));;){var n=new Pr(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ft.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ft.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new Pr(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new Xo({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new Pr(1)),x=0;;x++){var E=f.k?f.k(x):new Pr(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new En({r:I,s:q,recoveryParam:H})}}}}}},Ft.prototype.verify=function(e,r,i,f){e=this._truncateToN(new Pr(e,16)),i=this.keyFromPublic(i,f),r=new En(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ft.prototype.recoverPubKey=function(t,e,r,i){Zo((3&r)===r,"The recovery param is more than two bits"),e=new En(e,i);var f=this.n,n=new Pr(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ft.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new En(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Ti=Dt,es=Ti.assert,ts=Ti.parseBytes,vi=Ti.cachedProperty;function ot(t,e){this.eddsa=t,this._secret=ts(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=ts(e.pub)}ot.fromPublic=function(e,r){return r instanceof ot?r:new ot(e,{pub:r})},ot.fromSecret=function(e,r){return r instanceof ot?r:new ot(e,{secret:r})},ot.prototype.secret=function(){return this._secret},vi(ot,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())}),vi(ot,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())}),vi(ot,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,f=r.slice(0,e.encodingLength);return f[0]&=248,f[i]&=127,f[i]|=64,f}),vi(ot,"priv",function(){return this.eddsa.decodeInt(this.privBytes())}),vi(ot,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()}),vi(ot,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)}),ot.prototype.sign=function(e){return es(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},ot.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)},ot.prototype.getSecret=function(e){return es(this._secret,"KeyPair is public only"),Ti.encode(this.secret(),e)},ot.prototype.getPublic=function(e){return Ti.encode(this.pubBytes(),e)};var l3=ot,b3=ir.exports,Sn=Dt,rs=Sn.assert,Dn=Sn.cachedProperty,v3=Sn.parseBytes;function Tr(t,e){this.eddsa=t,typeof e!="object"&&(e=v3(e)),Array.isArray(e)&&(rs(e.length===t.encodingLength*2,"Signature has invalid size"),e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),rs(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof b3&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}Dn(Tr,"S",function(){return this.eddsa.decodeInt(this.Sencoded())}),Dn(Tr,"R",function(){return this.eddsa.decodePoint(this.Rencoded())}),Dn(Tr,"Rencoded",function(){return this.eddsa.encodePoint(this.R())}),Dn(Tr,"Sencoded",function(){return this.eddsa.encodeInt(this.S())}),Tr.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},Tr.prototype.toHex=function(){return Sn.encode(this.toBytes(),"hex").toUpperCase()};var p3=Tr,m3=_t,g3=xn,pi=Dt,y3=pi.assert,is=pi.parseBytes,ns=l3,fs=p3;function At(t){if(y3(t==="ed25519","only tested with ed25519 so far"),!(this instanceof At))return new At(t);t=g3[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=m3.sha512}var w3=At;At.prototype.sign=function(e,r){e=is(e);var i=this.keyFromSecret(r),f=this.hashInt(i.messagePrefix(),e),n=this.g.mul(f),d=this.encodePoint(n),c=this.hashInt(d,i.pubBytes(),e).mul(i.priv()),y=f.add(c).umod(this.curve.n);return this.makeSignature({R:n,S:y,Rencoded:d})},At.prototype.verify=function(e,r,i){if(e=is(e),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var f=this.keyFromPublic(i),n=this.hashInt(r.Rencoded(),f.pubBytes(),e),d=this.g.mul(r.S()),c=r.R().add(f.pub().mul(n));return c.eq(d)},At.prototype.hashInt=function(){for(var e=this.hash(),r=0;r0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%128<112?128:256;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._stateHi.set(y.stateHi),this._stateLo.set(y.stateLo),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.stateHi),r.wipe(y.stateLo),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA512=i;var f=new Int32Array([1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591]);function n(c,y,A,x,E,N,D){for(var I=A[0],q=A[1],H=A[2],V=A[3],z=A[4],j=A[5],F=A[6],U=A[7],L=x[0],m=x[1],P=x[2],Y=x[3],Q=x[4],C=x[5],h=x[6],u=x[7],a,o,l,w,_,g,s,p;D>=128;){for(var b=0;b<16;b++){var S=8*b+N;c[b]=e.readUint32BE(E,S),y[b]=e.readUint32BE(E,S+4)}for(var b=0;b<80;b++){var G=I,M=q,k=H,B=V,T=z,O=j,v=F,R=U,$=L,J=m,W=P,X=Y,be=Q,ye=C,fe=h,Ee=u;if(a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(z>>>14|Q<<32-14)^(z>>>18|Q<<32-18)^(Q>>>41-32|z<<32-(41-32)),o=(Q>>>14|z<<32-14)^(Q>>>18|z<<32-18)^(z>>>41-32|Q<<32-(41-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=z&j^~z&F,o=Q&C^~Q&h,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=f[b*2],o=f[b*2+1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=c[b%16],o=y[b%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,l=s&65535|p<<16,w=_&65535|g<<16,a=l,o=w,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(I>>>28|L<<32-28)^(L>>>34-32|I<<32-(34-32))^(L>>>39-32|I<<32-(39-32)),o=(L>>>28|I<<32-28)^(I>>>34-32|L<<32-(34-32))^(I>>>39-32|L<<32-(39-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=I&q^I&H^q&H,o=L&m^L&P^m&P,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,R=s&65535|p<<16,Ee=_&65535|g<<16,a=B,o=X,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=l,o=w,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,B=s&65535|p<<16,X=_&65535|g<<16,q=G,H=M,V=k,z=B,j=T,F=O,U=v,I=R,m=$,P=J,Y=W,Q=X,C=be,h=ye,u=fe,L=Ee,b%16===15)for(var S=0;S<16;S++)a=c[S],o=y[S],_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=c[(S+9)%16],o=y[(S+9)%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+1)%16],w=y[(S+1)%16],a=(l>>>1|w<<32-1)^(l>>>8|w<<32-8)^l>>>7,o=(w>>>1|l<<32-1)^(w>>>8|l<<32-8)^(w>>>7|l<<32-7),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+14)%16],w=y[(S+14)%16],a=(l>>>19|w<<32-19)^(w>>>61-32|l<<32-(61-32))^l>>>6,o=(w>>>19|l<<32-19)^(l>>>61-32|w<<32-(61-32))^(w>>>6|l<<32-6),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,c[S]=s&65535|p<<16,y[S]=_&65535|g<<16}a=I,o=L,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[0],o=x[0],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[0]=I=s&65535|p<<16,x[0]=L=_&65535|g<<16,a=q,o=m,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[1],o=x[1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[1]=q=s&65535|p<<16,x[1]=m=_&65535|g<<16,a=H,o=P,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[2],o=x[2],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[2]=H=s&65535|p<<16,x[2]=P=_&65535|g<<16,a=V,o=Y,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[3],o=x[3],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[3]=V=s&65535|p<<16,x[3]=Y=_&65535|g<<16,a=z,o=Q,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[4],o=x[4],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[4]=z=s&65535|p<<16,x[4]=Q=_&65535|g<<16,a=j,o=C,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[5],o=x[5],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[5]=j=s&65535|p<<16,x[5]=C=_&65535|g<<16,a=F,o=h,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[6],o=x[6],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[6]=F=s&65535|p<<16,x[6]=h=_&65535|g<<16,a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[7],o=x[7],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[7]=U=s&65535|p<<16,x[7]=u=_&65535|g<<16,N+=128,D-=128}return N}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(as),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertSecretKeyToX25519=t.convertPublicKeyToX25519=t.verify=t.sign=t.extractPublicKeyFromSecretKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.SEED_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=t.SIGNATURE_LENGTH=void 0;const e=Br,r=as,i=Et;t.SIGNATURE_LENGTH=64,t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=64,t.SEED_LENGTH=32;function f(B){const T=new Float64Array(16);if(B)for(let O=0;O>16&1),O[J-1]&=65535;O[15]=v[15]-32767-(O[14]>>16&1);const $=O[15]>>16&1;O[14]&=65535,q(v,O,1-$)}for(let R=0;R<16;R++)B[2*R]=v[R]&255,B[2*R+1]=v[R]>>8}function V(B,T){let O=0;for(let v=0;v<32;v++)O|=B[v]^T[v];return(1&O-1>>>8)-1}function z(B,T){const O=new Uint8Array(32),v=new Uint8Array(32);return H(O,B),H(v,T),V(O,v)}function j(B){const T=new Uint8Array(32);return H(T,B),T[0]&1}function F(B,T){for(let O=0;O<16;O++)B[O]=T[2*O]+(T[2*O+1]<<8);B[15]&=32767}function U(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]+O[v]}function L(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]-O[v]}function m(B,T,O){let v,R,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=0,te=0,se=0,oe=0,ee=0,ae=0,ne=0,Z=0,ve=0,me=0,re=0,ge=0,we=0,ie=0,Ae=0,xe=0,_e=0,je=0,$e=0,Me=0,Ve=0,Ge=0,Se=0,Ie=O[0],Ne=O[1],ue=O[2],Ce=O[3],Be=O[4],he=O[5],Oe=O[6],Re=O[7],ce=O[8],Pe=O[9],Te=O[10],de=O[11],Fe=O[12],Ue=O[13],le=O[14],Le=O[15];v=T[0],$+=v*Ie,J+=v*Ne,W+=v*ue,X+=v*Ce,be+=v*Be,ye+=v*he,fe+=v*Oe,Ee+=v*Re,pe+=v*ce,te+=v*Pe,se+=v*Te,oe+=v*de,ee+=v*Fe,ae+=v*Ue,ne+=v*le,Z+=v*Le,v=T[1],J+=v*Ie,W+=v*Ne,X+=v*ue,be+=v*Ce,ye+=v*Be,fe+=v*he,Ee+=v*Oe,pe+=v*Re,te+=v*ce,se+=v*Pe,oe+=v*Te,ee+=v*de,ae+=v*Fe,ne+=v*Ue,Z+=v*le,ve+=v*Le,v=T[2],W+=v*Ie,X+=v*Ne,be+=v*ue,ye+=v*Ce,fe+=v*Be,Ee+=v*he,pe+=v*Oe,te+=v*Re,se+=v*ce,oe+=v*Pe,ee+=v*Te,ae+=v*de,ne+=v*Fe,Z+=v*Ue,ve+=v*le,me+=v*Le,v=T[3],X+=v*Ie,be+=v*Ne,ye+=v*ue,fe+=v*Ce,Ee+=v*Be,pe+=v*he,te+=v*Oe,se+=v*Re,oe+=v*ce,ee+=v*Pe,ae+=v*Te,ne+=v*de,Z+=v*Fe,ve+=v*Ue,me+=v*le,re+=v*Le,v=T[4],be+=v*Ie,ye+=v*Ne,fe+=v*ue,Ee+=v*Ce,pe+=v*Be,te+=v*he,se+=v*Oe,oe+=v*Re,ee+=v*ce,ae+=v*Pe,ne+=v*Te,Z+=v*de,ve+=v*Fe,me+=v*Ue,re+=v*le,ge+=v*Le,v=T[5],ye+=v*Ie,fe+=v*Ne,Ee+=v*ue,pe+=v*Ce,te+=v*Be,se+=v*he,oe+=v*Oe,ee+=v*Re,ae+=v*ce,ne+=v*Pe,Z+=v*Te,ve+=v*de,me+=v*Fe,re+=v*Ue,ge+=v*le,we+=v*Le,v=T[6],fe+=v*Ie,Ee+=v*Ne,pe+=v*ue,te+=v*Ce,se+=v*Be,oe+=v*he,ee+=v*Oe,ae+=v*Re,ne+=v*ce,Z+=v*Pe,ve+=v*Te,me+=v*de,re+=v*Fe,ge+=v*Ue,we+=v*le,ie+=v*Le,v=T[7],Ee+=v*Ie,pe+=v*Ne,te+=v*ue,se+=v*Ce,oe+=v*Be,ee+=v*he,ae+=v*Oe,ne+=v*Re,Z+=v*ce,ve+=v*Pe,me+=v*Te,re+=v*de,ge+=v*Fe,we+=v*Ue,ie+=v*le,Ae+=v*Le,v=T[8],pe+=v*Ie,te+=v*Ne,se+=v*ue,oe+=v*Ce,ee+=v*Be,ae+=v*he,ne+=v*Oe,Z+=v*Re,ve+=v*ce,me+=v*Pe,re+=v*Te,ge+=v*de,we+=v*Fe,ie+=v*Ue,Ae+=v*le,xe+=v*Le,v=T[9],te+=v*Ie,se+=v*Ne,oe+=v*ue,ee+=v*Ce,ae+=v*Be,ne+=v*he,Z+=v*Oe,ve+=v*Re,me+=v*ce,re+=v*Pe,ge+=v*Te,we+=v*de,ie+=v*Fe,Ae+=v*Ue,xe+=v*le,_e+=v*Le,v=T[10],se+=v*Ie,oe+=v*Ne,ee+=v*ue,ae+=v*Ce,ne+=v*Be,Z+=v*he,ve+=v*Oe,me+=v*Re,re+=v*ce,ge+=v*Pe,we+=v*Te,ie+=v*de,Ae+=v*Fe,xe+=v*Ue,_e+=v*le,je+=v*Le,v=T[11],oe+=v*Ie,ee+=v*Ne,ae+=v*ue,ne+=v*Ce,Z+=v*Be,ve+=v*he,me+=v*Oe,re+=v*Re,ge+=v*ce,we+=v*Pe,ie+=v*Te,Ae+=v*de,xe+=v*Fe,_e+=v*Ue,je+=v*le,$e+=v*Le,v=T[12],ee+=v*Ie,ae+=v*Ne,ne+=v*ue,Z+=v*Ce,ve+=v*Be,me+=v*he,re+=v*Oe,ge+=v*Re,we+=v*ce,ie+=v*Pe,Ae+=v*Te,xe+=v*de,_e+=v*Fe,je+=v*Ue,$e+=v*le,Me+=v*Le,v=T[13],ae+=v*Ie,ne+=v*Ne,Z+=v*ue,ve+=v*Ce,me+=v*Be,re+=v*he,ge+=v*Oe,we+=v*Re,ie+=v*ce,Ae+=v*Pe,xe+=v*Te,_e+=v*de,je+=v*Fe,$e+=v*Ue,Me+=v*le,Ve+=v*Le,v=T[14],ne+=v*Ie,Z+=v*Ne,ve+=v*ue,me+=v*Ce,re+=v*Be,ge+=v*he,we+=v*Oe,ie+=v*Re,Ae+=v*ce,xe+=v*Pe,_e+=v*Te,je+=v*de,$e+=v*Fe,Me+=v*Ue,Ve+=v*le,Ge+=v*Le,v=T[15],Z+=v*Ie,ve+=v*Ne,me+=v*ue,re+=v*Ce,ge+=v*Be,we+=v*he,ie+=v*Oe,Ae+=v*Re,xe+=v*ce,_e+=v*Pe,je+=v*Te,$e+=v*de,Me+=v*Fe,Ve+=v*Ue,Ge+=v*le,Se+=v*Le,$+=38*ve,J+=38*me,W+=38*re,X+=38*ge,be+=38*we,ye+=38*ie,fe+=38*Ae,Ee+=38*xe,pe+=38*_e,te+=38*je,se+=38*$e,oe+=38*Me,ee+=38*Ve,ae+=38*Ge,ne+=38*Se,R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),B[0]=$,B[1]=J,B[2]=W,B[3]=X,B[4]=be,B[5]=ye,B[6]=fe,B[7]=Ee,B[8]=pe,B[9]=te,B[10]=se,B[11]=oe,B[12]=ee,B[13]=ae,B[14]=ne,B[15]=Z}function P(B,T){m(B,T,T)}function Y(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=253;v>=0;v--)P(O,O),v!==2&&v!==4&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function Q(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=250;v>=0;v--)P(O,O),v!==1&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function C(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f(),be=f(),ye=f();L(O,B[1],B[0]),L(ye,T[1],T[0]),m(O,O,ye),U(v,B[0],B[1]),U(ye,T[0],T[1]),m(v,v,ye),m(R,B[3],T[3]),m(R,R,A),m($,B[2],T[2]),U($,$,$),L(J,v,O),L(W,$,R),U(X,$,R),U(be,v,O),m(B[0],J,W),m(B[1],be,X),m(B[2],X,W),m(B[3],J,be)}function h(B,T,O){for(let v=0;v<4;v++)q(B[v],T[v],O)}function u(B,T){const O=f(),v=f(),R=f();Y(R,T[2]),m(O,T[0],R),m(v,T[1],R),H(B,v),B[31]^=j(O)<<7}function a(B,T,O){D(B[0],d),D(B[1],c),D(B[2],c),D(B[3],d);for(let v=255;v>=0;--v){const R=O[v/8|0]>>(v&7)&1;h(B,T,R),C(T,B),C(B,B),h(B,T,R)}}function o(B,T){const O=[f(),f(),f(),f()];D(O[0],x),D(O[1],E),D(O[2],c),m(O[3],x,E),a(B,O,T)}function l(B){if(B.length!==t.SEED_LENGTH)throw new Error(`ed25519: seed must be ${t.SEED_LENGTH} bytes`);const T=(0,r.hash)(B);T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(32),v=[f(),f(),f(),f()];o(v,T),u(O,v);const R=new Uint8Array(64);return R.set(B),R.set(O,32),{publicKey:O,secretKey:R}}t.generateKeyPairFromSeed=l;function w(B){const T=(0,e.randomBytes)(32,B),O=l(T);return(0,i.wipe)(T),O}t.generateKeyPair=w;function _(B){if(B.length!==t.SECRET_KEY_LENGTH)throw new Error(`ed25519: secret key must be ${t.SECRET_KEY_LENGTH} bytes`);return new Uint8Array(B.subarray(32))}t.extractPublicKeyFromSecretKey=_;const g=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function s(B,T){let O,v,R,$;for(v=63;v>=32;--v){for(O=0,R=v-32,$=v-12;R<$;++R)T[R]+=O-16*T[v]*g[R-(v-32)],O=Math.floor((T[R]+128)/256),T[R]-=O*256;T[R]+=O,T[v]=0}for(O=0,R=0;R<32;R++)T[R]+=O-(T[31]>>4)*g[R],O=T[R]>>8,T[R]&=255;for(R=0;R<32;R++)T[R]-=O*g[R];for(v=0;v<32;v++)T[v+1]+=T[v]>>8,B[v]=T[v]&255}function p(B){const T=new Float64Array(64);for(let O=0;O<64;O++)T[O]=B[O];for(let O=0;O<64;O++)B[O]=0;s(B,T)}function b(B,T){const O=new Float64Array(64),v=[f(),f(),f(),f()],R=(0,r.hash)(B.subarray(0,32));R[0]&=248,R[31]&=127,R[31]|=64;const $=new Uint8Array(64);$.set(R.subarray(32),32);const J=new r.SHA512;J.update($.subarray(32)),J.update(T);const W=J.digest();J.clean(),p(W),o(v,W),u($,v),J.reset(),J.update($.subarray(0,32)),J.update(B.subarray(32)),J.update(T);const X=J.digest();p(X);for(let be=0;be<32;be++)O[be]=W[be];for(let be=0;be<32;be++)for(let ye=0;ye<32;ye++)O[be+ye]+=X[be]*R[ye];return s($.subarray(32),O),$}t.sign=b;function S(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f();return D(B[2],c),F(B[1],T),P(R,B[1]),m($,R,y),L(R,R,B[2]),U($,B[2],$),P(J,$),P(W,J),m(X,W,J),m(O,X,R),m(O,O,$),Q(O,O),m(O,O,R),m(O,O,$),m(O,O,$),m(B[0],O,$),P(v,B[0]),m(v,v,$),z(v,R)&&m(B[0],B[0],N),P(v,B[0]),m(v,v,$),z(v,R)?-1:(j(B[0])===T[31]>>7&&L(B[0],d,B[0]),m(B[3],B[0],B[1]),0)}function G(B,T,O){const v=new Uint8Array(32),R=[f(),f(),f(),f()],$=[f(),f(),f(),f()];if(O.length!==t.SIGNATURE_LENGTH)throw new Error(`ed25519: signature must be ${t.SIGNATURE_LENGTH} bytes`);if(S($,B))return!1;const J=new r.SHA512;J.update(O.subarray(0,32)),J.update(B),J.update(T);const W=J.digest();return p(W),a(R,$,W),o($,O.subarray(32)),C(R,$),u(v,R),!V(O,v)}t.verify=G;function M(B){let T=[f(),f(),f(),f()];if(S(T,B))throw new Error("Ed25519: invalid public key");let O=f(),v=f(),R=T[1];U(O,c,R),L(v,c,R),Y(v,v),m(O,O,v);let $=new Uint8Array(32);return H($,O),$}t.convertPublicKeyToX25519=M;function k(B){const T=(0,r.hash)(B.subarray(0,32));T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(T.subarray(0,32));return(0,i.wipe)(T),O}t.convertSecretKeyToX25519=k}(A3);const os=".",ss="base64url",x3="utf8",_3="utf8";function us(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function M3(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?us(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function hs(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const cs=hs("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Yf=hs("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=M3(t.length);for(let r=0;r{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,r=t.replace(e,'$1"$2n"$3');return JSON.parse(r,(i,f)=>typeof f=="string"&&f.match(/^\d+n$/)?BigInt(f.substring(0,f.length-1)):f)};function D3(t){if(typeof t!="string")throw new Error(`Cannot safe json parse value of type ${typeof t}`);try{return S3(t)}catch{return t}}function ls(t){return D3(E3(Jf(t,ss),x3))}function I3(t){return Jf(t,ss)}function N3(t){const e=t.split(os),r=ls(e[0]),i=ls(e[1]),f=I3(e[2]),n=Jf(e.slice(0,2).join(os),_3);return{header:r,payload:i,signature:f,data:n}}const Wf="base10",gt="base16",Qf="base64pad",C3="base64url",mi="utf8",Xf=0,gi=1,Fi=2,B3=0,bs=1,Ui=12,Zf=32;function O3(){const t=Of.generateKeyPair();return{privateKey:St(t.secretKey,gt),publicKey:St(t.publicKey,gt)}}function R3(){const t=Br.randomBytes(Zf);return St(t,gt)}function P3(t,e){const r=Of.sharedKey(Rt(t,gt),Rt(e,gt),!0),i=new n1(Oi.SHA256,r).expand(Zf);return St(i,gt)}function T3(t){const e=Oi.hash(Rt(t,gt));return St(e,gt)}function F3(t){const e=Oi.hash(Rt(t,mi));return St(e,gt)}function ea(t){return Rt(`${t}`,Wf)}function Fr(t){return Number(St(t,Wf))}function U3(t){const e=ea(typeof t.type<"u"?t.type:Xf);if(Fr(e)===gi&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof t.senderPublicKey<"u"?Rt(t.senderPublicKey,gt):void 0,i=typeof t.iv<"u"?Rt(t.iv,gt):Br.randomBytes(Ui),f=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)).seal(i,Rt(t.message,mi));return ta({type:e,sealed:f,iv:i,senderPublicKey:r,encoding:t.encoding})}function L3(t,e){const r=ea(Fi),i=Br.randomBytes(Ui),f=Rt(t,mi);return ta({type:r,sealed:f,iv:i,encoding:e})}function q3(t){const e=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)),{sealed:r,iv:i}=In({encoded:t.encoded,encoding:t?.encoding}),f=e.open(i,r);if(f===null)throw new Error("Failed to decrypt");return St(f,mi)}function z3(t,e){const{sealed:r}=In({encoded:t,encoding:e});return St(r,mi)}function ta(t){const{encoding:e=Qf}=t;if(Fr(t.type)===Fi)return St(Rf([t.type,t.sealed]),e);if(Fr(t.type)===gi){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return St(Rf([t.type,t.senderPublicKey,t.iv,t.sealed]),e)}return St(Rf([t.type,t.iv,t.sealed]),e)}function In(t){const{encoded:e,encoding:r=Qf}=t,i=Rt(e,r),f=i.slice(B3,bs),n=bs;if(Fr(f)===gi){const A=n+Zf,x=A+Ui,E=i.slice(n,A),N=i.slice(A,x),D=i.slice(x);return{type:f,sealed:D,iv:N,senderPublicKey:E}}if(Fr(f)===Fi){const A=i.slice(n),x=Br.randomBytes(Ui);return{type:f,sealed:A,iv:x}}const d=n+Ui,c=i.slice(n,d),y=i.slice(d);return{type:f,sealed:y,iv:c}}function k3(t,e){const r=In({encoded:t,encoding:e?.encoding});return vs({type:Fr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?St(r.senderPublicKey,gt):void 0,receiverPublicKey:e?.receiverPublicKey})}function vs(t){const e=t?.type||Xf;if(e===gi){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function H3(t){return t.type===gi&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function K3(t){return t.type===Fi}function ps(t){return new $o.ec("p256").keyFromPublic({x:Buffer.from(t.x,"base64").toString("hex"),y:Buffer.from(t.y,"base64").toString("hex")},"hex")}function j3(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");const r=e.length%4;return r>0&&(e+="=".repeat(4-r)),e}function $3(t){return Buffer.from(j3(t),"base64")}function V3(t,e){const[r,i,f]=t.split("."),n=$3(f);if(n.length!==64)throw new Error("Invalid signature length");const d=n.slice(0,32).toString("hex"),c=n.slice(32,64).toString("hex"),y=`${r}.${i}`,A=new Oi.SHA256().update(Buffer.from(y)).digest(),x=ps(e),E=Buffer.from(A).toString("hex");if(!x.verify(E,{r:d,s:c}))throw new Error("Invalid signature");return N3(t).payload}const G3={waku:{publish:"waku_publish",batchPublish:"waku_batchPublish",subscribe:"waku_subscribe",batchSubscribe:"waku_batchSubscribe",subscription:"waku_subscription",unsubscribe:"waku_unsubscribe",batchUnsubscribe:"waku_batchUnsubscribe",batchFetchMessages:"waku_batchFetchMessages"},irn:{publish:"irn_publish",batchPublish:"irn_batchPublish",subscribe:"irn_subscribe",batchSubscribe:"irn_batchSubscribe",subscription:"irn_subscription",unsubscribe:"irn_unsubscribe",batchUnsubscribe:"irn_batchUnsubscribe",batchFetchMessages:"irn_batchFetchMessages"},iridium:{publish:"iridium_publish",batchPublish:"iridium_batchPublish",subscribe:"iridium_subscribe",batchSubscribe:"iridium_batchSubscribe",subscription:"iridium_subscription",unsubscribe:"iridium_unsubscribe",batchUnsubscribe:"iridium_batchUnsubscribe",batchFetchMessages:"iridium_batchFetchMessages"}},ms="irn";function Y3(t){return t?.relay||{protocol:ms}}function J3(t){const e=G3[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}var W3=Object.defineProperty,Q3=Object.defineProperties,X3=Object.getOwnPropertyDescriptors,gs=Object.getOwnPropertySymbols,Z3=Object.prototype.hasOwnProperty,eb=Object.prototype.propertyIsEnumerable,ys=(t,e,r)=>e in t?W3(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ws=(t,e)=>{for(var r in e||(e={}))Z3.call(e,r)&&ys(t,r,e[r]);if(gs)for(var r of gs(e))eb.call(e,r)&&ys(t,r,e[r]);return t},tb=(t,e)=>Q3(t,X3(e));function As(t,e="-"){const r={},i="relay"+e;return Object.keys(t).forEach(f=>{if(f.startsWith(i)){const n=f.replace(i,""),d=t[f];r[n]=d}}),r}function rb(t){t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),r=t.indexOf("?")!==-1?t.indexOf("?"):void 0,i=t.substring(0,e),f=t.substring(e+1,r).split("@"),n=typeof r<"u"?t.substring(r):"",d=xi.parse(n),c=typeof d.methods=="string"?d.methods.split(","):void 0;return{protocol:i,topic:xs(f[0]),version:parseInt(f[1],10),symKey:d.symKey,relay:As(d),methods:c,expiryTimestamp:d.expiryTimestamp?parseInt(d.expiryTimestamp,10):void 0}}function xs(t){return t.startsWith("//")?t.substring(2):t}function _s(t,e="-"){const r="relay",i={};return Object.keys(t).forEach(f=>{const n=r+e+f;t[f]&&(i[n]=t[f])}),i}function ib(t){return`${t.protocol}:${t.topic}@${t.version}?`+xi.stringify(ws(tb(ws({symKey:t.symKey},_s(t.relay)),{expiryTimestamp:t.expiryTimestamp}),t.methods?{methods:t.methods.join(",")}:{}))}function nb(t,e,r){return`${t}?wc_ev=${r}&topic=${e}`}var fb=Object.defineProperty,ab=Object.defineProperties,ob=Object.getOwnPropertyDescriptors,Ms=Object.getOwnPropertySymbols,sb=Object.prototype.hasOwnProperty,ub=Object.prototype.propertyIsEnumerable,Es=(t,e,r)=>e in t?fb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,hb=(t,e)=>{for(var r in e||(e={}))sb.call(e,r)&&Es(t,r,e[r]);if(Ms)for(var r of Ms(e))ub.call(e,r)&&Es(t,r,e[r]);return t},cb=(t,e)=>ab(t,ob(e));function Ur(t){const e=[];return t.forEach(r=>{const[i,f]=r.split(":");e.push(`${i}:${f}`)}),e}function Ss(t){const e=[];return Object.values(t).forEach(r=>{e.push(...Ur(r.accounts))}),e}function Ds(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.methods)}),r}function Is(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.events)}),r}function db(t,e){const r=qs(t,e);if(r)throw new Error(r.message);const i={};for(const[f,n]of Object.entries(t))i[f]={methods:n.methods,events:n.events,chains:n.accounts.map(d=>`${d.split(":")[0]}:${d.split(":")[1]}`)};return i}function lb(t){const{proposal:{requiredNamespaces:e,optionalNamespaces:r={}},supportedNamespaces:i}=t,f=ia(e),n=ia(r),d={};Object.keys(i).forEach(A=>{const x=i[A].chains,E=i[A].methods,N=i[A].events,D=i[A].accounts;x.forEach(I=>{if(!D.some(q=>q.includes(I)))throw new Error(`No accounts provided for chain ${I} in namespace ${A}`)}),d[A]={chains:x,methods:E,events:N,accounts:D}});const c=ks(e,d,"approve()");if(c)throw new Error(c.message);const y={};return!Object.keys(e).length&&!Object.keys(r).length?d:(Object.keys(f).forEach(A=>{const x=i[A].chains.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.chains)==null?void 0:H.includes(I)}),E=i[A].methods.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.methods)==null?void 0:H.includes(I)}),N=i[A].events.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.events)==null?void 0:H.includes(I)}),D=x.map(I=>i[A].accounts.filter(q=>q.includes(`${I}:`))).flat();y[A]={chains:x,methods:E,events:N,accounts:D}}),Object.keys(n).forEach(A=>{var x,E,N,D,I,q;if(!i[A])return;const H=(E=(x=n[A])==null?void 0:x.chains)==null?void 0:E.filter(F=>i[A].chains.includes(F)),V=i[A].methods.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.methods)==null?void 0:L.includes(F)}),z=i[A].events.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.events)==null?void 0:L.includes(F)}),j=H?.map(F=>i[A].accounts.filter(U=>U.includes(`${F}:`))).flat();y[A]={chains:fr((N=y[A])==null?void 0:N.chains,H),methods:fr((D=y[A])==null?void 0:D.methods,V),events:fr((I=y[A])==null?void 0:I.events,z),accounts:fr((q=y[A])==null?void 0:q.accounts,j)}}),y)}function ra(t){return t.includes(":")}function Ns(t){return ra(t)?t.split(":")[0]:t}function ia(t){var e,r,i;const f={};if(!Nn(t))return f;for(const[n,d]of Object.entries(t)){const c=ra(n)?[n]:d.chains,y=d.methods||[],A=d.events||[],x=Ns(n);f[x]=cb(hb({},f[x]),{chains:fr(c,(e=f[x])==null?void 0:e.chains),methods:fr(y,(r=f[x])==null?void 0:r.methods),events:fr(A,(i=f[x])==null?void 0:i.events)})}return f}function Cs(t){const e={};return t?.forEach(r=>{const[i,f]=r.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[]}),e[i].accounts.push(r),e[i].chains.push(`${i}:${f}`)}),e}function bb(t,e){e=e.map(i=>i.replace("did:pkh:",""));const r=Cs(e);for(const[i,f]of Object.entries(r))f.methods?f.methods=fr(f.methods,t):f.methods=t,f.events=["chainChanged","accountsChanged"];return r}const Bs={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},Os={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function cr(t,e){const{message:r,code:i}=Os[t];return{message:e?`${r} ${e}`:r,code:i}}function Lr(t,e){const{message:r,code:i}=Bs[t];return{message:e?`${r} ${e}`:r,code:i}}function Li(t,e){return Array.isArray(t)?typeof e<"u"&&t.length?t.every(e):!0:!1}function Nn(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function xr(t){return typeof t>"u"}function It(t,e){return e&&xr(t)?!0:typeof t=="string"&&!!t.trim().length}function Cn(t,e){return e&&xr(t)?!0:typeof t=="number"&&!isNaN(t)}function vb(t,e){const{requiredNamespaces:r}=e,i=Object.keys(t.namespaces),f=Object.keys(r);let n=!0;return lr(f,i)?(i.forEach(d=>{const{accounts:c,methods:y,events:A}=t.namespaces[d],x=Ur(c),E=r[d];(!lr(zi(d,E),x)||!lr(E.methods,y)||!lr(E.events,A))&&(n=!1)}),n):!1}function qi(t){return It(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function Rs(t){if(It(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const r=e[0]+":"+e[1];return!!e[2]&&qi(r)}}return!1}function pb(t){if(It(t,!1))try{return typeof new URL(t)<"u"}catch{return!1}return!1}function mb(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function gb(t){return t?.topic}function yb(t,e){let r=null;return It(t?.publicKey,!1)||(r=cr("MISSING_OR_INVALID",`${e} controller public key should be a string`)),r}function na(t){let e=!0;return Li(t)?t.length&&(e=t.every(r=>It(r,!1))):e=!1,e}function Ps(t,e,r){let i=null;return Li(e)&&e.length?e.forEach(f=>{i||qi(f)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chain ${f} should be a string and conform to "namespace:chainId" format`))}):qi(t)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Ts(t,e,r){let i=null;return Object.entries(t).forEach(([f,n])=>{if(i)return;const d=Ps(f,zi(f,n),`${e} ${r}`);d&&(i=d)}),i}function Fs(t,e){let r=null;return Li(t)?t.forEach(i=>{r||Rs(i)||(r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function Us(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Fs(i?.accounts,`${e} namespace`);f&&(r=f)}),r}function Ls(t,e){let r=null;return na(t?.methods)?na(t?.events)||(r=Lr("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):r=Lr("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),r}function fa(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Ls(i,`${e}, namespace`);f&&(r=f)}),r}function wb(t,e,r){let i=null;if(t&&Nn(t)){const f=fa(t,e);f&&(i=f);const n=Ts(t,e,r);n&&(i=n)}else i=cr("MISSING_OR_INVALID",`${e}, ${r} should be an object with data`);return i}function qs(t,e){let r=null;if(t&&Nn(t)){const i=fa(t,e);i&&(r=i);const f=Us(t,e);f&&(r=f)}else r=cr("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return r}function zs(t){return It(t.protocol,!0)}function Ab(t,e){let r=!1;return e&&!t?r=!0:t&&Li(t)&&t.length&&t.forEach(i=>{r=zs(i)}),r}function xb(t){return typeof t=="number"}function _b(t){return typeof t<"u"&&typeof t!==null}function Mb(t){return!(!t||typeof t!="object"||!t.code||!Cn(t.code,!1)||!t.message||!It(t.message,!1))}function Eb(t){return!(xr(t)||!It(t.method,!1))}function Sb(t){return!(xr(t)||xr(t.result)&&xr(t.error)||!Cn(t.id,!1)||!It(t.jsonrpc,!1))}function Db(t){return!(xr(t)||!It(t.name,!1))}function Ib(t,e){return!(!qi(e)||!Ss(t).includes(e))}function Nb(t,e,r){return It(r,!1)?Ds(t,e).includes(r):!1}function Cb(t,e,r){return It(r,!1)?Is(t,e).includes(r):!1}function ks(t,e,r){let i=null;const f=Bb(t),n=Ob(e),d=Object.keys(f),c=Object.keys(n),y=Hs(Object.keys(t)),A=Hs(Object.keys(e)),x=y.filter(E=>!A.includes(E));return x.length&&(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++ Required: ${x.toString()} ++ Received: ${Object.keys(e).toString()}`)),lr(d,c)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. ++ Required: ${d.toString()} ++ Approved: ${c.toString()}`)),Object.keys(e).forEach(E=>{if(!E.includes(":")||i)return;const N=Ur(e[E].accounts);N.includes(E)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${E} ++ Required: ${E} ++ Approved: ${N.toString()}`))}),d.forEach(E=>{i||(lr(f[E].methods,n[E].methods)?lr(f[E].events,n[E].events)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${E}`)):i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${E}`))}),i}function Bb(t){const e={};return Object.keys(t).forEach(r=>{var i;r.includes(":")?e[r]=t[r]:(i=t[r].chains)==null||i.forEach(f=>{e[f]={methods:t[r].methods,events:t[r].events}})}),e}function Hs(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Ob(t){const e={};return Object.keys(t).forEach(r=>{if(r.includes(":"))e[r]=t[r];else{const i=Ur(t[r].accounts);i?.forEach(f=>{e[f]={accounts:t[r].accounts.filter(n=>n.includes(`${f}:`)),methods:t[r].methods,events:t[r].events}})}}),e}function Rb(t,e){return Cn(t,!1)&&t<=e.max&&t>=e.min}function Pb(){const t=Dr();return new Promise(e=>{switch(t){case vt.browser:e(Ks());break;case vt.reactNative:e(js());break;case vt.node:e($s());break;default:e(!0)}})}function Ks(){return _i()&&navigator?.onLine}async function js(){if(Zr()&&typeof global<"u"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t?.isConnected}return!0}function $s(){return!0}function Tb(t){switch(Dr()){case vt.browser:Vs(t);break;case vt.reactNative:Gs(t);break;case vt.node:break}}function Vs(t){!Zr()&&_i()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function Gs(t){Zr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}const aa={};class Fb{static get(e){return aa[e]}static set(e,r){aa[e]=r}static delete(e){delete aa[e]}}K.BASE10=Wf,K.BASE16=gt,K.BASE64=Qf,K.BASE64URL=C3,K.COLON=ah,K.DEFAULT_DEPTH=$n,K.EMPTY_SPACE=Ki,K.ENV_MAP=vt,K.INTERNAL_ERRORS=Os,K.MemoryStore=Fb,K.ONE_THOUSAND=oh,K.REACT_NATIVE_PRODUCT=qa,K.RELAYER_DEFAULT_PROTOCOL=ms,K.SDK_ERRORS=Bs,K.SDK_TYPE=ka,K.SLASH=za,K.TYPE_0=Xf,K.TYPE_1=gi,K.TYPE_2=Fi,K.UTF8=mi,K.addResourceToRecap=ho,K.appendToQueryString=Ha,K.assertType=lh,K.assignAbilityToActions=xf,K.base64Decode=so,K.base64Encode=oo,K.buildApprovedNamespaces=lb,K.buildAuthObject=ml,K.buildNamespacesFromAuth=bb,K.buildRecapStatement=lo,K.calcExpiry=Eh,K.capitalize=yh,K.capitalizeWord=Ya,K.createDelayedPromise=wh,K.createEncodedRecap=Al,K.createExpiringPromise=Ah,K.createRecap=uo,K.decodeRecap=mr,K.decodeTypeByte=Fr,K.decodeTypeTwoEnvelope=z3,K.decrypt=q3,K.deriveSymKey=P3,K.deserialize=In,K.encodeRecap=an,K.encodeTypeByte=ea,K.encodeTypeTwoEnvelope=L3,K.encrypt=U3,K.engineEvent=Dh,K.enumify=gh,K.formatAccountId=ca,K.formatAccountWithChain=Ys,K.formatChainId=ha,K.formatExpirerTarget=Gn,K.formatIdTarget=_h,K.formatMessage=io,K.formatMessageContext=bh,K.formatRelayParams=_s,K.formatRelayRpcUrl=ch,K.formatStatementFromRecap=Mf,K.formatTopicTarget=xh,K.formatUA=$a,K.formatUri=ib,K.generateKeyPair=O3,K.generateRandomBytes32=R3,K.getAccountsChains=Ur,K.getAccountsFromNamespaces=Ws,K.getAddressFromAccount=da,K.getAddressesFromAccounts=Js,K.getAppMetadata=uh,K.getBrowserOnlineStatus=Ks,K.getBundleId=sh,K.getChainFromAccount=la,K.getChainsFromAccounts=ba,K.getChainsFromNamespace=zi,K.getChainsFromNamespaces=Qs,K.getChainsFromRecap=Ml,K.getChainsFromRequiredNamespaces=Xs,K.getCommonValuesInArrays=Yn,K.getCryptoKeyFromKeyData=ps,K.getDecodedRecapFromResources=no,K.getDeepLink=Nh,K.getDidAddress=Af,K.getDidAddressSegments=fn,K.getDidChainId=wf,K.getEnvironment=Dr,K.getHttpUrl=dh,K.getInternalError=cr,K.getJavascriptID=ja,K.getJavascriptOS=Ka,K.getLastItems=Ga,K.getLinkModeURL=nb,K.getMethodsFromRecap=_l,K.getNamespacedDidChainId=vl,K.getNamespacesChains=Ss,K.getNamespacesEventsForChainId=Is,K.getNamespacesFromAccounts=Cs,K.getNamespacesMethodsForChainId=Ds,K.getNodeOnlineStatus=$s,K.getReCapActions=ao,K.getReactNativeOnlineStatus=js,K.getRecapAbilitiesFromResource=wl,K.getRecapFromResources=on,K.getRecapResource=fo,K.getRelayClientMetadata=hh,K.getRelayProtocolApi=J3,K.getRelayProtocolName=Y3,K.getRequiredNamespacesFromNamespaces=db,K.getSdkError=Lr,K.getSearchParamFromURL=Ch,K.getUniqueValues=On,K.handleDeeplinkRedirect=Ih,K.hasOverlap=lr,K.hashKey=T3,K.hashMessage=F3,K.isBrowser=_i,K.isCaipNamespace=ra,K.isConformingNamespaces=ks,K.isExpired=Sh,K.isNode=Vn,K.isOnline=Pb,K.isProposalStruct=mb,K.isReactNative=Zr,K.isRecap=_f,K.isSessionCompatible=vb,K.isSessionStruct=gb,K.isTypeOneEnvelope=H3,K.isTypeTwoEnvelope=K3,K.isUndefined=xr,K.isValidAccountId=Rs,K.isValidAccounts=Fs,K.isValidActions=Ls,K.isValidArray=Li,K.isValidChainId=qi,K.isValidChains=Ps,K.isValidController=yb,K.isValidEip1271Signature=Z0,K.isValidEip191Signature=X0,K.isValidErrorReason=Mb,K.isValidEvent=Db,K.isValidId=xb,K.isValidNamespaceAccounts=Us,K.isValidNamespaceActions=fa,K.isValidNamespaceChains=Ts,K.isValidNamespaceMethodsOrEvents=na,K.isValidNamespaces=qs,K.isValidNamespacesChainId=Ib,K.isValidNamespacesEvent=Cb,K.isValidNamespacesRequest=Nb,K.isValidNumber=Cn,K.isValidObject=Nn,K.isValidParams=_b,K.isValidRecap=tr,K.isValidRelay=zs,K.isValidRelays=Ab,K.isValidRequest=Eb,K.isValidRequestExpiry=Rb,K.isValidRequiredNamespaces=wb,K.isValidResponse=Sb,K.isValidString=It,K.isValidUrl=pb,K.mapEntries=mh,K.mapToObj=vh,K.mergeArrays=fr,K.mergeEncodedRecaps=xl,K.mergeRecaps=co,K.normalizeNamespaces=ia,K.objToMap=ph,K.parseAccountId=Bn,K.parseChainId=ua,K.parseContextNames=Va,K.parseExpirerTarget=Mh,K.parseNamespaceKey=Ns,K.parseRelayParams=As,K.parseTopic=xs,K.parseUri=rb,K.populateAuthPayload=gl,K.recapHasResource=yl,K.serialize=ta,K.subscribeToBrowserNetworkChange=Vs,K.subscribeToNetworkChange=Tb,K.subscribeToReactNativeNetworkChange=Gs,K.uuidv4=Bh,K.validateDecoding=k3,K.validateEncoding=vs,K.validateSignedCacao=pl,K.verifyP256Jwt=V3,K.verifySignature=Q0,Object.defineProperty(K,"__esModule",{value:!0})}); ++//# sourceMappingURL=index.umd.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js.map b/node_modules/@walletconnect/utils/dist/index.umd.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..d47c049165a021ba5d43e927092840659f16aee6 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.umd.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.umd.js","sources":["../src/caip.ts","../../../node_modules/detect-browser/es/index.js","../../../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../../node_modules/@walletconnect/time/dist/cjs/index.js","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../../node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../../../node_modules/@stablelib/int/lib/int.js","../../../node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../../../node_modules/@stablelib/hash/lib/hash.js","../../../node_modules/@stablelib/hmac/lib/hmac.js","../../../node_modules/@stablelib/hkdf/lib/hkdf.js","../../../node_modules/@stablelib/random/lib/source/browser.js","../../../node_modules/@stablelib/random/lib/source/node.js","../../../node_modules/@stablelib/random/lib/source/system.js","../../../node_modules/@stablelib/random/lib/random.js","../../../node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/@stablelib/x25519/lib/x25519.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/brorand/index.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../../node_modules/@stablelib/sha512/lib/sha512.js","../../../node_modules/@stablelib/ed25519/lib/ed25519.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/constants.js","../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../node_modules/uint8arrays/esm/src/alloc.js","../../../node_modules/uint8arrays/esm/src/util/bases.js","../../../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/uint8arrays/esm/src/from-string.js","../../../node_modules/@walletconnect/safe-json/dist/esm/index.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/utils.js","../src/crypto.ts","../../../node_modules/@walletconnect/relay-api/dist/index.es.js","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== \"undefined\" && typeof window[name] !== \"undefined\") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow(\"document\");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow(\"document\");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow(\"navigator\");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow(\"navigator\");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow(\"location\");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow(\"location\");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow(\"crypto\");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow(\"crypto\");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow(\"localStorage\");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow(\"localStorage\");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = require(\"@walletconnect/window-getters\");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName(\"link\");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute(\"rel\");\n if (rel) {\n if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n var j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n var j2 = 0x79622D32; // \"2-by\"\n var j3 = 0x6B206574; // \"te k\"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\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 this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var 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);\n 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);\n d0 &= 0x1fff;\n var 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);\n 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);\n d1 &= 0x1fff;\n var 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);\n 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);\n d2 &= 0x1fff;\n var 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);\n 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);\n d3 &= 0x1fff;\n var 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);\n 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);\n d4 &= 0x1fff;\n var 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);\n 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);\n d5 &= 0x1fff;\n var 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);\n 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);\n d6 &= 0x1fff;\n var 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);\n 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);\n d7 &= 0x1fff;\n var 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);\n 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);\n d8 &= 0x1fff;\n var 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);\n 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);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\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 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 Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\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 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 mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n 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 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 mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chacha_1 = require(\"@stablelib/chacha\");\nvar poly1305_1 = require(\"@stablelib/poly1305\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nvar binary_1 = require(\"@stablelib/binary\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== \"undefined\" &&\n typeof h.restoreState !== \"undefined\" &&\n typeof h.cleanSavedState !== \"undefined\");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = require(\"@stablelib/hash\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hmac_1 = require(\"@stablelib/hmac\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeRandomSource = void 0;\nconst wipe_1 = require(\"@stablelib/wipe\");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SystemRandomSource = void 0;\nconst browser_1 = require(\"./browser\");\nconst node_1 = require(\"./node\");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = \"\";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n // No sources, we're out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = require(\"./source/system\");\nconst binary_1 = require(\"@stablelib/binary\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let 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 const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 64;\nexports.BLOCK_SIZE = 128;\n/**\n * SHA-2-512 cryptographic hash algorithm.\n */\nvar SHA512 = /** @class */ (function () {\n function SHA512() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._stateHi = new Int32Array(8); // hash state, high bytes\n this._stateLo = new Int32Array(8); // hash state, low bytes\n this._tempHi = new Int32Array(16); // temporary state, high bytes\n this._tempLo = new Int32Array(16); // temporary state, low bytes\n this._buffer = new Uint8Array(256); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA512.prototype._initState = function () {\n this._stateHi[0] = 0x6a09e667;\n this._stateHi[1] = 0xbb67ae85;\n this._stateHi[2] = 0x3c6ef372;\n this._stateHi[3] = 0xa54ff53a;\n this._stateHi[4] = 0x510e527f;\n this._stateHi[5] = 0x9b05688c;\n this._stateHi[6] = 0x1f83d9ab;\n this._stateHi[7] = 0x5be0cd19;\n this._stateLo[0] = 0xf3bcc908;\n this._stateLo[1] = 0x84caa73b;\n this._stateLo[2] = 0xfe94f82b;\n this._stateLo[3] = 0x5f1d36f1;\n this._stateLo[4] = 0xade682d1;\n this._stateLo[5] = 0x2b3e6c1f;\n this._stateLo[6] = 0xfb41bd6b;\n this._stateLo[7] = 0x137e2179;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA512.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA512.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._tempHi);\n wipe_1.wipe(this._tempLo);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA512.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA512: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA512.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 128 < 112) ? 128 : 256;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 8; i++) {\n binary_1.writeUint32BE(this._stateHi[i], out, i * 8);\n binary_1.writeUint32BE(this._stateLo[i], out, i * 8 + 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA512.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be\n * used with restoreState(). Only chain value is saved, not buffers or\n * other state variables.\n */\n SHA512.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n stateHi: new Int32Array(this._stateHi),\n stateLo: new Int32Array(this._stateLo),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Restores state saved by\n * saveState() and sets bytesHashed to the given value.\n */\n SHA512.prototype.restoreState = function (savedState) {\n this._stateHi.set(savedState.stateHi);\n this._stateLo.set(savedState.stateLo);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA512.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.stateHi);\n wipe_1.wipe(savedState.stateLo);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA512;\n}());\nexports.SHA512 = SHA512;\n// Constants\nvar K = new Int32Array([\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]);\nfunction hashBlocks(wh, wl, hh, hl, m, pos, len) {\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var h, l;\n var th, tl;\n var a, b, c, d;\n while (len >= 128) {\n for (var i = 0; i < 16; i++) {\n var j = 8 * i + pos;\n wh[i] = binary_1.readUint32BE(m, j);\n wl[i] = binary_1.readUint32BE(m, j + 4);\n }\n for (var i = 0; i < 80; i++) {\n var bh0 = ah0;\n var bh1 = ah1;\n var bh2 = ah2;\n var bh3 = ah3;\n var bh4 = ah4;\n var bh5 = ah5;\n var bh6 = ah6;\n var bh7 = ah7;\n var bl0 = al0;\n var bl1 = al1;\n var bl2 = al2;\n var bl3 = al3;\n var bl4 = al4;\n var bl5 = al5;\n var bl6 = al6;\n var bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) |\n (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) |\n (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) |\n (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) |\n (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\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 al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (var j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) |\n (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) |\n (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) |\n (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) |\n (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n len -= 128;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA512();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha512.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;\n/**\n * Package ed25519 implements Ed25519 public-key signature algorithm.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst sha512_1 = require(\"@stablelib/sha512\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.SIGNATURE_LENGTH = 64;\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 64;\nexports.SEED_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst gf0 = gf();\nconst gf1 = gf([1]);\nconst D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203\n]);\nconst D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406\n]);\nconst X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169\n]);\nconst Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666\n]);\nconst I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83\n]);\nfunction set25519(r, a) {\n for (let i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction verify32(x, y) {\n let d = 0;\n for (let i = 0; i < 32; i++) {\n d |= x[i] ^ y[i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction neq25519(a, b) {\n const c = new Uint8Array(32);\n const d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return verify32(c, d);\n}\nfunction par25519(a) {\n const d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 253; a >= 0; a--) {\n square(c, c);\n if (a !== 2 && a !== 4) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction pow2523(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 250; a >= 0; a--) {\n square(c, c);\n if (a !== 1) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction edadd(p, q) {\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n sub(a, p[1], p[0]);\n sub(t, q[1], q[0]);\n mul(a, a, t);\n add(b, p[0], p[1]);\n add(t, q[0], q[1]);\n mul(b, b, t);\n mul(c, p[3], q[3]);\n mul(c, c, D2);\n mul(d, p[2], q[2]);\n add(d, d, d);\n sub(e, b, a);\n sub(f, d, c);\n add(g, d, c);\n add(h, b, a);\n mul(p[0], e, f);\n mul(p[1], h, g);\n mul(p[2], g, f);\n mul(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n for (let i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n const tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n mul(tx, p[0], zi);\n mul(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (let i = 255; i >= 0; --i) {\n const b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n edadd(q, p);\n edadd(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n const q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n mul(q[3], X, Y);\n scalarmult(p, q, s);\n}\n// Generates key pair from secret 32-byte seed.\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SEED_LENGTH) {\n throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);\n }\n const d = (0, sha512_1.hash)(seed);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const publicKey = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n scalarbase(p, d);\n pack(publicKey, p);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\nfunction extractPublicKeyFromSecretKey(secretKey) {\n if (secretKey.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n return new Uint8Array(secretKey.subarray(32));\n}\nexports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;\nconst L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,\n 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 let carry;\n let i;\n let j;\n let 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++) {\n x[j] -= carry * L[j];\n }\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n const x = new Float64Array(64);\n for (let i = 0; i < 64; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 64; i++) {\n r[i] = 0;\n }\n modL(r, x);\n}\n// Returns 64-byte signature of the message under the 64-byte secret key.\nfunction sign(secretKey, message) {\n const x = new Float64Array(64);\n const p = [gf(), gf(), gf(), gf()];\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const signature = new Uint8Array(64);\n signature.set(d.subarray(32), 32);\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(32));\n hs.update(message);\n const r = hs.digest();\n hs.clean();\n reduce(r);\n scalarbase(p, r);\n pack(signature, p);\n hs.reset();\n hs.update(signature.subarray(0, 32));\n hs.update(secretKey.subarray(32));\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n for (let i = 0; i < 32; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 32; i++) {\n for (let j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n modL(signature.subarray(32), x);\n return signature;\n}\nexports.sign = sign;\nfunction unpackneg(r, p) {\n const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n square(num, r[1]);\n mul(den, num, D);\n sub(num, num, r[2]);\n add(den, r[2], den);\n square(den2, den);\n square(den4, den2);\n mul(den6, den4, den2);\n mul(t, den6, num);\n mul(t, t, den);\n pow2523(t, t);\n mul(t, t, num);\n mul(t, t, den);\n mul(t, t, den);\n mul(r[0], t, den);\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n mul(r[0], r[0], I);\n }\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n return -1;\n }\n if (par25519(r[0]) === (p[31] >> 7)) {\n sub(r[0], gf0, r[0]);\n }\n mul(r[3], r[0], r[1]);\n return 0;\n}\nfunction verify(publicKey, message, signature) {\n const t = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n const q = [gf(), gf(), gf(), gf()];\n if (signature.length !== exports.SIGNATURE_LENGTH) {\n throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);\n }\n if (unpackneg(q, publicKey)) {\n return false;\n }\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(0, 32));\n hs.update(publicKey);\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, signature.subarray(32));\n edadd(p, q);\n pack(t, p);\n if (verify32(signature, t)) {\n return false;\n }\n return true;\n}\nexports.verify = verify;\n/**\n * Convert Ed25519 public key to X25519 public key.\n *\n * Throws if given an invalid public key.\n */\nfunction convertPublicKeyToX25519(publicKey) {\n let q = [gf(), gf(), gf(), gf()];\n if (unpackneg(q, publicKey)) {\n throw new Error(\"Ed25519: invalid public key\");\n }\n // Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n let a = gf();\n let b = gf();\n let y = q[1];\n add(a, gf1, y);\n sub(b, gf1, y);\n inv25519(b, b);\n mul(a, a, b);\n let z = new Uint8Array(32);\n pack25519(z, a);\n return z;\n}\nexports.convertPublicKeyToX25519 = convertPublicKeyToX25519;\n/**\n * Convert Ed25519 secret (private) key to X25519 secret key.\n */\nfunction convertSecretKeyToX25519(secretKey) {\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const o = new Uint8Array(d.subarray(0, 32));\n (0, wipe_1.wipe)(d);\n return o;\n}\nexports.convertSecretKeyToX25519 = convertSecretKeyToX25519;\n//# sourceMappingURL=ed25519.js.map","export const JWT_IRIDIUM_ALG = \"EdDSA\";\nexport const JWT_IRIDIUM_TYP = \"JWT\";\nexport const JWT_DELIMITER = \".\";\nexport const JWT_ENCODING = \"base64url\";\nexport const JSON_ENCODING = \"utf8\";\nexport const DATA_ENCODING = \"utf8\";\nexport const DID_DELIMITER = \":\";\nexport const DID_PREFIX = \"did\";\nexport const DID_METHOD = \"key\";\nexport const MULTICODEC_ED25519_ENCODING = \"base58btc\";\nexport const MULTICODEC_ED25519_BASE = \"z\";\nexport const MULTICODEC_ED25519_HEADER = \"K36\";\nexport const MULTICODEC_ED25519_LENGTH = 32;\nexport const KEY_PAIR_SEED_LENGTH = 32;\n//# sourceMappingURL=constants.js.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","const JSONStringify = data => JSON.stringify(data, (_, value) => typeof value === \"bigint\" ? value.toString() + \"n\" : value);\nconst JSONParse = json => {\n const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n const serializedData = json.replace(numbersBiggerThanMaxInt, \"$1\\\"$2n\\\"$3\");\n return JSON.parse(serializedData, (_, value) => {\n const isCustomFormatBigInt = typeof value === \"string\" && value.match(/^\\d+n$/);\n if (isCustomFormatBigInt)\n return BigInt(value.substring(0, value.length - 1));\n return value;\n });\n};\nexport function safeJsonParse(value) {\n if (typeof value !== \"string\") {\n throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n }\n try {\n return JSONParse(value);\n }\n catch (_a) {\n return value;\n }\n}\nexport function safeJsonStringify(value) {\n return typeof value === \"string\" ? value : JSONStringify(value) || \"\";\n}\n//# sourceMappingURL=index.js.map","import { concat } from \"uint8arrays/concat\";\nimport { toString } from \"uint8arrays/to-string\";\nimport { fromString } from \"uint8arrays/from-string\";\nimport { safeJsonParse, safeJsonStringify } from \"@walletconnect/safe-json\";\nimport { DATA_ENCODING, DID_DELIMITER, DID_METHOD, DID_PREFIX, JSON_ENCODING, JWT_DELIMITER, JWT_ENCODING, MULTICODEC_ED25519_BASE, MULTICODEC_ED25519_ENCODING, MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_LENGTH, } from \"./constants\";\nexport function decodeJSON(str) {\n return safeJsonParse(toString(fromString(str, JWT_ENCODING), JSON_ENCODING));\n}\nexport function encodeJSON(val) {\n return toString(fromString(safeJsonStringify(val), JSON_ENCODING), JWT_ENCODING);\n}\nexport function encodeIss(publicKey) {\n const header = fromString(MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_ENCODING);\n const multicodec = MULTICODEC_ED25519_BASE +\n toString(concat([header, publicKey]), MULTICODEC_ED25519_ENCODING);\n return [DID_PREFIX, DID_METHOD, multicodec].join(DID_DELIMITER);\n}\nexport function decodeIss(issuer) {\n const [prefix, method, multicodec] = issuer.split(DID_DELIMITER);\n if (prefix !== DID_PREFIX || method !== DID_METHOD) {\n throw new Error(`Issuer must be a DID with method \"key\"`);\n }\n const base = multicodec.slice(0, 1);\n if (base !== MULTICODEC_ED25519_BASE) {\n throw new Error(`Issuer must be a key in mulicodec format`);\n }\n const bytes = fromString(multicodec.slice(1), MULTICODEC_ED25519_ENCODING);\n const type = toString(bytes.slice(0, 2), MULTICODEC_ED25519_ENCODING);\n if (type !== MULTICODEC_ED25519_HEADER) {\n throw new Error(`Issuer must be a public key with type \"Ed25519\"`);\n }\n const publicKey = bytes.slice(2);\n if (publicKey.length !== MULTICODEC_ED25519_LENGTH) {\n throw new Error(`Issuer must be a public key with length 32 bytes`);\n }\n return publicKey;\n}\nexport function encodeSig(bytes) {\n return toString(bytes, JWT_ENCODING);\n}\nexport function decodeSig(encoded) {\n return fromString(encoded, JWT_ENCODING);\n}\nexport function encodeData(params) {\n return fromString([encodeJSON(params.header), encodeJSON(params.payload)].join(JWT_DELIMITER), DATA_ENCODING);\n}\nexport function decodeData(data) {\n const params = toString(data, DATA_ENCODING).split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n return { header, payload };\n}\nexport function encodeJWT(params) {\n return [\n encodeJSON(params.header),\n encodeJSON(params.payload),\n encodeSig(params.signature),\n ].join(JWT_DELIMITER);\n}\nexport function decodeJWT(jwt) {\n const params = jwt.split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n const signature = decodeSig(params[2]);\n const data = fromString(params.slice(0, 2).join(JWT_DELIMITER), DATA_ENCODING);\n return { header, payload, signature, data };\n}\n//# sourceMappingURL=utils.js.map","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["this","delay_1","delay","require$$0","require$$1","require$$2","watch","require$$3","require$$4","cjs","decode","strictUriEncode","splitOnFirst","h","g","E","x","f","l","T","w.parse","w.stringify","N","y","R","m","d","M","global","version","logger","concat","BN","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","inherits","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","hmac","commonjsRequire","getNAF","getJSF","assert$1","BaseCurve","base","BasePoint","assert$2","ShortCurve","Point","JPoint","hash","HmacDRBG","hmacDrbg","assert$3","KeyPair","key","assert$4","Signature","signature","Position","getLength","rmPadding","constructLength","rand","assert$5","EC","ec","EC$1","c","j","$","A","w","k","wipe_1","hmac_1","require","allocUnsafe","fromString","toString","from","basex","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","sha512","name","base2","base8","base10","base16","base32","base36","base64","base256emoji","createCodec","string","ascii","BASES","bases","brorandModule","brorand","crypto","Base","curve","curves","require$$5","require$$6","parseBytes","cachedProperty","S","u","v.generateKeyPair","o","v.sharedKey","C","K","B","f.parse","f.stringify","z","F","O","b","a","t"],"mappings":";;;;;;EAAA,MAAM,CAAC,CAAC,GAAG,CAAQ,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAQ,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;;ECAhpD,IAAI,aAAa,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,aAAa,KAAK,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;EAC9E,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;EAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACjE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,SAAS;EACT,KAAK;EACL,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC;EACF,IAAI,WAAW,kBAAkB,YAAY;EAC7C,IAAI,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;EAC5C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;EACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;EAC9B,KAAK;EACL,IAAI,OAAO,WAAW,CAAC;EACvB,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,QAAQ,kBAAkB,YAAY;EAC1C,IAAI,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC3B,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC;EACpB,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,mBAAmB,kBAAkB,YAAY;EACrD,IAAI,SAAS,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE;EACzD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;EACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;EACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;EACjC,KAAK;EACL,IAAI,OAAO,mBAAmB,CAAC;EAC/B,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,OAAO,kBAAkB,YAAY;EACzC,IAAI,SAAS,OAAO,GAAG;EACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAC1B,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAC5B,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;EACvB,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,eAAe,kBAAkB,YAAY;EACjD,IAAI,SAAS,eAAe,GAAG;EAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;EACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;EACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAC5B,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;EACvB,KAAK;EACL,IAAI,OAAO,eAAe,CAAC;EAC3B,CAAC,EAAE,CAAC,CAAC;EAEL;EACA,IAAI,kBAAkB,GAAG,8HAA8H,CAAC;EACxJ,IAAI,kBAAkB,GAAG,oFAAoF,CAAC;EAC9G,IAAI,sBAAsB,GAAG,CAAC,CAAC;EAC/B,IAAI,cAAc,GAAG;EACrB,IAAI,CAAC,KAAK,EAAE,wBAAwB,CAAC;EACrC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC;EACjC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC;EACvC,IAAI,CAAC,eAAe,EAAE,wBAAwB,CAAC;EAC/C,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC;EAC1C,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC;EAC7C,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC;EACrC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC;EACxC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;EAC3C,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;EAC1C,IAAI;EACJ,QAAQ,kBAAkB;EAC1B,QAAQ,wDAAwD;EAChE,KAAK;EACL,IAAI,CAAC,QAAQ,EAAE,kDAAkD,CAAC;EAClE,IAAI,CAAC,WAAW,EAAE,+BAA+B,CAAC;EAClD,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;EAC1C,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC;EAC9C,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC;EAClC,IAAI,CAAC,YAAY,EAAE,iCAAiC,CAAC;EACrD,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;EAC1C,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC;EACxC,IAAI,CAAC,KAAK,EAAE,kDAAkD,CAAC;EAC/D,IAAI,CAAC,KAAK,EAAE,+FAA+F,CAAC;EAC5G,IAAI,CAAC,UAAU,EAAE,sCAAsC,CAAC;EACxD,IAAI,CAAC,IAAI,EAAE,2CAA2C,CAAC;EACvD,IAAI,CAAC,IAAI,EAAE,qCAAqC,CAAC;EACjD,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;EAC1B,IAAI,CAAC,MAAM,EAAE,mCAAmC,CAAC;EACjD,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;EACtC,IAAI,CAAC,KAAK,EAAE,wCAAwC,CAAC;EACrD,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC;EAC9C,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC;EACvC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC;EAC1C,IAAI,CAAC,aAAa,EAAE,iCAAiC,CAAC;EACtD,IAAI,CAAC,aAAa,EAAE,mCAAmC,CAAC;EACxD,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC;EAClC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;EACrC,CAAC,CAAC;EACF,IAAI,oBAAoB,GAAG;EAC3B,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC;EAC7B,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;EAC7B,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC;EACxC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;EAClC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;EAC3B,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;EAC7B,IAAI,CAAC,YAAY,EAAE,mCAAmC,CAAC;EACvD,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC;EAC1C,IAAI,CAAC,cAAc,EAAE,iCAAiC,CAAC;EACvD,IAAI,CAAC,YAAY,EAAE,+BAA+B,CAAC;EACnD,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;EAC/C,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC;EACzC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;EACrC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;EACrC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC;EACvC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC;EACvC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;EAChC,IAAI,CAAC,YAAY,EAAE,qDAAqD,CAAC;EACzE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;EACvB,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;EACzB,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;EAC9B,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;EAC3C,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;EAClB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;EACpB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;EACrB,CAAC,CAAC;EACK,SAAS,MAAM,CAAC,SAAS,EAAE;EAClC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE;EACrB,QAAQ,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW;EACvC,QAAQ,OAAO,SAAS,KAAK,WAAW;EACxC,QAAQ,SAAS,CAAC,OAAO,KAAK,aAAa,EAAE;EAC7C,QAAQ,OAAO,IAAI,eAAe,EAAE,CAAC;EACrC,KAAK;EACL,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;EAC1C,QAAQ,OAAO,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,OAAO,cAAc,EAAE,CAAC;EAC5B,CAAC;EACD,SAAS,cAAc,CAAC,EAAE,EAAE;EAC5B;EACA;EACA;EACA;EACA,IAAI,QAAQ,EAAE,KAAK,EAAE;EACrB,QAAQ,cAAc,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,EAAE,EAAE;EACrD,YAAY,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC/C,YAAY,IAAI,OAAO,EAAE;EACzB,gBAAgB,OAAO,OAAO,CAAC;EAC/B,aAAa;EACb,YAAY,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACzC,YAAY,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACnD,SAAS,EAAE,KAAK,CAAC,EAAE;EACnB,CAAC;EAKM,SAAS,cAAc,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,WAAW,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,WAAW,EAAE;EACtB,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;EACtD,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE;EAC9B,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC;EAC7B,KAAK;EACL;EACA,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxF,IAAI,IAAI,YAAY,EAAE;EACtB,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,sBAAsB,EAAE;EAC1D,YAAY,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,kBAAkB,CAAC,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;EACxJ,SAAS;EACT,KAAK;EACL,SAAS;EACT,QAAQ,YAAY,GAAG,EAAE,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzC,IAAI,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC1B,IAAI,IAAI,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACrD,IAAI,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE;EAC7C,QAAQ,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;EAC9C,CAAC;EACM,SAAS,QAAQ,CAAC,EAAE,EAAE;EAC7B,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;EAC5E,QAAQ,IAAI,EAAE,GAAG,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EACrE,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ,IAAI,KAAK,EAAE;EACnB,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;EACM,SAAS,cAAc,GAAG;EACjC,IAAI,IAAI,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;EACnE,IAAI,OAAO,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAClE,CAAC;EACD,SAAS,kBAAkB,CAAC,KAAK,EAAE;EACnC,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;EACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;ECrNA;EACA;AACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;EACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;EACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;EACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;EACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/B,CAAC,CAAC;AACF;EACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;EAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;EACzF,CAAC;AACD;EACO,IAAI,QAAQ,GAAG,WAAW;EACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;EACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACzF,SAAS;EACT,QAAQ,OAAO,CAAC,CAAC;EACjB,MAAK;EACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAC3C,EAAC;AACD;EACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;EACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;EACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAClC,SAAS;EACT,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;AACD;EACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;EAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;EACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;EACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;EACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAClE,CAAC;AACD;EACO,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;EAC/C,IAAI,OAAO,UAAU,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE;EACzE,CAAC;AACD;EACO,SAAS,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE;EACvD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;EACnI,CAAC;AACD;EACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;EAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;EAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,CAAC;AACD;EACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;EAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;EACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;EACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;EACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;EACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;EACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;EAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;EACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;EACjE,gBAAgB;EAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;EAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;EAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;EACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;EACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;EAC3C,aAAa;EACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;EAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;EACzF,KAAK;EACL,CAAC;AACD;EACO,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;EAC7C,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;EACjC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACjB,CAAC;AACD;EACO,SAAS,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE;EACzC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1F,CAAC;AACD;EACO,SAAS,QAAQ,CAAC,CAAC,EAAE;EAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;EAClD,QAAQ,IAAI,EAAE,YAAY;EAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;EAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;EACpD,SAAS;EACT,KAAK,CAAC;EACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;EAC3F,CAAC;AACD;EACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;EACrC,IAAI,IAAI;EACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACnF,KAAK;EACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;EAC3C,YAAY;EACZ,QAAQ,IAAI;EACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7D,SAAS;EACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;EACzC,KAAK;EACL,IAAI,OAAO,EAAE,CAAC;EACd,CAAC;AACD;EACO,SAAS,QAAQ,GAAG;EAC3B,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;EACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,OAAO,EAAE,CAAC;EACd,CAAC;AACD;EACO,SAAS,cAAc,GAAG;EACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;EACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;EACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,OAAO,CAAC,CAAC;EACb,CACA;EACO,SAAS,OAAO,CAAC,CAAC,EAAE;EAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;EACzE,CAAC;AACD;EACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;EACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;EAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;EAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;EACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;EACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;EACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EACtF,CAAC;AACD;EACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EACpC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;EACb,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EAChJ,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;EACnJ,CAAC;AACD;EACO,SAAS,aAAa,CAAC,CAAC,EAAE;EACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;EAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;EACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;EACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;EAChI,CAAC;AACD;EACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;EAClD,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;EACnH,IAAI,OAAO,MAAM,CAAC;EAClB,CACA;EACO,SAAS,YAAY,CAAC,GAAG,EAAE;EAClC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC;EAC1C,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnG,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;EACzB,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;AACD;EACO,SAAS,eAAe,CAAC,GAAG,EAAE;EACrC,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;EAC5D,CAAC;AACD;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE;EAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;EACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;EAC9E,KAAK;EACL,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EACpC,CAAC;AACD;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;EACpE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;EACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;EAC9E,KAAK;EACL,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;EACpC,IAAI,OAAO,KAAK,CAAC;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECxNA,CAAA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAaA,KAAA,CAAA,KAAA,GAAG,KAAK,CAAC,CAAC;GACvB,SAASC,OAAK,CAAC,OAAO,EAAE;EACxB,KAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI;WAC1B,UAAU,CAAC,MAAM;EACzB,aAAY,OAAO,CAAC,IAAI,CAAC,CAAC;YACjB,EAAE,OAAO,CAAC,CAAC;EACpB,MAAK,CAAC,CAAC;IACN;EACD,CAAaD,KAAA,CAAA,KAAA,GAAGC,OAAK,CAAC;EACtB,CAAA;;;;;;;;;;;;;;;ECVA,CAAA,MAAM,CAAC,cAAc,CAAC,IAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAA,IAAA,CAAA,YAAoB,GAAG,IAAA,CAAA,WAAmB,GAAG,KAAK,CAAC,CAAC;EACpD,CAAmB,IAAA,CAAA,WAAA,GAAG,GAAG,CAAC;EAC1B,CAAoB,IAAA,CAAA,YAAA,GAAG,IAAI,CAAC;EAC5B,CAAA;;;;;;;;;;;;ICJA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAmB,CAAA,QAAA,GAAA,OAAA,CAAA,UAAA,GAAqB,OAAsB,CAAA,WAAA,GAAA,OAAA,CAAA,SAAA,GAAoB,OAAmB,CAAA,QAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,SAAA,GAAoB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,OAAA,GAAkB,OAA4B,CAAA,iBAAA,GAAA,OAAA,CAAA,YAAA,GAAuB,OAAoB,CAAA,SAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,mBAAmB,OAAwB,CAAA,aAAA,GAAA,OAAA,CAAA,cAAA,GAAyB,OAAsB,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,GAAuB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,aAAA,GAAwB,OAAyB,CAAA,cAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,OAAuB,CAAA,YAAA,GAAA,OAAA,CAAA,UAAA,GAAqB,KAAK,CAAC,CAAC;EACxiB,EAAA,OAAA,CAAA,UAAA,GAAqB,CAAC,CAAC;EACvB,EAAA,OAAA,CAAA,YAAA,GAAuB,CAAC,CAAC;EACzB,EAAA,OAAA,CAAA,WAAA,GAAsB,EAAE,CAAC;EACzB,EAAA,OAAA,CAAA,cAAA,GAAyB,EAAE,CAAC;EAC5B,EAAA,OAAA,CAAA,aAAA,GAAwB,EAAE,CAAC;IAC3B,OAAqB,CAAA,UAAA,GAAA,OAAO,CAAC,aAAa,CAAC;EAC3C,EAAA,OAAA,CAAA,YAAA,GAAuB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;EAC9C,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;EAC9C,EAAA,OAAA,CAAA,cAAA,GAAyB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;EACjD,EAAA,OAAA,CAAA,aAAA,GAAwB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;IAChD,OAAmB,CAAA,QAAA,GAAA,OAAO,CAAC,aAAa,CAAC;EACzC,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EAC3C,EAAA,OAAA,CAAA,SAAA,GAAoB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,YAAA,GAAuB,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;EAC7C,EAAA,OAAA,CAAA,iBAAA,GAA4B,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;IAClD,OAAkB,CAAA,OAAA,GAAA,OAAO,CAAC,iBAAiB,CAAC;EAC5C,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,SAAA,GAAoB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;EACxC,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;IAC3C,OAAmB,CAAA,QAAA,GAAA,OAAO,CAAC,UAAU,CAAC;EACtC,EAAA,OAAA,CAAA,SAAA,GAAoB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EAC3C,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EAC1C,EAAA,OAAA,CAAA,QAAA,GAAmB,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;EACzC,EAAA;;;;;;;;;;;IC3BA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAGC,YAAgB,CAAC;EACjC,EAAA,OAAO,CAAC,YAAY,CAACC,aAAiB,EAAE,OAAO,CAAC,CAAC;EACjD,EAAA,OAAO,CAAC,YAAY,CAACC,aAAiB,EAAE,OAAO,CAAC,CAAC;EACjD,EAAA;;;;;;;;;;ECJA,CAAA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAA,OAAA,CAAA,eAAuB,GAAG,OAAA,CAAA,aAAqB,GAAG,KAAK,CAAC,CAAC;GACzD,MAAM,WAAW,GAAGF,gBAAA,EAAuB,CAAC;GAC5C,SAAS,aAAa,CAAC,OAAO,EAAE;EAChC,KAAI,OAAO,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC;IAC7C;EACD,CAAqB,OAAA,CAAA,aAAA,GAAG,aAAa,CAAC;GACtC,SAAS,eAAe,CAAC,WAAW,EAAE;OAClC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAC7D;EACD,CAAuB,OAAA,CAAA,eAAA,GAAG,eAAe,CAAC;EAC1C,CAAA;;;;;;;;;;ICXA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAGA,YAAgB,CAAC;EACjC,EAAA,OAAO,CAAC,YAAY,CAACC,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,EAAA,OAAO,CAAC,YAAY,CAACC,gBAAoB,EAAE,OAAO,CAAC,CAAC;EACpD,EAAA;;;;;;;;;;;;ECJA,CAAA,MAAM,CAAC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAaA,OAAA,CAAA,KAAA,GAAG,KAAK,CAAC,CAAC;EACvB,CAAA,MAAM,KAAK,CAAC;EACZ,KAAI,WAAW,GAAG;EAClB,SAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B;OACD,KAAK,CAAC,KAAK,EAAE;WACT,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;eAC5B,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE;EACT,SAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD;OACD,IAAI,CAAC,KAAK,EAAE;WACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC1C,SAAQ,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,WAAW,EAAE;eAC1C,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE;WACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;EACvD,SAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE;OACD,GAAG,CAAC,KAAK,EAAE;WACP,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACrD,SAAQ,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;eAClC,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7D;WACD,OAAO,SAAS,CAAC;QACpB;OACD,OAAO,CAAC,KAAK,EAAE;WACX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC1C,SAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;WACpE,OAAO,OAAO,CAAC;QAClB;IACJ;EACD,CAAaA,OAAA,CAAA,KAAA,GAAG,KAAK,CAAC;EACtB,CAAeA,OAAA,CAAA,OAAA,GAAG,KAAK,CAAC;EACxB,CAAA;;;;;;;;;;;;;ECnCA,CAAA,MAAM,CAAC,cAAc,CAAC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAc,KAAA,CAAA,MAAA,GAAG,KAAK,CAAC,CAAC;EACxB,CAAA,MAAM,MAAM,CAAC;IACZ;EACD,CAAc,KAAA,CAAA,MAAA,GAAG,MAAM,CAAC;EACxB,CAAA;;;;;;;;;;ICLA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAGH,YAAgB,CAAC;EACjC,EAAA,OAAO,CAAC,YAAY,CAACC,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,EAAA;;;;;;GCHA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;GAC9D,MAAM,OAAO,GAAGD,YAAgB,CAAC;EACjC,CAAA,OAAO,CAAC,YAAY,CAACC,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,CAAA,OAAO,CAAC,YAAY,CAACC,gBAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,CAAA,OAAO,CAAC,YAAY,CAACE,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,CAAA,OAAO,CAAC,YAAY,CAACC,kBAAsB,EAAE,OAAO,CAAC,CAAC;EACtD,CAAA;;;;;ECNA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvCA,OAAA,CAAA,eAAA,GAAiCA,KAAA,CAAA,sBAAA,GAAoBA,KAAA,CAAA,SAAA,yBAA2B,GAAG,aAAA,GAAAA,KAAA,CAAA,WAAmB,GAAGA,KAAA,CAAA,kBAA0B,GAAG,cAAA,GAAAA,KAAA,CAAA,YAAoB,GAA8BA,KAAA,CAAA,mBAAA,GAAG,aAAmB,GAAAA,KAAA,CAAA,WAAA,GAA6BA,KAAA,CAAA,kBAAA,GAA+BA,KAAA,CAAA,oBAAA,GAAwBA,KAAA,CAAA,aAAA,GAAG,KAAK,EAAE;EACnU,SAAS,aAAa,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC;EACxB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;EAC9E,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AACoBA,OAAA,CAAA,aAAA,GAAG,cAAc;EACtC,SAAS,oBAAoB,CAAC,IAAI,EAAE;EACpC,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,GAAG,EAAE;EACd,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AAC2BA,OAAA,CAAA,oBAAA,GAAG,qBAAqB;EACpD,SAAS,kBAAkB,GAAG;EAC9B,IAAI,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;EAC5C,CAAC;AACyBA,OAAA,CAAA,kBAAA,GAAG,mBAAmB;EAChD,SAAS,WAAW,GAAG;EACvB,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC;EACrC,CAAC;EACD,IAAmB,aAAA,GAAAA,KAAA,CAAA,WAAA,GAAG,WAAW,CAAC;EAClC,SAAS,mBAAmB,GAAG;EAC/B,IAAI,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;EAC7C,CAAC;AAC0BA,OAAA,CAAA,mBAAA,GAAG,oBAAoB;EAClD,SAAS,YAAY,GAAG;EACxB,IAAI,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;EACtC,CAAC;EACD,IAAoB,cAAA,GAAAA,KAAA,CAAA,YAAA,GAAG,YAAY,CAAC;EACpC,SAAS,kBAAkB,GAAG;EAC9B,IAAI,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;EAC5C,CAAC;AACyBA,OAAA,CAAA,kBAAA,GAAG,mBAAmB;EAChD,SAAS,WAAW,GAAG;EACvB,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC;EACrC,CAAC;EACD,IAAmB,aAAA,GAAAA,KAAA,CAAA,WAAA,GAAG,WAAW,CAAC;EAClC,SAAS,gBAAgB,GAAG;EAC5B,IAAI,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;EAC1C,CAAC;AACuBA,OAAA,CAAA,gBAAA,GAAG,iBAAiB;EAC5C,SAAS,SAAS,GAAG;EACrB,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnC,CAAC;AACgBA,OAAA,CAAA,SAAA,GAAG,UAAU;EAC9B,SAAS,sBAAsB,GAAG;EAClC,IAAI,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;EAChD,CAAC;AAC6BA,OAAA,CAAA,sBAAA,GAAG,uBAAuB;EACxD,SAAS,eAAe,GAAG;EAC3B,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC;EACzC,CAAC;AACsBA,OAAA,CAAA,eAAA,GAAG,eAAe;;;;ECzDzC,MAAM,CAAC,cAAc,CAAC,GAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,IAAyB,mBAAA,GAAA,GAAA,CAAA,iBAAA,GAAG,KAAK,CAAC,CAAC;EACnC,MAAM,gBAAgB,GAAGN,KAAwC,CAAC;EAClE,SAAS,iBAAiB,GAAG;EAC7B,IAAI,IAAI,GAAG,CAAC;EACZ,IAAI,IAAI,GAAG,CAAC;EACZ,IAAI,IAAI;EACR,QAAQ,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;EACpD,QAAQ,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;EACpD,KAAK;EACL,IAAI,OAAO,CAAC,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,SAAS,QAAQ,GAAG;EACxB,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EACvD,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;EACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAClC,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjD,YAAY,IAAI,GAAG,EAAE;EACrB,gBAAgB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;EAC5D,oBAAoB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC3D,oBAAoB,IAAI,IAAI,EAAE;EAC9B,wBAAwB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACvE,4BAA4B,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACtE,4BAA4B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACtD,4BAA4B,IAAI,YAAY,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;EAC9E,4BAA4B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EACzD,gCAAgC,YAAY,IAAI,IAAI,CAAC;EACrD,6BAA6B;EAC7B,iCAAiC;EACjC,gCAAgC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACrE,gCAAgC,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3C,gCAAgC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjE,gCAAgC,YAAY,IAAI,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;EACvE,6BAA6B;EAC7B,4BAA4B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACrD,yBAAyB;EACzB,6BAA6B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC3D,4BAA4B,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;EACpE,4BAA4B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACpD,yBAAyB;EACzB,6BAA6B;EAC7B,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7C,yBAAyB;EACzB,qBAAqB;EACrB,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL,IAAI,SAAS,sBAAsB,CAAC,GAAG,IAAI,EAAE;EAC7C,QAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EAC1D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpC,YAAY,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;EAC/D,iBAAiB,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC1D,iBAAiB,MAAM,CAAC,CAAC,IAAI,KAAK;EAClC,gBAAgB,IAAI,IAAI,EAAE;EAC1B,oBAAoB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC/C,iBAAiB;EACjB,gBAAgB,OAAO,KAAK,CAAC;EAC7B,aAAa,CAAC,CAAC;EACf,YAAY,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,EAAE;EACjD,gBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;EAC5D,gBAAgB,IAAI,OAAO,EAAE;EAC7B,oBAAoB,OAAO,OAAO,CAAC;EACnC,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,EAAE,CAAC;EAClB,KAAK;EACL,IAAI,SAAS,OAAO,GAAG;EACvB,QAAQ,IAAI,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;EAC/F,QAAQ,IAAI,CAAC,IAAI,EAAE;EACnB,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;EAC7B,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,SAAS,cAAc,GAAG;EAC9B,QAAQ,MAAM,WAAW,GAAG,sBAAsB,CAAC,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;EACvH,QAAQ,OAAO,WAAW,CAAC;EAC3B,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;EAC3B,IAAI,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;EACzC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;EAC3B,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;EAC7B,IAAI,MAAM,IAAI,GAAG;EACjB,QAAQ,WAAW;EACnB,QAAQ,GAAG;EACX,QAAQ,KAAK;EACb,QAAQ,IAAI;EACZ,KAAK,CAAC;EACN,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;EACD,mBAAyB,GAAA,GAAA,CAAA,iBAAA,GAAG,iBAAiB;;;;EC/F7C,IAAA,eAAc,GAAG,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;;ECA1H,IAAI,KAAK,GAAG,cAAc,CAAC;EAC3B,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC;EACjE,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD;EACA,SAAS,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE;EAC7C,CAAC,IAAI;EACL;EACA,EAAE,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACnD,EAAE,CAAC,OAAO,GAAG,EAAE;EACf;EACA,EAAE;AACF;EACA,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;EAC9B,EAAE,OAAO,UAAU,CAAC;EACpB,EAAE;AACF;EACA,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;AACpB;EACA;EACA,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACvC,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC;EACA,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;EACzF,CAAC;AACD;EACA,SAASO,QAAM,CAAC,KAAK,EAAE;EACvB,CAAC,IAAI;EACL,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;EACnC,EAAE,CAAC,OAAO,GAAG,EAAE;EACf,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAChD;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,GAAG,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD;EACA,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,OAAO,KAAK,CAAC;EACf,EAAE;EACF,CAAC;AACD;EACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;EACzC;EACA,CAAC,IAAI,UAAU,GAAG;EAClB,EAAE,QAAQ,EAAE,cAAc;EAC1B,EAAE,QAAQ,EAAE,cAAc;EAC1B,EAAE,CAAC;AACH;EACA,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACtC,CAAC,OAAO,KAAK,EAAE;EACf,EAAE,IAAI;EACN;EACA,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD,GAAG,CAAC,OAAO,GAAG,EAAE;EAChB,GAAG,IAAI,MAAM,GAAGA,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC;EACA,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;EAC5B,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EAClC,IAAI;EACJ,GAAG;AACH;EACA,EAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,EAAE;AACF;EACA;EACA,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;AAC9B;EACA,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC;EACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C;EACA,EAAE,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EACvB,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/D,EAAE;AACF;EACA,CAAC,OAAO,KAAK,CAAC;EACd,CAAC;AACD;MACA,kBAAc,GAAG,UAAU,UAAU,EAAE;EACvC,CAAC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;EACrC,EAAE,MAAM,IAAI,SAAS,CAAC,qDAAqD,GAAG,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC;EACvG,EAAE;AACF;EACA,CAAC,IAAI;EACL,EAAE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C;EACA;EACA,EAAE,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;EACxC,EAAE,CAAC,OAAO,GAAG,EAAE;EACf;EACA,EAAE,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;EAC9C,EAAE;EACF,CAAC;;EC3FD,IAAA,YAAc,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK;EACxC,CAAC,IAAI,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,EAAE;EACrE,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;EACvE,EAAE;AACF;EACA,CAAC,IAAI,SAAS,KAAK,EAAE,EAAE;EACvB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAClB,EAAE;AACF;EACA,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClD;EACA,CAAC,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;EAC5B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAClB,EAAE;AACF;EACA,CAAC,OAAO;EACR,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;EACjC,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;EACjD,EAAE,CAAC;EACH,CAAC;;ECpBD,IAAA,SAAc,GAAG,UAAU,GAAG,EAAE,SAAS,EAAE;EAC3C,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;EACd,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtC;EACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB;EACA,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;EACxE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAClB,GAAG;EACH,EAAE;AACF;EACA,CAAC,OAAO,GAAG,CAAC;EACZ,CAAC;;;GCfD,MAAMC,iBAAe,GAAGR,eAA4B,CAAC;GACrD,MAAM,eAAe,GAAGC,kBAA+B,CAAC;GACxD,MAAMQ,cAAY,GAAGP,YAAyB,CAAC;GAC/C,MAAM,YAAY,GAAGE,SAAqB,CAAC;AAC3C;GACA,MAAM,iBAAiB,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AACzE;EACA,CAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACpE;GACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;IACvC,QAAQ,OAAO,CAAC,WAAW;EAC5B,GAAE,KAAK,OAAO;EACd,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;EACpC,KAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC;OACI;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE;AACL;EACA,KAAI,OAAO;EACX,MAAK,GAAG,MAAM;EACd,MAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;EAC/F,MAAK,CAAC;EACN,KAAI,CAAC;AACL;EACA,GAAE,KAAK,SAAS;EAChB,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D;AACL;EACA,KAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACvF,KAAI,CAAC;AACL;EACA,GAAE,KAAK,sBAAsB;EAC7B,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D;AACL;EACA,KAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1F,KAAI,CAAC;AACL;KACE,KAAK,OAAO,CAAC;KACb,KAAK,WAAW,CAAC;KACjB,KAAK,mBAAmB,EAAE;EAC5B,IAAG,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,mBAAmB;EAClE,KAAI,KAAK;EACT,KAAI,GAAG,CAAC;AACR;EACA,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA;OACI,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACxC;EACA,KAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E;AACL;OACI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;EACjF,KAAI,CAAC;MACF;AACH;KACE;EACF,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;EACxB,MAAK,OAAO,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACzC;AACL;EACA,KAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACrF,KAAI,CAAC;KACH;IACD;AACD;GACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;IACtC,IAAI,MAAM,CAAC;AACZ;IACC,QAAQ,OAAO,CAAC,WAAW;EAC5B,GAAE,KAAK,OAAO;EACd,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC;OACI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtC;OACI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;EACxC,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EACxC,KAAI,CAAC;AACL;EACA,GAAE,KAAK,SAAS;EAChB,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC7B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC;OACI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACnC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,CAAC;AACL;EACA,GAAE,KAAK,sBAAsB;EAC7B,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC9B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpC;OACI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACnC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,CAAC;AACL;KACE,KAAK,OAAO,CAAC;EACf,GAAE,KAAK,WAAW;EAClB,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;EACvC,KAAI,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;OAC1F,MAAM,cAAc,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;EACpI,KAAI,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;EAC5D,KAAI,MAAM,QAAQ,GAAG,OAAO,IAAI,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAChL,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EAChC,KAAI,CAAC;AACL;EACA,GAAE,KAAK,mBAAmB;EAC1B,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC;OACI,IAAI,CAAC,OAAO,EAAE;EAClB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;EAC/D,MAAK,OAAO;QACP;AACL;EACA,KAAI,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI;EACrC,MAAK,EAAE;QACF,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAClF;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;EACxC,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;EACnC,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;EAC/D,KAAI,CAAC;AACL;KACE;EACF,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;EACvC,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;EACxC,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,CAAC;KACH;IACD;AACD;GACA,SAAS,4BAA4B,CAAC,KAAK,EAAE;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EACtD,GAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;KAC5E;IACD;AACD;EACA,CAAA,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,EAAC,IAAI,OAAO,CAAC,MAAM,EAAE;EACrB,GAAE,OAAO,OAAO,CAAC,MAAM,GAAGI,iBAAe,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAC3E;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;EACA,CAAA,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,EAAC,IAAI,OAAO,CAAC,MAAM,EAAE;EACrB,GAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;KAC9B;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;GACA,SAAS,UAAU,CAAC,KAAK,EAAE;EAC3B,EAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC3B,GAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;KACpB;AACF;EACA,EAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC9B,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACvC,KAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;OACrC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;GACA,SAAS,UAAU,CAAC,KAAK,EAAE;IAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACtC,EAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;KACrB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;KAClC;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;GACA,SAAS,OAAO,CAAC,GAAG,EAAE;EACtB,EAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACpC,EAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;KACrB,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC5B;AACF;IACC,OAAO,IAAI,CAAC;IACZ;AACD;GACA,SAAS,OAAO,CAAC,KAAK,EAAE;EACxB,EAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACvC,EAAC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;KACtB,OAAO,EAAE,CAAC;KACV;AACF;IACC,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnC;AACD;EACA,CAAA,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,EAAC,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;EACjH,GAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;KAC1H,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;KACvC;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;EACA,CAAA,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;EAC/B,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,IAAI,EAAE,IAAI;KACV,WAAW,EAAE,MAAM;KACnB,oBAAoB,EAAE,GAAG;KACzB,YAAY,EAAE,KAAK;KACnB,aAAa,EAAE,KAAK;KACpB,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,4BAA4B,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC5D;EACA,EAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACjD;EACA;IACC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC;EACA,EAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC9B,OAAO,GAAG,CAAC;KACX;AACF;EACA,EAAC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC5C;IACC,IAAI,CAAC,KAAK,EAAE;KACX,OAAO,GAAG,CAAC;KACX;AACF;IACC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;EACvC,GAAE,IAAI,KAAK,KAAK,EAAE,EAAE;EACpB,IAAG,SAAS;MACT;AACH;KACE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAGC,cAAY,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3F;EACA;EACA;EACA,GAAE,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAClJ,GAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5C;AACF;IACC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;EACrC,GAAE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;MAChD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACvC,KAAI,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;OACzC;EACJ,IAAG,MAAM;MACN,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;MACtC;KACD;AACF;EACA,EAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;KAC3B,OAAO,GAAG,CAAC;KACX;AACF;EACA,EAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK;EACxH,GAAE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACzB,GAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC5E;MACG,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;EACnC,IAAG,MAAM;EACT,IAAG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;MACpB;AACH;KACE,OAAO,MAAM,CAAC;KACd,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB;AACD;EACA,CAAA,OAAA,CAAA,OAAA,GAAkB,OAAO,CAAC;EAC1B,CAAA,OAAA,CAAA,KAAA,GAAgB,KAAK,CAAC;AACtB;EACA,CAAA,OAAA,CAAA,SAAA,GAAoB,CAAC,MAAM,EAAE,OAAO,KAAK;IACxC,IAAI,CAAC,MAAM,EAAE;KACZ,OAAO,EAAE,CAAC;KACV;AACF;EACA,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,WAAW,EAAE,MAAM;KACnB,oBAAoB,EAAE,GAAG;KACzB,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,4BAA4B,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC5D;IACC,MAAM,YAAY,GAAG,GAAG;KACvB,CAAC,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;MAClD,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACjD,GAAE,CAAC;AACH;EACA,EAAC,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAClD;EACA,EAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AACvB;IACC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;EACxC,GAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;MACvB,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MAC9B;KACD;AACF;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC;EACA,EAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;KAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACxB;AACF;EACA,EAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;EACxB,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B;EACA,GAAE,IAAI,KAAK,KAAK,SAAS,EAAE;MACxB,OAAO,EAAE,CAAC;MACV;AACH;EACA,GAAE,IAAI,KAAK,KAAK,IAAI,EAAE;EACtB,IAAG,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;MAC5B;AACH;EACA,GAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC5B,IAAG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,KAAK,mBAAmB,EAAE;OACtE,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;OACnC;AACJ;EACA,IAAG,OAAO,KAAK;QACV,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EAC/B,MAAK,IAAI,CAAC,GAAG,CAAC,CAAC;MACZ;AACH;EACA,GAAE,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7D,GAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACxC,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,QAAA,GAAmB,CAAC,GAAG,EAAE,OAAO,KAAK;EACrC,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAGA,cAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C;IACC,OAAO,MAAM,CAAC,MAAM;KACnB;EACF,IAAG,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;MAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;MACnC;EACH,GAAE,OAAO,IAAI,OAAO,CAAC,uBAAuB,IAAI,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;EACvG,GAAE,CAAC;EACH,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,YAAA,GAAuB,CAAC,MAAM,EAAE,OAAO,KAAK;EAC5C,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,CAAC,wBAAwB,GAAG,IAAI;KAChC,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClD,EAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvE;EACA,EAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,WAAW,EAAE;KAChB,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;KAChC;AACF;IACC,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAChC,EAAC,IAAI,MAAM,CAAC,kBAAkB,EAAE;KAC9B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACxH;AACF;EACA,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EACtC,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,IAAA,GAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK;EAC3C,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,uBAAuB,EAAE,IAAI;KAC7B,CAAC,wBAAwB,GAAG,KAAK;KACjC,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC3E,EAAC,OAAO,OAAO,CAAC,YAAY,CAAC;EAC7B,GAAE,GAAG;EACL,GAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;EACpC,GAAE,kBAAkB;KAClB,EAAE,OAAO,CAAC,CAAC;EACb,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,OAAA,GAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK;EAC9C,EAAC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpH;IACC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IACrD,CAAA;;;ECjeD,IAAIC,GAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAIC,GAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAACC,GAAC,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAIC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAACH,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACI,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAED,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGF,GAAC,CAAC,IAAI,IAAI,CAAC,IAAIA,GAAC,CAAC,CAAC,CAAC,CAACC,GAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAiV,MAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAY,SAAS,MAAM,EAAE,CAAC,OAAO,OAAO,OAAO,EAAE,WAAW,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAQ,SAAS,aAAa,EAAE,CAAC,OAAM,CAACE,aAAC,EAAE,EAAE,CAAC,CAACC,cAAC,EAAE,EAAE,SAAS,CAAC,OAAO,GAAG,oBAAoB,CAAQ,SAAS,SAAS,EAAE,CAAC,OAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,cAAC,EAAE,EAAE,CAAC,CAACD,aAAC,EAAE,CAAQ,SAAS,cAAc,EAAE,CAAC,OAAO,aAAa,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAQ,SAAS,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,aAAa,EAAE,EAAE,OAAO,MAAM,EAAE,WAAW,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAACE,iBAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAACH,GAAC,CAACA,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACI,qBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,EAAE,CAAC,OAAOC,mBAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAACC,aAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,WAAW,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAACC,MAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,SAAS,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACD,aAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAQ,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAQ,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAQ,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAa,MAAC,OAAO,CAAC,CAAC,EAAE,EAAS,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,SAAS,oBAAoB,CAAC,CAAC,CAACE,kBAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAACC,mBAAC,CAAC,CAAC,EAAED,kBAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,OAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,OAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,wDAAwD,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOE,qBAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAED,mBAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAEA,mBAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAQ,eAAe,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAACR,aAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAQ,eAAe,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAQ,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,MAAM,EAAE,CAAC,OAAO,OAAO,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,sCAAsC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;ECQlqN;EACA,CAAA,CAAC,YAAY;AAEb;EACA,GAAE,IAAI,WAAW,GAAG,uBAAuB,CAAC;EAC5C,GAAE,IAAI,cAAc,GAAG,yBAAyB,CAAC;EACjD,GAAE,IAAI,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;KACxC,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;EAClC,GAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;OAC1B,MAAM,GAAG,KAAK,CAAC;MAChB;KACD,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;KACrD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnH,IAAI,OAAO,EAAE;OACX,IAAI,GAAGU,cAAM,CAAC;MACf,MAAM,IAAI,UAAU,EAAE;OACrB,IAAI,GAAG,IAAI,CAAC;MACb;EACH,GAAE,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,QAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;EAE7F,GAAE,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,OAAO,WAAW,KAAK,WAAW,CAAC;KACvF,IAAI,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EAC/C,GAAE,IAAI,aAAa,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;EACrD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;EACnD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EACjD,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;EAC7C,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KAC3B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU;OACvF,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;EAC/E,KAAI,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;EAC3E,KAAI,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU;EACpF,KAAI,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;EACtF,GAAE,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAChC,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,GAAE,IAAI,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACvE,IAAI,cAAc,GAAG;OACnB,KAAK,EAAE,GAAG;OACV,KAAK,EAAE,GAAG;EACd,IAAG,CAAC;AACJ;KACE,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;EACjD,KAAI,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;EACnC,OAAM,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;EACtE,MAAK,CAAC;MACH;AACH;EACA,GAAE,IAAI,YAAY,KAAK,IAAI,CAAC,+BAA+B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;EACrF,KAAI,WAAW,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE;EACxC,OAAM,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;EAC7F,MAAK,CAAC;MACH;AACH;KACE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;OAC5D,OAAO,UAAU,OAAO,EAAE;EAC9B,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EAC3E,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,uBAAuB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EACrE,KAAI,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE;EAC1C,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EACjF,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,wBAAwB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;OAClE,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;SAC1C,OAAO,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EACtF,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,sBAAsB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;OAChE,OAAO,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;SAC5C,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EACtF,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,mBAAmB,GAAG,UAAU,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;EAC3E,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAClD,OAAM,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACjC,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClD;OACD,OAAO,MAAM,CAAC;EAClB,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;OAC1C,IAAI,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,MAAM,CAAC,MAAM,GAAG,YAAY;SAC1B,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EAC7C,MAAK,CAAC;EACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;SACjC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC7C,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC1E,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;OAC/C,IAAI,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC/D,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE;SACpC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;EACnD,MAAK,CAAC;OACF,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE;EACnD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EACvD,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC/E,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;EACpD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;OAC7B,IAAI,MAAM,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;OAC5D,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;EAChD,OAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;EACpB,SAAQ,OAAO,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;EAC1D,QAAO,MAAM;WACL,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UACjE;EACP,MAAK,CAAC;EACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;EACzD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC7D,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAChF,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,gBAAgB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;EAClD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;OAC7B,IAAI,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;OAC1D,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;EAClD,OAAM,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3F,MAAK,CAAC;EACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;EAC3D,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC/D,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC9E,IAAG,CAAC;AACJ;KACE,IAAI,UAAU,GAAG;EACnB,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;EACvF,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;EAC9E,KAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE;EAChG,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE;EACnG,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE;EAC/F,IAAG,CAAC;AACJ;KACE,IAAI,OAAO,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,CAAC;AACrC;EACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC9C,KAAI,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,KAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;EAC9B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC1C,OAAM,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACtD,OAAM,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACnC,OAAM,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;EAC/E,OAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;WAC7B,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACrD,SAAQ,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;WAChC,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;UAC9C;QACF;MACF;AACH;KACE,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EAC7C,KAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,KAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;EAChB,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,KAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;OAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;EAC1C,KAAI,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC;OACpC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;SAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf;MACF;AACH;KACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;EAC/C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,OAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACjC;EACL,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,OAAO,CAAC;EACzC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC7B,SAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;EAC9B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,MAAM,IAAI,YAAY,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE;EACxE,WAAU,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;aAClC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;EAC7D,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;cAC9B;YACF;EACT,QAAO,MAAM;EACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B;SACD,SAAS,GAAG,IAAI,CAAC;QAClB;EACL,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM;EACjF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACnE;EACA,KAAI,OAAO,KAAK,GAAG,MAAM,EAAE;EAC3B,OAAM,IAAI,IAAI,CAAC,KAAK,EAAE;EACtB,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;WACnB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC/B,SAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC7C,WAAU,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf;UACF;SACD,IAAI,SAAS,EAAE;EACrB,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;EACvE,WAAU,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACpD;EACT,QAAO,MAAM;EACb,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;aAC7D,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EAC3C,WAAU,IAAI,IAAI,GAAG,IAAI,EAAE;EAC3B,aAAY,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EACrD,YAAW,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;eACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eACzD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;cAC5D,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;eAC1C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EACvE,YAAW,MAAM;eACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;eAClF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eACnE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;cAC5D;YACF;UACF;EACP,OAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC7B,OAAM,IAAI,CAAC,IAAI,SAAS,EAAE;EAC1B,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;WAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;WAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;aAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB;EACT,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,SAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAC1B,QAAO,MAAM;EACb,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;UAChB;QACF;OACD,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE;OAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;EACpB,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACf,KAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,OAAO,CAAC,GAAG,CAAC,EAAE;EAClB,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACvB,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SACZ,EAAE,CAAC,CAAC;QACL;OACD,IAAI,KAAK,EAAE;EACf,OAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACvB,KAAI,OAAO,KAAK,CAAC,MAAM,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,EAAE;EACjD,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,CAAC;EACrC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC7B,SAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;EAC1B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,MAAM,IAAI,YAAY,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE;EACpE,WAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;aAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;EACzD,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;cAC9B;YACF;EACT,QAAO,MAAM;EACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B;SACD,SAAS,GAAG,IAAI,CAAC;QAClB;OACD,IAAI,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;OACnC,IAAI,SAAS,EAAE;SACb,KAAK,GAAG,MAAM,CAAC;EACrB,MAAK,MAAM;EACX,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;WACnC,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC,SAAQ,IAAI,IAAI,GAAG,IAAI,EAAE;aACf,KAAK,IAAI,CAAC,CAAC;EACrB,UAAS,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;aACvB,KAAK,IAAI,CAAC,CAAC;YACZ,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;aAC1C,KAAK,IAAI,CAAC,CAAC;EACrB,UAAS,MAAM;aACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aAC1E,KAAK,IAAI,CAAC,CAAC;YACZ;UACF;QACF;OACD,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EACpC,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;OACjB,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC,EAAE;OAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;SACpC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC;OACD,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACrC,KAAI,IAAI,KAAK,GAAG,EAAE,CAAC;EACnB,KAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;EAChC,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;OACnB,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;EAC1C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,OAAM,OAAO;QACR;EACL,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;OACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/F,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACtC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,SAAS,EAAE;SACzC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;EACrC,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC3C,SAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACf;QACF;OACD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;OACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;SAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB;EACL,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACT,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;EACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;EACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;EAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjD,KAAI,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC;EACxB,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;EAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;EAChE,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,SAAQ,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;EACvE,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;EAC1E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;EAC3E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;UACrE;EACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;EAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;WACL,CAAC,GAAG,CAAC,CAAC;UACP;QACF;OACD,IAAI,UAAU,EAAE;EACpB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,OAAM,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;EACtE,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;WAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;UACzE;EACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;WAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;UAC1E;QACF;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;EAC7C,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;EACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;EAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;OAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;OACjC,IAAI,MAAM,CAAC;OACX,IAAI,UAAU,EAAE;EACpB,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACxD,MAAK,MAAM;EACX,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC;OACD,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;EACxC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;EAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;WACxD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACjB;EACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;EAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;UACN;QACF;OACD,IAAI,UAAU,EAAE;SACd,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC;OACD,OAAO,MAAM,CAAC;EAClB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;AACzD;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;EACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;EACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;EAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;OAC7C,IAAI,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;EAClC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;EAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;EAChE,SAAQ,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;EACxB,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;WACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EACrC,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;EAChD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;EACjD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;UAC1C;EACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;EAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;UACN;QACF;OACD,IAAI,UAAU,EAAE;EACpB,OAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;EACtB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EACnC,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;EAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;UACzC;EACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;EAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;UAC1C;QACF;OACD,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EAC3C,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;MAC9C;AACH;EACA,GAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;OACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;OACnC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAChD,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,GAAG,UAAU,CAAC,EAAE;OACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACvD,OAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;EACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;EACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;SAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;EACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAA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AC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;EACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE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AAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG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E,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UA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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,EAAE,GAAG;EACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,CAAC,GAAG;EACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,E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IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAA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EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,G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,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,G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G,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAA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AAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAA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SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,gEAAgE;EACxE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,k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I,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UA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AAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB;EACA;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/B;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GA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CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..35ee8fd15751892fd1c57301faa3bf47477c94d7 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/keychain.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/crypto.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/messages.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/publisher.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/relayer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/history.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/expirer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/store.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/pairing.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/verify.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/echo.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/events.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/core.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/index.d.ts","../../../node_modules/detect-browser/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/error.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/crypto.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/format.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/routing.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/url.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/validators.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/index.d.ts","../../../node_modules/query-string/index.d.ts","../src/misc.ts","../../../node_modules/@ethersproject/hash/lib/id.d.ts","../../../node_modules/@ethersproject/hash/lib/namehash.d.ts","../../../node_modules/@ethersproject/bytes/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/message.d.ts","../../../node_modules/@ethersproject/bignumber/lib/bignumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/fixednumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/index.d.ts","../../../node_modules/@ethersproject/networks/lib/types.d.ts","../../../node_modules/@ethersproject/networks/lib/index.d.ts","../../../node_modules/@ethersproject/properties/lib/index.d.ts","../../../node_modules/@ethersproject/transactions/lib/index.d.ts","../../../node_modules/@ethersproject/web/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-provider/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-signer/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/typed-data.d.ts","../../../node_modules/@ethersproject/hash/lib/index.d.ts","../src/signatures.ts","../src/cacao.ts","../src/caip.ts","../../../node_modules/@stablelib/aead/lib/aead.d.ts","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.d.ts","../../../node_modules/@stablelib/hash/lib/hash.d.ts","../../../node_modules/@stablelib/hkdf/lib/hkdf.d.ts","../../../node_modules/@stablelib/random/lib/source/index.d.ts","../../../node_modules/@stablelib/random/lib/source/system.d.ts","../../../node_modules/@stablelib/random/lib/random.d.ts","../../../node_modules/@stablelib/sha256/lib/sha256.d.ts","../../../node_modules/@stablelib/x25519/lib/x25519.d.ts","../node_modules/uint8arrays/types/src/compare.d.ts","../node_modules/uint8arrays/types/src/concat.d.ts","../node_modules/uint8arrays/types/src/equals.d.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/uint8arrays/types/src/util/bases.d.ts","../node_modules/uint8arrays/types/src/from-string.d.ts","../node_modules/uint8arrays/types/src/to-string.d.ts","../node_modules/uint8arrays/types/src/xor.d.ts","../node_modules/uint8arrays/types/src/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@stablelib/ed25519/lib/ed25519.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/api.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/utils.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/index.d.ts","../src/crypto.ts","../src/errors.ts","../../../node_modules/@walletconnect/relay-api/dist/types/types.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/parsers.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/validators.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/index.d.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts","../src/index.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d","01b86d49aad113300499cf05f714c17ca971ffe25240124bd619e690f75a8b55","3d3202b1aecf61c574d412ed08cc43ac46dcb888c31de5b40d05168f6207cde8","dfbd08d79c0ed94d7563e818229b1f9ac27c6b29099431de81be9fb2334a1c42","4f815aba9db7da7a51661c55236f54bad4e01b682aef431e042b116f9d910470","200650e1ed5d5b2bee679e079619d1b6d162df822b31af327dbd61ff95689562","27b8ca719f38978c9321758b7cfd51873d377db44eac9f3f6e402752faa3f6a5","5b0594c3b261f6eb7e54bbf17588e679abc03e3693ec5076dea9f1cee0bbcf13","101602942b03c24915c706a82361b45cf66fe055f8627f7347fa6bbc0d4811e2","9c6b34ba69cd25457b0a5b27db15705ab7eba470af085e89c37d1d3d6e21c977","7e53626f08f85e10df73876c7517af4c3fc1c46bbca543d77b4682743ed2f163","620148e2b8632dae30a3ce69e8097c9332a6a3b3e172ee1fcd5fbf06750e81af","8f34f8fc1952d8e3987ccb39ccff1a4bc4eb0f04221e3d854529302d56e87226","85aac179d07d2a3d7b95a1e5b285c91a717d91bcc9e60a7e8b9de4008c15a542","52d2d16f42f024e057542940e191c49d10876c50e37a6abfcbdf365b813376fe","e3db3019dd47322ff80e20fd431c893db3a93c52fe9774bab69aa7534518cd82","f0fe1e6ca80532a63a6482b69a40c0ef7117f7148beee8e588c7f1528209dc71","82e9f199e29ff8a029aebec3a7f258ac2f2091a4b17d1ec20123eb9f2f7fa847","002edf832f43162f7cb70da12e2ec9e0054286872e317faec25ab15c4085804f","9d93daff82e921f6ddf56c6d207fdbf76b8f51566cd04d4fe8b34d1d72bad8ed","3d73320d9491b16adfd29d3177af35611cc98a09f4c632b39014bbec165862e2","517c54ef783149f46a5f55eecab11558bc1e33208d6bf6f0bbc134c13d9ab01d","49f5a1d46d63e66efe850b0f269e72bd85485c9458486c304c64c022eb741d50","1e4f096ec42477fa7881f58c52d9e6bf9fa7e71ba01f562d734c3bb6c6bee24d","87ed59b6a8df8efc3f0eaa35c8da0bf788f5510a128d3f62936f6af57edc7e41","15cb254c8108860af77bbc6458f764c66d081ac500e397f3cb8acb9d2b158402","1fbc0aa2bf8e019b2aae8567022e7b55f59b144714d6d1aa6c96b8acf15151a8","10fa6a67f237e9d803110d9f7b29b5edded4adb47809ea3d4355a6d3b644f978","24766e27ffabe6d258cfc54643f841782672a0e63e1d912ba23138deaf40e401","b76f79b98bd953ee71bba656b761f4ba26034ff3f8687c7c65edfc2d9604670f","d9548e5e333b64e6da237002a469401735722ea45caf86bff02db69213e96e31","66682da81646c807fbbb0999fc6d49ad41d10a32880b5803a7dea07fa251d1b9","7902c9ca40697c65549f9a41ab8cd711eab57143ac0d6202af73c18bcd63ca4c","d6536cdf16f68971c9a7f20bc2c353e0655bc3ac6ee742ec9d6da8b48cb89aa9","beea0bd57334b5d3f296eb255a99d6bb4c081faed7b09b8c5d2d7d3666ecb26c","d15bc6928c895f44e02a86f60c0e72d6d09ba7812d5ace831dc7f6c2600317d0","f3285db89f2ab44bb19e8a4e107d8542543a64ceb5a244339a348e36a3ebc938","223c35d0032d2ce91977eb3bced9e74dfbc5ff54d17ace3f471069e8e0935dfa","3f19b01b25d8152c3f023a55b958071c39f29aecc3206d8b953ce22ed1afe2a7","cc8a7843f4b9f96ac5179ec3ee1ecd428dea0caa35c455cab1b3e7a73c740306","776084ff5d871a19ffe2992bc1f7318d0187e34e5a4a7da4eeb78bdf9501e621","612e990e85f99aa8f2329d6d4d755713a44bd5c2041b02baae19c3ed1523f1de","4a259c19075fb64b9c302da22c51feb14fb8ad0775a780fccbef6a9e6c082c63","54223032d8849dd76ec6087684f361e9973c8de9c643b6a9ace67c136b13a326","0ae96d34bca21bb9118f2a8269a625ba4eee909c5d14d475a2eef33cea431552","a38c5518309b0e8f832f6fd53641ac69eeee77b66a03864a2688438e5402d3e5","d8931c54a30eea4ecc0afec72a4c81af8ddfebbec5c424b58c30bc7d5cbacd6c","6ff08c4d0269c9df488ab989923859d733cc35ba0eb65ce146d80f0487445088","2e1cd25ab4b887717e27b7013d9b5f1ee1e21406f3bc60f6db06383839e6d35a","84b504a59014d3e72dd4113089825b496620eb0647c47d2e56eeb105319f95f2","27975250d16d95779140c1c2231e2f7b9d7764f4bb716b19880c01eeea715452",{"version":"f9f9299195f26062d0947743595024ab0cafc766357f914fe2fc541968c9e079","signature":"dd551b50359abbf84b07a1aae29f84686ff2e627d04ad6abfa384896dec211a2"},"45a910666b455daf042c0a0cfa610c20ea59a0aaf702f93d3b467a05f9a27e20","5580ff53b5f6f1ecdb68ecb61327e63112f97660912c15444c1f8a08f69c19dc","1fcb8b15db812281d69a3090d488903f9e93033004aef9d8889ca3ad0753a96f","84fb7c52fc116ddcbd1b34535e387053f2a0134d11c5e39b193f4c1328fb1fb5","bdf5a95eb0a2dd1d39805bdf51b46ba012bb9b92b2ddaae16219595bba7678a5","9f794a0e8550a03baff865a3961cc22afbd85bc4ba9672bdda036971928f85f4","66a697d1e4cdbf25cdce4644a8085a8563041fa8c7731d4d9f5e8f22e66ba72c","4f1ae3f24125216cf07c5211a3f00d2bb4782d7cc76c0681603f8249f9232ff0","d3fb92a5640f83f7844d60b35317a0f95c27e3658a749d76d218c461ad091668","8bc2cad630da1033c1fd8d7df2bffb18af0da6113bd086a8bbec04a2471a1e00","d1f8bfcd91b284657ef8187c55ace7db91a3c43e642c3f14e54364154932f7e4","f54c92bfcae54f360fe79514746efce4870e4ddabc064e95d406bba291e9f672","175fd7186fa6a70f9db9b270a04a503cae23cf01cb77e3905bac115c38424cf7","c993f7ed1b8e1023c1f2ee5b262dbc3b70b27475674e40a53a58591f9972dacc","fd3cd8bf3c90ef4694195a617a5daaac561d8be52ba33c607f170c11f3c50154","6852fc2f309e330e38694bad95bde670c384d1498bf4fbe3a751761b43279934",{"version":"fc46b90ef00ea80de64313ca101e3377e82c7de5b2b8cc82ec324ef64062dfd2","signature":"51d71dbcbf7dfc9fa475d1d2db8c744fc93cb91fb8b4e6e3724377066008e745"},{"version":"5d731342b1c0fd0c367ff68e163309ae71ca2fc8b3461861be64e68296730bf7","signature":"04130e865406d542194f0ca04c131174c7b7230b4c7b1ffe6deb723b411e5122"},{"version":"f287cf1ae78dadca66f0fff910164af2e66d7e1ee1ef4aa53e8bf9ac364d086a","signature":"ca2cd04f36686a52bf72f3a75f34f09d496abefb9410c13d609c968956d23fa8"},"91bdb91e83ad82b3a68955033c35413e11158a56448534cc11dae2734cab0d8f","fc8ed8a75b39d372ea11553e253c763a75b8447f6a5a3b0c3509b21803ce4783","6562fc4b9b470ee474add192278b9ad7d863b1096f57c7aeb26e6b15a86e51a7","19109153165b1279adbddfac3f9182ef2274cacc9dd2dbadbff7983332343348","b7b4da95464f11da1b8de59ed34f6deb740d14fcdd54065fdbbe850741ae958c","64d7747acb1d36374e9c884773b6dbede826dd9684cecad3c7fb4ce7960f90d7","47e62f697f75c990750842294e175977588557f15a9731625e7e3c882b4b1d24","ef5a427017c481641f81327b63c13c810eaf49bf770986ae959de10c12242dff","c633deeb89a5a7142bce011d097bc4d354533c6f51a5b25404355a968414f29a","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","c6591dc2b834e9be50f97edb393c4673e9b66f5689c90d69a71c7da962a0563a","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","adf189301df111a1faa1bf6abd90c1323cb769e73a3757371421a47a7ad38536","7c049c1aee9019c358917750ddb137dcba8210aa70fc0f38cc74c8aa8923a500","9ec3f45588bdc21f53ff886d8ba21f7b32662dcc110addbb6209eb45779b4637","15d3978a362d47f8ed5b868a28d0f8a5dfe6337c89b2700eba2e31d5c9e85bed","5a50144562fb77383e680369d9e3a079a302a4ec0e9c688fe7b7dc927f84af08","81ee761144fa54ff76f0ded5d66430aa3d2853075c298b75421d42c513f5076b",{"version":"48b08f051eb2ec26f1849a39c89983f14f94727be08544aad9d3288dd1c8417e","signature":"993744b36c8bae23bde7b4b5f54de91ddebb944b5a4afbfcb7604b15f0d26608"},{"version":"efe026cccf176ebb4989defd182b1402ad6b432248f85efec8adfdcd1914ef7a","signature":"66fdfd3fb3a180a39b3a465a45c2682e1123505d6bda88f2cd13707806955f0e"},"890fa9b79dae2c3abe454aa7c30c41ed66509b5643d56fd2104c7f5d9febd3f4","cc703e7df0457b35086d815d6ff33cd3452317d7a8d7f152597f8dbc6459c5f9","e24b93132bafb120fa11f2454152834abfe47179a2dd96abdbbc57734ed6472b","82bd382cdf173bc58e91d1e25c7acf91ff443983e5c68978082ad5f2877f9af9","f488ac0001e44c0038e04b5134ff153e6bd666e2eba11bb884543a708be88a95",{"version":"b0cd303641a5575deb48407b2a64c83fdcaa35d4cc4965167b167f13c0564104","signature":"090ea064f7de7b504d1168af39eaf9fd59920450ab581dfd5f7458d1bf3554a0"},{"version":"a37dae9464df53f20ce5494372d098b74807208fc411ce6052001a88b11a3848","signature":"e19b4ad73442eecba082977023d1de9d6de5869d8eea5e90b77d230aa7ff9158"},{"version":"b115b8d6869fe7704e4f658b35520f7a8e20089977d6af2497c4afadc7092cbe","signature":"8738ff26cb6ed57db7a193f0d0dc9dde271aef5abc8c0d75693f230876594d43"},{"version":"429495125cb6cb7b4819c396b535e5aa057730e92ef6ab96d9f0b709f6460c2d","signature":"04eafb317a7fe2573471ce70d5955e03527d1597c120f2483aae6b5815127df9"},{"version":"6b3875e799fc477088fe196fe847e7ee1e56d535abf5ff98056e20c2ad92f939","signature":"ebb66422766f0304bd7a4d53ab79034921277fe632062c464d4227629e1f833d"},{"version":"e02e0d426e98a3c1ba7c2588d7a490afec59d602f861080ca33cfcd5c6dc0a9d","signature":"adbeb36efd0d65689eddce562811b5aaf8d46c2719be7d669e86607f56acfa74"},"45d4c0b459175dd8a78fec4c0597bbb02d7b6a708c2a1400c4575618d717da13","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,177,181,183,184,185,186],[88,177,181,184,187],[88,177],[88,177,179],[88,179,180],[88],[88,175,176,178,189],[88,188],[88,182],[88,177,181],[88,194],[88,200],[88,196],[88,198,199],[88,198],[88,95],[58,61,87,88,95,235,236,237],[88,239],[88,213],[88,242],[88,243],[58,88,95],[88,260],[88,248,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,251,252,253,254,255,256,257,258,259,260],[88,249,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,250,252,253,254,255,256,257,258,259,260],[88,248,249,250,251,253,254,255,256,257,258,259,260],[88,248,249,250,251,252,254,255,256,257,258,259,260],[88,248,249,250,251,252,253,255,256,257,258,259,260],[88,248,249,250,251,252,253,254,256,257,258,259,260],[88,248,249,250,251,252,253,254,255,257,258,259,260],[88,248,249,250,251,252,253,254,255,256,258,259,260],[88,248,249,250,251,252,253,254,255,256,257,259,260],[88,248,249,250,251,252,253,254,255,256,257,258,260],[88,248,249,250,251,252,253,254,255,256,257,258,259],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,270],[88,273],[88,275],[88,164,165],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,166],[88,113,162],[88,162],[88,161,162,163,167,168,169,170,171],[88,113],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[88,223,224,225,226],[88,223],[88,113,223],[88,215],[88,217],[88,216,217,218,219],[88,155,156],[88,151,153,154,157],[88,152],[88,149,150],[88,153],[88,97,103,108,123,124,125,129,130,131,133,134,135,136],[88,113,123,124,137],[88,123],[88,123,137],[88,97,123,137],[88,97,113,123,137],[88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[58,88,95,113,123,129,132,137],[88,97,123,129],[88,97,113,123,126,127,128,137],[88,113,123,137],[88,97,113,123,129],[88,108,123,137],[88,138,146],[88,113,138,141],[58,88,95,123,134,137,138,139,140,141,143,144],[58,88,95,113,129,133,138,139,140,141,142,143,145],[88,139,140,141,142,143,144,145],[88,113,129,139,141,145,146],[88,129,132,145],[88,129,132,139,140,145],[88,206],[61,88,95],[58,88,92,114,115],[88,208],[88,203,204,205,209,210,211],[88,206,207],[42,88,147,174,191],[42,88,147],[42,88,147,195,197,200,201,202,212,214,220],[42,88],[42,88,174,191,192,193,221,222,228,229,230,231,232,233],[42,88,108,147,148,158,159,160,172,173],[42,88,147,174,231],[42,88,174],[42,88,147,227],[42,88,147,185,190],[42,88,147,173],[42,88,113,147,174,193,222,230],[147],[147,214],[108,147,172],[147,227],[113,147]],"referencedMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,147],[193,148],[221,149],[222,150],[234,151],[233,150],[174,152],[230,153],[232,154],[228,155],[191,156],[229,157],[231,158]],"exportedModulesMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,159],[193,159],[221,160],[234,151],[174,161],[230,159],[228,162],[191,159],[229,159],[231,163]],"semanticDiagnosticsPerFile":[187,188,179,180,181,177,175,190,178,176,189,183,182,184,185,186,194,195,215,196,197,200,198,199,201,202,213,238,240,239,214,241,236,242,243,244,245,246,247,261,249,250,248,251,252,253,254,255,256,257,258,259,260,262,263,264,265,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,266,267,268,237,269,271,270,272,274,273,275,276,164,165,166,96,97,101,102,100,103,98,99,113,109,110,111,112,161,167,163,168,172,169,162,170,171,108,107,106,104,105,121,119,117,123,118,120,122,227,225,224,223,226,216,218,220,217,219,157,155,156,158,153,152,150,149,151,154,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141,159,160,148,235,207,206,114,116,173,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,203,204,205,209,212,210,208,211,192,193,221,222,234,233,174,230,232,228,191,229,231]},"version":"4.7.4"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..ab04a5d7f3663e5540876a90e72d674d42b40975 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts +@@ -0,0 +1,54 @@ ++import { AuthTypes } from "@walletconnect/types"; ++export declare const getDidAddressSegments: (iss: string) => string[]; ++export declare const getDidChainId: (iss: string) => string | undefined; ++export declare const getNamespacedDidChainId: (iss: string) => string | undefined; ++export declare const getDidAddress: (iss: string) => string | undefined; ++export declare function validateSignedCacao(params: { ++ cacao: AuthTypes.Cacao; ++ projectId?: string; ++}): Promise; ++export declare const formatMessage: (cacao: AuthTypes.FormatMessageParams, iss: string) => string; ++export declare function buildAuthObject(requestPayload: AuthTypes.PayloadParams, signature: AuthTypes.CacaoSignature, iss: string): AuthTypes.Cacao; ++declare type PopulateAuthPayloadParams = { ++ authPayload: AuthTypes.PayloadParams; ++ chains: string[]; ++ methods: string[]; ++}; ++export declare function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams; ++export declare function getDecodedRecapFromResources(resources?: string[]): RecapType | undefined; ++export declare function recapHasResource(recap: any, resource: string): any; ++export declare function getRecapResource(recap: any, resource: string): any[]; ++export declare function getRecapAbilitiesFromResource(actions: any[]): string[][]; ++export declare function getReCapActions(abilities: any[]): any[]; ++export declare function base64Encode(input: unknown): string; ++export declare function base64Decode(encodedString: string): string; ++export declare function isValidRecap(recap: any): void; ++export declare function createRecap(resource: string, ability: string, actions: string[], limits?: {}): { ++ att: { ++ [x: string]: any; ++ }; ++}; ++declare type RecapType = { ++ att: { ++ [key: string]: Record; ++ }; ++}; ++export declare function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]): { ++ att: {}; ++}; ++export declare function assignAbilityToActions(ability: string, actions: string[], limits?: {}): any; ++export declare function encodeRecap(recap: any): string; ++export declare function decodeRecap(recap: any): RecapType; ++export declare function createEncodedRecap(resource: string, ability: string, actions: string[]): string; ++export declare function isRecap(resource: string): boolean | ""; ++export declare function mergeEncodedRecaps(recap1: string, recap2: string): string; ++export declare function mergeRecaps(recap1: RecapType, recap2: RecapType): { ++ att: {}; ++}; ++export declare function formatStatementFromRecap(statement: string | undefined, recap: RecapType): string; ++export declare function getMethodsFromRecap(recap: string): any[]; ++export declare function getChainsFromRecap(recap: string): string[]; ++export declare function buildRecapStatement(statement: string, recap: unknown): string; ++export declare function getRecapFromResources(resources?: string[]): string | undefined; ++export {}; ++//# sourceMappingURL=cacao.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a47cbed6a7b072608b9c10819eb05c4fb9a9e0c2 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"cacao.d.ts","sourceRoot":"","sources":["../../src/cacao.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts b/node_modules/@walletconnect/utils/dist/types/caip.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..020b018efce1c2463156e9e38bb4845a58d75732 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts +@@ -0,0 +1,24 @@ ++import { SessionTypes, ProposalTypes } from "@walletconnect/types"; ++interface ChainIdParams { ++ namespace: string; ++ reference: string; ++} ++interface AccountIdParams extends ChainIdParams { ++ address: string; ++} ++export declare function parseChainId(chain: string): ChainIdParams; ++export declare function formatChainId(params: ChainIdParams): string; ++export declare function parseAccountId(account: string): AccountIdParams; ++export declare function formatAccountId(params: AccountIdParams): string; ++export declare function getUniqueValues(array: string[], parser: (str: string) => string): string[]; ++export declare function getAddressFromAccount(account: string): string; ++export declare function getChainFromAccount(account: string): string; ++export declare function formatAccountWithChain(address: string, chain: string): string; ++export declare function getAddressesFromAccounts(accounts: string[]): string[]; ++export declare function getChainsFromAccounts(accounts: string[]): string[]; ++export declare function getAccountsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; ++export declare function getChainsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; ++export declare function getChainsFromRequiredNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, keys?: string[]): string[]; ++export declare function getChainsFromNamespace(namespace: string, namespaceProps: ProposalTypes.BaseRequiredNamespace): string[]; ++export {}; ++//# sourceMappingURL=caip.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..1de8c0941403193ef11f9ac955095552c2a32335 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"caip.d.ts","sourceRoot":"","sources":["../../src/caip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAGzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAG/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAG/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAO1F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,UAGpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAIlD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAIpE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAEvD;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,+BAA+B,CAC7C,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,EACpD,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,aAAa,CAAC,qBAAqB,YAIpD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dad378ddeb1330e69062e57bb0e9efc48cb7f20f +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts +@@ -0,0 +1,38 @@ ++import { CryptoTypes } from "@walletconnect/types"; ++import { ec as EC } from "elliptic"; ++export declare const BASE10 = "base10"; ++export declare const BASE16 = "base16"; ++export declare const BASE64 = "base64pad"; ++export declare const BASE64URL = "base64url"; ++export declare const UTF8 = "utf8"; ++export declare const TYPE_0 = 0; ++export declare const TYPE_1 = 1; ++export declare const TYPE_2 = 2; ++export declare type P256KeyDataType = { ++ crv: "P-256"; ++ ext: true; ++ key_ops: ["verify"]; ++ kty: string; ++ x: string; ++ y: string; ++}; ++export declare function generateKeyPair(): CryptoTypes.KeyPair; ++export declare function generateRandomBytes32(): string; ++export declare function deriveSymKey(privateKeyA: string, publicKeyB: string): string; ++export declare function hashKey(key: string): string; ++export declare function hashMessage(message: string): string; ++export declare function encodeTypeByte(type: number): Uint8Array; ++export declare function decodeTypeByte(byte: Uint8Array): number; ++export declare function encrypt(params: CryptoTypes.EncryptParams): string; ++export declare function encodeTypeTwoEnvelope(message: string, encoding?: CryptoTypes.EncodingType): string; ++export declare function decrypt(params: CryptoTypes.DecryptParams): string; ++export declare function decodeTypeTwoEnvelope(encoded: string, encoding?: CryptoTypes.EncodingType): string; ++export declare function serialize(params: CryptoTypes.EncodingParams): string; ++export declare function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams; ++export declare function validateDecoding(encoded: string, opts?: CryptoTypes.DecodeOptions): CryptoTypes.EncodingValidation; ++export declare function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation; ++export declare function isTypeOneEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; ++export declare function isTypeTwoEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; ++export declare function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair; ++export declare function verifyP256Jwt(token: string, keyData: P256KeyDataType): T; ++//# sourceMappingURL=crypto.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..03a08090de1867936f207319b4d5015f1fe4cc91 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,oBAAY,eAAe,GAAG;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAOF,wBAAgB,eAAe,IAAI,WAAW,CAAC,OAAO,CAMrD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAejE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAMR;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAMjE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAGR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,MAAM,CAiBpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAwB1F;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAC/B,WAAW,CAAC,kBAAkB,CAUhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAejG;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAMrC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAErC;AACD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,EAAE,CAAC,OAAO,CAU5E;AAeD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAkCvE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts b/node_modules/@walletconnect/utils/dist/types/errors.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..b77dd19f68a077bd9c0783ef9444802a6ca23402 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts +@@ -0,0 +1,135 @@ ++export declare type SdkErrorKey = keyof typeof SDK_ERRORS; ++export declare type InternalErrorKey = keyof typeof INTERNAL_ERRORS; ++export declare const SDK_ERRORS: { ++ INVALID_METHOD: { ++ message: string; ++ code: number; ++ }; ++ INVALID_EVENT: { ++ message: string; ++ code: number; ++ }; ++ INVALID_UPDATE_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ INVALID_EXTEND_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ INVALID_SESSION_SETTLE_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_METHOD: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_EVENT: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_UPDATE_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_EXTEND_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED_CHAINS: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED_METHODS: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED_EVENTS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_CHAINS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_METHODS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_EVENTS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_ACCOUNTS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_NAMESPACE_KEY: { ++ message: string; ++ code: number; ++ }; ++ USER_DISCONNECTED: { ++ message: string; ++ code: number; ++ }; ++ SESSION_SETTLEMENT_FAILED: { ++ message: string; ++ code: number; ++ }; ++ WC_METHOD_UNSUPPORTED: { ++ message: string; ++ code: number; ++ }; ++}; ++export declare const INTERNAL_ERRORS: { ++ NOT_INITIALIZED: { ++ message: string; ++ code: number; ++ }; ++ NO_MATCHING_KEY: { ++ message: string; ++ code: number; ++ }; ++ RESTORE_WILL_OVERRIDE: { ++ message: string; ++ code: number; ++ }; ++ RESUBSCRIBED: { ++ message: string; ++ code: number; ++ }; ++ MISSING_OR_INVALID: { ++ message: string; ++ code: number; ++ }; ++ EXPIRED: { ++ message: string; ++ code: number; ++ }; ++ UNKNOWN_TYPE: { ++ message: string; ++ code: number; ++ }; ++ MISMATCHED_TOPIC: { ++ message: string; ++ code: number; ++ }; ++ NON_CONFORMING_NAMESPACES: { ++ message: string; ++ code: number; ++ }; ++}; ++export declare function getInternalError(key: InternalErrorKey, context?: string | number): { ++ message: string; ++ code: number; ++}; ++export declare function getSdkError(key: SdkErrorKey, context?: string | number): { ++ message: string; ++ code: number; ++}; ++//# sourceMappingURL=errors.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..826749688352cccdb9fe646511dc4633d0543b0e +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAGA,oBAAY,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC;AAClD,oBAAY,gBAAgB,GAAG,MAAM,OAAO,eAAe,CAAC;AAK5D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FtB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAKF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMtE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts b/node_modules/@walletconnect/utils/dist/types/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71f241ede545bf66a276874b8027cf27af296ad9 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts +@@ -0,0 +1,13 @@ ++export * from "./caip"; ++export * from "./cacao"; ++export * from "./crypto"; ++export * from "./misc"; ++export * from "./relay"; ++export * from "./uri"; ++export * from "./validators"; ++export * from "./errors"; ++export * from "./namespaces"; ++export * from "./network"; ++export * from "./memoryStore"; ++export * from "./signatures"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts.map b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7d73f3c9a71413a0bfa21e447a06c805bd825d5f +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..36ee51297824debf446acb9d8e41b2accecf7388 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts +@@ -0,0 +1,6 @@ ++export declare abstract class MemoryStore { ++ static get(key: string): T | undefined; ++ static set(key: string, value: unknown): void; ++ static delete(key: string): void; ++} ++//# sourceMappingURL=memoryStore.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..0d3a3807db1e281609960d4356d347f404d4470f +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"AAEA,8BAAsB,WAAW;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM;IAInC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAItC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;CAG1B"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts b/node_modules/@walletconnect/utils/dist/types/misc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..3176d31702f84596039647ec194136fc0b22cb06 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts +@@ -0,0 +1,69 @@ ++import { SignClientTypes, RelayerClientMetadata, EngineTypes, RelayerTypes } from "@walletconnect/types"; ++import { ErrorResponse } from "@walletconnect/jsonrpc-utils"; ++import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; ++export declare const REACT_NATIVE_PRODUCT = "ReactNative"; ++export declare const ENV_MAP: { ++ reactNative: string; ++ node: string; ++ browser: string; ++ unknown: string; ++}; ++export declare const EMPTY_SPACE = " "; ++export declare const COLON = ":"; ++export declare const SLASH = "/"; ++export declare const DEFAULT_DEPTH = 2; ++export declare const ONE_THOUSAND = 1000; ++export declare const SDK_TYPE = "js"; ++export declare function isNode(): boolean; ++export declare function isReactNative(): boolean; ++export declare function isBrowser(): boolean; ++export declare function getEnvironment(): string; ++export declare function getBundleId(): string | undefined; ++export declare function appendToQueryString(queryString: string, newQueryParams: any): string; ++export declare function getAppMetadata(): SignClientTypes.Metadata; ++export declare function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata; ++export declare function getJavascriptOS(): string; ++export declare function getJavascriptID(): string; ++export declare function formatUA(protocol: string, version: number, sdkVersion: string): string; ++export declare function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }: RelayerTypes.RpcUrlParams): string; ++export declare function getHttpUrl(url: string): string; ++export declare function assertType(obj: any, key: string, type: string): void; ++export declare function parseContextNames(context: string, depth?: number): any[]; ++export declare function formatMessageContext(context: string): string; ++export declare function hasOverlap(a: any[], b: any[]): boolean; ++export declare function getLastItems(arr: any[], depth?: number): any[]; ++export declare function mapToObj(map: Map): Record; ++export declare function objToMap(obj: Record): Map; ++export declare function mapEntries(obj: Record, cb: (x: A) => B): Record; ++export declare const enumify: (x: T) => T; ++export declare function capitalizeWord(word: string): string; ++export declare function capitalize(str: string): string; ++export declare function createDelayedPromise(expiry?: number, expireErrorMessage?: string): { ++ resolve: (value?: T) => void; ++ reject: (value?: ErrorResponse) => void; ++ done: () => Promise; ++}; ++export declare function createExpiringPromise(promise: Promise, expiry: number, expireErrorMessage?: string): Promise; ++export declare function formatExpirerTarget(type: "topic" | "id", value: string | number): string; ++export declare function formatTopicTarget(topic: string): string; ++export declare function formatIdTarget(id: number): string; ++export declare function parseExpirerTarget(target: string): { ++ id?: number | undefined; ++ topic?: string | undefined; ++}; ++export declare function calcExpiry(ttl: number, now?: number): number; ++export declare function isExpired(expiry: number): boolean; ++export declare function engineEvent(event: EngineTypes.Event, id?: number | string | undefined): string; ++export declare function mergeArrays(a?: T[], b?: T[]): T[]; ++export declare function handleDeeplinkRedirect({ id, topic, wcDeepLink, }: { ++ id: number; ++ topic: string; ++ wcDeepLink: string; ++}): Promise; ++export declare function getDeepLink(store: IKeyValueStorage, key: string): Promise; ++export declare function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[]; ++export declare function getSearchParamFromURL(url: string, param: any): string | null; ++export declare function uuidv4(): string; ++//# sourceMappingURL=misc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5ef0f4f8b9d72b0c75dcc8470704dbf54e730772 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/misc.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71ffdcebcfe16506e7d7195f20309a37095b95cc +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts +@@ -0,0 +1,22 @@ ++import { ProposalTypes, SessionTypes } from "@walletconnect/types"; ++export declare function getAccountsChains(accounts: SessionTypes.Namespace["accounts"]): string[]; ++export declare function getNamespacesChains(namespaces: SessionTypes.Namespaces): string[]; ++export declare function getNamespacesMethodsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; ++export declare function getNamespacesEventsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; ++export declare function getRequiredNamespacesFromNamespaces(namespaces: SessionTypes.Namespaces, caller: string): ProposalTypes.RequiredNamespaces; ++export declare type BuildApprovedNamespacesParams = { ++ proposal: ProposalTypes.Struct; ++ supportedNamespaces: Record; ++}; ++export declare function buildApprovedNamespaces(params: BuildApprovedNamespacesParams): SessionTypes.Namespaces; ++export declare function isCaipNamespace(namespace: string): boolean; ++export declare function parseNamespaceKey(namespace: string): string; ++export declare function normalizeNamespaces(namespaces: ProposalTypes.RequiredNamespaces): ProposalTypes.RequiredNamespaces; ++export declare function getNamespacesFromAccounts(accounts: string[]): {}; ++export declare function buildNamespacesFromAuth(methods: string[], accounts: string[]): {}; ++//# sourceMappingURL=namespaces.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..d7dff41be61e83834f25426f938598a46cbd2356 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/namespaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAInE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,YAQ7E;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,YAOtE;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,kBAAkB,CAalC;AAED,oBAAY,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CACzB,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAC9E,CAAC;CACH,CAAC;AASF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,6BAA6B,GACpC,YAAY,CAAC,UAAU,CAmGzB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,UAElD;AAoBD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,aAAa,CAAC,kBAAkB,GAC3C,aAAa,CAAC,kBAAkB,CAgBlC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAgB3D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAc5E"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts b/node_modules/@walletconnect/utils/dist/types/network.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..2b51101ec76eebaeca03c4a171d7f781f43b975c +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts +@@ -0,0 +1,8 @@ ++export declare function isOnline(): Promise; ++export declare function getBrowserOnlineStatus(): boolean; ++export declare function getReactNativeOnlineStatus(): Promise; ++export declare function getNodeOnlineStatus(): boolean; ++export declare function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void): void; ++export declare function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void): void; ++export declare function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void): void; ++//# sourceMappingURL=network.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts.map b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a882e728142d052ff8608548af8377e52f3c7ac0 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAiB3C;AAED,wBAAgB,sBAAsB,YAErC;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED,wBAAgB,mBAAmB,YAKlC;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAerF;AAED,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAK5F;AAGD,wBAAgB,mCAAmC,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAIhG"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts b/node_modules/@walletconnect/utils/dist/types/relay.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..3c2ce6681e2f566cd26619258b0f60c792ebb0a0 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts +@@ -0,0 +1,5 @@ ++import { RelayerTypes } from "@walletconnect/types"; ++export declare const RELAYER_DEFAULT_PROTOCOL = "irn"; ++export declare function getRelayProtocolName(opts?: RelayerTypes.RequestOptions): RelayerTypes.ProtocolOptions; ++export declare function getRelayProtocolApi(protocol: string): import("@walletconnect/relay-api").RelayJsonRpc.Methods; ++//# sourceMappingURL=relay.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..dd8bfc4629378861268f0c87c79b5aa0629b2d5c +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,YAAY,CAAC,eAAe,CAE9B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,2DAMnD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..654326c5bff4655eb71eabce9ea056294423a86b +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts +@@ -0,0 +1,5 @@ ++import { AuthTypes } from "@walletconnect/types"; ++export declare function verifySignature(address: string, reconstructedMessage: string, cacaoSignature: AuthTypes.CacaoSignature, chainId: string, projectId: string, baseRpcUrl?: string): Promise; ++export declare function isValidEip191Signature(address: string, message: string, signature: string): boolean; ++export declare function isValidEip1271Signature(address: string, reconstructedMessage: string, signature: string, chainId: string, projectId: string, baseRpcUrl?: string): Promise; ++//# sourceMappingURL=signatures.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8159f880bf99865282817e01e70b0fcfaff5a026 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../src/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,SAAS,CAAC,cAAc,EACxC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,oBAsCpB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts b/node_modules/@walletconnect/utils/dist/types/uri.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..f58153abd67f0e8345c2371f3282c6288dc8ab29 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts +@@ -0,0 +1,8 @@ ++import { EngineTypes, RelayerTypes } from "@walletconnect/types"; ++export declare function parseRelayParams(params: any, delimiter?: string): RelayerTypes.ProtocolOptions; ++export declare function parseUri(str: string): EngineTypes.UriParameters; ++export declare function parseTopic(topic: string): string; ++export declare function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter?: string): any; ++export declare function formatUri(params: EngineTypes.UriParameters): string; ++export declare function getLinkModeURL(universalLink: string, topic: string, encodedEnvelope: string): string; ++//# sourceMappingURL=uri.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8063f3e6f356d4b63405f0e6648eb5ecc6fc5597 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,SAAM,GAAG,YAAY,CAAC,eAAe,CAW3F;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,aAAa,CA0B/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,eAAe,EAAE,SAAS,SAAM,OAUrF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAUnE;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,MAAM,CAER"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts b/node_modules/@walletconnect/utils/dist/types/validators.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..f17fe4d5550861873cecb5ac1c28c9b62934d993 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts +@@ -0,0 +1,44 @@ ++import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from "@walletconnect/types"; ++import { ErrorResponse } from "@walletconnect/jsonrpc-types"; ++export declare type ErrorObject = { ++ message: string; ++ code: number; ++} | null; ++export declare function isValidArray(arr: any, itemCondition?: (item: any) => boolean): boolean; ++export declare function isValidObject(obj: any): number | false; ++export declare function isUndefined(input: any): input is undefined; ++export declare function isValidString(input: any, optional: boolean): input is string; ++export declare function isValidNumber(input: any, optional: boolean): boolean; ++export declare function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams): boolean; ++export declare function isValidChainId(value: any): boolean; ++export declare function isValidAccountId(value: any): boolean; ++export declare function isValidUrl(value: any): boolean; ++export declare function isProposalStruct(input: any): input is ProposalTypes.Struct; ++export declare function isSessionStruct(input: any): input is SessionTypes.Struct; ++export declare function isValidController(input: any, method: string): ErrorObject; ++export declare function isValidNamespaceMethodsOrEvents(input: any): input is string; ++export declare function isValidChains(key: string, chains: any, context: string): ErrorObject; ++export declare function isValidNamespaceChains(namespaces: any, method: string, type: string): null; ++export declare function isValidAccounts(accounts: any, context: string): ErrorObject; ++export declare function isValidNamespaceAccounts(input: any, method: string): null; ++export declare function isValidActions(namespace: any, context: string): ErrorObject; ++export declare function isValidNamespaceActions(input: any, method: string): null; ++export declare function isValidRequiredNamespaces(input: any, method: string, type: string): ErrorObject; ++export declare function isValidNamespaces(input: any, method: string): ErrorObject; ++export declare function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions; ++export declare function isValidRelays(input: any, optional: boolean): input is RelayerTypes.ProtocolOptions[]; ++export declare function isValidId(input: any): boolean; ++export declare function isValidParams(input: any): boolean; ++export declare function isValidErrorReason(input: any): input is ErrorResponse; ++export declare function isValidRequest(request: any): boolean; ++export declare function isValidResponse(response: any): boolean; ++export declare function isValidEvent(event: any): boolean; ++export declare function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string): boolean; ++export declare function isValidNamespacesRequest(namespaces: SessionTypes.Namespaces, chainId: string, method: string): boolean; ++export declare function isValidNamespacesEvent(namespaces: SessionTypes.Namespaces, chainId: string, eventName: string): boolean; ++export declare function isConformingNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, namespaces: SessionTypes.Namespaces, context: string): ErrorObject; ++export declare function isValidRequestExpiry(expiry: number, boundaries: { ++ min: number; ++ max: number; ++}): boolean; ++//# sourceMappingURL=validators.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..840230079b7372007858eec63312513a8e37bf83 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/package.json b/node_modules/@walletconnect/utils/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..a09f22037d5042cd95e3b8d6094717780a1bbedf +--- /dev/null ++++ b/node_modules/@walletconnect/utils/package.json +@@ -0,0 +1,85 @@ ++{ ++ "name": "@walletconnect/utils", ++ "description": "Utilities for WalletConnect Protocol", ++ "version": "2.16.1", ++ "author": "WalletConnect, Inc. ", ++ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", ++ "license": "Apache-2.0", ++ "main": "dist/index.cjs.js", ++ "module": "dist/index.es.js", ++ "unpkg": "dist/index.umd.js", ++ "types": "dist/types/index.d.ts", ++ "sideEffects": false, ++ "files": [ ++ "dist" ++ ], ++ "keywords": [ ++ "wallet", ++ "walletconnect" ++ ], ++ "scripts": { ++ "clean": "rm -rf dist", ++ "build:pre": "npm run clean", ++ "build:types": "tsc", ++ "build:source": "rollup --config rollup.config.js", ++ "build": "npm run build:pre; npm run build:source; npm run build:types", ++ "test:pre": "rm -rf ./test/test.db", ++ "test:run": "vitest run --dir test", ++ "test": "npm run test:pre; npm run test:run", ++ "test:ignoreUnhandled": "npm run test:pre; npm run test:run -- --dangerouslyIgnoreUnhandledErrors", ++ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", ++ "prettier": "prettier --check '{src,test}/**/*.{js,ts,jsx,tsx}'" ++ }, ++ "dependencies": { ++ "@stablelib/chacha20poly1305": "1.0.1", ++ "@stablelib/hkdf": "1.0.1", ++ "@stablelib/random": "1.0.2", ++ "@stablelib/sha256": "1.0.1", ++ "@stablelib/x25519": "1.0.3", ++ "@walletconnect/relay-api": "1.0.11", ++ "@walletconnect/relay-auth": "1.0.4", ++ "@walletconnect/safe-json": "1.0.2", ++ "@walletconnect/time": "1.0.2", ++ "@walletconnect/types": "2.16.1", ++ "@walletconnect/window-getters": "1.0.1", ++ "@walletconnect/window-metadata": "1.0.1", ++ "detect-browser": "5.3.0", ++ "elliptic": "^6.5.7", ++ "query-string": "7.1.3", ++ "uint8arrays": "3.1.0" ++ }, ++ "devDependencies": { ++ "@types/elliptic": "^6.4.18", ++ "@types/lodash.isequal": "4.5.6" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/README.md b/node_modules/uint8arrays/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..4bc4398f9f4f87fd5a3a190fa7ff61dd7b88b080 +--- /dev/null ++++ b/node_modules/uint8arrays/README.md +@@ -0,0 +1,158 @@ ++# Uint8Arrays ++ ++Some utility functions to make dealing with `Uint8Array`s more pleasant. ++ ++- [API](#api) ++ - [alloc(size)](#allocsize) ++ - [Example](#example) ++ - [allocUnsafe(size)](#allocunsafesize) ++ - [Example](#example-1) ++ - [compare(a, b)](#comparea-b) ++ - [Example](#example-2) ++ - [concat(arrays, [length])](#concatarrays-length) ++ - [Example](#example-3) ++ - [equals(a, b)](#equalsa-b) ++ - [Example](#example-4) ++ - [fromString(string, encoding = 'utf8')](#fromstringstring-encoding--utf8) ++ - [Example](#example-5) ++ - [toString(array, encoding = 'utf8')](#tostringarray-encoding--utf8) ++ - [Example](#example-6) ++ - [xor(a, b)](#xora-b) ++ - [Example](#example-7) ++ ++## API ++ ++### alloc(size) ++ ++Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. ++ ++#### Example ++ ++```js ++import { alloc } from 'uint8arrays/alloc` ++ ++const buf = alloc(100) ++``` ++ ++### allocUnsafe(size) ++ ++Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. ++ ++On platforms that support it, memory referenced by the returned `Uint8Array` will not be initialized. ++ ++#### Example ++ ++```js ++import { allocUnsafe } from 'uint8arrays/alloc` ++ ++const buf = allocUnsafe(100) ++``` ++ ++### compare(a, b) ++ ++Compare two `Uint8Arrays` ++ ++#### Example ++ ++```js ++import { compare } from 'uint8arrays/compare' ++ ++const arrays = [ ++ Uint8Array.from([3, 4, 5]), ++ Uint8Array.from([0, 1, 2]) ++] ++ ++const sorted = arrays.sort(compare) ++ ++console.info(sorted) ++// [ ++// Uint8Array[0, 1, 2] ++// Uint8Array[3, 4, 5] ++// ] ++``` ++ ++### concat(arrays, [length]) ++ ++Concatenate one or more array-likes and return a `Uint8Array` with their contents. ++ ++If you know the length of the arrays, pass it as a second parameter, otherwise it will be calculated by traversing the list of arrays. ++ ++#### Example ++ ++```js ++import { concat } from 'uint8arrays/concat' ++ ++const arrays = [ ++ Uint8Array.from([0, 1, 2]), ++ Uint8Array.from([3, 4, 5]) ++] ++ ++const all = concat(arrays, 6) ++ ++console.info(all) ++// Uint8Array[0, 1, 2, 3, 4, 5] ++``` ++ ++### equals(a, b) ++ ++Returns true if the two arrays are the same array or if they have the same length and contents. ++ ++#### Example ++ ++```js ++import { equals } from 'uint8arrays/equals' ++ ++const a = Uint8Array.from([0, 1, 2]) ++const b = Uint8Array.from([3, 4, 5]) ++const c = Uint8Array.from([0, 1, 2]) ++ ++console.info(equals(a, b)) // false ++console.info(equals(a, c)) // true ++console.info(equals(a, a)) // true ++``` ++ ++### fromString(string, encoding = 'utf8') ++ ++Returns a new `Uint8Array` created from the passed string and interpreted as the passed encoding. ++ ++Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). ++ ++#### Example ++ ++```js ++import { fromString } from 'uint8arrays/from-string' ++ ++console.info(fromString('hello world')) // Uint8Array[104, 101 ... ++console.info(fromString('00010203aabbcc', 'base16')) // Uint8Array[0, 1 ... ++console.info(fromString('AAECA6q7zA', 'base64')) // Uint8Array[0, 1 ... ++console.info(fromString('01234', 'ascii')) // Uint8Array[48, 49 ... ++``` ++ ++### toString(array, encoding = 'utf8') ++ ++Returns a string created from the passed `Uint8Array` in the passed encoding. ++ ++Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). ++ ++#### Example ++ ++```js ++import { toString } from 'uint8arrays/to-string' ++ ++console.info(toString(Uint8Array.from([104, 101...]))) // 'hello world' ++console.info(toString(Uint8Array.from([0, 1, 2...]), 'base16')) // '00010203aabbcc' ++console.info(toString(Uint8Array.from([0, 1, 2...]), 'base64')) // 'AAECA6q7zA' ++console.info(toString(Uint8Array.from([48, 49, 50...]), 'ascii')) // '01234' ++``` ++ ++### xor(a, b) ++ ++Returns a `Uint8Array` containing `a` and `b` xored together. ++ ++#### Example ++ ++```js ++import { xor } from 'uint8arrays/xor' ++ ++console.info(xor(Uint8Array.from([1, 0]), Uint8Array.from([0, 1]))) // Uint8Array[1, 1] ++``` +diff --git a/node_modules/uint8arrays/alloc b/node_modules/uint8arrays/alloc +new file mode 100644 +index 0000000000000000000000000000000000000000..96adbd1c30cc40c637803b469fa5c6491c509843 +--- /dev/null ++++ b/node_modules/uint8arrays/alloc +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/alloc.js') +diff --git a/node_modules/uint8arrays/cjs/src/alloc.js b/node_modules/uint8arrays/cjs/src/alloc.js +new file mode 100644 +index 0000000000000000000000000000000000000000..62f337da370082d906ed5fedd6cc052601b367a3 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/alloc.js +@@ -0,0 +1,19 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function alloc(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { ++ return globalThis.Buffer.alloc(size); ++ } ++ return new Uint8Array(size); ++} ++function allocUnsafe(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { ++ return globalThis.Buffer.allocUnsafe(size); ++ } ++ return new Uint8Array(size); ++} ++ ++exports.alloc = alloc; ++exports.allocUnsafe = allocUnsafe; +diff --git a/node_modules/uint8arrays/cjs/src/compare.js b/node_modules/uint8arrays/cjs/src/compare.js +new file mode 100644 +index 0000000000000000000000000000000000000000..f76a876da6b87c8218d0efda7366189c7d7d46a4 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/compare.js +@@ -0,0 +1,23 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function compare(a, b) { ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] < b[i]) { ++ return -1; ++ } ++ if (a[i] > b[i]) { ++ return 1; ++ } ++ } ++ if (a.byteLength > b.byteLength) { ++ return 1; ++ } ++ if (a.byteLength < b.byteLength) { ++ return -1; ++ } ++ return 0; ++} ++ ++exports.compare = compare; +diff --git a/node_modules/uint8arrays/cjs/src/concat.js b/node_modules/uint8arrays/cjs/src/concat.js +new file mode 100644 +index 0000000000000000000000000000000000000000..b5f6039223c16c8432bf34b601897a0e963e1dd0 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/concat.js +@@ -0,0 +1,20 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var alloc = require('./alloc.js'); ++ ++function concat(arrays, length) { ++ if (!length) { ++ length = arrays.reduce((acc, curr) => acc + curr.length, 0); ++ } ++ const output = alloc.allocUnsafe(length); ++ let offset = 0; ++ for (const arr of arrays) { ++ output.set(arr, offset); ++ offset += arr.length; ++ } ++ return output; ++} ++ ++exports.concat = concat; +diff --git a/node_modules/uint8arrays/cjs/src/equals.js b/node_modules/uint8arrays/cjs/src/equals.js +new file mode 100644 +index 0000000000000000000000000000000000000000..073c46ba1f52e921f55f98d82106a67d542a4321 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/equals.js +@@ -0,0 +1,20 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function equals(a, b) { ++ if (a === b) { ++ return true; ++ } ++ if (a.byteLength !== b.byteLength) { ++ return false; ++ } ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] !== b[i]) { ++ return false; ++ } ++ } ++ return true; ++} ++ ++exports.equals = equals; +diff --git a/node_modules/uint8arrays/cjs/src/from-string.js b/node_modules/uint8arrays/cjs/src/from-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..d4899669d3d3a69ae33b1d6a5de6ed4facab9702 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/from-string.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var bases = require('./util/bases.js'); ++ ++function fromString(string, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(string, 'utf8'); ++ } ++ return base.decoder.decode(`${ base.prefix }${ string }`); ++} ++ ++exports.fromString = fromString; +diff --git a/node_modules/uint8arrays/cjs/src/index.js b/node_modules/uint8arrays/cjs/src/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e04d18c1e8b50930f11469e29d36e3624800ee3e +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/index.js +@@ -0,0 +1,19 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var compare = require('./compare.js'); ++var concat = require('./concat.js'); ++var equals = require('./equals.js'); ++var fromString = require('./from-string.js'); ++var toString = require('./to-string.js'); ++var xor = require('./xor.js'); ++ ++ ++ ++exports.compare = compare.compare; ++exports.concat = concat.concat; ++exports.equals = equals.equals; ++exports.fromString = fromString.fromString; ++exports.toString = toString.toString; ++exports.xor = xor.xor; +diff --git a/node_modules/uint8arrays/cjs/src/to-string.js b/node_modules/uint8arrays/cjs/src/to-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..60041ca99380e4e96896d2e3d314bfedf291abd4 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/to-string.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var bases = require('./util/bases.js'); ++ ++function toString(array, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); ++ } ++ return base.encoder.encode(array).substring(1); ++} ++ ++exports.toString = toString; +diff --git a/node_modules/uint8arrays/cjs/src/util/bases.js b/node_modules/uint8arrays/cjs/src/util/bases.js +new file mode 100644 +index 0000000000000000000000000000000000000000..889ba8ca4f4590ad982343e2e557a86345dbba6e +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/util/bases.js +@@ -0,0 +1,49 @@ ++'use strict'; ++ ++var basics = require('multiformats/basics'); ++var alloc = require('../alloc.js'); ++ ++function createCodec(name, prefix, encode, decode) { ++ return { ++ name, ++ prefix, ++ encoder: { ++ name, ++ prefix, ++ encode ++ }, ++ decoder: { decode } ++ }; ++} ++const string = createCodec('utf8', 'u', buf => { ++ const decoder = new TextDecoder('utf8'); ++ return 'u' + decoder.decode(buf); ++}, str => { ++ const encoder = new TextEncoder(); ++ return encoder.encode(str.substring(1)); ++}); ++const ascii = createCodec('ascii', 'a', buf => { ++ let string = 'a'; ++ for (let i = 0; i < buf.length; i++) { ++ string += String.fromCharCode(buf[i]); ++ } ++ return string; ++}, str => { ++ str = str.substring(1); ++ const buf = alloc.allocUnsafe(str.length); ++ for (let i = 0; i < str.length; i++) { ++ buf[i] = str.charCodeAt(i); ++ } ++ return buf; ++}); ++const BASES = { ++ utf8: string, ++ 'utf-8': string, ++ hex: basics.bases.base16, ++ latin1: ascii, ++ ascii: ascii, ++ binary: ascii, ++ ...basics.bases ++}; ++ ++module.exports = BASES; +diff --git a/node_modules/uint8arrays/cjs/src/xor.js b/node_modules/uint8arrays/cjs/src/xor.js +new file mode 100644 +index 0000000000000000000000000000000000000000..3b7f04d6ad8ca2ac0c75d9527f8abf75c3a32d2b +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/xor.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var alloc = require('./alloc.js'); ++ ++function xor(a, b) { ++ if (a.length !== b.length) { ++ throw new Error('Inputs should have the same length'); ++ } ++ const result = alloc.allocUnsafe(a.length); ++ for (let i = 0; i < a.length; i++) { ++ result[i] = a[i] ^ b[i]; ++ } ++ return result; ++} ++ ++exports.xor = xor; +diff --git a/node_modules/uint8arrays/compare b/node_modules/uint8arrays/compare +new file mode 100644 +index 0000000000000000000000000000000000000000..e5012fd8b14ddd8ae03b8cf34b0803cbb153f54d +--- /dev/null ++++ b/node_modules/uint8arrays/compare +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/compare.js') +diff --git a/node_modules/uint8arrays/concat b/node_modules/uint8arrays/concat +new file mode 100644 +index 0000000000000000000000000000000000000000..77d4c7ff6075cef2ccf07978629ebe9c0b5676c1 +--- /dev/null ++++ b/node_modules/uint8arrays/concat +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/concat.js') +diff --git a/node_modules/uint8arrays/equals b/node_modules/uint8arrays/equals +new file mode 100644 +index 0000000000000000000000000000000000000000..fb9b155afd3f89970606e5bce212653a9edda8a5 +--- /dev/null ++++ b/node_modules/uint8arrays/equals +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/equals.js') +diff --git a/node_modules/uint8arrays/esm/package.json b/node_modules/uint8arrays/esm/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..b0f779bef674eb02c1185e55c0ffd20179a078f9 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/package.json +@@ -0,0 +1,33 @@ ++{ ++ "type": "module", ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/esm/src/alloc.js b/node_modules/uint8arrays/esm/src/alloc.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e9326afa4af656b8f97576f79177e94ab9d12372 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/alloc.js +@@ -0,0 +1,12 @@ ++export function alloc(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { ++ return globalThis.Buffer.alloc(size); ++ } ++ return new Uint8Array(size); ++} ++export function allocUnsafe(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { ++ return globalThis.Buffer.allocUnsafe(size); ++ } ++ return new Uint8Array(size); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/compare.js b/node_modules/uint8arrays/esm/src/compare.js +new file mode 100644 +index 0000000000000000000000000000000000000000..251ba99326ef616a7259ae690a195c55eb69e3c4 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/compare.js +@@ -0,0 +1,17 @@ ++export function compare(a, b) { ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] < b[i]) { ++ return -1; ++ } ++ if (a[i] > b[i]) { ++ return 1; ++ } ++ } ++ if (a.byteLength > b.byteLength) { ++ return 1; ++ } ++ if (a.byteLength < b.byteLength) { ++ return -1; ++ } ++ return 0; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/concat.js b/node_modules/uint8arrays/esm/src/concat.js +new file mode 100644 +index 0000000000000000000000000000000000000000..1becaa52d193e7c41af30fcfb6de675dd5520730 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/concat.js +@@ -0,0 +1,13 @@ ++import { allocUnsafe } from './alloc.js'; ++export function concat(arrays, length) { ++ if (!length) { ++ length = arrays.reduce((acc, curr) => acc + curr.length, 0); ++ } ++ const output = allocUnsafe(length); ++ let offset = 0; ++ for (const arr of arrays) { ++ output.set(arr, offset); ++ offset += arr.length; ++ } ++ return output; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/equals.js b/node_modules/uint8arrays/esm/src/equals.js +new file mode 100644 +index 0000000000000000000000000000000000000000..fbedbe071a446722515778a030724b4d2ab87030 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/equals.js +@@ -0,0 +1,14 @@ ++export function equals(a, b) { ++ if (a === b) { ++ return true; ++ } ++ if (a.byteLength !== b.byteLength) { ++ return false; ++ } ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] !== b[i]) { ++ return false; ++ } ++ } ++ return true; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/from-string.js b/node_modules/uint8arrays/esm/src/from-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..0a98afd2708b0f7f182f92f4b98244655b6c85cb +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/from-string.js +@@ -0,0 +1,11 @@ ++import bases from './util/bases.js'; ++export function fromString(string, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(string, 'utf8'); ++ } ++ return base.decoder.decode(`${ base.prefix }${ string }`); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/index.js b/node_modules/uint8arrays/esm/src/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..2ec817cb7bfaa10be4baf9dfdeae279230041130 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/index.js +@@ -0,0 +1,14 @@ ++import { compare } from './compare.js'; ++import { concat } from './concat.js'; ++import { equals } from './equals.js'; ++import { fromString } from './from-string.js'; ++import { toString } from './to-string.js'; ++import { xor } from './xor.js'; ++export { ++ compare, ++ concat, ++ equals, ++ fromString, ++ toString, ++ xor ++}; +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/to-string.js b/node_modules/uint8arrays/esm/src/to-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..f1fdd01972c3f7ba0abf5d4b5f3539fd60a25ef4 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/to-string.js +@@ -0,0 +1,11 @@ ++import bases from './util/bases.js'; ++export function toString(array, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); ++ } ++ return base.encoder.encode(array).substring(1); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/util/bases.js b/node_modules/uint8arrays/esm/src/util/bases.js +new file mode 100644 +index 0000000000000000000000000000000000000000..ec42186bf5433036f1c4485bed9cf67c4ff66595 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/util/bases.js +@@ -0,0 +1,45 @@ ++import { bases } from 'multiformats/basics'; ++import { allocUnsafe } from '../alloc.js'; ++function createCodec(name, prefix, encode, decode) { ++ return { ++ name, ++ prefix, ++ encoder: { ++ name, ++ prefix, ++ encode ++ }, ++ decoder: { decode } ++ }; ++} ++const string = createCodec('utf8', 'u', buf => { ++ const decoder = new TextDecoder('utf8'); ++ return 'u' + decoder.decode(buf); ++}, str => { ++ const encoder = new TextEncoder(); ++ return encoder.encode(str.substring(1)); ++}); ++const ascii = createCodec('ascii', 'a', buf => { ++ let string = 'a'; ++ for (let i = 0; i < buf.length; i++) { ++ string += String.fromCharCode(buf[i]); ++ } ++ return string; ++}, str => { ++ str = str.substring(1); ++ const buf = allocUnsafe(str.length); ++ for (let i = 0; i < str.length; i++) { ++ buf[i] = str.charCodeAt(i); ++ } ++ return buf; ++}); ++const BASES = { ++ utf8: string, ++ 'utf-8': string, ++ hex: bases.base16, ++ latin1: ascii, ++ ascii: ascii, ++ binary: ascii, ++ ...bases ++}; ++export default BASES; +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/xor.js b/node_modules/uint8arrays/esm/src/xor.js +new file mode 100644 +index 0000000000000000000000000000000000000000..d569ed64b70fb1627a6d8f82b4662f7538f6e694 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/xor.js +@@ -0,0 +1,11 @@ ++import { allocUnsafe } from './alloc.js'; ++export function xor(a, b) { ++ if (a.length !== b.length) { ++ throw new Error('Inputs should have the same length'); ++ } ++ const result = allocUnsafe(a.length); ++ for (let i = 0; i < a.length; i++) { ++ result[i] = a[i] ^ b[i]; ++ } ++ return result; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/from-string b/node_modules/uint8arrays/from-string +new file mode 100644 +index 0000000000000000000000000000000000000000..2cc705ce49836283622c3f82290e910712107007 +--- /dev/null ++++ b/node_modules/uint8arrays/from-string +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/from-string.js') +diff --git a/node_modules/uint8arrays/index.js b/node_modules/uint8arrays/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..580d8d99288b7b972da6c5c480503710e62d4b15 +--- /dev/null ++++ b/node_modules/uint8arrays/index.js +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/index.js') +diff --git a/node_modules/uint8arrays/index.min.js b/node_modules/uint8arrays/index.min.js +new file mode 100644 +index 0000000000000000000000000000000000000000..bcf42aca46b3ca48a137a3a93fe37cd8b17d6eb9 +--- /dev/null ++++ b/node_modules/uint8arrays/index.min.js +@@ -0,0 +1,17 @@ ++(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Uint8arrays = factory()}(typeof self !== 'undefined' ? self : this, function () { ++var Uint8arrays=(()=>{var ue=Object.defineProperty;var $e=r=>ue(r,"__esModule",{value:!0});var h=(r,e)=>{$e(r);for(var t in e)ue(r,t,{get:e[t],enumerable:!0})};var Yt={};h(Yt,{compare:()=>De,concat:()=>ie,equals:()=>ae,fromString:()=>Me,toString:()=>Ve,xor:()=>Pe});function De(r,e){for(let t=0;te[t])return 1}return r.byteLength>e.byteLength?1:r.byteLengths+n.length,0));let t=U(e),o=0;for(let s of r)t.set(s,o),o+=s.length;return t}function ae(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;tKe});function qe(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o>>0,l=new Uint8Array(E);b!==C;){for(var g=u[b],v=0,m=E-1;(g!==0||v>>0,l[m]=g%a>>>0,g=g/a>>>0;if(g!==0)throw new Error("Non-zero carry");j=v,b++}for(var x=E-j;x!==E&&l[x]===0;)x++;for(var k=f.repeat(d);x>>0,E=new Uint8Array(C);u[d];){var l=t[u.charCodeAt(d)];if(l===255)return;for(var g=0,v=C-1;(l!==0||g>>0,E[v]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");b=g,d++}if(u[d]!==" "){for(var m=C-b;m!==C&&E[m]===0;)m++;for(var x=new Uint8Array(j+(C-m)),k=j;m!==C;)x[k++]=E[m++];return x}}}function ke(u){var d=P(u);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:S,decodeUnsafe:P,decode:ke}}var Re=qe,Je=Re,ce=Je;var ur=new Uint8Array(0);var fe=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var de=r=>new TextEncoder().encode(r),he=r=>new TextDecoder().decode(r);var le=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},be=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ce(this,e)}},me=class{constructor(e){this.decoders=e}or(e){return Ce(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ce=(r,e)=>new me({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Ee=class{constructor(e,t,o,s){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=s,this.encoder=new le(e,t,o),this.decoder=new be(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new Ee(r,e,t,o),A=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:s}=ce(t,e);return T({prefix:r,name:e,encode:o,decode:n=>y(s(n))})},Xe=(r,e,t,o)=>{let s={};for(let p=0;p=8&&(a-=8,D[B++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return D},Ge=(r,e,t)=>{let o=e[e.length-1]==="=",s=(1<t;)D-=t,n+=e[s&a>>D];if(D&&(n+=e[s&a<T({prefix:e,name:r,encode(s){return Ge(s,o,t)},decode(s){return Xe(s,o,t,r)}});var Ke=T({prefix:"\0",name:"identity",encode:r=>he(r),decode:r=>de(r)});var X={};h(X,{base2:()=>Qe});var Qe=i({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var G={};h(G,{base8:()=>He});var He=i({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var K={};h(K,{base10:()=>We});var We=A({prefix:"9",name:"base10",alphabet:"0123456789"});var Q={};h(Q,{base16:()=>Ze,base16upper:()=>Ye});var Ze=i({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ye=i({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var H={};h(H,{base32:()=>z,base32hex:()=>rt,base32hexpad:()=>st,base32hexpadupper:()=>nt,base32hexupper:()=>ot,base32pad:()=>et,base32padupper:()=>tt,base32upper:()=>_e,base32z:()=>ut});var z=i({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_e=i({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),et=i({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tt=i({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rt=i({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ot=i({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),st=i({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nt=i({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ut=i({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var W={};h(W,{base36:()=>Dt,base36upper:()=>it});var Dt=A({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),it=A({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z={};h(Z,{base58btc:()=>w,base58flickr:()=>at});var w=A({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),at=A({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Y={};h(Y,{base64:()=>ct,base64pad:()=>ft,base64url:()=>dt,base64urlpad:()=>ht});var ct=i({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ft=i({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),dt=i({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ht=i({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var _={};h(_,{base256emoji:()=>Ct});var ge=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),pt=ge.reduce((r,e,t)=>(r[t]=e,r),[]),lt=ge.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function bt(r){return r.reduce((e,t)=>(e+=pt[t],e),"")}function mt(r){let e=[];for(let t of r){let o=lt[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Ct=T({prefix:"\u{1F680}",name:"base256emoji",encode:bt,decode:mt});var re={};h(re,{sha256:()=>Mt,sha512:()=>Vt});var Et=xe,we=128,gt=127,wt=~gt,xt=Math.pow(2,31);function xe(r,e,t){e=e||[],t=t||0;for(var o=t;r>=xt;)e[t++]=r&255|we,r/=128;for(;r&wt;)e[t++]=r&255|we,r>>>=7;return e[t]=r|0,xe.bytes=t-o+1,e}var yt=ee,vt=128,ye=127;function ee(r,e){var t=0,e=e||0,o=0,s=e,n,D=r.length;do{if(s>=D)throw ee.bytes=0,new RangeError("Could not decode varint");n=r[s++],t+=o<28?(n&ye)<=vt);return ee.bytes=s-e,t}var At=Math.pow(2,7),jt=Math.pow(2,14),Ft=Math.pow(2,21),Bt=Math.pow(2,28),St=Math.pow(2,35),Ut=Math.pow(2,42),Tt=Math.pow(2,49),zt=Math.pow(2,56),It=Math.pow(2,63),Lt=function(r){return r[N.decode(r),N.decode.bytes],I=(r,e,t=0)=>(N.encode(r,e,t),e),L=r=>N.encodingLength(r);var F=(r,e)=>{let t=e.byteLength,o=L(r),s=o+L(t),n=new Uint8Array(s+t);return I(r,n,0),I(t,n,o),n.set(e,s),new M(r,t,e,n)},Ae=r=>{let e=y(r),[t,o]=O(e),[s,n]=O(e.subarray(o)),D=e.subarray(o+n);if(D.byteLength!==s)throw new Error("Incorrect length");return new M(t,s,D,e)},je=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&fe(r.bytes,e.bytes),M=class{constructor(e,t,o,s){this.code=e,this.size=t,this.digest=o,this.bytes=s}};var te=({name:r,code:e,encode:t})=>new Be(r,e,t),Be=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?F(this.code,t):t.then(o=>F(this.code,o))}else throw Error("Unknown type, must be binary type")}};var Ue=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Mt=te({name:"sha2-256",code:18,encode:Ue("SHA-256")}),Vt=te({name:"sha2-512",code:19,encode:Ue("SHA-512")});var oe={};h(oe,{identity:()=>$t});var Te=0,Pt="identity",ze=y,kt=r=>F(Te,ze(r)),$t={code:Te,name:Pt,encode:ze,digest:kt};var Ur=new TextEncoder,Tr=new TextDecoder;var c=class{constructor(e,t,o,s){this.code=t,this.version=e,this.multihash=o,this.bytes=s,this.byteOffset=s.byteOffset,this.byteLength=s.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:q,byteLength:q,code:$,version:$,multihash:$,bytes:$,_baseCache:q,asCID:q})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==V)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kt)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return c.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=F(e,t);return c.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&je(this.multihash,e.multihash)}toString(e){let{bytes:t,version:o,_baseCache:s}=this;switch(o){case 0:return Xt(t,s,e||w.encoder);default:return Gt(t,s,e||z.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return Ht(/^0\.0/,Wt),!!(e&&(e[Le]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof c)return e;if(e!=null&&e.asCID===e){let{version:t,code:o,multihash:s,bytes:n}=e;return new c(t,o,s,n||Ie(t,o,s.bytes))}else if(e!=null&&e[Le]===!0){let{version:t,multihash:o,code:s}=e,n=Ae(o);return c.create(t,s,n)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==V)throw new Error(`Version 0 CID must use dag-pb (code: ${V}) block encoding`);return new c(e,t,o,o.bytes)}case 1:{let s=Ie(e,t,o.bytes);return new c(e,t,o,s)}default:throw new Error("Invalid version")}}static createV0(e){return c.create(0,V,e)}static createV1(e,t){return c.create(1,e,t)}static decode(e){let[t,o]=c.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=c.inspectBytes(e),o=t.size-t.multihashSize,s=y(e.subarray(o,o+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let n=s.subarray(t.multihashSize-t.digestSize),D=new M(t.multihashCode,t.digestSize,n,s);return[t.version===0?c.createV0(D):c.createV1(t.codec,D),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[S,P]=O(e.subarray(t));return t+=P,S},s=o(),n=V;if(s===18?(s=0,t=0):s===1&&(n=o()),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let D=t,a=o(),f=o(),B=t+f,p=B-D;return{version:s,codec:n,multihashCode:a,digestSize:f,multihashSize:p,size:B}}static parse(e,t){let[o,s]=Jt(e,t),n=c.decode(s);return n._baseCache.set(o,e),n}},Jt=(r,e)=>{switch(r[0]){case"Q":{let t=e||w;return[w.prefix,t.decode(`${w.prefix}${r}`)]}case w.prefix:{let t=e||w;return[w.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Xt=(r,e,t)=>{let{prefix:o}=t;if(o!==w.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(o);if(s==null){let n=t.encode(r).slice(1);return e.set(o,n),n}else return s},Gt=(r,e,t)=>{let{prefix:o}=t,s=e.get(o);if(s==null){let n=t.encode(r);return e.set(o,n),n}else return s},V=112,Kt=18,Ie=(r,e,t)=>{let o=L(r),s=o+L(e),n=new Uint8Array(s+t.byteLength);return I(r,n,0),I(e,n,o),n.set(t,s),n},Le=Symbol.for("@ipld/js-cid/CID"),$={writable:!1,configurable:!1,enumerable:!0},q={writable:!1,enumerable:!1,configurable:!1},Qt="0.0.0-dev",Ht=(r,e)=>{if(r.test(Qt))console.warn(e);else throw new Error(e)},Wt=`CID.isCID(v) is deprecated and will be removed in the next major release. ++Following code pattern: ++ ++if (CID.isCID(value)) { ++ doSomethingWithCID(value) ++} ++ ++Is replaced with: ++ ++const cid = CID.asCID(value) ++if (cid) { ++ // Make sure to use cid instead of value ++ doSomethingWithCID(cid) ++} ++`;var se={...J,...X,...G,...K,...Q,...H,...W,...Z,...Y,..._},$r={...re,...oe};function Ne(r,e,t,o){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:o}}}var Oe=Ne("utf8","u",r=>{let e=new TextDecoder("utf8");return"u"+e.decode(r)},r=>new TextEncoder().encode(r.substring(1))),ne=Ne("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);let e=U(r.length);for(let t=0;t", ++ "homepage": "https://github.com/achingbrain/uint8arrays", ++ "bugs": "https://github.com/achingbrain/uint8arrays/issues", ++ "types": "types/src/index.d.ts", ++ "repository": { ++ "type": "git", ++ "url": "https://github.com/achingbrain/uint8arrays.git" ++ }, ++ "scripts": { ++ "test": "aegir test", ++ "lint": "aegir ts -p check && aegir lint", ++ "release": "aegir release", ++ "release-minor": "aegir release --type minor", ++ "release-major": "aegir release --type major", ++ "build": "aegir build" ++ }, ++ "license": "MIT", ++ "dependencies": { ++ "multiformats": "^9.4.2" ++ }, ++ "devDependencies": { ++ "@types/benchmark": "^2.1.1", ++ "aegir": "^35.0.0", ++ "benchmark": "^2.1.4", ++ "util": "^0.12.4" ++ }, ++ "eslintConfig": { ++ "extends": "ipfs", ++ "parserOptions": { ++ "sourceType": "module" ++ }, ++ "ignorePatterns": [ ++ "!.aegir.js" ++ ] ++ }, ++ "typesVersions": { ++ "*": { ++ "*": [ ++ "types/src", ++ "types/src/*" ++ ] ++ } ++ }, ++ "exports": { ++ ".": { ++ "browser": "./esm/src/index.js", ++ "require": "./cjs/src/index.js", ++ "import": "./esm/src/index.js" ++ }, ++ "./alloc": { ++ "browser": "./esm/src/alloc.js", ++ "require": "./cjs/src/alloc.js", ++ "import": "./esm/src/alloc.js" ++ }, ++ "./compare": { ++ "browser": "./esm/src/compare.js", ++ "require": "./cjs/src/compare.js", ++ "import": "./esm/src/compare.js" ++ }, ++ "./concat": { ++ "browser": "./esm/src/concat.js", ++ "require": "./cjs/src/concat.js", ++ "import": "./esm/src/concat.js" ++ }, ++ "./equals": { ++ "browser": "./esm/src/equals.js", ++ "require": "./cjs/src/equals.js", ++ "import": "./esm/src/equals.js" ++ }, ++ "./from-string": { ++ "browser": "./esm/src/from-string.js", ++ "require": "./cjs/src/from-string.js", ++ "import": "./esm/src/from-string.js" ++ }, ++ "./to-string": { ++ "browser": "./esm/src/to-string.js", ++ "require": "./cjs/src/to-string.js", ++ "import": "./esm/src/to-string.js" ++ }, ++ "./xor": { ++ "browser": "./esm/src/xor.js", ++ "require": "./cjs/src/xor.js", ++ "import": "./esm/src/xor.js" ++ } ++ }, ++ "contributors": [ ++ "achingbrain ", ++ "Irakli Gozalishvili ", ++ "Cayman ", ++ "Hugo Dias ", ++ "Mircea Nistor ", ++ "Rafael Ramalho ", ++ "Vasco Santos " ++ ], ++ "browser": { ++ ".": "./cjs/src/index.js", ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify", ++ "./alloc.js": "./cjs/src/alloc.js", ++ "./compare.js": "./cjs/src/compare.js", ++ "./concat.js": "./cjs/src/concat.js", ++ "./equals.js": "./cjs/src/equals.js", ++ "./from-string.js": "./cjs/src/from-string.js", ++ "./to-string.js": "./cjs/src/to-string.js", ++ "./xor.js": "./cjs/src/xor.js" ++ }, ++ "react-native": { ++ ".": "./cjs/src/index.js", ++ "./alloc": "./cjs/src/alloc.js", ++ "./compare": "./cjs/src/compare.js", ++ "./concat": "./cjs/src/concat.js", ++ "./equals": "./cjs/src/equals.js", ++ "./from-string": "./cjs/src/from-string.js", ++ "./to-string": "./cjs/src/to-string.js", ++ "./xor": "./cjs/src/xor.js", ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/to-string b/node_modules/uint8arrays/to-string +new file mode 100644 +index 0000000000000000000000000000000000000000..2708e31dca8063775318af642874a080d638e1fe +--- /dev/null ++++ b/node_modules/uint8arrays/to-string +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/to-string.js') +diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts b/node_modules/uint8arrays/types/src/alloc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71086104a021fa42346cd5d46a72b6da8bb79f1e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/alloc.d.ts +@@ -0,0 +1,18 @@ ++/** ++ * Returns a `Uint8Array` of the requested size. Referenced memory will ++ * be initialized to 0. ++ * ++ * @param {number} [size] ++ * @returns {Uint8Array} ++ */ ++export function alloc(size?: number | undefined): Uint8Array; ++/** ++ * Where possible returns a Uint8Array of the requested size that references ++ * uninitialized memory. Only use if you are certain you will immediately ++ * overwrite every value in the returned `Uint8Array`. ++ * ++ * @param {number} [size] ++ * @returns {Uint8Array} ++ */ ++export function allocUnsafe(size?: number | undefined): Uint8Array; ++//# sourceMappingURL=alloc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts.map b/node_modules/uint8arrays/types/src/alloc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ded98e850419b7387b1b5248b08666f357f0b060 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/alloc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"alloc.d.ts","sourceRoot":"","sources":["../../src/alloc.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kDAFa,UAAU,CAQtB;AAED;;;;;;;GAOG;AACH,wDAFa,UAAU,CAQtB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/compare.d.ts b/node_modules/uint8arrays/types/src/compare.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dd23039272fd0eb5375622e34c718fa3cb1eec04 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/compare.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Can be used with Array.sort to sort and array with Uint8Array entries ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function compare(a: Uint8Array, b: Uint8Array): 0 | 1 | -1; ++//# sourceMappingURL=compare.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/compare.d.ts.map b/node_modules/uint8arrays/types/src/compare.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..e8238ebc28b6d4ebe38f6535d6180e5a99f76194 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/compare.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2BAHW,UAAU,KACV,UAAU,cAsBpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/concat.d.ts b/node_modules/uint8arrays/types/src/concat.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..960ca199e3a7586f586c8766e60aaa542916a851 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/concat.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns a new Uint8Array created by concatenating the passed ArrayLikes ++ * ++ * @param {Array>} arrays ++ * @param {number} [length] ++ */ ++export function concat(arrays: Array>, length?: number | undefined): Uint8Array; ++//# sourceMappingURL=concat.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/concat.d.ts.map b/node_modules/uint8arrays/types/src/concat.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a74679fba41402c50244f031fef3465a11cb81b7 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/concat.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../src/concat.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAHW,MAAM,UAAU,MAAM,CAAC,CAAC,2CAiBlC"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/equals.d.ts b/node_modules/uint8arrays/types/src/equals.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..4c4df17c62640f71f638699722bf9cd68e65cc3e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/equals.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns true if the two passed Uint8Arrays have the same content ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function equals(a: Uint8Array, b: Uint8Array): boolean; ++//# sourceMappingURL=equals.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/equals.d.ts.map b/node_modules/uint8arrays/types/src/equals.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..f4b4fb784dcfa264e6f45b5fbcd779ab77b2e5c5 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/equals.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/equals.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAHW,UAAU,KACV,UAAU,WAkBpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts b/node_modules/uint8arrays/types/src/from-string.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..a2a48d58229830ecc2f00b630e265d71e99d4055 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/from-string.d.ts +@@ -0,0 +1,17 @@ ++/** ++ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings ++ */ ++/** ++ * Create a `Uint8Array` from the passed string ++ * ++ * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module. ++ * ++ * Also `ascii` which is similar to node's 'binary' encoding. ++ * ++ * @param {string} string ++ * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc ++ * @returns {Uint8Array} ++ */ ++export function fromString(string: string, encoding?: import("./util/bases.js").SupportedEncodings | undefined): Uint8Array; ++export type SupportedEncodings = import('./util/bases').SupportedEncodings; ++//# sourceMappingURL=from-string.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts.map b/node_modules/uint8arrays/types/src/from-string.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5f31eb6c8816c3da59a6ebf016cfca7f0f55fa5e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/from-string.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"from-string.d.ts","sourceRoot":"","sources":["../../src/from-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,mCAJW,MAAM,wEAEJ,UAAU,CAetB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/index.d.ts b/node_modules/uint8arrays/types/src/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..7a4a255ddc3b1c194a7907ed2ae972b28fdcecc4 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/index.d.ts +@@ -0,0 +1,8 @@ ++import { compare } from "./compare.js"; ++import { concat } from "./concat.js"; ++import { equals } from "./equals.js"; ++import { fromString } from "./from-string.js"; ++import { toString } from "./to-string.js"; ++import { xor } from "./xor.js"; ++export { compare, concat, equals, fromString, toString, xor }; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/index.d.ts.map b/node_modules/uint8arrays/types/src/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..4b136e26cf4d54488bfbbaf749a89197c074cd91 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":""} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts b/node_modules/uint8arrays/types/src/to-string.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..bf72c50427b41a8c4be85347e966feb710e18aa0 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/to-string.d.ts +@@ -0,0 +1,17 @@ ++/** ++ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings ++ */ ++/** ++ * Turns a `Uint8Array` into a string. ++ * ++ * Supports `utf8`, `utf-8` and any encoding supported by the multibase module. ++ * ++ * Also `ascii` which is similar to node's 'binary' encoding. ++ * ++ * @param {Uint8Array} array - The array to turn into a string ++ * @param {SupportedEncodings} [encoding=utf8] - The encoding to use ++ * @returns {string} ++ */ ++export function toString(array: Uint8Array, encoding?: import("./util/bases.js").SupportedEncodings | undefined): string; ++export type SupportedEncodings = import('./util/bases').SupportedEncodings; ++//# sourceMappingURL=to-string.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts.map b/node_modules/uint8arrays/types/src/to-string.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7290dc82e7b1c782b76b2ff96b2ccd49612db22d +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/to-string.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"to-string.d.ts","sourceRoot":"","sources":["../../src/to-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,gCAJW,UAAU,wEAER,MAAM,CAelB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..7b01d6f35e3821e5d695535d345d3684453d439f +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts +@@ -0,0 +1,10 @@ ++/** ++ * Create a Uint8Array of the specified length - uses ++ * the more performant `Buffer.allocUnsafe` if it is ++ * available or `new Uint8Array` if it is not. ++ * ++ * @param {number} length ++ * @returns {Uint8Array} ++ */ ++export function allocUnsafe(length: number): Uint8Array; ++//# sourceMappingURL=alloc-unsafe.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..78b2cfb583f5830da40a1286bd1dac3b5b977ada +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"alloc-unsafe.d.ts","sourceRoot":"","sources":["../../../src/util/alloc-unsafe.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAHW,MAAM,GACJ,UAAU,CAQtB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts b/node_modules/uint8arrays/types/src/util/bases.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c0dae33bc527a38464924c863af85fbc77667e93 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/bases.d.ts +@@ -0,0 +1,36 @@ ++export default BASES; ++export type MultibaseCodec = import('multiformats/bases/interface').MultibaseCodec; ++export type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof { ++ base256emoji: import("multiformats/bases/base").Codec<"base256emoji", "🚀">; ++ base64: import("multiformats/bases/base").Codec<"base64", "m">; ++ base64pad: import("multiformats/bases/base").Codec<"base64pad", "M">; ++ base64url: import("multiformats/bases/base").Codec<"base64url", "u">; ++ base64urlpad: import("multiformats/bases/base").Codec<"base64urlpad", "U">; ++ base58btc: import("multiformats/bases/base").Codec<"base58btc", "z">; ++ base58flickr: import("multiformats/bases/base").Codec<"base58flickr", "Z">; ++ base36: import("multiformats/bases/base").Codec<"base36", "k">; ++ base36upper: import("multiformats/bases/base").Codec<"base36upper", "K">; ++ base32: import("multiformats/bases/base").Codec<"base32", "b">; ++ base32upper: import("multiformats/bases/base").Codec<"base32upper", "B">; ++ base32pad: import("multiformats/bases/base").Codec<"base32pad", "c">; ++ base32padupper: import("multiformats/bases/base").Codec<"base32padupper", "C">; ++ base32hex: import("multiformats/bases/base").Codec<"base32hex", "v">; ++ base32hexupper: import("multiformats/bases/base").Codec<"base32hexupper", "V">; ++ base32hexpad: import("multiformats/bases/base").Codec<"base32hexpad", "t">; ++ base32hexpadupper: import("multiformats/bases/base").Codec<"base32hexpadupper", "T">; ++ base32z: import("multiformats/bases/base").Codec<"base32z", "h">; ++ base16: import("multiformats/bases/base").Codec<"base16", "f">; ++ base16upper: import("multiformats/bases/base").Codec<"base16upper", "F">; ++ base10: import("multiformats/bases/base").Codec<"base10", "9">; ++ base8: import("multiformats/bases/base").Codec<"base8", "7">; ++ base2: import("multiformats/bases/base").Codec<"base2", "0">; ++ identity: import("multiformats/bases/base").Codec<"identity", "\0">; ++}; ++/** ++ * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings ++ */ ++/** ++ * @type {Record} ++ */ ++declare const BASES: Record>; ++//# sourceMappingURL=bases.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts.map b/node_modules/uint8arrays/types/src/util/bases.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..6956f5335bf63870aa45350f2af1d66b881b6a09 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/bases.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../../src/util/bases.js"],"names":[],"mappings":";6BAIa,OAAO,8BAA8B,EAAE,cAAc,CAAC,GAAG,CAAC;iCAoD1D,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAAW;AADnF;;GAEG;AAEH;;GAEG;AACH,qBAFU,OAAO,kBAAkB,6DAAiB,CAWnD"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/xor.d.ts b/node_modules/uint8arrays/types/src/xor.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..deef5bb965a9e26283eab13a5cc6053bc59ef9ba +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/xor.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns the xor distance between two arrays ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function xor(a: Uint8Array, b: Uint8Array): Uint8Array; ++//# sourceMappingURL=xor.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/xor.d.ts.map b/node_modules/uint8arrays/types/src/xor.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..31db299b05a25b8439726a3e2fed3db618adad83 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/xor.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../src/xor.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,uBAHW,UAAU,KACV,UAAU,cAcpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..94b8c183d597efe32717777259261e28fc9c7853 +--- /dev/null ++++ b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/chai-parentheses/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/chai-bytes/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/aegir/dist/utils/chai.d.ts","../test/alloc.spec.js","../test/compare.spec.js","../test/concat.spec.js","../test/equals.spec.js","../test/from-string.spec.js","../test/to-string.spec.js","../test/xor.spec.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts","../src/concat.ts","../src/util/alloc-unsafe.js","../src/xor.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"c1f79c6d85cd84518fd7349588b3c61bdc189f58e3866f925cbf4631c81e31f9","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},{"version":"c6950fb69844190789c747a2ee2d49f34bd84273d692176d2c54d18d95fa3387","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},"33f12bdfbbb9a552db999b771a6e831fd0c94b321f958a1473def67b2b3e473f",{"version":"51a9c988758740ae2c6c44a76ef2438803df230b415b497293dfa5990508ab5a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b7210f350109bf3192235ed6e6ec55a0f5a19a4616daf84dc4196c052fa7cd18",{"version":"2cd140717148f456597ad7cd68b231e7ca6e5e92c60885b269e59880dae6019f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9368bbbf2a1dd5e9293b1a9ef06b4d0f02cbb18d5bde3b7f8fb134d7f0be4a93",{"version":"731062ffe7b99522b302e5615932f0956d50bcf2439cd6e38dc80af51982c1d7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"860a70e5ee208c81bfacb0bb46148ca0ff1566c65d29ccd8cd0d33963ad8bd40","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"58eb84f5c5f506c9dddeb6912d862fe15a523790d2aaf16dbb11d8dd203a79ca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[127],[63,127],[84,127],[87,127],[88,93,127],[89,99,100,107,116,126,127],[89,90,99,107,127],[91,127],[92,93,100,108,127],[93,116,123,127],[94,96,99,107,127],[95,127],[96,97,127],[98,99,127],[99,127],[99,100,101,116,126,127],[99,100,101,116,127],[102,107,116,126,127],[99,100,102,103,107,116,123,126,127],[102,104,116,123,126,127],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[99,105,127],[106,126,127],[96,99,107,116,127],[108,127],[109,127],[87,110,127],[111,125,127,131],[112,127],[113,127],[99,114,127],[114,115,127,129],[99,116,117,118,127],[116,118,127],[116,117,127],[119,127],[120,127],[99,121,122,127],[121,122,127],[93,107,123,127],[124,127],[107,125,127],[88,102,113,126,127],[93,127],[116,127,128],[127,129],[127,130],[88,93,99,101,110,116,126,127,129,131],[116,127,132],[127,138],[127,140],[99,116,127,134],[63,64,65,66,67,68,127],[63,64,127],[45,127],[52,54,55,56,127],[45,46,127],[53,127],[46,127],[46,48,127],[47,48,49,50,51,127],[41,127],[58,127],[42,43,44,59,60,61,127],[41,45,57,127],[41,69,127],[42,69,127],[43,69,127],[44,69,127],[58,59,60,69,127],[60,69,127],[61,69,127],[58],[45,56]],"referencedMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,62],[44,1],[59,63],[62,64],[60,63],[58,65],[61,62],[70,66],[71,67],[72,68],[73,69],[74,70],[75,71],[76,72]],"exportedModulesMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,73],[60,73],[58,74],[71,67],[73,69]],"semanticDiagnosticsPerFile":[77,64,68,66,63,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,86,133,102,103,104,134,105,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,139,138,140,141,142,69,67,65,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61,70,71,72,73,74,75,76],"affectedFilesPendingEmit":[[77,1],[64,1],[68,1],[66,1],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[86,1],[133,1],[102,1],[103,1],[104,1],[134,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[115,1],[116,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[132,1],[135,1],[136,1],[137,1],[139,1],[138,1],[140,1],[141,1],[142,1],[69,1],[67,1],[65,1],[56,1],[45,1],[57,1],[51,1],[47,1],[53,1],[55,1],[54,1],[48,1],[49,1],[46,1],[52,1],[50,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[41,1],[42,1],[43,1],[143,1],[44,1],[59,1],[62,1],[60,1],[144,1],[58,1],[61,1],[145,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1]]},"version":"4.3.5"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..140901c820b9d415726b42863170d121b6b1c25e +--- /dev/null ++++ b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e",{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[117],[64,117],[74,117],[77,117],[78,83,117],[79,89,90,97,106,116,117],[79,80,89,97,117],[81,117],[82,83,90,98,117],[83,106,113,117],[84,86,89,97,117],[85,117],[86,87,117],[88,89,117],[89,117],[89,90,91,106,116,117],[89,90,91,106,117],[92,97,106,116,117],[89,90,92,93,97,106,113,116,117],[92,94,106,113,116,117],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],[89,95,117],[96,116,117],[86,89,97,106,117],[98,117],[99,117],[77,100,117],[101,115,117,121],[102,117],[103,117],[89,104,117],[104,105,117,119],[89,106,107,108,117],[106,108,117],[106,107,117],[109,117],[110,117],[89,111,112,117],[111,112,117],[83,97,113,117],[114,117],[97,115,117],[78,92,103,116,117],[83,117],[106,117,118],[117,119],[117,120],[78,83,89,91,100,106,116,117,119,121],[106,117,122],[117,128],[117,130],[89,106,117,124],[45,117],[52,54,55,56,117],[45,46,117],[53,117],[46,117],[46,48,117],[47,48,49,50,51,117],[41,117],[58,117],[42,43,44,59,60,61,117],[41,45,57,117],[58],[45,56]],"referencedMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,60],[44,1],[59,61],[62,62],[60,61],[58,63],[61,60]],"exportedModulesMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,64],[60,64],[58,65]],"semanticDiagnosticsPerFile":[63,65,66,67,64,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,123,92,93,94,124,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,125,126,127,129,128,130,131,132,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61]},"version":"4.3.5"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/xor b/node_modules/uint8arrays/xor +new file mode 100644 +index 0000000000000000000000000000000000000000..53e53af9d8ad1a2b2a539e12c490e290d815d919 +--- /dev/null ++++ b/node_modules/uint8arrays/xor +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/xor.js') +diff --git a/package.json b/package.json +index fd6c44d2c7154a27f6049f2e7a50ba6550be8e9e..5cb378458c727a2f070785fb75be6f86330d7358 100644 +--- a/package.json ++++ b/package.json +@@ -53,5 +53,35 @@ + }, + "engines": { + "node": ">=18" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" + } + } diff --git a/.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch b/.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch new file mode 100644 index 0000000000..f5ec3618cb --- /dev/null +++ b/.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch @@ -0,0 +1,4383 @@ +diff --git a/node_modules/@walletconnect/types/LICENSE b/node_modules/@walletconnect/types/LICENSE +new file mode 100644 +index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb +--- /dev/null ++++ b/node_modules/@walletconnect/types/LICENSE +@@ -0,0 +1,190 @@ ++ Apache License ++ Version 2.0, January 2004 ++ http://www.apache.org/licenses/ ++ ++ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++ 1. Definitions. ++ ++ "License" shall mean the terms and conditions for use, reproduction, ++ and distribution as defined by Sections 1 through 9 of this document. ++ ++ "Licensor" shall mean the copyright owner or entity authorized by ++ the copyright owner that is granting the License. ++ ++ "Legal Entity" shall mean the union of the acting entity and all ++ other entities that control, are controlled by, or are under common ++ control with that entity. For the purposes of this definition, ++ "control" means (i) the power, direct or indirect, to cause the ++ direction or management of such entity, whether by contract or ++ otherwise, or (ii) ownership of fifty percent (50%) or more of the ++ outstanding shares, or (iii) beneficial ownership of such entity. ++ ++ "You" (or "Your") shall mean an individual or Legal Entity ++ exercising permissions granted by this License. ++ ++ "Source" form shall mean the preferred form for making modifications, ++ including but not limited to software source code, documentation ++ source, and configuration files. ++ ++ "Object" form shall mean any form resulting from mechanical ++ transformation or translation of a Source form, including but ++ not limited to compiled object code, generated documentation, ++ and conversions to other media types. ++ ++ "Work" shall mean the work of authorship, whether in Source or ++ Object form, made available under the License, as indicated by a ++ copyright notice that is included in or attached to the work ++ (an example is provided in the Appendix below). ++ ++ "Derivative Works" shall mean any work, whether in Source or Object ++ form, that is based on (or derived from) the Work and for which the ++ editorial revisions, annotations, elaborations, or other modifications ++ represent, as a whole, an original work of authorship. For the purposes ++ of this License, Derivative Works shall not include works that remain ++ separable from, or merely link (or bind by name) to the interfaces of, ++ the Work and Derivative Works thereof. ++ ++ "Contribution" shall mean any work of authorship, including ++ the original version of the Work and any modifications or additions ++ to that Work or Derivative Works thereof, that is intentionally ++ submitted to Licensor for inclusion in the Work by the copyright owner ++ or by an individual or Legal Entity authorized to submit on behalf of ++ the copyright owner. For the purposes of this definition, "submitted" ++ means any form of electronic, verbal, or written communication sent ++ to the Licensor or its representatives, including but not limited to ++ communication on electronic mailing lists, source code control systems, ++ and issue tracking systems that are managed by, or on behalf of, the ++ Licensor for the purpose of discussing and improving the Work, but ++ excluding communication that is conspicuously marked or otherwise ++ designated in writing by the copyright owner as "Not a Contribution." ++ ++ "Contributor" shall mean Licensor and any individual or Legal Entity ++ on behalf of whom a Contribution has been received by Licensor and ++ subsequently incorporated within the Work. ++ ++ 2. Grant of Copyright License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ copyright license to reproduce, prepare Derivative Works of, ++ publicly display, publicly perform, sublicense, and distribute the ++ Work and such Derivative Works in Source or Object form. ++ ++ 3. Grant of Patent License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ (except as stated in this section) patent license to make, have made, ++ use, offer to sell, sell, import, and otherwise transfer the Work, ++ where such license applies only to those patent claims licensable ++ by such Contributor that are necessarily infringed by their ++ Contribution(s) alone or by combination of their Contribution(s) ++ with the Work to which such Contribution(s) was submitted. If You ++ institute patent litigation against any entity (including a ++ cross-claim or counterclaim in a lawsuit) alleging that the Work ++ or a Contribution incorporated within the Work constitutes direct ++ or contributory patent infringement, then any patent licenses ++ granted to You under this License for that Work shall terminate ++ as of the date such litigation is filed. ++ ++ 4. Redistribution. You may reproduce and distribute copies of the ++ Work or Derivative Works thereof in any medium, with or without ++ modifications, and in Source or Object form, provided that You ++ meet the following conditions: ++ ++ (a) You must give any other recipients of the Work or ++ Derivative Works a copy of this License; and ++ ++ (b) You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ (c) You must retain, in the Source form of any Derivative Works ++ that You distribute, all copyright, patent, trademark, and ++ attribution notices from the Source form of the Work, ++ excluding those notices that do not pertain to any part of ++ the Derivative Works; and ++ ++ (d) If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one ++ of the following places: within a NOTICE text file distributed ++ as part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents ++ of the NOTICE file are for informational purposes only and ++ do not modify the License. You may add Your own attribution ++ notices within Derivative Works that You distribute, alongside ++ or as an addendum to the NOTICE text from the Work, provided ++ that such additional attribution notices cannot be construed ++ as modifying the License. ++ ++ You may add Your own copyright statement to Your modifications and ++ may provide additional or different license terms and conditions ++ for use, reproduction, or distribution of Your modifications, or ++ for any such Derivative Works as a whole, provided Your use, ++ reproduction, and distribution of the Work otherwise complies with ++ the conditions stated in this License. ++ ++ 5. Submission of Contributions. Unless You explicitly state otherwise, ++ any Contribution intentionally submitted for inclusion in the Work ++ by You to the Licensor shall be under the terms and conditions of ++ this License, without any additional terms or conditions. ++ Notwithstanding the above, nothing herein shall supersede or modify ++ the terms of any separate license agreement you may have executed ++ with Licensor regarding such Contributions. ++ ++ 6. Trademarks. This License does not grant permission to use the trade ++ names, trademarks, service marks, or product names of the Licensor, ++ except as required for reasonable and customary use in describing the ++ origin of the Work and reproducing the content of the NOTICE file. ++ ++ 7. Disclaimer of Warranty. Unless required by applicable law or ++ agreed to in writing, Licensor provides the Work (and each ++ Contributor provides its Contributions) on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or ++ implied, including, without limitation, any warranties or conditions ++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A ++ PARTICULAR PURPOSE. You are solely responsible for determining the ++ appropriateness of using or redistributing the Work and assume any ++ risks associated with Your exercise of permissions under this License. ++ ++ 8. Limitation of Liability. In no event and under no legal theory, ++ whether in tort (including negligence), contract, or otherwise, ++ unless required by applicable law (such as deliberate and grossly ++ negligent acts) or agreed to in writing, shall any Contributor be ++ liable to You for damages, including any direct, indirect, special, ++ incidental, or consequential damages of any character arising as a ++ result of this License or out of the use or inability to use the ++ Work (including but not limited to damages for loss of goodwill, ++ work stoppage, computer failure or malfunction, or any and all ++ other commercial damages or losses), even if such Contributor ++ has been advised of the possibility of such damages. ++ ++ 9. Accepting Warranty or Additional Liability. While redistributing ++ the Work or Derivative Works thereof, You may choose to offer, ++ and charge a fee for, acceptance of support, warranty, indemnity, ++ or other liability obligations and/or rights consistent with this ++ License. However, in accepting such obligations, You may act only ++ on Your own behalf and on Your sole responsibility, not on behalf ++ of any other Contributor, and only if You agree to indemnify, ++ defend, and hold each Contributor harmless for any liability ++ incurred by, or claims asserted against, such Contributor by reason ++ of your accepting any such warranty or additional liability. ++ ++ END OF TERMS AND CONDITIONS ++ ++ Copyright 2021 WalletConnect, Inc. ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/README.md b/node_modules/@walletconnect/types/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..24e8d4f88f8d9a482f1b56b9c5f68b81ca8c75fc +--- /dev/null ++++ b/node_modules/@walletconnect/types/README.md +@@ -0,0 +1,3 @@ ++# @walletconnect/types ++ ++Typings for WalletConnect Protocol +diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js b/node_modules/@walletconnect/types/dist/index.cjs.js +new file mode 100644 +index 0000000000000000000000000000000000000000..383ea10b1540f1d6e6754ef233f3973660033adb +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.cjs.js +@@ -0,0 +1,2 @@ ++"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var o=require("@walletconnect/events"),c=require("events");function i(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var n=i(c);class l extends o.IEvents{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class a{constructor(s,e,r){this.core=s,this.logger=e}}class u extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e,this.records=new Map}}class I{constructor(s,e){this.logger=s,this.core=e}}class h extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class g extends o.IEvents{constructor(s){super()}}class p{constructor(s,e,r,m){this.core=s,this.logger=e,this.name=r}}class E{constructor(){this.map=new Map}}class v extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class d{constructor(s,e){this.core=s,this.logger=e}}class y extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e}}class C{constructor(s,e){this.logger=s,this.core=e}}class b{constructor(s,e,r){this.core=s,this.logger=e,this.store=r}}class f{constructor(s,e){this.projectId=s,this.logger=e}}class x{constructor(s,e,r){this.core=s,this.logger=e,this.telemetryEnabled=r}}class S extends n.default{constructor(){super()}}class M{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class P extends c.EventEmitter{constructor(){super()}}class _{constructor(s){this.client=s}}exports.ICore=l,exports.ICrypto=a,exports.IEchoClient=f,exports.IEngine=_,exports.IEngineEvents=P,exports.IEventClient=x,exports.IExpirer=y,exports.IJsonRpcHistory=u,exports.IKeyChain=d,exports.IMessageTracker=I,exports.IPairing=C,exports.IPublisher=h,exports.IRelayer=g,exports.ISignClient=M,exports.ISignClientEvents=S,exports.IStore=p,exports.ISubscriber=v,exports.ISubscriberTopicMap=E,exports.IVerify=b; ++//# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js.map b/node_modules/@walletconnect/types/dist/index.cjs.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8a14e09ef9b12a361fb23647494e0a2dbecceccd +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.cjs.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.cjs.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/index.es.js b/node_modules/@walletconnect/types/dist/index.es.js +new file mode 100644 +index 0000000000000000000000000000000000000000..0aa0b206b6a1d30087fcee3ddafc1a909a822ef3 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.es.js +@@ -0,0 +1,2 @@ ++import{IEvents as o}from"@walletconnect/events";import c,{EventEmitter as i}from"events";class n extends o{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class l{constructor(s,t,e){this.core=s,this.logger=t}}class h extends o{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class g extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class u extends o{constructor(s){super()}}class p{constructor(s,t,e,f){this.core=s,this.logger=t,this.name=e}}class I{constructor(){this.map=new Map}}class d extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class E{constructor(s,t){this.core=s,this.logger=t}}class x extends o{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t,e){this.core=s,this.logger=t,this.store=e}}class v{constructor(s,t){this.projectId=s,this.logger=t}}class C{constructor(s,t,e){this.core=s,this.logger=t,this.telemetryEnabled=e}}class b extends c{constructor(){super()}}class S{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class w extends i{constructor(){super()}}class M{constructor(s){this.client=s}}export{n as ICore,l as ICrypto,v as IEchoClient,M as IEngine,w as IEngineEvents,C as IEventClient,x as IExpirer,h as IJsonRpcHistory,E as IKeyChain,a as IMessageTracker,m as IPairing,g as IPublisher,u as IRelayer,S as ISignClient,b as ISignClientEvents,p as IStore,d as ISubscriber,I as ISubscriberTopicMap,y as IVerify}; ++//# sourceMappingURL=index.es.js.map +diff --git a/node_modules/@walletconnect/types/dist/index.es.js.map b/node_modules/@walletconnect/types/dist/index.es.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8f45be96f809d07ac1d2b206f7483e7b1620eb3c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.es.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.es.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/index.umd.js b/node_modules/@walletconnect/types/dist/index.umd.js +new file mode 100644 +index 0000000000000000000000000000000000000000..87fefecd1119ee6195aae42974facd4e621d51b6 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/index.umd.js +@@ -0,0 +1,2 @@ ++(function(c,l){typeof exports=="object"&&typeof module<"u"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(c=typeof globalThis<"u"?globalThis:c||self,l(c["@walletconnect/types"]={}))})(this,function(c){"use strict";class l{}class M extends l{constructor(e){super(),this.opts=e,this.protocol="wc",this.version=2}}class R{constructor(e,n,r){this.core=e,this.logger=n}}class j extends l{constructor(e,n){super(),this.core=e,this.logger=n,this.records=new Map}}class x{constructor(e,n){this.logger=e,this.core=n}}class P extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class N extends l{constructor(e){super()}}class S{constructor(e,n,r,s){this.core=e,this.logger=n,this.name=r}}class T{constructor(){this.map=new Map}}class A extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class K{constructor(e,n){this.core=e,this.logger=n}}class F extends l{constructor(e,n){super(),this.core=e,this.logger=n}}class W{constructor(e,n){this.logger=e,this.core=n}}class k{constructor(e,n,r){this.core=e,this.logger=n,this.store=r}}class H{constructor(e,n){this.projectId=e,this.logger=n}}class J{constructor(e,n,r){this.core=e,this.logger=n,this.telemetryEnabled=r}}var v={exports:{}},a=typeof Reflect=="object"?Reflect:null,g=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},p;a&&typeof a.ownKeys=="function"?p=a.ownKeys:Object.getOwnPropertySymbols?p=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:p=function(e){return Object.getOwnPropertyNames(e)};function U(t){console&&console.warn&&console.warn(t)}var y=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}v.exports=o,v.exports.once=B,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var m=10;function d(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return m},set:function(t){if(typeof t!="number"||t<0||y(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");m=t}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||y(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function L(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return L(this)},o.prototype.emit=function(e){for(var n=[],r=1;r0&&(i=n[0]),i instanceof Error)throw i;var f=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw f.context=i,f}var h=u[e];if(h===void 0)return!1;if(typeof h=="function")g(h,this,n);else for(var O=h.length,Z=w(h,O),r=0;r0&&i.length>s&&!i.warned){i.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=t,f.type=e,f.count=i.length,U(f)}return t}o.prototype.addListener=function(e,n){return I(this,e,n,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,n){return I(this,e,n,!0)};function V(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function b(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},s=V.bind(r);return s.listener=n,r.wrapFn=s,s}o.prototype.once=function(e,n){return d(n),this.on(e,b(this,e,n)),this},o.prototype.prependOnceListener=function(e,n){return d(n),this.prependListener(e,b(this,e,n)),this},o.prototype.removeListener=function(e,n){var r,s,u,i,f;if(d(n),s=this._events,s===void 0)return this;if(r=s[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(u=-1,i=r.length-1;i>=0;i--)if(r[i]===n||r[i].listener===n){f=r[i].listener,u=i;break}if(u<0)return this;u===0?r.shift():q(r,u),r.length===1&&(s[e]=r[0]),s.removeListener!==void 0&&this.emit("removeListener",e,f||n)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var n,r,s;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var u=Object.keys(r),i;for(s=0;s=0;s--)this.removeListener(e,n[s]);return this};function E(t,e,n){var r=t._events;if(r===void 0)return[];var s=r[e];return s===void 0?[]:typeof s=="function"?n?[s.listener||s]:[s]:n?z(s):w(s,s.length)}o.prototype.listeners=function(e){return E(this,e,!0)},o.prototype.rawListeners=function(e){return E(this,e,!1)},o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):_.call(t,e)},o.prototype.listenerCount=_;function _(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?p(this._events):[]};function w(t,e){for(var n=new Array(e),r=0;r;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["r","e","t","eventsModule","events","s"],"mappings":";;;;;;EAAO,MAAM,OAAO,CAAC;EACrB;;ECDuD,MAAM,KAAK,SAASA,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,CAAC;;ECA3I,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;ECAX,MAAM,eAAe,SAASC,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAG,CAAC;;ECAxJ,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;;ECAjB,MAAM,UAAU,SAASA,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;ECAjF,MAAM,QAAQ,SAASD,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAE,CAAC;;ECAhG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;;ECAxB,MAAM,mBAAmB,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG,CAAC,CAAQ,MAAM,WAAW,SAASE,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;ECAnM,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;ECAX,MAAM,QAAQ,SAASF,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;ECA5H,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC;;ECA1D,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC;;ECAxE,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;ECAlE,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAC,CAAC;;;;ECuB/F,IAAI,CAAC,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAI;EACpD,IAAI,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU;EACrD,IAAI,CAAC,CAAC,KAAK;EACX,IAAI,SAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;EAClD,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;EACjE,IAAG;AACH;EACA,IAAI,eAAc;EAClB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE;EAC1C,EAAE,cAAc,GAAG,CAAC,CAAC,QAAO;EAC5B,CAAC,MAAM,IAAI,MAAM,CAAC,qBAAqB,EAAE;EACzC,EAAE,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE;EACnD,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;EAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;EACpD,GAAG,CAAC;EACJ,CAAC,MAAM;EACP,EAAE,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE;EACnD,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;EAC9C,GAAG,CAAC;EACJ,CAAC;AACD;EACA,SAAS,kBAAkB,CAAC,OAAO,EAAE;EACrC,EAAE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;EACrD,CAAC;AACD;EACA,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,WAAW,CAAC,KAAK,EAAE;EAC9D,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC;EACzB,EAAC;AACD;EACA,SAAS,YAAY,GAAG;EACxB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,CAAC;AACDG,QAAc,CAAA,OAAA,GAAG,YAAY,CAAC;AACXC,gBAAA,CAAA,IAAA,GAAG,KAAK;AAC3B;EACA;EACA,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC;EACA,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;EAC3C,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;EACxC,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;AACjD;EACA;EACA;EACA,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC7B;EACA,SAAS,aAAa,CAAC,QAAQ,EAAE;EACjC,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;EACtC,IAAI,MAAM,IAAI,SAAS,CAAC,kEAAkE,GAAG,OAAO,QAAQ,CAAC,CAAC;EAC9G,GAAG;EACH,CAAC;AACD;EACA,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,qBAAqB,EAAE;EAC3D,EAAE,UAAU,EAAE,IAAI;EAClB,EAAE,GAAG,EAAE,WAAW;EAClB,IAAI,OAAO,mBAAmB,CAAC;EAC/B,GAAG;EACH,EAAE,GAAG,EAAE,SAAS,GAAG,EAAE;EACrB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;EAChE,MAAM,MAAM,IAAI,UAAU,CAAC,iGAAiG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;EAC1I,KAAK;EACL,IAAI,mBAAmB,GAAG,GAAG,CAAC;EAC9B,GAAG;EACH,CAAC,CAAC,CAAC;AACH;EACA,YAAY,CAAC,IAAI,GAAG,WAAW;AAC/B;EACA,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;EAChC,MAAM,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;EAC5D,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACvC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;EACvD,CAAC,CAAC;AACF;EACA;EACA;EACA,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,CAAC,CAAC,EAAE;EACrE,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;EACxD,IAAI,MAAM,IAAI,UAAU,CAAC,+EAA+E,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;EACpH,GAAG;EACH,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EACzB,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAChC,EAAE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;EACtC,IAAI,OAAO,YAAY,CAAC,mBAAmB,CAAC;EAC5C,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC;EAC5B,CAAC;AACD;EACA,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,GAAG;EACpE,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAChC,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE;EAClD,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;EAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EACrE,EAAE,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC;AACnC;EACA,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAC5B,EAAE,IAAI,MAAM,KAAK,SAAS;EAC1B,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;EACtD,OAAO,IAAI,CAAC,OAAO;EACnB,IAAI,OAAO,KAAK,CAAC;AACjB;EACA;EACA,EAAE,IAAI,OAAO,EAAE;EACf,IAAI,IAAI,EAAE,CAAC;EACX,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;EACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,IAAI,EAAE,YAAY,KAAK,EAAE;EAC7B;EACA;EACA,MAAM,MAAM,EAAE,CAAC;EACf,KAAK;EACL;EACA,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;EAClF,IAAI,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;EACrB,IAAI,MAAM,GAAG,CAAC;EACd,GAAG;AACH;EACA,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;EACA,EAAE,IAAI,OAAO,KAAK,SAAS;EAC3B,IAAI,OAAO,KAAK,CAAC;AACjB;EACA,EAAE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;EACrC,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACtC,GAAG,MAAM;EACT,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;EAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;EAChC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,SAAS,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;EACvD,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,MAAM,CAAC;EACb,EAAE,IAAI,QAAQ,CAAC;AACf;EACA,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1B;EACA,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;EAC1B,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;EAC5B,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAClD,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;EAC5B,GAAG,MAAM;EACT;EACA;EACA,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;EAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI;EACrC,kBAAkB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACpE;EACA;EACA;EACA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;EAC9B,KAAK;EACL,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,GAAG;AACH;EACA,EAAE,IAAI,QAAQ,KAAK,SAAS,EAAE;EAC9B;EACA,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;EACvC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC;EAC1B,GAAG,MAAM;EACT,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;EACxC;EACA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;EAC7B,QAAQ,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;EAC9D;EACA,KAAK,MAAM,IAAI,OAAO,EAAE;EACxB,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;EACjC,KAAK,MAAM;EACX,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9B,KAAK;AACL;EACA;EACA,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;EAC1D,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;EAC7B;EACA;EACA,MAAM,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,8CAA8C;EACtE,0BAA0B,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa;EAC9E,0BAA0B,0CAA0C;EACpE,0BAA0B,gBAAgB,CAAC,CAAC;EAC5C,MAAM,CAAC,CAAC,IAAI,GAAG,6BAA6B,CAAC;EAC7C,MAAM,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;EACzB,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;EACpB,MAAM,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;EAChC,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;EAC5B,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,MAAM,CAAC;EAChB,CAAC;AACD;EACA,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE;EAC1E,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EACnD,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;AAC/D;EACA,YAAY,CAAC,SAAS,CAAC,eAAe;EACtC,IAAI,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;EAC7C,MAAM,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;EACtD,KAAK,CAAC;AACN;EACA,SAAS,WAAW,GAAG;EACvB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;EACnB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACvD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;EAC9B,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAC7C,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;EACvD,GAAG;EACH,CAAC;AACD;EACA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC3C,EAAE,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;EAClG,EAAE,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACxC,EAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC9B,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;EACzB,EAAE,OAAO,OAAO,CAAC;EACjB,CAAC;AACD;EACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;EAC5D,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC1B,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;EACjD,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,mBAAmB;EAC1C,IAAI,SAAS,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;EACjD,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;EAClE,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK,CAAC;AACN;EACA;EACA,YAAY,CAAC,SAAS,CAAC,cAAc;EACrC,IAAI,SAAS,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;EAC5C,MAAM,IAAI,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,CAAC;AACtD;EACA,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9B;EACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAC5B,MAAM,IAAI,MAAM,KAAK,SAAS;EAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB;EACA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC1B,MAAM,IAAI,IAAI,KAAK,SAAS;EAC5B,QAAQ,OAAO,IAAI,CAAC;AACpB;EACA,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;EAC3D,QAAQ,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC;EACrC,UAAU,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7C,aAAa;EACb,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;EAC9B,UAAU,IAAI,MAAM,CAAC,cAAc;EACnC,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;EACzE,SAAS;EACT,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;EAC7C,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC;AACtB;EACA,QAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;EACrE,YAAY,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;EAChD,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,YAAY,MAAM;EAClB,WAAW;EACX,SAAS;AACT;EACA,QAAQ,IAAI,QAAQ,GAAG,CAAC;EACxB,UAAU,OAAO,IAAI,CAAC;AACtB;EACA,QAAQ,IAAI,QAAQ,KAAK,CAAC;EAC1B,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;EACvB,aAAa;EACb,UAAU,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACpC,SAAS;AACT;EACA,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC7B,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC;EACA,QAAQ,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;EAC/C,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,IAAI,QAAQ,CAAC,CAAC;EAC1E,OAAO;AACP;EACA,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK,CAAC;AACN;EACA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC;AACnE;EACA,YAAY,CAAC,SAAS,CAAC,kBAAkB;EACzC,IAAI,SAAS,kBAAkB,CAAC,IAAI,EAAE;EACtC,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/B;EACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EAC5B,MAAM,IAAI,MAAM,KAAK,SAAS;EAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB;EACA;EACA,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE;EAC/C,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;EACpC,UAAU,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7C,UAAU,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAChC,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;EAC/C,UAAU,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC;EACvC,YAAY,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC/C;EACA,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;EAChC,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;AACP;EACA;EACA,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;EAClC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvC,QAAQ,IAAI,GAAG,CAAC;EAChB,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC1C,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACxB,UAAU,IAAI,GAAG,KAAK,gBAAgB,EAAE,SAAS;EACjD,UAAU,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;EACvC,SAAS;EACT,QAAQ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;EAClD,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EAC9B,QAAQ,OAAO,IAAI,CAAC;EACpB,OAAO;AACP;EACA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B;EACA,MAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;EAC3C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAC7C,OAAO,MAAM,IAAI,SAAS,KAAK,SAAS,EAAE;EAC1C;EACA,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACpD,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD,SAAS;EACT,OAAO;AACP;EACA,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK,CAAC;AACN;EACA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EAC1C,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B;EACA,EAAE,IAAI,MAAM,KAAK,SAAS;EAC1B,IAAI,OAAO,EAAE,CAAC;AACd;EACA,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAChC,EAAE,IAAI,UAAU,KAAK,SAAS;EAC9B,IAAI,OAAO,EAAE,CAAC;AACd;EACA,EAAE,IAAI,OAAO,UAAU,KAAK,UAAU;EACtC,IAAI,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvE;EACA,EAAE,OAAO,MAAM;EACf,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;EAC5E,CAAC;AACD;EACA,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE;EAC5D,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACtC,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,IAAI,EAAE;EAClE,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,YAAY,CAAC,aAAa,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;EACrD,EAAE,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE;EACnD,IAAI,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;EACvC,GAAG,MAAM;EACT,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;EAC7C,GAAG;EACH,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;EACrD,SAAS,aAAa,CAAC,IAAI,EAAE;EAC7B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B;EACA,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;EAC5B,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC;EACA,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;EAC1C,MAAM,OAAO,CAAC,CAAC;EACf,KAAK,MAAM,IAAI,UAAU,KAAK,SAAS,EAAE;EACzC,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC;EAC/B,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,CAAC,CAAC;EACX,CAAC;AACD;EACA,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;EAC1D,EAAE,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;EACnE,CAAC,CAAC;AACF;EACA,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE;EAC5B,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EAC5B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,OAAO,IAAI,CAAC;EACd,CAAC;AACD;EACA,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;EAChC,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;EACzC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACb,CAAC;AACD;EACA,SAAS,eAAe,CAAC,GAAG,EAAE;EAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EAClC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACD;EACA,SAAS,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;EAC7B,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;EAChD,IAAI,SAAS,aAAa,CAAC,GAAG,EAAE;EAChC,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EAC7C,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;EAClB,KAAK;AACL;EACA,IAAI,SAAS,QAAQ,GAAG;EACxB,MAAM,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;EACxD,QAAQ,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;EACvD,OAAO;EACP,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;EACxC,KACA;EACA,IAAI,8BAA8B,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;EAC5E,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;EAC1B,MAAM,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;EAC5E,KAAK;EACL,GAAG,CAAC,CAAC;EACL,CAAC;AACD;EACA,SAAS,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;EAChE,EAAE,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU,EAAE;EACxC,IAAI,8BAA8B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACrE,GAAG;EACH,CAAC;AACD;EACA,SAAS,8BAA8B,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;EACxE,EAAE,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU,EAAE;EACxC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;EACpB,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACnC,KAAK,MAAM;EACX,MAAM,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;EACjC,KAAK;EACL,GAAG,MAAM,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,UAAU,EAAE;EAC7D;EACA;EACA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE;EAC9D;EACA;EACA,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;EACtB,QAAQ,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;EACxD,OAAO;EACP,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;EACpB,KAAK,CAAC,CAAC;EACP,GAAG,MAAM;EACT,IAAI,MAAM,IAAI,SAAS,CAAC,qEAAqE,GAAG,OAAO,OAAO,CAAC,CAAC;EAChH,GAAG;EACH;;EChf6B,MAAM,iBAAiB,SAASF,cAAC,CAAC,WAAW,EAAE,CAAC,KAAK,GAAE,CAAC,CAAQ,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC,CAAC;;ECA/H,MAAM,aAAa,SAASG,2BAAC,CAAC,WAAW,EAAE,CAAC,KAAK,GAAE,CAAC,CAAQ,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..460b34629a0b911734ecaba508d50421126e9edd +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../src/core/keychain.ts","../src/core/crypto.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/subscriber.ts","../src/core/relayer.ts","../src/core/history.ts","../src/core/expirer.ts","../src/core/store.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/core/core.ts","../src/core/index.ts","../src/sign-client/proposal.ts","../src/sign-client/auth.ts","../src/sign-client/session.ts","../src/sign-client/jsonrpc.ts","../src/sign-client/pendingRequest.ts","../src/sign-client/engine.ts","../src/sign-client/client.ts","../src/sign-client/index.ts","../src/index.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d",{"version":"a771f3182c046f8b2d4a8b253d84037d1d6caf48139a5f329d60f8ca3cb7325d","signature":"1c697d5571b23e58c638327b0959ab8ce7a3a1192f3fa5847c545e8a35a88b81"},{"version":"b4cf311d307aad665c290a647adfa63c0d4c4978e90e1a800ac3284d9b6e768a","signature":"cac3cd6c55cbdb4092834342a8c256cc34ede50f83c8d33586236889bc7dd47b"},{"version":"211fbc870d26d33bd0530050e15ea959079e66d57c31b2c768cb835057090da5","signature":"8b8ae4783419c0cbba56335ae9af63181593d876a542d61a823a887a5b3fc713"},{"version":"db4f07433024766257b45c8633374c7b0863de92234b569bf89548f81f0a4366","signature":"970786dd0f7e0a4d2770980b3e30f84d78eb9e996bfc3beb8aec0fc79041baa3"},{"version":"135bc48d525c18e1f19bf4bff7c29a21dcc7dd3f0abbafad6e6a62f3d0ca2933","signature":"0e934b71219109c4714b29017a6886a1b9c08adbf4df9d7ba7ae36146390a79d"},{"version":"80832fb8ba22c5ecbce1c33c2a6a698aca342a02bbe847698150965b1d9a1e20","signature":"34975c50cf90a46824f60e8e68611d548c6a0065157f6ead4448739ce1e78cbc"},{"version":"8233ab90f5a0bb54dedf025800e9a1823ed0ee42e9f3a4fd135f272095f74134","signature":"091e3045270bd0b0b12765940128af773344d085621395001c2e4649c0c33c67"},{"version":"fe0f6ec258642189211e9d67504033d92f79e7823fcd73b304ca1c913aebabe6","signature":"f0d56ec8d982bcb82230aa47b0d2747b6ccc8be1b439f4f3e24b20021ac12f30"},{"version":"2a653343cd29fb91f423de0aa2c51e5ce5b576f9f7684dc928e0d8c9a85203c6","signature":"c1f143281fa2178579eaef19ebe393a0270cac3fafb71a5ec521f149e872c26f"},{"version":"f0c1218e7af8209b21f55c38178059cf8007792c0c5732f99234c12b53f8ffa1","signature":"e2fdf4b2544bbe1b3347cdf0a7c08862b26af46abd673b3f0e1f3ceb6a49c4a3"},{"version":"643ea5c45b0c77cb9ad78895b65c9b235731cdbd0064a2e1908ea76eb814f063","signature":"e749c3898546ad92b3108a44aef553f19405bf932d6b0001f9503339dedb95c2"},{"version":"e81123bb934323e71b994fcd11f18c33154848391ce4ded8a2203b3b27d72643","signature":"f60bbf96db27dd73d32ca5c0ccbe03c8f72aba2b87760ac96ac15b57c2d9ceb0"},{"version":"c6b348c2674697e96d15f33e44c0d341fe4ce2d143528f47d812c2862e7bc578","signature":"920e95b6d3bcea5ec794a47b5e5a5235d82b1d98bed7e3014f983eb1bd62001f"},{"version":"cbe7c085ede2a53876a3fffd73add76bcc1d5f5fb5b7864445b839d64efc8431","signature":"1f5fe58679cc5c902b7fb9e4fb68d0931a013fb3e750b858fa9ec45d6d0bc10b"},"ceef125d35ab5591ed4d99418619bebe7162ba0ab3a9693cc8ccb0d00585b2fa",{"version":"5b76efa21700a1af1b57a4d9ecf83250350f8153deb72e34c5d37eccda057d28","signature":"c927326561af6e91e91b8f265e7301980e04a2fc891b38cf49728f4708fd073f"},{"version":"be7ac29728e324262d56c3d013369ad849593184d90d3b7579addb58a50b643d","signature":"b52c2789aa7f160911601ad9e8733e0b336be2934bacda2b828aa5086af0a46a"},{"version":"75a3af7bd5e57f0efb399f4fc2f7004b2c1b85f76c2009475452ffd19e230019","signature":"b2600375c2fe289e75b8a6e609e31e495a69348be220beb1558d03e61e8cf4af"},{"version":"014837f0a732216e2b51e048f26f5d0246e070fa8376a54ceeb688337857d6d6","signature":"fcec1ddb829e46b81b98c1563495706b3dca00413b8ebbfc7c82193a226d812f"},{"version":"b6b109487ee24fcecac9515a8ee241d633079927490c81888eecabec2275ad74","signature":"aa44780a5dfa9df4f2524332299f01115f5281e9c8bf1a2e1cac2a5b81e5beff"},{"version":"5674581613842ef7ad27d6ea0416325f8cc664ef640141adf0500e4fc236d7db","signature":"af128a794f0eb1498c25b377066baff09bb11f87257854b389feb038e72bf2f1"},{"version":"588e77410266b14264311b70ee04fffdcc198eb05d661ce5b920739220eec914","signature":"1eb12a4c4f0d8256b321af7e7bce3b74912851eca4f9fad761b7ebefb047b9a5"},"a3d139874ac29911ca82720164581c1cf6985a87f1d95672d1968c08815628e4","7f4d7d3426e39f1be70dc80fe6bb73134591aa355026500d811a8365cfceb429","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,95],[58,61,87,88,95,149,150,151],[88,153],[88],[88,148],[88,157],[88,158],[58,88,95],[88,175],[88,163,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,166,167,168,169,170,171,172,173,174,175],[88,164,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,165,167,168,169,170,171,172,173,174,175],[88,163,164,165,166,168,169,170,171,172,173,174,175],[88,163,164,165,166,167,169,170,171,172,173,174,175],[88,163,164,165,166,167,168,170,171,172,173,174,175],[88,163,164,165,166,167,168,169,171,172,173,174,175],[88,163,164,165,166,167,168,169,170,172,173,174,175],[88,163,164,165,166,167,168,169,170,171,173,174,175],[88,163,164,165,166,167,168,169,170,171,172,174,175],[88,163,164,165,166,167,168,169,170,171,172,173,175],[88,163,164,165,166,167,168,169,170,171,172,173,174],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,185],[88,188],[88,190],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[61,88,95],[58,88,92,114,115],[42,88,97,103,108,123,124,125,129,130,131,133,134,135,136],[42,88,113,123,124,137],[42,88,123],[42,88,123,137],[42,88,97,123,137],[42,88,97,113,123,137],[42,88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[42,58,88,113,123,129,132,137],[42,88,97,123,129],[42,88,97,113,123,126,127,128,137],[42,88,113,123,137],[42,88,97,113,123,129],[42,88,108,123,137],[42,88,138,146],[42,88,113,138,141],[42,58,88,123,134,137,138,139,140,141,143,144],[42,58,88,113,129,133,138,139,140,141,142,143,145],[42,88,139,140,141,142,143,144,145],[42,88,113,129,139,141,145,146],[42,88,129,132,145],[42,88,129,132,139,140,145],[97,103,108,123,124,125,129,130,131,133,134,135,136],[113,123,124,137],[123],[123,137],[97,123,137],[97,113,123,137],[58,113,123,129,132,137],[97,123,129],[97,113,123,126,127,128,137],[113,123,137],[97,113,123,129],[108,123,137],[113,138,141],[58,123,134,137,138,139,140,141,143,144],[58,113,129,133,138,139,140,141,142,143,145],[113,129,139,141,145,146],[138,146],[129,132,145],[129,132,139,140,145]],"referencedMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,91],[125,92],[135,93],[136,94],[131,95],[130,96],[138,97],[124,94],[126,94],[133,98],[127,99],[129,100],[132,101],[128,102],[134,103],[147,104],[140,105],[145,106],[144,107],[146,108],[142,109],[143,104],[139,110],[141,111]],"exportedModulesMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,112],[125,113],[135,114],[136,115],[131,116],[130,117],[138,97],[124,115],[126,115],[133,118],[127,119],[129,120],[132,121],[128,122],[134,123],[147,104],[140,124],[145,125],[144,126],[146,108],[142,127],[143,128],[139,129],[141,130]],"semanticDiagnosticsPerFile":[148,152,154,153,155,156,150,157,158,159,160,161,162,176,164,165,163,166,167,168,169,170,171,172,173,174,175,177,178,179,180,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,181,182,183,151,184,186,185,187,189,188,190,191,96,97,101,102,100,103,98,99,113,109,110,111,112,108,107,106,104,105,121,119,117,123,118,120,122,149,114,116,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141]},"version":"4.7.4"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts b/node_modules/@walletconnect/types/dist/types/core/core.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..0391c9df2a40801ff58225e6530397d2f0979dfc +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts +@@ -0,0 +1,70 @@ ++import { IEvents } from "@walletconnect/events"; ++import { IHeartBeat } from "@walletconnect/heartbeat"; ++import { IKeyValueStorage, KeyValueStorageOptions } from "@walletconnect/keyvaluestorage"; ++import { ICrypto } from "./crypto"; ++import { IRelayer } from "./relayer"; ++import { IKeyChain } from "./keychain"; ++import { IJsonRpcHistory } from "./history"; ++import { IExpirer } from "./expirer"; ++import { IPairing } from "./pairing"; ++import { Logger } from "@walletconnect/logger"; ++import { IVerify } from "./verify"; ++import { IEchoClient } from "./echo"; ++import { IEventClient } from "./events"; ++export declare namespace CoreTypes { ++ interface Options { ++ projectId?: string; ++ name?: string; ++ relayUrl?: string; ++ logger?: string | Logger; ++ keychain?: IKeyChain; ++ storage?: IKeyValueStorage; ++ storageOptions?: KeyValueStorageOptions; ++ maxLogBlobSizeInBytes?: number; ++ customStoragePrefix?: string; ++ telemetryEnabled?: boolean; ++ } ++ interface Metadata { ++ name: string; ++ description: string; ++ url: string; ++ icons: string[]; ++ verifyUrl?: string; ++ redirect?: { ++ native?: string; ++ universal?: string; ++ linkMode?: boolean; ++ }; ++ } ++} ++export declare abstract class ICore extends IEvents { ++ opts?: CoreTypes.Options | undefined; ++ readonly protocol = "wc"; ++ readonly version = 2; ++ abstract readonly name: string; ++ abstract readonly context: string; ++ abstract readonly relayUrl?: string; ++ abstract readonly projectId?: string; ++ abstract readonly customStoragePrefix: string; ++ abstract logger: Logger; ++ abstract heartbeat: IHeartBeat; ++ abstract crypto: ICrypto; ++ abstract relayer: IRelayer; ++ abstract storage: IKeyValueStorage; ++ abstract history: IJsonRpcHistory; ++ abstract expirer: IExpirer; ++ abstract pairing: IPairing; ++ abstract verify: IVerify; ++ abstract echoClient: IEchoClient; ++ abstract linkModeSupportedApps: string[]; ++ abstract eventClient: IEventClient; ++ constructor(opts?: CoreTypes.Options | undefined); ++ abstract start(): Promise; ++ abstract dispatchEnvelope(params: { ++ topic: string; ++ message: string; ++ sessionExists: boolean; ++ }): void; ++ abstract addLinkModeSupportedApp(universalLink: string): void; ++} ++//# sourceMappingURL=core.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..79b876b6be25b1233b57cb1b8d05c207a0a9c49c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..cd6316ac28214711e0a51cdc8430a39d20cd43e5 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts +@@ -0,0 +1,81 @@ ++import { JsonRpcPayload } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++import { IKeyChain } from "./keychain"; ++export declare namespace CryptoTypes { ++ type EncodingType = "base64pad" | "base64url"; ++ interface Participant { ++ publicKey: string; ++ } ++ interface KeyPair { ++ privateKey: string; ++ publicKey: string; ++ } ++ interface EncryptParams { ++ message: string; ++ symKey: string; ++ type?: number; ++ iv?: string; ++ senderPublicKey?: string; ++ encoding?: EncodingType; ++ } ++ interface DecryptParams { ++ symKey: string; ++ encoded: string; ++ encoding?: EncodingType; ++ } ++ interface EncodingParams { ++ type: Uint8Array; ++ sealed: Uint8Array; ++ iv: Uint8Array; ++ senderPublicKey?: Uint8Array; ++ encoding?: EncodingType; ++ } ++ interface DecodingParams { ++ encoded: string; ++ encoding?: EncodingType; ++ } ++ interface EncodeOptions { ++ type?: number; ++ senderPublicKey?: string; ++ receiverPublicKey?: string; ++ encoding?: EncodingType; ++ } ++ interface DecodeOptions { ++ receiverPublicKey?: string; ++ encoding?: EncodingType; ++ } ++ interface EncodingValidation { ++ type: number; ++ senderPublicKey?: string; ++ receiverPublicKey?: string; ++ } ++ interface TypeOneParams { ++ type: 1; ++ senderPublicKey: string; ++ receiverPublicKey: string; ++ } ++} ++export declare abstract class ICrypto { ++ core: ICore; ++ logger: Logger; ++ abstract name: string; ++ abstract readonly context: string; ++ abstract keychain: IKeyChain; ++ abstract readonly randomSessionIdentifier: string; ++ constructor(core: ICore, logger: Logger, keychain?: IKeyChain); ++ abstract init(): Promise; ++ abstract hasKeys(tag: string): boolean; ++ abstract getClientId(): Promise; ++ abstract generateKeyPair(): Promise; ++ abstract generateSharedKey(selfPublicKey: string, peerPublicKey: string, overrideTopic?: string): Promise; ++ abstract setSymKey(symKey: string, overrideTopic?: string): Promise; ++ abstract deleteKeyPair(publicKey: string): Promise; ++ abstract deleteSymKey(topic: string): Promise; ++ abstract encode(topic: string, payload: JsonRpcPayload, opts?: CryptoTypes.EncodeOptions): Promise; ++ abstract decode(topic: string, encoded: string, opts?: CryptoTypes.DecodeOptions): Promise; ++ abstract signJWT(aud: string): Promise; ++ abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number; ++ abstract getPayloadSenderPublicKey(encoded: string, encoding?: CryptoTypes.EncodingType): string | undefined; ++} ++//# sourceMappingURL=crypto.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..4402043b63a14f2daa2291ce030a2c69613bdd2b +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/core/crypto.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..64f99da3f8b9d8652e697d735d139508062f473a +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts +@@ -0,0 +1,17 @@ ++import { Logger } from "@walletconnect/logger"; ++export declare namespace EchoClientTypes { ++ type RegisterDeviceTokenParams = { ++ clientId: string; ++ token: string; ++ notificationType: "fcm" | "apns" | "apns-sandbox" | "noop"; ++ enableEncrypted?: boolean; ++ }; ++} ++export declare abstract class IEchoClient { ++ projectId: string; ++ logger: Logger; ++ abstract readonly context: string; ++ constructor(projectId: string, logger: Logger); ++ abstract registerDeviceToken(params: EchoClientTypes.RegisterDeviceTokenParams): Promise; ++} ++//# sourceMappingURL=echo.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..0d96f2e7263890a1754cefda3d2e7674e6e4ad40 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/core/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,yBAAyB,GAAG;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC;QAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AACD,8BAAsB,WAAW;IAEZ,SAAS,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM;IAD3D,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBACtB,SAAS,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM;aAE3C,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,yBAAyB,GAChD,OAAO,CAAC,IAAI,CAAC;CACjB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts b/node_modules/@walletconnect/types/dist/types/core/events.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..16673bbdde13ec7fc6d924c1ce3a4e7aed4fd6ca +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts +@@ -0,0 +1,45 @@ ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare namespace EventClientTypes { ++ interface Event { ++ eventId: string; ++ bundleId: string; ++ timestamp: number; ++ props: Props; ++ addTrace: (trace: string) => void; ++ setError: (error: string) => void; ++ } ++ interface Props { ++ event: string; ++ type: string; ++ properties: Properties; ++ } ++ interface Properties { ++ topic: string; ++ trace: Trace; ++ } ++ type Trace = string[]; ++} ++export declare abstract class IEventClient { ++ core: ICore; ++ logger: Logger; ++ telemetryEnabled: boolean; ++ abstract readonly context: string; ++ constructor(core: ICore, logger: Logger, telemetryEnabled: boolean); ++ abstract createEvent(params: { ++ event?: "ERROR"; ++ type?: string; ++ properties: { ++ topic: string; ++ trace: EventClientTypes.Trace; ++ }; ++ }): EventClientTypes.Event; ++ abstract getEvent(params: { ++ eventId?: string; ++ topic?: string; ++ }): EventClientTypes.Event | undefined; ++ abstract deleteEvent(params: { ++ eventId: string; ++ }): void; ++} ++//# sourceMappingURL=events.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..471f6507a8b7e83e4ef0ae15391f57a5b77f9fd4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/core/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,UAAiB,KAAK;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC;IAED,UAAiB,KAAK;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAiB,UAAU;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC;KACd;IAED,KAAY,KAAK,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,8BAAsB,YAAY;IAGb,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,gBAAgB,EAAE,OAAO;IAFvF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,gBAAgB,EAAE,OAAO;aAEvE,WAAW,CAAC,MAAM,EAAE;QAClC,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;SAC/B,CAAC;KACH,GAAG,gBAAgB,CAAC,KAAK;aAEV,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,gBAAgB,CAAC,KAAK,GAAG,SAAS;aAEtB,WAAW,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAC/D"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..e773cbc725fc62e09c3f45e8005f7b9f09962bf4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts +@@ -0,0 +1,37 @@ ++import { IEvents } from "@walletconnect/events"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare namespace ExpirerTypes { ++ interface Expiration { ++ target: string; ++ expiry: number; ++ } ++ interface Created { ++ target: string; ++ expiration: Expiration; ++ } ++ interface Deleted { ++ target: string; ++ expiration: Expiration; ++ } ++ interface Expired { ++ target: string; ++ expiration: Expiration; ++ } ++} ++export declare abstract class IExpirer extends IEvents { ++ core: ICore; ++ logger: Logger; ++ abstract name: string; ++ abstract readonly context: string; ++ abstract readonly length: number; ++ abstract readonly keys: string[]; ++ abstract readonly values: ExpirerTypes.Expiration[]; ++ constructor(core: ICore, logger: Logger); ++ abstract init(): Promise; ++ abstract has(key: string | number): boolean; ++ abstract set(key: string | number, expiry: number): void; ++ abstract get(key: string | number): ExpirerTypes.Expiration; ++ abstract del(key: string | number): void; ++} ++//# sourceMappingURL=expirer.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..039287dcbead4999a93db36dad82c4f61bd85361 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"expirer.d.ts","sourceRoot":"","sources":["../../../src/core/expirer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,UAAU,UAAU;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;CACF;AAED,8BAAsB,QAAS,SAAQ,OAAO;IAWzB,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAVrD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;gBAExC,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;aAElC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;aAE/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,UAAU;aAElD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAChD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts b/node_modules/@walletconnect/types/dist/types/core/history.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..f246f7694840abc0e8f5e6441455e4553b9caccc +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts +@@ -0,0 +1,39 @@ ++import { IEvents } from "@walletconnect/events"; ++import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, RequestArguments } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export interface JsonRpcRecord { ++ id: number; ++ topic: string; ++ request: RequestArguments; ++ chainId?: string; ++ response?: { ++ result: any; ++ } | { ++ error: ErrorResponse; ++ }; ++ expiry?: number; ++} ++export interface RequestEvent { ++ topic: string; ++ request: JsonRpcRequest; ++ chainId?: string; ++} ++export declare abstract class IJsonRpcHistory extends IEvents { ++ core: ICore; ++ logger: Logger; ++ records: Map; ++ abstract readonly context: string; ++ abstract readonly size: number; ++ abstract readonly keys: number[]; ++ abstract readonly values: JsonRpcRecord[]; ++ abstract readonly pending: RequestEvent[]; ++ constructor(core: ICore, logger: Logger); ++ abstract init(): Promise; ++ abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void; ++ abstract get(topic: string, id: number): Promise; ++ abstract resolve(response: JsonRpcResponse): Promise; ++ abstract delete(topic: string, id?: number): void; ++ abstract exists(topic: string, id: number): Promise; ++} ++//# sourceMappingURL=history.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a8aeccc4612787896f1ca40b84db1b14a849d256 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8BAAsB,eAAgB,SAAQ,OAAO;IAahC,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAZ9C,OAAO,6BAAoC;IAElD,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,aAAa,EAAE,CAAC;IAEjD,kBAAyB,OAAO,EAAE,YAAY,EAAE,CAAC;gBAE9B,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;aAEnE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;aAEtD,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACpE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts b/node_modules/@walletconnect/types/dist/types/core/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..02675dcdb9e3911efa8ed77e7f140ec6f1eca561 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts +@@ -0,0 +1,15 @@ ++export * from "./core"; ++export * from "./crypto"; ++export * from "./history"; ++export * from "./messages"; ++export * from "./publisher"; ++export * from "./relayer"; ++export * from "./store"; ++export * from "./subscriber"; ++export * from "./keychain"; ++export * from "./expirer"; ++export * from "./pairing"; ++export * from "./verify"; ++export * from "./echo"; ++export * from "./events"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..e14ce7e74170113321cfb441e56bf9df7b3992a4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..218c51ae2c58db5eb14446a2062c768c705f1d4f +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts +@@ -0,0 +1,16 @@ ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare abstract class IKeyChain { ++ core: ICore; ++ logger: Logger; ++ abstract keychain: Map; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(core: ICore, logger: Logger); ++ abstract init(): Promise; ++ abstract has(tag: string, opts?: any): boolean; ++ abstract set(tag: string, key: string, opts?: any): Promise; ++ abstract get(tag: string, opts?: any): string; ++ abstract del(tag: string, opts?: any): Promise; ++} ++//# sourceMappingURL=keychain.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..3e0f9a20a7ece06b0ad5ed999e075ec315ad8382 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/core/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,SAAS;IAOV,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO;aAErC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;aAExD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM;aAEpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5D"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..34006e8889690dd2bf2922e9c312f60f8c1152eb +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts +@@ -0,0 +1,17 @@ ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare type MessageRecord = Record; ++export declare abstract class IMessageTracker { ++ logger: Logger; ++ core: ICore; ++ abstract messages: Map; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(logger: Logger, core: ICore); ++ abstract init(): Promise; ++ abstract set(topic: string, message: string): Promise; ++ abstract get(topic: string): MessageRecord; ++ abstract has(topic: string, message: string): boolean; ++ abstract del(topic: string): Promise; ++} ++//# sourceMappingURL=messages.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a1ce2fc3ef9ed3b6183fdcd78030ccd6d249298e +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,oBAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,8BAAsB,eAAe;IAOhB,MAAM,EAAE,MAAM;IAAS,IAAI,EAAE,KAAK;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAErD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,KAAK;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEpD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;aAEjC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;aAE5C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAClD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..3c2345bf7b4774d3f6de2e8121646e0ec41bb18e +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts +@@ -0,0 +1,94 @@ ++/// ++import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; ++import EventEmitter from "events"; ++import { ICore, CoreTypes } from "./core"; ++import { IStore } from "./store"; ++import { RelayerTypes } from "../core/relayer"; ++import { Logger } from "@walletconnect/logger"; ++export declare namespace PairingTypes { ++ interface Struct { ++ topic: string; ++ expiry: number; ++ relay: RelayerTypes.ProtocolOptions; ++ active: boolean; ++ peerMetadata?: CoreTypes.Metadata; ++ methods?: string[]; ++ } ++} ++export declare namespace PairingJsonRpcTypes { ++ type DefaultResponse = true | ErrorResponse; ++ type WcMethod = "wc_pairingDelete" | "wc_pairingPing"; ++ type Error = ErrorResponse; ++ interface RequestParams { ++ wc_pairingDelete: { ++ code: number; ++ message: string; ++ }; ++ wc_pairingPing: Record; ++ } ++ interface Results { ++ wc_pairingDelete: true; ++ wc_pairingPing: true; ++ } ++ interface EventCallback { ++ topic: string; ++ payload: T; ++ } ++} ++export declare type IPairingStore = IStore; ++export declare abstract class IPairing { ++ logger: Logger; ++ core: ICore; ++ abstract name: string; ++ abstract readonly context: string; ++ abstract events: EventEmitter; ++ abstract pairings: IPairingStore; ++ constructor(logger: Logger, core: ICore); ++ abstract init(): Promise; ++ abstract pair(params: { ++ uri: string; ++ activatePairing?: boolean; ++ }): Promise; ++ abstract create(params?: { ++ methods?: string[]; ++ transportType?: RelayerTypes.SubscribeOptions["transportType"]; ++ }): Promise<{ ++ topic: string; ++ uri: string; ++ }>; ++ abstract activate(params: { ++ topic: string; ++ }): Promise; ++ abstract register(params: { ++ methods: string[]; ++ }): void; ++ abstract updateExpiry(params: { ++ topic: string; ++ expiry: number; ++ }): Promise; ++ abstract updateMetadata(params: { ++ topic: string; ++ metadata: CoreTypes.Metadata; ++ }): Promise; ++ abstract getPairings(): PairingTypes.Struct[]; ++ abstract ping(params: { ++ topic: string; ++ }): Promise; ++ abstract disconnect(params: { ++ topic: string; ++ }): Promise; ++} ++export interface IPairingPrivate { ++ sendRequest(topic: string, method: M, params: PairingJsonRpcTypes.RequestParams[M]): Promise; ++ sendResult(id: number, topic: string, result: PairingJsonRpcTypes.Results[M]): Promise; ++ sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise; ++ onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void; ++ onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise; ++ onPairingPingRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onPairingPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onPairingDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onUnknownRpcMethodResponse(method: string): void; ++ deletePairing(topic: string, expirerHasDeleted?: boolean): Promise; ++} ++//# sourceMappingURL=pairing.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ddd62cf2f022ebe2e92e18967d92d97fe242061c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../../../src/core/pairing.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..393635615f4b5acfbac68451bd38b12d8a67b309 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts +@@ -0,0 +1,19 @@ ++import { IEvents } from "@walletconnect/events"; ++import { Logger } from "@walletconnect/logger"; ++import { IRelayer, RelayerTypes } from "./relayer"; ++export declare namespace PublisherTypes { ++ interface Params { ++ topic: string; ++ message: string; ++ opts: Omit; ++ } ++} ++export declare abstract class IPublisher extends IEvents { ++ relayer: IRelayer; ++ logger: Logger; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(relayer: IRelayer, logger: Logger); ++ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; ++} ++//# sourceMappingURL=publisher.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..6aee29ba86c24c4df155b29495f368d8da1af161 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../src/core/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KACrD;CACF;AAED,8BAAsB,UAAW,SAAQ,OAAO;IAK3B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAJ3D,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,OAAO,CAAC,IAAI,CAAC;CACjB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..fe99e9b168ba2818e8d3d703279bed2c715b63e7 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts +@@ -0,0 +1,96 @@ ++import { IEvents } from "@walletconnect/events"; ++import { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++import { IMessageTracker } from "./messages"; ++import { IPublisher } from "./publisher"; ++import { ISubscriber } from "./subscriber"; ++export declare namespace RelayerTypes { ++ interface ProtocolOptions { ++ protocol: string; ++ data?: string; ++ } ++ interface PublishOptions { ++ relay?: ProtocolOptions; ++ ttl?: number; ++ prompt?: boolean; ++ tag?: number; ++ id?: number; ++ internal?: { ++ throwOnFailedPublish?: boolean; ++ }; ++ attestation?: string; ++ } ++ type TransportType = "relay" | "link_mode"; ++ interface SubscribeOptions { ++ relay?: ProtocolOptions; ++ transportType?: TransportType; ++ } ++ interface UnsubscribeOptions { ++ id?: string; ++ relay: ProtocolOptions; ++ } ++ type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions; ++ interface PublishPayload { ++ topic: string; ++ message: string; ++ opts?: RelayerTypes.PublishOptions; ++ } ++ interface MessageEvent { ++ topic: string; ++ message: string; ++ publishedAt: number; ++ transportType?: TransportType; ++ attestation?: string; ++ } ++ interface RpcUrlParams { ++ protocol: string; ++ version: number; ++ auth: string; ++ relayUrl: string; ++ sdkVersion: string; ++ projectId?: string; ++ useOnCloseEvent?: boolean; ++ bundleId?: string; ++ } ++} ++export interface RelayerOptions { ++ core: ICore; ++ logger?: string | Logger; ++ relayUrl?: string; ++ projectId?: string; ++} ++export interface RelayerClientMetadata { ++ protocol: string; ++ version: number; ++ env: string; ++ host?: string; ++} ++export declare abstract class IRelayer extends IEvents { ++ abstract core: ICore; ++ abstract logger: Logger; ++ abstract subscriber: ISubscriber; ++ abstract publisher: IPublisher; ++ abstract messages: IMessageTracker; ++ abstract provider: IJsonRpcProvider; ++ abstract name: string; ++ abstract transportExplicitlyClosed: boolean; ++ abstract readonly context: string; ++ abstract readonly connected: boolean; ++ abstract readonly connecting: boolean; ++ constructor(opts: RelayerOptions); ++ abstract init(): Promise; ++ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; ++ abstract request(request: RequestArguments): Promise; ++ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; ++ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; ++ abstract transportClose(): Promise; ++ abstract transportOpen(relayUrl?: string): Promise; ++ abstract restartTransport(relayUrl?: string): Promise; ++ abstract confirmOnlineStateOrThrow(): Promise; ++ abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise; ++ abstract onLinkMessageEvent(messageEvent: RelayerTypes.MessageEvent, opts?: { ++ sessionExists?: boolean; ++ }): Promise; ++} ++//# sourceMappingURL=relayer.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8415bb875fcbbd01bf86693f499aaa07d91d9438 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../src/core/relayer.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts b/node_modules/@walletconnect/types/dist/types/core/store.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..112b87ce75749a3806358364995f470a501239d2 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts +@@ -0,0 +1,21 @@ ++import { ErrorResponse } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { ICore } from "./core"; ++export declare abstract class IStore { ++ core: ICore; ++ logger: Logger; ++ name: string; ++ abstract map: Map; ++ abstract readonly context: string; ++ abstract readonly length: number; ++ abstract readonly keys: Key[]; ++ abstract readonly values: Value[]; ++ constructor(core: ICore, logger: Logger, name: string, storagePrefix?: string); ++ abstract init(): Promise; ++ abstract set(key: Key, value: Value): Promise; ++ abstract get(key: Key): Value; ++ abstract getAll(filter?: Partial): Value[]; ++ abstract update(key: Key, update: Partial): Promise; ++ abstract delete(key: Key, reason: ErrorResponse): Promise; ++} ++//# sourceMappingURL=store.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5a99c125668c0072c989dbd37a4564ff6670653c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,MAAM,CAAC,GAAG,EAAE,KAAK;IAY5B,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IAbrB,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAErC,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,GAAG,EAAE,CAAC;IAErC,kBAAyB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAGhC,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAEnB,aAAa,CAAC,EAAE,MAAM;aAGR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;aAE1C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK;aAEpB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;aAExC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;aAEvD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CACvE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dd6aea5407bbcc4f20b6f15472bc5d52b17ce2ec +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts +@@ -0,0 +1,49 @@ ++import { IEvents } from "@walletconnect/events"; ++import { ErrorResponse } from "@walletconnect/jsonrpc-types"; ++import { Logger } from "@walletconnect/logger"; ++import { IRelayer, RelayerTypes } from "./relayer"; ++export declare namespace SubscriberTypes { ++ interface Params extends RelayerTypes.SubscribeOptions { ++ topic: string; ++ } ++ interface Active extends Params { ++ id: string; ++ } ++} ++export declare namespace SubscriberEvents { ++ type Created = SubscriberTypes.Active; ++ interface Deleted extends SubscriberTypes.Active { ++ reason: ErrorResponse; ++ } ++ type Expired = Deleted; ++} ++export declare abstract class ISubscriberTopicMap { ++ map: Map; ++ abstract readonly topics: string[]; ++ abstract set(topic: string, id: string): void; ++ abstract get(topic: string): string[]; ++ abstract exists(topic: string, id: string): boolean; ++ abstract delete(topic: string, id?: string): void; ++ abstract clear(): void; ++} ++export declare abstract class ISubscriber extends IEvents { ++ relayer: IRelayer; ++ logger: Logger; ++ abstract subscriptions: Map; ++ abstract topicMap: ISubscriberTopicMap; ++ abstract pending: Map; ++ abstract readonly length: number; ++ abstract readonly ids: string[]; ++ abstract readonly values: SubscriberTypes.Active[]; ++ abstract readonly topics: string[]; ++ abstract name: string; ++ abstract readonly context: string; ++ constructor(relayer: IRelayer, logger: Logger); ++ abstract init(): Promise; ++ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; ++ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; ++ abstract isSubscribed(topic: string): Promise; ++ abstract start(): Promise; ++ abstract stop(): Promise; ++} ++//# sourceMappingURL=subscriber.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5eebf731cbc2107021b9a9d97c6ec5d75751314d +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../../src/core/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,UAAiB,MAAO,SAAQ,YAAY,CAAC,gBAAgB;QAC3D,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,MAAO,SAAQ,MAAM;QACpC,EAAE,EAAE,MAAM,CAAC;KACZ;CACF;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAY,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;IAE7C,UAAiB,OAAQ,SAAQ,eAAe,CAAC,MAAM;QACrD,MAAM,EAAE,aAAa,CAAC;KACvB;IAED,KAAY,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,8BAAsB,mBAAmB;IAChC,GAAG,wBAA+B;IAEzC,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;aAE1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;aAEpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;aAE5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;aAE1C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,KAAK,IAAI,IAAI;CAC9B;AAED,8BAAsB,WAAY,SAAQ,OAAO;IAmB5B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAlB3D,SAAgB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnE,SAAgB,QAAQ,EAAE,mBAAmB,CAAC;IAE9C,SAAgB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAE7D,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,GAAG,EAAE,MAAM,EAAE,CAAC;IAEvC,kBAAyB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;IAE1D,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,YAAY,CAAC,gBAAgB,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aAET,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;aAEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CACtC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c0a1d50f4f400826e8b5bd49e263e07d34077e8f +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts +@@ -0,0 +1,34 @@ ++import { Logger } from "@walletconnect/logger"; ++import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; ++import { ICore } from "./core"; ++export declare namespace Verify { ++ interface Context { ++ verified: { ++ origin: string; ++ validation: "UNKNOWN" | "VALID" | "INVALID"; ++ verifyUrl: string; ++ isScam?: boolean; ++ }; ++ } ++} ++export declare abstract class IVerify { ++ core: ICore; ++ logger: Logger; ++ store: IKeyValueStorage; ++ abstract readonly context: string; ++ constructor(core: ICore, logger: Logger, store: IKeyValueStorage); ++ abstract register(params: { ++ id: string; ++ decryptedId: string; ++ }): Promise; ++ abstract resolve(params: { ++ attestationId?: string; ++ hash?: string; ++ encryptedId?: string; ++ verifyUrl?: string; ++ }): Promise<{ ++ origin: string; ++ isScam?: boolean; ++ }>; ++} ++//# sourceMappingURL=verify.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..1a75b1894ecb118f2816f19f016b88cfdd415bf9 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/core/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,UAAiB,OAAO;QACtB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAC5C,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;CACF;AAED,8BAAsB,OAAO;IAGR,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,KAAK,EAAE,gBAAgB;IAFrF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,KAAK,EAAE,gBAAgB;aAErE,QAAQ,CAAC,MAAM,EAAE;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;aAEf,OAAO,CAAC,MAAM,EAAE;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts b/node_modules/@walletconnect/types/dist/types/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..ed69742e9ae63a17ff5321c699f7f4e9e50ff5b4 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/index.d.ts +@@ -0,0 +1,3 @@ ++export * from "./core"; ++export * from "./sign-client"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..da476f2661eb396ee5a01a33c5cb5377c8930d90 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..281e39e34acc58f7f544c7f1d6367d3225e45313 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts +@@ -0,0 +1,153 @@ ++import { ErrorResponse, JsonRpcError, JsonRpcRequest, JsonRpcResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; ++import { CoreTypes, ICore, IStore, RelayerTypes, Verify } from "../core"; ++import { SessionTypes } from "./session"; ++export declare namespace AuthTypes { ++ type Event = "session_authenticate"; ++ interface AuthRequestEventArgs { ++ requester: Participant; ++ authPayload: PayloadParams; ++ expiryTimestamp: number; ++ transportType?: RelayerTypes.TransportType; ++ } ++ type AuthResponseEventArgs = { ++ message: string; ++ code: number; ++ } | JsonRpcResult | JsonRpcError; ++ interface BaseEventArgs { ++ id: number; ++ topic: string; ++ params: T; ++ verifyContext?: Verify.Context; ++ } ++ interface EventArguments { ++ auth_request: BaseEventArgs; ++ auth_response: BaseEventArgs; ++ sign_request: BaseEventArgs<{ ++ request: { ++ method: string; ++ params: any; ++ }; ++ chainId: string; ++ }>; ++ sign_response: BaseEventArgs; ++ } ++ interface Options extends CoreTypes.Options { ++ metadata: Metadata; ++ core?: ICore; ++ projectId: string; ++ } ++ interface Metadata { ++ name: string; ++ description: string; ++ url: string; ++ icons: string[]; ++ redirect?: { ++ native?: string; ++ universal?: string; ++ linkMode?: boolean; ++ }; ++ verifyUrl?: string; ++ } ++ interface EventCallback { ++ topic: string; ++ payload: T; ++ } ++ type FormatMessageParams = { ++ aud?: string; ++ uri?: string; ++ } & Omit; ++ interface BaseAuthRequestParams { ++ domain: string; ++ aud: string; ++ nonce: string; ++ version?: string; ++ iat?: string; ++ nbf?: string; ++ exp?: string; ++ chainId?: string; ++ statement?: string; ++ requestId?: string; ++ resources?: string[]; ++ expiry?: number; ++ type?: string; ++ } ++ type RequestParams = { ++ chains: string[]; ++ } & BaseAuthRequestParams; ++ type SessionAuthenticateParams = { ++ pairingTopic?: string; ++ methods?: string[]; ++ uri: string; ++ } & Omit; ++ type PayloadParams = { ++ version: string; ++ iat: string; ++ } & RequestParams; ++ type CacaoPayload = { ++ iss: string; ++ } & BaseAuthRequestParams; ++ interface CacaoHeader { ++ t: "caip122"; ++ } ++ interface CacaoSignature { ++ t: "eip191" | "eip1271"; ++ s: string; ++ m?: string; ++ } ++ interface Cacao { ++ h: CacaoHeader; ++ p: CacaoPayload; ++ s: CacaoSignature; ++ } ++ interface PendingRequest { ++ id: number; ++ pairingTopic: string; ++ requester: Participant; ++ expiryTimestamp: number; ++ authPayload: PayloadParams; ++ verifyContext: Verify.Context; ++ transportType?: RelayerTypes.TransportType; ++ } ++ interface ApproveSessionAuthenticateParams { ++ id: number; ++ auths: Cacao[]; ++ } ++ interface SessionAuthenticateResponseParams { ++ responder: Participant; ++ cacaos: Cacao[]; ++ } ++ interface AuthErrorResponse { ++ id: number; ++ error: ErrorResponse; ++ } ++ type AuthResponse = SessionAuthenticateResponseParams["cacaos"]; ++ interface Participant { ++ publicKey: string; ++ metadata: Metadata; ++ } ++ interface SessionAuthenticateRequestParams { ++ requester: Participant; ++ authPayload: PayloadParams; ++ expiryTimestamp: number; ++ } ++ interface SessionAuthenticateRequest extends SessionAuthenticateRequestParams { ++ verifyContext: Verify.Context; ++ } ++ type AuthenticateResponseResult = { ++ auths?: AuthTypes.AuthResponse; ++ session: SessionTypes.Struct; ++ }; ++} ++export declare type IAuth = { ++ init(): Promise; ++ authKeys: IStore; ++ pairingTopics: IStore; ++ requests: IStore; ++}; ++//# sourceMappingURL=auth.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7b4c07a2d8f16fb60de4771fd2238cbc2c1f89c3 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/sign-client/auth.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..d1661b7120103ce4fe47428e8ee777de9d3a82de +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts +@@ -0,0 +1,123 @@ ++/// ++import { Logger } from "@walletconnect/logger"; ++import EventEmmiter from "events"; ++import { CoreTypes, ICore } from "../core/core"; ++import { IEngine } from "./engine"; ++import { IPendingRequest } from "./pendingRequest"; ++import { IProposal, ProposalTypes } from "./proposal"; ++import { ISession, SessionTypes } from "./session"; ++import { Verify } from "../core/verify"; ++import { IAuth, AuthTypes } from "./auth"; ++import { RelayerTypes } from "../core"; ++export declare namespace SignClientTypes { ++ type Event = "session_proposal" | "session_update" | "session_extend" | "session_ping" | "session_delete" | "session_expire" | "session_request" | "session_request_sent" | "session_event" | "session_authenticate" | "proposal_expire" | "session_request_expire"; ++ interface BaseEventArgs { ++ id: number; ++ topic: string; ++ params: T; ++ } ++ interface EventArguments { ++ session_proposal: { ++ verifyContext: Verify.Context; ++ } & Omit, "topic">; ++ session_update: BaseEventArgs<{ ++ namespaces: SessionTypes.Namespaces; ++ }>; ++ session_extend: Omit; ++ session_ping: Omit; ++ session_delete: Omit; ++ session_expire: { ++ topic: string; ++ }; ++ session_request: { ++ verifyContext: Verify.Context; ++ } & BaseEventArgs<{ ++ request: { ++ method: string; ++ params: any; ++ expiryTimestamp?: number; ++ }; ++ chainId: string; ++ }>; ++ session_request_sent: { ++ request: { ++ method: string; ++ params: any; ++ }; ++ topic: string; ++ chainId: string; ++ id: number; ++ }; ++ session_event: BaseEventArgs<{ ++ event: { ++ name: string; ++ data: any; ++ }; ++ chainId: string; ++ }>; ++ session_authenticate: { ++ verifyContext: Verify.Context; ++ transportType?: RelayerTypes.TransportType; ++ } & BaseEventArgs; ++ proposal_expire: { ++ id: number; ++ }; ++ session_request_expire: { ++ id: number; ++ }; ++ } ++ type Metadata = CoreTypes.Metadata; ++ type SignConfig = { ++ disableRequestQueue?: boolean; ++ }; ++ interface Options extends CoreTypes.Options { ++ core?: ICore; ++ metadata?: Metadata; ++ signConfig?: SignConfig; ++ } ++} ++export declare abstract class ISignClientEvents extends EventEmmiter { ++ constructor(); ++ abstract emit: (event: E, args: SignClientTypes.EventArguments[E]) => boolean; ++ abstract on: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract once: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract off: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract removeListener: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; ++ abstract removeAllListeners: (event: E) => this; ++} ++export declare abstract class ISignClient { ++ opts?: SignClientTypes.Options | undefined; ++ readonly protocol = "wc"; ++ readonly version = 2; ++ abstract readonly name: string; ++ abstract readonly context: string; ++ abstract readonly metadata: SignClientTypes.Metadata; ++ abstract core: ICore; ++ abstract logger: Logger; ++ abstract events: ISignClientEvents; ++ abstract engine: IEngine; ++ abstract session: ISession; ++ abstract proposal: IProposal; ++ abstract pendingRequest: IPendingRequest; ++ abstract auth: IAuth; ++ abstract signConfig?: SignClientTypes.SignConfig; ++ constructor(opts?: SignClientTypes.Options | undefined); ++ abstract connect: IEngine["connect"]; ++ abstract pair: IEngine["pair"]; ++ abstract approve: IEngine["approve"]; ++ abstract reject: IEngine["reject"]; ++ abstract update: IEngine["update"]; ++ abstract extend: IEngine["extend"]; ++ abstract request: IEngine["request"]; ++ abstract respond: IEngine["respond"]; ++ abstract ping: IEngine["ping"]; ++ abstract emit: IEngine["emit"]; ++ abstract disconnect: IEngine["disconnect"]; ++ abstract find: IEngine["find"]; ++ abstract getPendingSessionRequests: IEngine["getPendingSessionRequests"]; ++ abstract authenticate: IEngine["authenticate"]; ++ abstract formatAuthMessage: IEngine["formatAuthMessage"]; ++ abstract approveSessionAuthenticate: IEngine["approveSessionAuthenticate"]; ++ abstract rejectSessionAuthenticate: IEngine["rejectSessionAuthenticate"]; ++} ++//# sourceMappingURL=client.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..70e9c049668d90e09de3b54e328400408f0c37ad +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/sign-client/client.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..8f6a650283555f5716605ea714d8ad87290164ee +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts +@@ -0,0 +1,279 @@ ++/// ++import { JsonRpcResponse, JsonRpcRequest, ErrorResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; ++import { ISignClient } from "./client"; ++import { RelayerTypes } from "../core/relayer"; ++import { SessionTypes } from "./session"; ++import { ProposalTypes } from "./proposal"; ++import { PairingTypes } from "../core/pairing"; ++import { JsonRpcTypes } from "./jsonrpc"; ++import { EventEmitter } from "events"; ++import { PendingRequestTypes } from "./pendingRequest"; ++import { AuthTypes } from "./auth"; ++import { CryptoTypes } from "../core"; ++export declare namespace EngineTypes { ++ type Event = "session_connect" | "session_approve" | "session_update" | "session_extend" | "session_ping" | "pairing_ping" | "session_request"; ++ interface EventArguments { ++ session_connect: { ++ error?: ErrorResponse; ++ session?: SessionTypes.Struct; ++ }; ++ session_approve: { ++ error?: ErrorResponse; ++ }; ++ session_update: { ++ error?: ErrorResponse; ++ }; ++ session_extend: { ++ error?: ErrorResponse; ++ }; ++ session_ping: { ++ error?: ErrorResponse; ++ }; ++ pairing_ping: { ++ error?: ErrorResponse; ++ }; ++ session_request: { ++ error?: ErrorResponse; ++ result?: any; ++ }; ++ } ++ interface UriParameters { ++ protocol: string; ++ version: number; ++ topic: string; ++ symKey: string; ++ relay: RelayerTypes.ProtocolOptions; ++ methods?: string[]; ++ expiryTimestamp?: number; ++ } ++ interface EventCallback { ++ topic: string; ++ payload: T; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ attestation?: string; ++ encryptedId?: string; ++ } ++ interface ConnectParams { ++ requiredNamespaces?: ProposalTypes.RequiredNamespaces; ++ optionalNamespaces?: ProposalTypes.OptionalNamespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ pairingTopic?: string; ++ relays?: RelayerTypes.ProtocolOptions[]; ++ } ++ interface PairParams { ++ uri: string; ++ } ++ interface ApproveParams { ++ id: number; ++ namespaces: SessionTypes.Namespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ sessionConfig?: SessionTypes.SessionConfig; ++ relayProtocol?: string; ++ } ++ interface RejectParams { ++ id: number; ++ reason: ErrorResponse; ++ } ++ interface UpdateParams { ++ topic: string; ++ namespaces: SessionTypes.Namespaces; ++ } ++ interface ExtendParams { ++ topic: string; ++ } ++ interface RequestParams { ++ topic: string; ++ request: { ++ method: string; ++ params: any; ++ }; ++ chainId: string; ++ expiry?: number; ++ } ++ interface RespondParams { ++ topic: string; ++ response: JsonRpcResponse; ++ } ++ interface EmitParams { ++ topic: string; ++ event: { ++ name: string; ++ data: any; ++ }; ++ chainId: string; ++ } ++ interface PingParams { ++ topic: string; ++ } ++ interface DisconnectParams { ++ topic: string; ++ reason: ErrorResponse; ++ } ++ interface FindParams { ++ requiredNamespaces: ProposalTypes.RequiredNamespaces; ++ } ++ type AcknowledgedPromise = Promise<{ ++ acknowledged: () => Promise; ++ }>; ++ type SessionAuthenticateResponsePromise = { ++ uri: string; ++ response: () => Promise; ++ }; ++ interface RpcOpts { ++ req: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ res: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ reject?: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ autoReject?: RelayerTypes.PublishOptions & { ++ ttl: number; ++ }; ++ } ++ type RpcOptsMap = Record; ++ type EngineQueue = { ++ state: "IDLE" | "ACTIVE"; ++ queue: T[]; ++ }; ++} ++export declare abstract class IEngineEvents extends EventEmitter { ++ constructor(); ++ abstract emit: (event: string, args: EngineTypes.EventArguments[E]) => boolean; ++ abstract once: (event: string, listener: (args: EngineTypes.EventArguments[E]) => any) => this; ++} ++export interface EnginePrivate { ++ sendRequest(args: { ++ topic: string; ++ method: M; ++ params: JsonRpcTypes.RequestParams[M]; ++ expiry?: number; ++ relayRpcId?: number; ++ clientRpcId?: number; ++ throwOnFailedPublish?: boolean; ++ appLink?: string; ++ }): Promise; ++ sendResult(args: { ++ id: number; ++ topic: string; ++ result: JsonRpcTypes.Results[M]; ++ throwOnFailedPublish?: boolean; ++ encodeOpts?: CryptoTypes.EncodeOptions; ++ appLink?: string; ++ }): Promise; ++ sendError(params: { ++ id: number; ++ topic: string; ++ error: JsonRpcTypes.Error; ++ encodeOpts?: CryptoTypes.EncodeOptions; ++ rpcOpts?: RelayerTypes.PublishOptions; ++ appLink?: string; ++ }): Promise; ++ onRelayEventRequest(event: EngineTypes.EventCallback): Promise; ++ onRelayEventResponse(event: EngineTypes.EventCallback): Promise; ++ onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise; ++ shouldIgnorePairingRequest(params: { ++ topic: string; ++ requestMethod: string; ++ }): boolean; ++ deleteSession(params: { ++ topic: string; ++ expirerHasDeleted?: boolean; ++ id?: number; ++ emitEvent?: boolean; ++ }): Promise; ++ deleteProposal(id: number, expirerHasDeleted?: boolean): Promise; ++ setExpiry(topic: string, expiry: number): Promise; ++ setProposal(id: number, proposal: ProposalTypes.Struct): Promise; ++ setAuthRequest(id: number, params: { ++ request: AuthTypes.SessionAuthenticateRequest; ++ pairingTopic: string; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ }): Promise; ++ setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise; ++ deletePendingSessionRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; ++ deletePendingAuthRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; ++ cleanupDuplicatePairings(session: SessionTypes.Struct): Promise; ++ cleanup(): Promise; ++ onSessionProposeRequest(params: { ++ topic: string; ++ payload: JsonRpcRequest; ++ attestation?: string; ++ encryptedId?: string; ++ }): Promise; ++ onSessionProposeResponse(topic: string, payload: JsonRpcResult | JsonRpcError, transportType?: RelayerTypes.MessageEvent["transportType"]): Promise; ++ onSessionSettleRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionSettleResponse(topic: string, payload: JsonRpcResult | JsonRpcError): Promise; ++ onSessionUpdateRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionUpdateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionExtendRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionExtendResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionPingRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionRequest(params: { ++ topic: string; ++ payload: JsonRpcRequest; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ attestation?: string; ++ encryptedId?: string; ++ }): Promise; ++ onSessionRequestResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ onSessionEventRequest(topic: string, payload: JsonRpcRequest): Promise; ++ onSessionAuthenticateRequest(params: { ++ topic: string; ++ payload: JsonRpcRequest; ++ transportType?: RelayerTypes.MessageEvent["transportType"]; ++ attestation?: string; ++ encryptedId?: string; ++ }): Promise; ++ onSessionAuthenticateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; ++ isValidConnect(params: EngineTypes.ConnectParams): Promise; ++ isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams["wc_sessionSettle"]): void; ++ isValidApprove(params: EngineTypes.ApproveParams): Promise; ++ isValidReject(params: EngineTypes.RejectParams): Promise; ++ isValidUpdate(params: EngineTypes.UpdateParams): Promise; ++ isValidExtend(params: EngineTypes.ExtendParams): Promise; ++ isValidRequest(params: EngineTypes.RequestParams): Promise; ++ isValidRespond(params: EngineTypes.RespondParams): Promise; ++ isValidPing(params: EngineTypes.PingParams): Promise; ++ isValidEmit(params: EngineTypes.EmitParams): Promise; ++ isValidDisconnect(params: EngineTypes.DisconnectParams): Promise; ++} ++export declare abstract class IEngine { ++ client: ISignClient; ++ constructor(client: ISignClient); ++ abstract init(): Promise; ++ abstract connect(params: EngineTypes.ConnectParams): Promise<{ ++ uri?: string; ++ approval: () => Promise; ++ }>; ++ abstract pair(params: EngineTypes.PairParams): Promise; ++ abstract approve(params: EngineTypes.ApproveParams): Promise<{ ++ topic: string; ++ acknowledged: () => Promise; ++ }>; ++ abstract reject(params: EngineTypes.RejectParams): Promise; ++ abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise; ++ abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise; ++ abstract request(params: EngineTypes.RequestParams): Promise; ++ abstract respond(params: EngineTypes.RespondParams): Promise; ++ abstract emit(params: EngineTypes.EmitParams): Promise; ++ abstract ping(params: EngineTypes.PingParams): Promise; ++ abstract disconnect(params: EngineTypes.DisconnectParams): Promise; ++ abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[]; ++ abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[]; ++ abstract authenticate: (params: AuthTypes.SessionAuthenticateParams, walletUniversalLink?: string) => Promise; ++ abstract approveSessionAuthenticate: (params: AuthTypes.ApproveSessionAuthenticateParams) => Promise<{ ++ session: SessionTypes.Struct | undefined; ++ }>; ++ abstract formatAuthMessage: (params: { ++ request: AuthTypes.BaseAuthRequestParams; ++ iss: string; ++ }) => string; ++ abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise; ++ abstract processRelayMessageCache(): void; ++} ++//# sourceMappingURL=engine.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..d7f3548f76ea0708c1c5d2c9ccbe16593cf14f7c +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/sign-client/engine.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..242855bed6410d880c0653491d84ce4cb452f9bd +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts +@@ -0,0 +1,8 @@ ++export * from "./client"; ++export * from "./engine"; ++export * from "./jsonrpc"; ++export * from "./proposal"; ++export * from "./session"; ++export * from "./pendingRequest"; ++export * from "./auth"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..63f07513c22550da21ea365c3cbdbbc0d5d65925 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sign-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..5fa4a16c6e1fe95806a2ee82edcf3b4fed072e11 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts +@@ -0,0 +1,82 @@ ++import { ErrorResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; ++import { SignClientTypes } from "./client"; ++import { RelayerTypes } from "../core/relayer"; ++import { SessionTypes } from "./session"; ++import { ProposalTypes } from "./proposal"; ++import { AuthTypes } from "."; ++export declare namespace JsonRpcTypes { ++ type DefaultResponse = true | ErrorResponse; ++ type WcMethod = "wc_sessionPropose" | "wc_sessionSettle" | "wc_sessionUpdate" | "wc_sessionExtend" | "wc_sessionDelete" | "wc_sessionPing" | "wc_sessionRequest" | "wc_sessionEvent" | "wc_sessionAuthenticate"; ++ interface RequestParams { ++ wc_pairingDelete: { ++ code: number; ++ message: string; ++ }; ++ wc_pairingPing: Record; ++ wc_sessionPropose: { ++ relays: RelayerTypes.ProtocolOptions[]; ++ requiredNamespaces: ProposalTypes.RequiredNamespaces; ++ optionalNamespaces: ProposalTypes.OptionalNamespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ proposer: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ expiryTimestamp?: number; ++ }; ++ wc_sessionSettle: { ++ relay: RelayerTypes.ProtocolOptions; ++ namespaces: SessionTypes.Namespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ sessionConfig?: SessionTypes.SessionConfig; ++ expiry: number; ++ controller: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ }; ++ wc_sessionUpdate: { ++ namespaces: SessionTypes.Namespaces; ++ }; ++ wc_sessionExtend: Record; ++ wc_sessionDelete: { ++ code: number; ++ message: string; ++ }; ++ wc_sessionPing: Record; ++ wc_sessionRequest: { ++ request: { ++ method: string; ++ params: any; ++ expiryTimestamp?: number; ++ }; ++ chainId: string; ++ }; ++ wc_sessionEvent: { ++ event: { ++ name: string; ++ data: unknown; ++ }; ++ chainId: string; ++ }; ++ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateRequestParams; ++ } ++ interface Results { ++ wc_pairingDelete: true; ++ wc_pairingPing: true; ++ wc_sessionPropose: { ++ relay: RelayerTypes.ProtocolOptions; ++ responderPublicKey: string; ++ }; ++ wc_sessionSettle: true; ++ wc_sessionUpdate: true; ++ wc_sessionExtend: true; ++ wc_sessionDelete: true; ++ wc_sessionPing: true; ++ wc_sessionRequest: JsonRpcResult; ++ wc_sessionEvent: true; ++ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateResponseParams; ++ } ++ type Error = ErrorResponse; ++} ++//# sourceMappingURL=jsonrpc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..92d29f0e811ea9bdbcd4d8b38b7d88a7bb3cd99e +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../src/sign-client/jsonrpc.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c061f9d1ec576e1f27323b621e96f530a037caae +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts +@@ -0,0 +1,12 @@ ++import { IStore, Verify } from "../core"; ++import { SignClientTypes } from "./"; ++export declare namespace PendingRequestTypes { ++ interface Struct { ++ topic: string; ++ id: number; ++ params: SignClientTypes.EventArguments["session_request"]["params"]; ++ verifyContext: Verify.Context; ++ } ++} ++export declare type IPendingRequest = IStore; ++//# sourceMappingURL=pendingRequest.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7a301fe8ff59b665f0e3146dfaa1f193928cba41 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"pendingRequest.d.ts","sourceRoot":"","sources":["../../../src/sign-client/pendingRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;KAC/B;CACF;AACD,oBAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..5503a33768c89d9720900d25303efd2422691ab8 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts +@@ -0,0 +1,30 @@ ++import { SignClientTypes } from "./client"; ++import { RelayerTypes } from "../core/relayer"; ++import { IStore } from "../core/store"; ++export declare namespace ProposalTypes { ++ interface BaseRequiredNamespace { ++ chains?: string[]; ++ methods: string[]; ++ events: string[]; ++ } ++ type RequiredNamespace = BaseRequiredNamespace; ++ type RequiredNamespaces = Record; ++ type OptionalNamespaces = Record; ++ type SessionProperties = Record; ++ interface Struct { ++ id: number; ++ expiry?: number; ++ expiryTimestamp: number; ++ relays: RelayerTypes.ProtocolOptions[]; ++ proposer: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ requiredNamespaces: RequiredNamespaces; ++ optionalNamespaces: OptionalNamespaces; ++ sessionProperties?: SessionProperties; ++ pairingTopic: string; ++ } ++} ++export declare type IProposal = IStore; ++//# sourceMappingURL=proposal.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..fa80071c845054bf2a059788bcdf281dbceb5dba +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/sign-client/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,UAAU,qBAAqB;QAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,iBAAiB,GAAG,qBAAqB,CAAC;IAE/C,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,UAAiB,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC;QAIX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;QACvC,QAAQ,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,YAAY,EAAE,MAAM,CAAC;KACtB;CACF;AAED,oBAAY,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..61d0d35c1c852a15c742bf7acc09cc60a106de89 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts +@@ -0,0 +1,44 @@ ++import { RelayerTypes } from "../core/relayer"; ++import { IStore } from "../core/store"; ++import { SignClientTypes } from "./client"; ++import { ProposalTypes } from "./proposal"; ++import { AuthTypes } from "./auth"; ++export declare namespace SessionTypes { ++ type Expiry = number; ++ interface BaseNamespace { ++ chains?: string[]; ++ accounts: string[]; ++ methods: string[]; ++ events: string[]; ++ } ++ type Namespace = BaseNamespace; ++ type Namespaces = Record; ++ interface SessionConfig { ++ disableDeepLink?: boolean; ++ } ++ interface Struct { ++ topic: string; ++ pairingTopic: string; ++ relay: RelayerTypes.ProtocolOptions; ++ expiry: Expiry; ++ acknowledged: boolean; ++ controller: string; ++ namespaces: Namespaces; ++ requiredNamespaces: ProposalTypes.RequiredNamespaces; ++ optionalNamespaces: ProposalTypes.OptionalNamespaces; ++ sessionProperties?: ProposalTypes.SessionProperties; ++ sessionConfig?: SessionConfig; ++ self: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ peer: { ++ publicKey: string; ++ metadata: SignClientTypes.Metadata; ++ }; ++ authentication?: AuthTypes.Cacao[]; ++ transportType?: RelayerTypes.TransportType; ++ } ++} ++export declare type ISession = IStore; ++//# sourceMappingURL=session.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ad7c88b332e708b2ffb396aa9ad1298f740216b7 +--- /dev/null ++++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/sign-client/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,MAAM,GAAG,MAAM,CAAC;IAErB,UAAU,aAAa;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,SAAS,GAAG,aAAa,CAAC;IAE/B,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE5C,UAAU,aAAa;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;IAED,UAAU,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACpD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,cAAc,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC;KAC5C;CACF;AAED,oBAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/types/package.json b/node_modules/@walletconnect/types/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..6c714822590402efcf168b7a275f8a4a67ab9779 +--- /dev/null ++++ b/node_modules/@walletconnect/types/package.json +@@ -0,0 +1,67 @@ ++{ ++ "name": "@walletconnect/types", ++ "description": "Typings for WalletConnect Protocol", ++ "version": "2.16.1", ++ "author": "WalletConnect, Inc. ", ++ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", ++ "license": "Apache-2.0", ++ "main": "dist/index.cjs.js", ++ "module": "dist/index.es.js", ++ "unpkg": "dist/index.umd.js", ++ "types": "dist/types/index.d.ts", ++ "sideEffects": false, ++ "files": [ ++ "dist" ++ ], ++ "keywords": [ ++ "wallet", ++ "walletconnect" ++ ], ++ "scripts": { ++ "clean": "rm -rf dist", ++ "build:pre": "npm run clean", ++ "build:types": "tsc", ++ "build:source": "rollup --config rollup.config.js", ++ "build": "npm run build:pre; npm run build:source; npm run build:types", ++ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", ++ "prettier": "prettier --check 'src/**/*.{js,ts,jsx,tsx}'" ++ }, ++ "dependencies": { ++ "@walletconnect/events": "1.0.1", ++ "@walletconnect/heartbeat": "1.2.2", ++ "@walletconnect/jsonrpc-types": "1.0.4", ++ "@walletconnect/keyvaluestorage": "1.1.1", ++ "@walletconnect/logger": "2.1.2", ++ "events": "3.3.0" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/@walletconnect/utils/LICENSE b/node_modules/@walletconnect/utils/LICENSE +new file mode 100644 +index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb +--- /dev/null ++++ b/node_modules/@walletconnect/utils/LICENSE +@@ -0,0 +1,190 @@ ++ Apache License ++ Version 2.0, January 2004 ++ http://www.apache.org/licenses/ ++ ++ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION ++ ++ 1. Definitions. ++ ++ "License" shall mean the terms and conditions for use, reproduction, ++ and distribution as defined by Sections 1 through 9 of this document. ++ ++ "Licensor" shall mean the copyright owner or entity authorized by ++ the copyright owner that is granting the License. ++ ++ "Legal Entity" shall mean the union of the acting entity and all ++ other entities that control, are controlled by, or are under common ++ control with that entity. For the purposes of this definition, ++ "control" means (i) the power, direct or indirect, to cause the ++ direction or management of such entity, whether by contract or ++ otherwise, or (ii) ownership of fifty percent (50%) or more of the ++ outstanding shares, or (iii) beneficial ownership of such entity. ++ ++ "You" (or "Your") shall mean an individual or Legal Entity ++ exercising permissions granted by this License. ++ ++ "Source" form shall mean the preferred form for making modifications, ++ including but not limited to software source code, documentation ++ source, and configuration files. ++ ++ "Object" form shall mean any form resulting from mechanical ++ transformation or translation of a Source form, including but ++ not limited to compiled object code, generated documentation, ++ and conversions to other media types. ++ ++ "Work" shall mean the work of authorship, whether in Source or ++ Object form, made available under the License, as indicated by a ++ copyright notice that is included in or attached to the work ++ (an example is provided in the Appendix below). ++ ++ "Derivative Works" shall mean any work, whether in Source or Object ++ form, that is based on (or derived from) the Work and for which the ++ editorial revisions, annotations, elaborations, or other modifications ++ represent, as a whole, an original work of authorship. For the purposes ++ of this License, Derivative Works shall not include works that remain ++ separable from, or merely link (or bind by name) to the interfaces of, ++ the Work and Derivative Works thereof. ++ ++ "Contribution" shall mean any work of authorship, including ++ the original version of the Work and any modifications or additions ++ to that Work or Derivative Works thereof, that is intentionally ++ submitted to Licensor for inclusion in the Work by the copyright owner ++ or by an individual or Legal Entity authorized to submit on behalf of ++ the copyright owner. For the purposes of this definition, "submitted" ++ means any form of electronic, verbal, or written communication sent ++ to the Licensor or its representatives, including but not limited to ++ communication on electronic mailing lists, source code control systems, ++ and issue tracking systems that are managed by, or on behalf of, the ++ Licensor for the purpose of discussing and improving the Work, but ++ excluding communication that is conspicuously marked or otherwise ++ designated in writing by the copyright owner as "Not a Contribution." ++ ++ "Contributor" shall mean Licensor and any individual or Legal Entity ++ on behalf of whom a Contribution has been received by Licensor and ++ subsequently incorporated within the Work. ++ ++ 2. Grant of Copyright License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ copyright license to reproduce, prepare Derivative Works of, ++ publicly display, publicly perform, sublicense, and distribute the ++ Work and such Derivative Works in Source or Object form. ++ ++ 3. Grant of Patent License. Subject to the terms and conditions of ++ this License, each Contributor hereby grants to You a perpetual, ++ worldwide, non-exclusive, no-charge, royalty-free, irrevocable ++ (except as stated in this section) patent license to make, have made, ++ use, offer to sell, sell, import, and otherwise transfer the Work, ++ where such license applies only to those patent claims licensable ++ by such Contributor that are necessarily infringed by their ++ Contribution(s) alone or by combination of their Contribution(s) ++ with the Work to which such Contribution(s) was submitted. If You ++ institute patent litigation against any entity (including a ++ cross-claim or counterclaim in a lawsuit) alleging that the Work ++ or a Contribution incorporated within the Work constitutes direct ++ or contributory patent infringement, then any patent licenses ++ granted to You under this License for that Work shall terminate ++ as of the date such litigation is filed. ++ ++ 4. Redistribution. You may reproduce and distribute copies of the ++ Work or Derivative Works thereof in any medium, with or without ++ modifications, and in Source or Object form, provided that You ++ meet the following conditions: ++ ++ (a) You must give any other recipients of the Work or ++ Derivative Works a copy of this License; and ++ ++ (b) You must cause any modified files to carry prominent notices ++ stating that You changed the files; and ++ ++ (c) You must retain, in the Source form of any Derivative Works ++ that You distribute, all copyright, patent, trademark, and ++ attribution notices from the Source form of the Work, ++ excluding those notices that do not pertain to any part of ++ the Derivative Works; and ++ ++ (d) If the Work includes a "NOTICE" text file as part of its ++ distribution, then any Derivative Works that You distribute must ++ include a readable copy of the attribution notices contained ++ within such NOTICE file, excluding those notices that do not ++ pertain to any part of the Derivative Works, in at least one ++ of the following places: within a NOTICE text file distributed ++ as part of the Derivative Works; within the Source form or ++ documentation, if provided along with the Derivative Works; or, ++ within a display generated by the Derivative Works, if and ++ wherever such third-party notices normally appear. The contents ++ of the NOTICE file are for informational purposes only and ++ do not modify the License. You may add Your own attribution ++ notices within Derivative Works that You distribute, alongside ++ or as an addendum to the NOTICE text from the Work, provided ++ that such additional attribution notices cannot be construed ++ as modifying the License. ++ ++ You may add Your own copyright statement to Your modifications and ++ may provide additional or different license terms and conditions ++ for use, reproduction, or distribution of Your modifications, or ++ for any such Derivative Works as a whole, provided Your use, ++ reproduction, and distribution of the Work otherwise complies with ++ the conditions stated in this License. ++ ++ 5. Submission of Contributions. Unless You explicitly state otherwise, ++ any Contribution intentionally submitted for inclusion in the Work ++ by You to the Licensor shall be under the terms and conditions of ++ this License, without any additional terms or conditions. ++ Notwithstanding the above, nothing herein shall supersede or modify ++ the terms of any separate license agreement you may have executed ++ with Licensor regarding such Contributions. ++ ++ 6. Trademarks. This License does not grant permission to use the trade ++ names, trademarks, service marks, or product names of the Licensor, ++ except as required for reasonable and customary use in describing the ++ origin of the Work and reproducing the content of the NOTICE file. ++ ++ 7. Disclaimer of Warranty. Unless required by applicable law or ++ agreed to in writing, Licensor provides the Work (and each ++ Contributor provides its Contributions) on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or ++ implied, including, without limitation, any warranties or conditions ++ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A ++ PARTICULAR PURPOSE. You are solely responsible for determining the ++ appropriateness of using or redistributing the Work and assume any ++ risks associated with Your exercise of permissions under this License. ++ ++ 8. Limitation of Liability. In no event and under no legal theory, ++ whether in tort (including negligence), contract, or otherwise, ++ unless required by applicable law (such as deliberate and grossly ++ negligent acts) or agreed to in writing, shall any Contributor be ++ liable to You for damages, including any direct, indirect, special, ++ incidental, or consequential damages of any character arising as a ++ result of this License or out of the use or inability to use the ++ Work (including but not limited to damages for loss of goodwill, ++ work stoppage, computer failure or malfunction, or any and all ++ other commercial damages or losses), even if such Contributor ++ has been advised of the possibility of such damages. ++ ++ 9. Accepting Warranty or Additional Liability. While redistributing ++ the Work or Derivative Works thereof, You may choose to offer, ++ and charge a fee for, acceptance of support, warranty, indemnity, ++ or other liability obligations and/or rights consistent with this ++ License. However, in accepting such obligations, You may act only ++ on Your own behalf and on Your sole responsibility, not on behalf ++ of any other Contributor, and only if You agree to indemnify, ++ defend, and hold each Contributor harmless for any liability ++ incurred by, or claims asserted against, such Contributor by reason ++ of your accepting any such warranty or additional liability. ++ ++ END OF TERMS AND CONDITIONS ++ ++ Copyright 2021 WalletConnect, Inc. ++ ++ Licensed under the Apache License, Version 2.0 (the "License"); ++ you may not use this file except in compliance with the License. ++ You may obtain a copy of the License at ++ ++ http://www.apache.org/licenses/LICENSE-2.0 ++ ++ Unless required by applicable law or agreed to in writing, software ++ distributed under the License is distributed on an "AS IS" BASIS, ++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ See the License for the specific language governing permissions and ++ limitations under the License. +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/README.md b/node_modules/@walletconnect/utils/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..35490d649f553e0200a1e1fd2e0a5b964346c234 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/README.md +@@ -0,0 +1,3 @@ ++# @walletconnect/utils ++ ++Utilities for WalletConnect Protocol +diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js b/node_modules/@walletconnect/utils/dist/index.cjs.js +new file mode 100644 +index 0000000000000000000000000000000000000000..580be0b4ae700ad636da44de67ae1e2d30919b98 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.cjs.js +@@ -0,0 +1,35 @@ ++ ++ ++ ++ ++function uniq(arr) { ++ const seen = Object.create(null); ++ const out = []; ++ for (let i = 0, len = arr.length; i < len; i++) { ++ const val = arr[i]; ++ // key must be string — handles numbers, strings, booleans fine ++ const key = typeof val + val; ++ if (seen[key] === undefined) { ++ seen[key] = true; ++ out.push(val); ++ } ++ } ++ return out; ++} ++ ++"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var Zt = require("detect-browser"), U = require("@walletconnect/time"), P = require("@walletconnect/window-getters"), Xt = require("@walletconnect/window-metadata"), en = require("query-string"), Te = require("@ethersproject/hash"), tn = require("@ethersproject/transactions"), Ae = require("@stablelib/chacha20poly1305"), nn = require("@stablelib/hkdf"), B = require("@stablelib/random"), H = require("@stablelib/sha256"), rn = require("@stablelib/x25519"), p = require("uint8arrays"), on = require("elliptic"), sn = require("@walletconnect/relay-auth"), an = require("@walletconnect/relay-api"); function Ie(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach(function (n) { if (n !== "default") { var r = Object.getOwnPropertyDescriptor(e, n); Object.defineProperty(t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] } }) } }), t.default = e, Object.freeze(t) } var J = Ie(en), Pe = Ie(rn); const W = ":"; function ne(e) { const [t, n] = e.split(W); return { namespace: t, reference: n } } function Ce(e) { const { namespace: t, reference: n } = e; return [t, n].join(W) } function re(e) { const [t, n, r] = e.split(W); return { namespace: t, reference: n, address: r } } function $e(e) { const { namespace: t, reference: n, address: r } = e; return [t, n, r].join(W) } function oe(e, t) { const n = []; return e.forEach(r => { const o = t(r); n.includes(o) || n.push(o) }), n } function je(e) { const { address: t } = re(e); return t } function _e(e) { const { namespace: t, reference: n } = re(e); return Ce({ namespace: t, reference: n }) } function cn(e, t) { const { namespace: n, reference: r } = ne(t); return $e({ namespace: n, reference: r, address: e }) } function un(e) { return oe(e, je) } function Ue(e) { return oe(e, _e) } function ln(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...o.accounts) }), n } function dn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...Ue(o.accounts)) }), n } function pn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...z(r, o)) }), n } function z(e, t) { return e.includes(":") ? [e] : t.chains || [] } var fn = Object.defineProperty, De = Object.getOwnPropertySymbols, mn = Object.prototype.hasOwnProperty, gn = Object.prototype.propertyIsEnumerable, Ve = (e, t, n) => t in e ? fn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, ke = (e, t) => { for (var n in t || (t = {})) mn.call(t, n) && Ve(e, n, t[n]); if (De) for (var n of De(t)) gn.call(t, n) && Ve(e, n, t[n]); return e }; const xe = "ReactNative", y = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Y = " ", hn = ":", Me = "/", se = 2, yn = 1e3, Fe = "js"; function ie() { return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u" } function D() { return !P.getDocument() && !!P.getNavigator() && navigator.product === xe } function M() { return !ie() && !!P.getNavigator() && !!P.getDocument() } function C() { return D() ? y.reactNative : ie() ? y.node : M() ? y.browser : y.unknown } function vn() { var e; try { return D() && typeof global < "u" && typeof (global == null ? void 0 : global.Application) < "u" ? (e = global.Application) == null ? void 0 : e.applicationId : void 0 } catch { return } } function Le(e, t) { let n = J.parse(e); return n = ke(ke({}, n), t), e = J.stringify(n), e } function En() { return Xt.getWindowMetadata() || { name: "", description: "", url: "", icons: [""] } } function bn(e, t) { var n; const r = C(), o = { protocol: e, version: t, env: r }; return r === "browser" && (o.host = ((n = P.getLocation()) == null ? void 0 : n.host) || "unknown"), o } function Ke() { if (C() === y.reactNative && typeof global < "u" && typeof (global == null ? void 0 : global.Platform) < "u") { const { OS: n, Version: r } = global.Platform; return [n, r].join("-") } const e = Zt.detect(); if (e === null) return "unknown"; const t = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown"; return e.type === "browser" ? [t, e.name, e.version].join("-") : [t, e.version].join("-") } function qe() { var e; const t = C(); return t === y.browser ? [t, ((e = P.getLocation()) == null ? void 0 : e.host) || "unknown"].join(":") : t } function Be(e, t, n) { const r = Ke(), o = qe(); return [[e, t].join("-"), [Fe, n].join("-"), r, o].join("/") } function Nn({ protocol: e, version: t, relayUrl: n, sdkVersion: r, auth: o, projectId: s, useOnCloseEvent: i, bundleId: u }) { const l = n.split("?"), a = Be(e, t, r), d = { auth: o, ua: a, projectId: s, useOnCloseEvent: i || void 0, origin: u || void 0 }, c = Le(l[1] || "", d); return l[0] + "?" + c } function On(e) { let t = (e.match(/^[^:]+(?=:\/\/)/gi) || [])[0]; const n = typeof t < "u" ? e.split("://")[1] : e; return t = t === "wss" ? "https" : "http", [t, n].join("://") } function Sn(e, t, n) { if (!e[t] || typeof e[t] !== n) throw new Error(`Missing or invalid "${t}" param`) } function He(e, t = se) { return Je(e.split(Me), t) } function wn(e) { return He(e).join(Y) } function w(e, t) { return e.filter(n => t.includes(n)).length === e.length } function Je(e, t = se) { return e.slice(Math.max(e.length - t, 0)) } function Rn(e) { return Object.fromEntries(e.entries()) } function Tn(e) { return new Map(Object.entries(e)) } function An(e, t) { const n = {}; return Object.keys(e).forEach(r => { n[r] = t(e[r]) }), n } const In = e => e; function We(e) { return e.trim().replace(/^\w/, t => t.toUpperCase()) } function Pn(e) { return e.split(Y).map(t => We(t)).join(Y) } function Cn(e = U.FIVE_MINUTES, t) { const n = U.toMiliseconds(e || U.FIVE_MINUTES); let r, o, s; return { resolve: i => { s && r && (clearTimeout(s), r(i)) }, reject: i => { s && o && (clearTimeout(s), o(i)) }, done: () => new Promise((i, u) => { s = setTimeout(() => { u(new Error(t)) }, n), r = i, o = u }) } } function $n(e, t, n) { return new Promise(async (r, o) => { const s = setTimeout(() => o(new Error(n)), t); try { const i = await e; r(i) } catch (i) { o(i) } clearTimeout(s) }) } function ae(e, t) { if (typeof t == "string" && t.startsWith(`${e}:`)) return t; if (e.toLowerCase() === "topic") { if (typeof t != "string") throw new Error('Value must be "string" for expirer target type: topic'); return `topic:${t}` } else if (e.toLowerCase() === "id") { if (typeof t != "number") throw new Error('Value must be "number" for expirer target type: id'); return `id:${t}` } throw new Error(`Unknown expirer target type: ${e}`) } function jn(e) { return ae("topic", e) } function _n(e) { return ae("id", e) } function Un(e) { const [t, n] = e.split(":"), r = { id: void 0, topic: void 0 }; if (t === "topic" && typeof n == "string") r.topic = n; else if (t === "id" && Number.isInteger(Number(n))) r.id = Number(n); else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`); return r } function Dn(e, t) { return U.fromMiliseconds((t || Date.now()) + U.toMiliseconds(e)) } function Vn(e) { return Date.now() >= U.toMiliseconds(e) } function kn(e, t) { return `${e}${t ? `:${t}` : ""}` } function O(e = [], t = []) { return [...uniq([...e, ...t])] } async function xn({ id: e, topic: t, wcDeepLink: n }) { var r; try { if (!n) return; const o = typeof n == "string" ? JSON.parse(n) : n, s = o?.href; if (typeof s != "string") return; const i = ze(s, e, t), u = C(); if (u === y.browser) { if (!((r = P.getDocument()) != null && r.hasFocus())) { console.warn("Document does not have focus, skipping deeplink."); return } i.startsWith("https://") || i.startsWith("http://") ? window.open(i, "_blank", "noreferrer noopener") : window.open(i, Ye() ? "_blank" : "_self", "noreferrer noopener") } else u === y.reactNative && typeof (global == null ? void 0 : global.Linking) < "u" && await global.Linking.openURL(i) } catch (o) { console.error(o) } } function ze(e, t, n) { const r = `requestId=${t}&sessionTopic=${n}`; e.endsWith("/") && (e = e.slice(0, -1)); let o = `${e}`; if (e.startsWith("https://t.me")) { const s = e.includes("?") ? "&startapp=" : "?startapp="; o = `${o}${s}${Ge(r, !0)}` } else o = `${o}/wc?${r}`; return o } async function Mn(e, t) { let n = ""; try { if (M() && (n = localStorage.getItem(t), n)) return n; n = await e.getItem(t) } catch (r) { console.error(r) } return n } function ce(e, t) { return e.filter(n => t.includes(n)) } function Fn(e, t) { if (!e.includes(t)) return null; const n = e.split(/([&,?,=])/), r = n.indexOf(t); return n[r + 2] } function Ln() { return typeof crypto < "u" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu, e => { const t = Math.random() * 16 | 0; return (e === "x" ? t : t & 3 | 8).toString(16) }) } function Kn() { return typeof process < "u" && process.env.IS_VITEST === "true" } function Ye() { return typeof window < "u" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto) } function Ge(e, t = !1) { const n = Buffer.from(e).toString("base64"); return t ? n.replace(/[=]/g, "") : n } function ue(e) { return Buffer.from(e, "base64").toString("utf-8") } const qn = "https://rpc.walletconnect.org/v1"; async function Qe(e, t, n, r, o, s) { switch (n.t) { case "eip191": return Ze(e, t, n.s); case "eip1271": return await Xe(e, t, n.s, r, o, s); default: throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`) } } function Ze(e, t, n) { return tn.recoverAddress(Te.hashMessage(t), n).toLowerCase() === e.toLowerCase() } async function Xe(e, t, n, r, o, s) { const i = ne(r); if (!i.namespace || !i.reference) throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`); try { const u = "0x1626ba7e", l = "0000000000000000000000000000000000000000000000000000000000000040", a = "0000000000000000000000000000000000000000000000000000000000000041", d = n.substring(2), c = Te.hashMessage(t).substring(2), f = u + c + l + a + d, h = await fetch(`${s || qn}/?chainId=${r}&projectId=${o}`, { method: "POST", body: JSON.stringify({ id: Bn(), jsonrpc: "2.0", method: "eth_call", params: [{ to: e, data: f }, "latest"] }) }), { result: m } = await h.json(); return m ? m.slice(0, u.length).toLowerCase() === u.toLowerCase() : !1 } catch (u) { return console.error("isValidEip1271Signature: ", u), !1 } } function Bn() { return Date.now() + Math.floor(Math.random() * 1e3) } var Hn = Object.defineProperty, Jn = Object.defineProperties, Wn = Object.getOwnPropertyDescriptors, et = Object.getOwnPropertySymbols, zn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, tt = (e, t, n) => t in e ? Hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, le = (e, t) => { for (var n in t || (t = {})) zn.call(t, n) && tt(e, n, t[n]); if (et) for (var n of et(t)) Yn.call(t, n) && tt(e, n, t[n]); return e }, nt = (e, t) => Jn(e, Wn(t)); const Gn = "did:pkh:", G = e => e?.split(":"), rt = e => { const t = e && G(e); if (t) return e.includes(Gn) ? t[3] : t[1] }, ot = e => { const t = e && G(e); if (t) return t[2] + ":" + t[3] }, de = e => { const t = e && G(e); if (t) return t.pop() }; async function Qn(e) { const { cacao: t, projectId: n } = e, { s: r, p: o } = t, s = st(o, o.iss), i = de(o.iss); return await Qe(i, s, r, ot(o.iss), n) } const st = (e, t) => { ++ const n = `${e.domain} wants you to sign in with your Ethereum account:`, r = de(t); if (!e.aud && !e.uri) throw new Error("Either `aud` or `uri` is required to construct the message"); let o = e.statement || void 0; const s = `URI: ${e.aud || e.uri}`, i = `Version: ${e.version}`, u = `Chain ID: ${rt(t)}`, l = `Nonce: ${e.nonce}`, a = `Issued At: ${e.iat}`, d = e.exp ? `Expiration Time: ${e.exp}` : void 0, c = e.nbf ? `Not Before: ${e.nbf}` : void 0, f = e.requestId ? `Request ID: ${e.requestId}` : void 0, h = e.resources ? `Resources:${e.resources.map(g => ` ++- ${g}`).join("")}` : void 0, m = Z(e.resources); if (m) { const g = R(m); o = me(o, g) } return [n, r, "", o, "", s, i, u, l, a, d, c, f, h].filter(g => g != null).join(` ++`) ++}; function Zn(e, t, n) { return n.includes("did:pkh:") || (n = `did:pkh:${n}`), { h: { t: "caip122" }, p: { iss: n, domain: e.domain, aud: e.aud, version: e.version, nonce: e.nonce, iat: e.iat, statement: e.statement, requestId: e.requestId, resources: e.resources, nbf: e.nbf, exp: e.exp }, s: t } } function Xn(e) { var t; const { authPayload: n, chains: r, methods: o } = e, s = n.statement || ""; if (!(r != null && r.length)) return n; const i = n.chains, u = ce(i, r); if (!(u != null && u.length)) throw new Error("No supported chains"); const l = it(n.resources); if (!l) return n; N(l); const a = at(l, "eip155"); let d = n?.resources || []; if (a != null && a.length) { const c = ct(a), f = ce(c, o); if (!(f != null && f.length)) throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`); const h = pe("request", f, { chains: u }), m = pt(l, "eip155", h); d = ((t = n?.resources) == null ? void 0 : t.slice(0, -1)) || [], d.push(Q(m)) } return nt(le({}, n), { statement: mt(s, Z(d)), chains: u, resources: n != null && n.resources || d.length > 0 ? d : void 0 }) } function it(e) { const t = Z(e); if (t && fe(t)) return R(t) } function er(e, t) { var n; return (n = e?.att) == null ? void 0 : n.hasOwnProperty(t) } function at(e, t) { var n, r; return (n = e?.att) != null && n[t] ? Object.keys((r = e?.att) == null ? void 0 : r[t]) : [] } function tr(e) { return e?.map(t => Object.keys(t)) || [] } function ct(e) { return e?.map(t => { var n; return (n = t.split("/")) == null ? void 0 : n[1] }) || [] } function ut(e) { return Buffer.from(JSON.stringify(e)).toString("base64") } function lt(e) { return JSON.parse(Buffer.from(e, "base64").toString("utf-8")) } function N(e) { if (!e) throw new Error("No recap provided, value is undefined"); if (!e.att) throw new Error("No `att` property found"); const t = Object.keys(e.att); if (!(t != null && t.length)) throw new Error("No resources found in `att` property"); t.forEach(n => { const r = e.att[n]; if (Array.isArray(r)) throw new Error(`Resource must be an object: ${n}`); if (typeof r != "object") throw new Error(`Resource must be an object: ${n}`); if (!Object.keys(r).length) throw new Error(`Resource object is empty: ${n}`); Object.keys(r).forEach(o => { const s = r[o]; if (!Array.isArray(s)) throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`); if (!s.length) throw new Error(`Value of ${o} is empty array, must be an array with objects`); s.forEach(i => { if (typeof i != "object") throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`) }) }) }) } function dt(e, t, n, r = {}) { return n?.sort((o, s) => o.localeCompare(s)), { att: { [e]: pe(t, n, r) } } } function pt(e, t, n) { var r; return e.att[t] = le({}, n), ((r = Object.keys(e.att)) == null ? void 0 : r.sort((o, s) => o.localeCompare(s))).reduce((o, s) => (o.att[s] = e.att[s], o), { att: {} }) } function pe(e, t, n = {}) { t = t?.sort((o, s) => o.localeCompare(s)); const r = t.map(o => ({ [`${e}/${o}`]: [n] })); return Object.assign({}, ...r) } function Q(e) { return N(e), `urn:recap:${ut(e).replace(/=/g, "")}` } function R(e) { const t = lt(e.replace("urn:recap:", "")); return N(t), t } function nr(e, t, n) { const r = dt(e, t, n); return Q(r) } function fe(e) { return e && e.includes("urn:recap:") } function rr(e, t) { const n = R(e), r = R(t), o = ft(n, r); return Q(o) } function ft(e, t) { N(e), N(t); const n = Object.keys(e.att).concat(Object.keys(t.att)).sort((o, s) => o.localeCompare(s)), r = { att: {} }; return n.forEach(o => { var s, i; Object.keys(((s = e.att) == null ? void 0 : s[o]) || {}).concat(Object.keys(((i = t.att) == null ? void 0 : i[o]) || {})).sort((u, l) => u.localeCompare(l)).forEach(u => { var l, a; r.att[o] = nt(le({}, r.att[o]), { [u]: ((l = e.att[o]) == null ? void 0 : l[u]) || ((a = t.att[o]) == null ? void 0 : a[u]) }) }) }), r } function me(e = "", t) { N(t); const n = "I further authorize the stated URI to perform the following actions on my behalf: "; if (e.includes(n)) return e; const r = []; let o = 0; Object.keys(t.att).forEach(u => { const l = Object.keys(t.att[u]).map(c => ({ ability: c.split("/")[0], action: c.split("/")[1] })); l.sort((c, f) => c.action.localeCompare(f.action)); const a = {}; l.forEach(c => { a[c.ability] || (a[c.ability] = []), a[c.ability].push(c.action) }); const d = Object.keys(a).map(c => (o++, `(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`)); r.push(d.join(", ").replace(".,", ".")) }); const s = r.join(" "), i = `${n}${s}`; return `${e ? e + " " : ""}${i}` } function or(e) { var t; const n = R(e); N(n); const r = (t = n.att) == null ? void 0 : t.eip155; return r ? Object.keys(r).map(o => o.split("/")[1]) : [] } function sr(e) { const t = R(e); N(t); const n = []; return Object.values(t.att).forEach(r => { Object.values(r).forEach(o => { var s; (s = o?.[0]) != null && s.chains && n.push(o[0].chains) }) }), [...uniq(n.flat())] } function mt(e, t) { if (!t) return e; const n = R(t); return N(n), me(e, n) } function Z(e) { if (!e) return; const t = e?.[e.length - 1]; return fe(t) ? t : void 0 } const ge = "base10", v = "base16", he = "base64pad", ir = "base64url", V = "utf8", ye = 0, k = 1, F = 2, ar = 0, gt = 1, L = 12, ve = 32; function cr() { const e = Pe.generateKeyPair(); return { privateKey: p.toString(e.secretKey, v), publicKey: p.toString(e.publicKey, v) } } function ur() { const e = B.randomBytes(ve); return p.toString(e, v) } function lr(e, t) { const n = Pe.sharedKey(p.fromString(e, v), p.fromString(t, v), !0), r = new nn.HKDF(H.SHA256, n).expand(ve); return p.toString(r, v) } function dr(e) { const t = H.hash(p.fromString(e, v)); return p.toString(t, v) } function pr(e) { const t = H.hash(p.fromString(e, V)); return p.toString(t, v) } function Ee(e) { return p.fromString(`${e}`, ge) } function $(e) { return Number(p.toString(e, ge)) } function fr(e) { const t = Ee(typeof e.type < "u" ? e.type : ye); if ($(t) === k && typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); const n = typeof e.senderPublicKey < "u" ? p.fromString(e.senderPublicKey, v) : void 0, r = typeof e.iv < "u" ? p.fromString(e.iv, v) : B.randomBytes(L), o = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)).seal(r, p.fromString(e.message, V)); return be({ type: t, sealed: o, iv: r, senderPublicKey: n, encoding: e.encoding }) } function mr(e, t) { const n = Ee(F), r = B.randomBytes(L), o = p.fromString(e, V); return be({ type: n, sealed: o, iv: r, encoding: t }) } function gr(e) { const t = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)), { sealed: n, iv: r } = X({ encoded: e.encoded, encoding: e?.encoding }), o = t.open(r, n); if (o === null) throw new Error("Failed to decrypt"); return p.toString(o, V) } function hr(e, t) { const { sealed: n } = X({ encoded: e, encoding: t }); return p.toString(n, V) } function be(e) { const { encoding: t = he } = e; if ($(e.type) === F) return p.toString(p.concat([e.type, e.sealed]), t); if ($(e.type) === k) { if (typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); return p.toString(p.concat([e.type, e.senderPublicKey, e.iv, e.sealed]), t) } return p.toString(p.concat([e.type, e.iv, e.sealed]), t) } function X(e) { const { encoded: t, encoding: n = he } = e, r = p.fromString(t, n), o = r.slice(ar, gt), s = gt; if ($(o) === k) { const a = s + ve, d = a + L, c = r.slice(s, a), f = r.slice(a, d), h = r.slice(d); return { type: o, sealed: h, iv: f, senderPublicKey: c } } if ($(o) === F) { const a = r.slice(s), d = B.randomBytes(L); return { type: o, sealed: a, iv: d } } const i = s + L, u = r.slice(s, i), l = r.slice(i); return { type: o, sealed: l, iv: u } } function yr(e, t) { const n = X({ encoded: e, encoding: t?.encoding }); return ht({ type: $(n.type), senderPublicKey: typeof n.senderPublicKey < "u" ? p.toString(n.senderPublicKey, v) : void 0, receiverPublicKey: t?.receiverPublicKey }) } function ht(e) { const t = e?.type || ye; if (t === k) { if (typeof e?.senderPublicKey > "u") throw new Error("missing sender public key"); if (typeof e?.receiverPublicKey > "u") throw new Error("missing receiver public key") } return { type: t, senderPublicKey: e?.senderPublicKey, receiverPublicKey: e?.receiverPublicKey } } function vr(e) { return e.type === k && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string" } function Er(e) { return e.type === F } function yt(e) { return new on.ec("p256").keyFromPublic({ x: Buffer.from(e.x, "base64").toString("hex"), y: Buffer.from(e.y, "base64").toString("hex") }, "hex") } function br(e) { let t = e.replace(/-/g, "+").replace(/_/g, "/"); const n = t.length % 4; return n > 0 && (t += "=".repeat(4 - n)), t } function Nr(e) { return Buffer.from(br(e), "base64") } function Or(e, t) { const [n, r, o] = e.split("."), s = Nr(o); if (s.length !== 64) throw new Error("Invalid signature length"); const i = s.slice(0, 32).toString("hex"), u = s.slice(32, 64).toString("hex"), l = `${n}.${r}`, a = new H.SHA256().update(Buffer.from(l)).digest(), d = yt(t), c = Buffer.from(a).toString("hex"); if (!d.verify(c, { r: i, s: u })) throw new Error("Invalid signature"); return sn.decodeJWT(e).payload } const vt = "irn"; function Sr(e) { return e?.relay || { protocol: vt } } function wr(e) { const t = an.RELAY_JSONRPC[e]; if (typeof t > "u") throw new Error(`Relay Protocol not supported: ${e}`); return t } var Rr = Object.defineProperty, Tr = Object.defineProperties, Ar = Object.getOwnPropertyDescriptors, Et = Object.getOwnPropertySymbols, Ir = Object.prototype.hasOwnProperty, Pr = Object.prototype.propertyIsEnumerable, bt = (e, t, n) => t in e ? Rr(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Nt = (e, t) => { for (var n in t || (t = {})) Ir.call(t, n) && bt(e, n, t[n]); if (Et) for (var n of Et(t)) Pr.call(t, n) && bt(e, n, t[n]); return e }, Cr = (e, t) => Tr(e, Ar(t)); function Ot(e, t = "-") { const n = {}, r = "relay" + t; return Object.keys(e).forEach(o => { if (o.startsWith(r)) { const s = o.replace(r, ""), i = e[o]; n[s] = i } }), n } function $r(e) { if (!e.includes("wc:")) { const l = ue(e); l != null && l.includes("wc:") && (e = l) } e = e.includes("wc://") ? e.replace("wc://", "") : e, e = e.includes("wc:") ? e.replace("wc:", "") : e; const t = e.indexOf(":"), n = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r = e.substring(0, t), o = e.substring(t + 1, n).split("@"), s = typeof n < "u" ? e.substring(n) : "", i = J.parse(s), u = typeof i.methods == "string" ? i.methods.split(",") : void 0; return { protocol: r, topic: St(o[0]), version: parseInt(o[1], 10), symKey: i.symKey, relay: Ot(i), methods: u, expiryTimestamp: i.expiryTimestamp ? parseInt(i.expiryTimestamp, 10) : void 0 } } function St(e) { return e.startsWith("//") ? e.substring(2) : e } function wt(e, t = "-") { const n = "relay", r = {}; return Object.keys(e).forEach(o => { const s = n + t + o; e[o] && (r[s] = e[o]) }), r } function jr(e) { return `${e.protocol}:${e.topic}@${e.version}?` + J.stringify(Nt(Cr(Nt({ symKey: e.symKey }, wt(e.relay)), { expiryTimestamp: e.expiryTimestamp }), e.methods ? { methods: e.methods.join(",") } : {})) } function _r(e, t, n) { return `${e}?wc_ev=${n}&topic=${t}` } var Ur = Object.defineProperty, Dr = Object.defineProperties, Vr = Object.getOwnPropertyDescriptors, Rt = Object.getOwnPropertySymbols, kr = Object.prototype.hasOwnProperty, xr = Object.prototype.propertyIsEnumerable, Tt = (e, t, n) => t in e ? Ur(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Mr = (e, t) => { for (var n in t || (t = {})) kr.call(t, n) && Tt(e, n, t[n]); if (Rt) for (var n of Rt(t)) xr.call(t, n) && Tt(e, n, t[n]); return e }, Fr = (e, t) => Dr(e, Vr(t)); function j(e) { const t = []; return e.forEach(n => { const [r, o] = n.split(":"); t.push(`${r}:${o}`) }), t } function At(e) { const t = []; return Object.values(e).forEach(n => { t.push(...j(n.accounts)) }), t } function It(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.methods) }), n } function Pt(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.events) }), n } function Lr(e, t) { const n = Ft(e, t); if (n) throw new Error(n.message); const r = {}; for (const [o, s] of Object.entries(e)) r[o] = { methods: s.methods, events: s.events, chains: s.accounts.map(i => `${i.split(":")[0]}:${i.split(":")[1]}`) }; return r } function Kr(e) { const { proposal: { requiredNamespaces: t, optionalNamespaces: n = {} }, supportedNamespaces: r } = e, o = Oe(t), s = Oe(n), i = {}; Object.keys(r).forEach(a => { const d = r[a].chains, c = r[a].methods, f = r[a].events, h = r[a].accounts; d.forEach(m => { if (!h.some(g => g.includes(m))) throw new Error(`No accounts provided for chain ${m} in namespace ${a}`) }), i[a] = { chains: d, methods: c, events: f, accounts: h } }); const u = Kt(t, i, "approve()"); if (u) throw new Error(u.message); const l = {}; return !Object.keys(t).length && !Object.keys(n).length ? i : (Object.keys(o).forEach(a => { const d = r[a].chains.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.chains) == null ? void 0 : b.includes(m) }), c = r[a].methods.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.methods) == null ? void 0 : b.includes(m) }), f = r[a].events.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.events) == null ? void 0 : b.includes(m) }), h = d.map(m => r[a].accounts.filter(g => g.includes(`${m}:`))).flat(); l[a] = { chains: d, methods: c, events: f, accounts: h } }), Object.keys(s).forEach(a => { var d, c, f, h, m, g; if (!r[a]) return; const b = (c = (d = s[a]) == null ? void 0 : d.chains) == null ? void 0 : c.filter(A => r[a].chains.includes(A)), Yt = r[a].methods.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.methods) == null ? void 0 : x.includes(A) }), Gt = r[a].events.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.events) == null ? void 0 : x.includes(A) }), Qt = b?.map(A => r[a].accounts.filter(I => I.includes(`${A}:`))).flat(); l[a] = { chains: O((f = l[a]) == null ? void 0 : f.chains, b), methods: O((h = l[a]) == null ? void 0 : h.methods, Yt), events: O((m = l[a]) == null ? void 0 : m.events, Gt), accounts: O((g = l[a]) == null ? void 0 : g.accounts, Qt) } }), l) } function Ne(e) { return e.includes(":") } function Ct(e) { return Ne(e) ? e.split(":")[0] : e } function Oe(e) { var t, n, r; const o = {}; if (!ee(e)) return o; for (const [s, i] of Object.entries(e)) { const u = Ne(s) ? [s] : i.chains, l = i.methods || [], a = i.events || [], d = Ct(s); o[d] = Fr(Mr({}, o[d]), { chains: O(u, (t = o[d]) == null ? void 0 : t.chains), methods: O(l, (n = o[d]) == null ? void 0 : n.methods), events: O(a, (r = o[d]) == null ? void 0 : r.events) }) } return o } function $t(e) { const t = {}; return e?.forEach(n => { const [r, o] = n.split(":"); t[r] || (t[r] = { accounts: [], chains: [], events: [] }), t[r].accounts.push(n), t[r].chains.push(`${r}:${o}`) }), t } function qr(e, t) { t = t.map(r => r.replace("did:pkh:", "")); const n = $t(t); for (const [r, o] of Object.entries(n)) o.methods ? o.methods = O(o.methods, e) : o.methods = e, o.events = ["chainChanged", "accountsChanged"]; return n } const jt = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, _t = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } }; function S(e, t) { const { message: n, code: r } = _t[e]; return { message: t ? `${n} ${t}` : n, code: r } } function _(e, t) { const { message: n, code: r } = jt[e]; return { message: t ? `${n} ${t}` : n, code: r } } function K(e, t) { return Array.isArray(e) ? typeof t < "u" && e.length ? e.every(t) : !0 : !1 } function ee(e) { return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length } function T(e) { return typeof e > "u" } function E(e, t) { return t && T(e) ? !0 : typeof e == "string" && !!e.trim().length } function te(e, t) { return t && T(e) ? !0 : typeof e == "number" && !isNaN(e) } function Br(e, t) { const { requiredNamespaces: n } = t, r = Object.keys(e.namespaces), o = Object.keys(n); let s = !0; return w(o, r) ? (r.forEach(i => { const { accounts: u, methods: l, events: a } = e.namespaces[i], d = j(u), c = n[i]; (!w(z(i, c), d) || !w(c.methods, l) || !w(c.events, a)) && (s = !1) }), s) : !1 } function q(e) { return E(e, !1) && e.includes(":") ? e.split(":").length === 2 : !1 } function Ut(e) { if (E(e, !1) && e.includes(":")) { const t = e.split(":"); if (t.length === 3) { const n = t[0] + ":" + t[1]; return !!t[2] && q(n) } } return !1 } function Hr(e) { function t(n) { try { return typeof new URL(n) < "u" } catch { return !1 } } try { if (E(e, !1)) { if (t(e)) return !0; const n = ue(e); return t(n) } } catch { } return !1 } function Jr(e) { var t; return (t = e?.proposer) == null ? void 0 : t.publicKey } function Wr(e) { return e?.topic } function zr(e, t) { let n = null; return E(e?.publicKey, !1) || (n = S("MISSING_OR_INVALID", `${t} controller public key should be a string`)), n } function Se(e) { let t = !0; return K(e) ? e.length && (t = e.every(n => E(n, !1))) : t = !1, t } function Dt(e, t, n) { let r = null; return K(t) && t.length ? t.forEach(o => { r || q(o) || (r = _("UNSUPPORTED_CHAINS", `${n}, chain ${o} should be a string and conform to "namespace:chainId" format`)) }) : q(e) || (r = _("UNSUPPORTED_CHAINS", `${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)), r } function Vt(e, t, n) { let r = null; return Object.entries(e).forEach(([o, s]) => { if (r) return; const i = Dt(o, z(o, s), `${t} ${n}`); i && (r = i) }), r } function kt(e, t) { let n = null; return K(e) ? e.forEach(r => { n || Ut(r) || (n = _("UNSUPPORTED_ACCOUNTS", `${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`)) }) : n = _("UNSUPPORTED_ACCOUNTS", `${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), n } function xt(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = kt(r?.accounts, `${t} namespace`); o && (n = o) }), n } function Mt(e, t) { let n = null; return Se(e?.methods) ? Se(e?.events) || (n = _("UNSUPPORTED_EVENTS", `${t}, events should be an array of strings or empty array for no events`)) : n = _("UNSUPPORTED_METHODS", `${t}, methods should be an array of strings or empty array for no methods`), n } function we(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = Mt(r, `${t}, namespace`); o && (n = o) }), n } function Yr(e, t, n) { let r = null; if (e && ee(e)) { const o = we(e, t); o && (r = o); const s = Vt(e, t, n); s && (r = s) } else r = S("MISSING_OR_INVALID", `${t}, ${n} should be an object with data`); return r } function Ft(e, t) { let n = null; if (e && ee(e)) { const r = we(e, t); r && (n = r); const o = xt(e, t); o && (n = o) } else n = S("MISSING_OR_INVALID", `${t}, namespaces should be an object with data`); return n } function Lt(e) { return E(e.protocol, !0) } function Gr(e, t) { let n = !1; return t && !e ? n = !0 : e && K(e) && e.length && e.forEach(r => { n = Lt(r) }), n } function Qr(e) { return typeof e == "number" } function Zr(e) { return typeof e < "u" && typeof e !== null } function Xr(e) { return !(!e || typeof e != "object" || !e.code || !te(e.code, !1) || !e.message || !E(e.message, !1)) } function eo(e) { return !(T(e) || !E(e.method, !1)) } function to(e) { return !(T(e) || T(e.result) && T(e.error) || !te(e.id, !1) || !E(e.jsonrpc, !1)) } function no(e) { return !(T(e) || !E(e.name, !1)) } function ro(e, t) { return !(!q(t) || !At(e).includes(t)) } function oo(e, t, n) { return E(n, !1) ? It(e, t).includes(n) : !1 } function so(e, t, n) { return E(n, !1) ? Pt(e, t).includes(n) : !1 } function Kt(e, t, n) { ++ let r = null; const o = io(e), s = ao(t), i = Object.keys(o), u = Object.keys(s), l = qt(Object.keys(e)), a = qt(Object.keys(t)), d = l.filter(c => !a.includes(c)); return d.length && (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces keys don't satisfy requiredNamespaces. ++ Required: ${d.toString()} ++ Received: ${Object.keys(t).toString()}`)), w(i, u) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces chains don't satisfy required namespaces. ++ Required: ${i.toString()} ++ Approved: ${u.toString()}`)), Object.keys(t).forEach(c => { ++ if (!c.includes(":") || r) return; const f = j(t[c].accounts); f.includes(c) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces accounts don't satisfy namespace accounts for ${c} ++ Required: ${c} ++ Approved: ${f.toString()}`)) ++ }), i.forEach(c => { r || (w(o[c].methods, s[c].methods) ? w(o[c].events, s[c].events) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces events don't satisfy namespace events for ${c}`)) : r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces methods don't satisfy namespace methods for ${c}`)) }), r ++} function io(e) { const t = {}; return Object.keys(e).forEach(n => { var r; n.includes(":") ? t[n] = e[n] : (r = e[n].chains) == null || r.forEach(o => { t[o] = { methods: e[n].methods, events: e[n].events } }) }), t } function qt(e) { return [...uniq(e.map(t => t.includes(":") ? t.split(":")[0] : t))] } function ao(e) { const t = {}; return Object.keys(e).forEach(n => { if (n.includes(":")) t[n] = e[n]; else { const r = j(e[n].accounts); r?.forEach(o => { t[o] = { accounts: e[n].accounts.filter(s => s.includes(`${o}:`)), methods: e[n].methods, events: e[n].events } }) } }), t } function co(e, t) { return te(e, !1) && e <= t.max && e >= t.min } function uo() { const e = C(); return new Promise(t => { switch (e) { case y.browser: t(Bt()); break; case y.reactNative: t(Ht()); break; case y.node: t(Jt()); break; default: t(!0) } }) } function Bt() { return M() && navigator?.onLine } async function Ht() { if (D() && typeof global < "u" && global != null && global.NetInfo) { const e = await (global == null ? void 0 : global.NetInfo.fetch()); return e?.isConnected } return !0 } function Jt() { return !0 } function lo(e) { switch (C()) { case y.browser: Wt(e); break; case y.reactNative: zt(e); break; case y.node: break } } function Wt(e) { !D() && M() && (window.addEventListener("online", () => e(!0)), window.addEventListener("offline", () => e(!1))) } function zt(e) { D() && typeof global < "u" && global != null && global.NetInfo && global?.NetInfo.addEventListener(t => e(t?.isConnected)) } const Re = {}; class po { static get(t) { return Re[t] } static set(t, n) { Re[t] = n } static delete(t) { delete Re[t] } } exports.BASE10 = ge, exports.BASE16 = v, exports.BASE64 = he, exports.BASE64URL = ir, exports.COLON = hn, exports.DEFAULT_DEPTH = se, exports.EMPTY_SPACE = Y, exports.ENV_MAP = y, exports.INTERNAL_ERRORS = _t, exports.MemoryStore = po, exports.ONE_THOUSAND = yn, exports.REACT_NATIVE_PRODUCT = xe, exports.RELAYER_DEFAULT_PROTOCOL = vt, exports.SDK_ERRORS = jt, exports.SDK_TYPE = Fe, exports.SLASH = Me, exports.TYPE_0 = ye, exports.TYPE_1 = k, exports.TYPE_2 = F, exports.UTF8 = V, exports.addResourceToRecap = pt, exports.appendToQueryString = Le, exports.assertType = Sn, exports.assignAbilityToActions = pe, exports.base64Decode = lt, exports.base64Encode = ut, exports.buildApprovedNamespaces = Kr, exports.buildAuthObject = Zn, exports.buildNamespacesFromAuth = qr, exports.buildRecapStatement = mt, exports.calcExpiry = Dn, exports.capitalize = Pn, exports.capitalizeWord = We, exports.createDelayedPromise = Cn, exports.createEncodedRecap = nr, exports.createExpiringPromise = $n, exports.createRecap = dt, exports.decodeRecap = R, exports.decodeTypeByte = $, exports.decodeTypeTwoEnvelope = hr, exports.decrypt = gr, exports.deriveSymKey = lr, exports.deserialize = X, exports.encodeRecap = Q, exports.encodeTypeByte = Ee, exports.encodeTypeTwoEnvelope = mr, exports.encrypt = fr, exports.engineEvent = kn, exports.enumify = In, exports.formatAccountId = $e, exports.formatAccountWithChain = cn, exports.formatChainId = Ce, exports.formatDeeplinkUrl = ze, exports.formatExpirerTarget = ae, exports.formatIdTarget = _n, exports.formatMessage = st, exports.formatMessageContext = wn, exports.formatRelayParams = wt, exports.formatRelayRpcUrl = Nn, exports.formatStatementFromRecap = me, exports.formatTopicTarget = jn, exports.formatUA = Be, exports.formatUri = jr, exports.fromBase64 = ue, exports.generateKeyPair = cr, exports.generateRandomBytes32 = ur, exports.getAccountsChains = j, exports.getAccountsFromNamespaces = ln, exports.getAddressFromAccount = je, exports.getAddressesFromAccounts = un, exports.getAppMetadata = En, exports.getBrowserOnlineStatus = Bt, exports.getBundleId = vn, exports.getChainFromAccount = _e, exports.getChainsFromAccounts = Ue, exports.getChainsFromNamespace = z, exports.getChainsFromNamespaces = dn, exports.getChainsFromRecap = sr, exports.getChainsFromRequiredNamespaces = pn, exports.getCommonValuesInArrays = ce, exports.getCryptoKeyFromKeyData = yt, exports.getDecodedRecapFromResources = it, exports.getDeepLink = Mn, exports.getDidAddress = de, exports.getDidAddressSegments = G, exports.getDidChainId = rt, exports.getEnvironment = C, exports.getHttpUrl = On, exports.getInternalError = S, exports.getJavascriptID = qe, exports.getJavascriptOS = Ke, exports.getLastItems = Je, exports.getLinkModeURL = _r, exports.getMethodsFromRecap = or, exports.getNamespacedDidChainId = ot, exports.getNamespacesChains = At, exports.getNamespacesEventsForChainId = Pt, exports.getNamespacesFromAccounts = $t, exports.getNamespacesMethodsForChainId = It, exports.getNodeOnlineStatus = Jt, exports.getReCapActions = ct, exports.getReactNativeOnlineStatus = Ht, exports.getRecapAbilitiesFromResource = tr, exports.getRecapFromResources = Z, exports.getRecapResource = at, exports.getRelayClientMetadata = bn, exports.getRelayProtocolApi = wr, exports.getRelayProtocolName = Sr, exports.getRequiredNamespacesFromNamespaces = Lr, exports.getSdkError = _, exports.getSearchParamFromURL = Fn, exports.getUniqueValues = oe, exports.handleDeeplinkRedirect = xn, exports.hasOverlap = w, exports.hashKey = dr, exports.hashMessage = pr, exports.isBrowser = M, exports.isCaipNamespace = Ne, exports.isConformingNamespaces = Kt, exports.isExpired = Vn, exports.isNode = ie, exports.isOnline = uo, exports.isProposalStruct = Jr, exports.isReactNative = D, exports.isRecap = fe, exports.isSessionCompatible = Br, exports.isSessionStruct = Wr, exports.isTelegram = Ye, exports.isTestRun = Kn, exports.isTypeOneEnvelope = vr, exports.isTypeTwoEnvelope = Er, exports.isUndefined = T, exports.isValidAccountId = Ut, exports.isValidAccounts = kt, exports.isValidActions = Mt, exports.isValidArray = K, exports.isValidChainId = q, exports.isValidChains = Dt, exports.isValidController = zr, exports.isValidEip1271Signature = Xe, exports.isValidEip191Signature = Ze, exports.isValidErrorReason = Xr, exports.isValidEvent = no, exports.isValidId = Qr, exports.isValidNamespaceAccounts = xt, exports.isValidNamespaceActions = we, exports.isValidNamespaceChains = Vt, exports.isValidNamespaceMethodsOrEvents = Se, exports.isValidNamespaces = Ft, exports.isValidNamespacesChainId = ro, exports.isValidNamespacesEvent = so, exports.isValidNamespacesRequest = oo, exports.isValidNumber = te, exports.isValidObject = ee, exports.isValidParams = Zr, exports.isValidRecap = N, exports.isValidRelay = Lt, exports.isValidRelays = Gr, exports.isValidRequest = eo, exports.isValidRequestExpiry = co, exports.isValidRequiredNamespaces = Yr, exports.isValidResponse = to, exports.isValidString = E, exports.isValidUrl = Hr, exports.mapEntries = An, exports.mapToObj = Rn, exports.mergeArrays = O, exports.mergeEncodedRecaps = rr, exports.mergeRecaps = ft, exports.normalizeNamespaces = Oe, exports.objToMap = Tn, exports.parseAccountId = re, exports.parseChainId = ne, exports.parseContextNames = He, exports.parseExpirerTarget = Un, exports.parseNamespaceKey = Ct, exports.parseRelayParams = Ot, exports.parseTopic = St, exports.parseUri = $r, exports.populateAuthPayload = Xn, exports.recapHasResource = er, exports.serialize = be, exports.subscribeToBrowserNetworkChange = Wt, exports.subscribeToNetworkChange = lo, exports.subscribeToReactNativeNetworkChange = zt, exports.toBase64 = Ge, exports.uuidv4 = Ln, exports.validateDecoding = yr, exports.validateEncoding = ht, exports.validateSignedCacao = Qn, exports.verifyP256Jwt = Or, exports.verifySignature = Qe; ++//# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js.map b/node_modules/@walletconnect/utils/dist/index.cjs.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..031b7fb5ae91e997312d6fdb999f34e4e18315d4 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.cjs.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.cjs.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,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AC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,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C,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,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UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU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EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAA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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/index.es.js b/node_modules/@walletconnect/utils/dist/index.es.js +new file mode 100644 +index 0000000000000000000000000000000000000000..6bb30571f9a75c9921d8cdb6a8b16f461cf9d4f9 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.es.js +@@ -0,0 +1,18 @@ ++import{detect as Uo}from"detect-browser";import{toMiliseconds as di,FIVE_MINUTES as hn,fromMiliseconds as ko}from"@walletconnect/time";import{getDocument as pi,getNavigator as cn,getLocation as ln}from"@walletconnect/window-getters";import{getWindowMetadata as qo}from"@walletconnect/window-metadata";import*as Br from"query-string";import{ChaCha20Poly1305 as dn}from"@stablelib/chacha20poly1305";import{HKDF as Ko}from"@stablelib/hkdf";import{randomBytes as Cr}from"@stablelib/random";import{SHA256 as pn,hash as vn}from"@stablelib/sha256";import*as gn from"@stablelib/x25519";import{toString as Qt,fromString as Xt,concat as vi}from"uint8arrays";import{ec as Ho}from"elliptic";import{decodeJWT as Lo}from"@walletconnect/relay-auth";import{RELAY_JSONRPC as zo}from"@walletconnect/relay-api";const Rr=":";function mn(e){const[t,r]=e.split(Rr);return{namespace:t,reference:r}}function An(e){const{namespace:t,reference:r}=e;return[t,r].join(Rr)}function gi(e){const[t,r,i]=e.split(Rr);return{namespace:t,reference:r,address:i}}function bn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(Rr)}function mi(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function yn(e){const{address:t}=gi(e);return t}function wn(e){const{namespace:t,reference:r}=gi(e);return An({namespace:t,reference:r})}function jo(e,t){const{namespace:r,reference:i}=mn(t);return bn({namespace:r,reference:i,address:e})}function Qo(e){return mi(e,yn)}function xn(e){return mi(e,wn)}function Jo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function Go(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...xn(n.accounts))}),r}function Yo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...Or(i,n))}),r}function Or(e,t){return e.includes(":")?[e]:t.chains||[]}var Vo=Object.defineProperty,Mn=Object.getOwnPropertySymbols,Wo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable,En=(e,t,r)=>t in e?Vo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Sn=(e,t)=>{for(var r in t||(t={}))Wo.call(t,r)&&En(e,r,t[r]);if(Mn)for(var r of Mn(t))Xo.call(t,r)&&En(e,r,t[r]);return e};const Nn="ReactNative",qt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Pr=" ",Zo=":",In="/",Ai=2,$o=1e3,_n="js";function bi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function rr(){return!pi()&&!!cn()&&navigator.product===Nn}function gr(){return!bi()&&!!cn()&&!!pi()}function We(){return rr()?qt.reactNative:bi()?qt.node:gr()?qt.browser:qt.unknown}function ts(){var e;try{return rr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Bn(e,t){let r=Br.parse(e);return r=Sn(Sn({},r),t),e=Br.stringify(r),e}function es(){return qo()||{name:"",description:"",url:"",icons:[""]}}function rs(e,t){var r;const i=We(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=ln())==null?void 0:r.host)||"unknown"),n}function Cn(){if(We()===qt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Uo();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Rn(){var e;const t=We();return t===qt.browser?[t,((e=ln())==null?void 0:e.host)||"unknown"].join(":"):t}function On(e,t,r){const i=Cn(),n=Rn();return[[e,t].join("-"),[_n,r].join("-"),i,n].join("/")}function is({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const A=r.split("?"),v=On(e,t,i),w={auth:n,ua:v,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=Bn(A[1]||"",w);return A[0]+"?"+y}function ns(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function fs(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Pn(e,t=Ai){return Dn(e.split(In),t)}function os(e){return Pn(e).join(Pr)}function _e(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Dn(e,t=Ai){return e.slice(Math.max(e.length-t,0))}function ss(e){return Object.fromEntries(e.entries())}function as(e){return new Map(Object.entries(e))}function us(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const hs=e=>e;function Fn(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function cs(e){return e.split(Pr).map(t=>Fn(t)).join(Pr)}function ls(e=hn,t){const r=di(e||hn);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function ds(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function yi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function ps(e){return yi("topic",e)}function vs(e){return yi("id",e)}function gs(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function ms(e,t){return ko((t||Date.now())+di(e))}function As(e){return Date.now()>=di(e)}function bs(e,t){return`${e}${t?`:${t}`:""}`}function me(e=[],t=[]){return[...new Set([...e,...t])]}async function ys({id:e,topic:t,wcDeepLink:r}){var i;try{if(!r)return;const n=typeof r=="string"?JSON.parse(r):r;let o=n?.href;if(typeof o!="string")return;o.endsWith("/")&&(o=o.slice(0,-1));const h=`${o}/wc?requestId=${e}&sessionTopic=${t}`,p=We();if(p===qt.browser){if(!((i=pi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}h.startsWith("https://")||h.startsWith("http://")?window.open(h,"_blank","noreferrer noopener"):window.open(h,"_self","noreferrer noopener")}else p===qt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(h)}catch(n){console.error(n)}}async function ws(e,t){try{return await e.getItem(t)||(gr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function wi(e,t){return e.filter(r=>t.includes(r))}function xs(e,t){if(!e.includes(t))return null;const r=e.split(/([&,?,=])/),i=r.indexOf(t);return r[i+2]}function Ms(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Es(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Un={exports:{}};/** ++ * [js-sha3]{@link https://github.com/emn178/js-sha3} ++ * ++ * @version 0.8.0 ++ * @author Chen, Yi-Cyuan [emn178@gmail.com] ++ * @copyright Chen, Yi-Cyuan 2015-2018 ++ * @license MIT ++ */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=Tn:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,A=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],C=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],J=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),A&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var G=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,R){return new s(u,E,R).update(B)[_]()}},L=function(u,E,_){return function(B,R,T,P){return f["cshake"+u].update(B,R,T,P)[_]()}},Pt=function(u,E,_){return function(B,R,T,P){return f["kmac"+u].update(B,R,T,P)[_]()}},W=function(u,E,_,B){for(var R=0;R>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,R=this.byteCount,T=u.length,P=this.blockCount,O=0,Ct=this.s,D,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[D>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=R){for(this.start=D-R,this.block=B[P],D=0;D>8,_=u&255;_>0;)R.unshift(_),u=u>>8,_=u&255,++B;return E?R.push(B):R.unshift(B),this.update(R),R.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,R=u.length;if(E)B=R;else for(var T=0;T=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++T)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P="",O;T<_;){for(R=0;R>4&15]+v[O&15]+v[O>>12&15]+v[O>>8&15]+v[O>>20&15]+v[O>>16&15]+v[O>>28&15]+v[O>>24&15];T%u===0&&(k(E),R=0)}return B&&(O=E[R],P+=v[O>>4&15]+v[O&15],B>1&&(P+=v[O>>12&15]+v[O>>8&15]),B>2&&(P+=v[O>>20&15]+v[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);T<_;){for(R=0;R>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;T%u===0&&k(E)}return B&&(O=T<<2,Ct=E[R],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function g(u,E,_){s.call(this,u,E,_)}g.prototype=new s,g.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,R,T,P,O,Ct,D,q,De,X,Z,Fe,$,tt,Te,et,rt,Ue,it,nt,ke,ft,ot,qe,st,at,Ke,ut,ht,He,ct,lt,Le,dt,pt,ze,vt,gt,je,mt,At,Qe,bt,yt,Je,wt,xt,Ge,Mt,Et,Ye,St,Nt,Ve,It,_t,Me,Ee,Se,Ne,Ie;for(B=0;B<48;B+=2)R=u[0]^u[10]^u[20]^u[30]^u[40],T=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],D=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],De=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=R^(Ct<<1|D>>>31),_=T^(D<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|De>>>31),_=O^(De<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=D^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(R<<1|T>>>31),_=De^(T<<1|R>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Fe=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Je=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,Ke=u[21]<<3|u[20]>>>29,Ee=u[31]<<9|u[30]>>>23,Se=u[30]<<9|u[31]>>>23,mt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,Le=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Te=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Ne=u[42]<<2|u[43]>>>30,Ie=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Ge=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,He=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ve=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,ze=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,Ue=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Ye=u[46]<<24|u[47]>>>8,Qe=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,qe=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,Me=u[28]<<7|u[29]>>>25,gt=u[38]<<8|u[39]>>>24,je=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,ke=u[49]<<14|u[48]>>>18,u[0]=Fe^~tt&et,u[1]=$^~Te&rt,u[10]=ft^~qe&at,u[11]=ot^~st&Ke,u[20]=lt^~dt&ze,u[21]=Le^~pt&vt,u[30]=Qe^~yt&wt,u[31]=bt^~Je&xt,u[40]=St^~Ve&_t,u[41]=Nt^~It&Me,u[2]=tt^~et&Ue,u[3]=Te^~rt&it,u[12]=qe^~at&ut,u[13]=st^~Ke&ht,u[22]=dt^~ze>,u[23]=pt^~vt&je,u[32]=yt^~wt&Ge,u[33]=Je^~xt&Mt,u[42]=Ve^~_t&Ee,u[43]=It^~Me&Se,u[4]=et^~Ue&nt,u[5]=rt^~it&ke,u[14]=at^~ut&He,u[15]=Ke^~ht&ct,u[24]=ze^~gt&mt,u[25]=vt^~je&At,u[34]=wt^~Ge&Et,u[35]=xt^~Mt&Ye,u[44]=_t^~Ee&Ne,u[45]=Me^~Se&Ie,u[6]=Ue^~nt&Fe,u[7]=it^~ke&$,u[16]=ut^~He&ft,u[17]=ht^~ct&ot,u[26]=gt^~mt<,u[27]=je^~At&Le,u[36]=Ge^~Et&Qe,u[37]=Mt^~Ye&bt,u[46]=Ee^~Ne&St,u[47]=Se^~Ie&Nt,u[8]=nt^~Fe&tt,u[9]=ke^~$&Te,u[18]=He^~ft&qe,u[19]=ct^~ot&st,u[28]=mt^~lt&dt,u[29]=At^~Le&pt,u[38]=Et^~Qe&yt,u[39]=Ye^~bt&Je,u[48]=Ne^~St&Ve,u[49]=Ie^~Nt&It,u[0]^=C[B],u[1]^=C[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Hn=Is();var Mi;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Mi||(Mi={}));var re;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(re||(re={}));const Ln="0123456789abcdef";class z{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Dr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Kn>Dr[i])&&console.log.apply(console,r)}debug(...t){this._log(z.levels.DEBUG,t)}info(...t){this._log(z.levels.INFO,t)}warn(...t){this._log(z.levels.WARNING,t)}makeError(t,r,i){if(qn)return this.makeError("censored error",r,{});r||(r=z.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(A=>{const v=i[A];try{if(v instanceof Uint8Array){let w="";for(let y=0;y>4],w+=Ln[v[y]&15];n.push(A+"=Uint8Array(0x"+w+")")}else n.push(A+"="+JSON.stringify(v))}catch{n.push(A+"="+JSON.stringify(i[A].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case re.NUMERIC_FAULT:{h="NUMERIC_FAULT";const A=t;switch(A){case"overflow":case"underflow":case"division-by-zero":h+="-"+A;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case re.CALL_EXCEPTION:case re.INSUFFICIENT_FUNDS:case re.MISSING_NEW:case re.NONCE_EXPIRED:case re.REPLACEMENT_UNDERPRICED:case re.TRANSACTION_REPLACED:case re.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(A){p[A]=i[A]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,z.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Hn&&this.throwError("platform missing String.prototype.normalize",z.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Hn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,z.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",z.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return xi||(xi=new z(Ns)),xi}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),kn){if(!t)return;this.globalLogger().throwError("error censorship permanent",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}qn=!!t,kn=!!r}static setLogLevel(t){const r=Dr[t.toLowerCase()];if(r==null){z.globalLogger().warn("invalid log level - "+t);return}Kn=r}static from(t){return new z(t)}}z.errors=re,z.levels=Mi;const _s="bytes/5.7.0",Dt=new z(_s);function zn(e){return!!e.toHexString}function ir(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ir(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Bs(e){return Jt(e)&&!(e.length%2)||nr(e)}function jn(e){return typeof e=="number"&&e==e&&e%1===0}function nr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!jn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ot(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),ir(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e)&&(e=e.toHexString()),Jt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Dt.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nOt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),ir(i)}function Rs(e,t){e=Ot(e),e.length>t&&Dt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),ir(r)}function Jt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const Ei="0123456789abcdef";function Kt(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=Ei[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e))return e.toHexString();if(Jt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Dt.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(nr(e)){let r="0x";for(let i=0;i>4]+Ei[n&15]}return r}return Dt.throwArgumentError("invalid hexlify value","value",e)}function Os(e){if(typeof e!="string")e=Kt(e);else if(!Jt(e)||e.length%2)return null;return(e.length-2)/2}function Qn(e,t,r){return typeof e!="string"?e=Kt(e):(!Jt(e)||e.length%2)&&Dt.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function oe(e,t){for(typeof e!="string"?e=Kt(e):Jt(e)||Dt.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Dt.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Jn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Bs(e)){let r=Ot(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64))):r.length===65?(t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64)),t.v=r[64]):Dt.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Dt.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Kt(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=Rs(Ot(t._vs),32);t._vs=Kt(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Dt.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Kt(n);t.s==null?t.s=h:t.s!==h&&Dt.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Dt.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Dt.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Jt(t.r)?Dt.throwArgumentError("signature missing or invalid r","signature",e):t.r=oe(t.r,32),t.s==null||!Jt(t.s)?Dt.throwArgumentError("signature missing or invalid s","signature",e):t.s=oe(t.s,32);const r=Ot(t.s);r[0]>=128&&Dt.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Kt(r);t._vs&&(Jt(t._vs)||Dt.throwArgumentError("signature invalid _vs","signature",e),t._vs=oe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Dt.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function Si(e){return"0x"+Ss.keccak_256(Ot(e))}var Gn={exports:{}},Ps={},Ds=Object.freeze({__proto__:null,default:Ps}),Fs=Es(Ds);(function(e){(function(t,r){function i(b,f){if(!b)throw new Error(f||"Assertion failed")}function n(b,f){b.super_=f;var a=function(){};a.prototype=f.prototype,b.prototype=new a,b.prototype.constructor=b}function o(b,f,a){if(o.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(b||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Fs.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[m]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);else if(c==="le")for(d=0,m=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);return this._strip()};function p(b,f){var a=b.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+b)}function A(b,f,a){var c=p(b,a);return a-1>=f&&(c|=p(b,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=A(f,a,d)<=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8}this._strip()};function v(b,f,a,c){for(var d=0,m=0,x=Math.min(b.length,a),M=f;M=49?m=l-49+10:l>=17?m=l-17+10:m=l,i(l>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,m=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),m!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(m!==0&&(c=m.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],g=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(g).toString(f);k=k.idivn(g),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var C=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),m=c||Math.max(1,d);i(d<=m,"byte array longer than desired length"),i(m>0,"Requested array length <= 0");var x=C(f,m),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,m=0,x=0;m>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(b){for(var f=new Array(b.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var m=0,x=0;x>>26;for(;m!==0&&x>>26;if(this.length=c.length,m!==0)this.words[this.length]=m,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,m;c>0?(d=this,m=f):(d=f,m=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-b.length+1);E<=u;E++){var _=s-E|0;d=b.words[_]|0,m=f.words[E]|0,x=d*m+k,g+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=g|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var J=function(f,a,c){var d=f.words,m=a.words,x=c.words,M=0,l,s,g,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,R=_>>>13,T=d[2]|0,P=T&8191,O=T>>>13,Ct=d[3]|0,D=Ct&8191,q=Ct>>>13,De=d[4]|0,X=De&8191,Z=De>>>13,Fe=d[5]|0,$=Fe&8191,tt=Fe>>>13,Te=d[6]|0,et=Te&8191,rt=Te>>>13,Ue=d[7]|0,it=Ue&8191,nt=Ue>>>13,ke=d[8]|0,ft=ke&8191,ot=ke>>>13,qe=d[9]|0,st=qe&8191,at=qe>>>13,Ke=m[0]|0,ut=Ke&8191,ht=Ke>>>13,He=m[1]|0,ct=He&8191,lt=He>>>13,Le=m[2]|0,dt=Le&8191,pt=Le>>>13,ze=m[3]|0,vt=ze&8191,gt=ze>>>13,je=m[4]|0,mt=je&8191,At=je>>>13,Qe=m[5]|0,bt=Qe&8191,yt=Qe>>>13,Je=m[6]|0,wt=Je&8191,xt=Je>>>13,Ge=m[7]|0,Mt=Ge&8191,Et=Ge>>>13,Ye=m[8]|0,St=Ye&8191,Nt=Ye>>>13,Ve=m[9]|0,It=Ve&8191,_t=Ve>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,g=Math.imul(E,ht);var Me=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(R,ut)|0,g=Math.imul(R,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,g=g+Math.imul(E,lt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,g=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(R,ct)|0,g=g+Math.imul(R,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,g=g+Math.imul(E,pt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(D,ut),s=Math.imul(D,ht),s=s+Math.imul(q,ut)|0,g=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,g=g+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(R,dt)|0,g=g+Math.imul(R,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,gt)|0,s=s+Math.imul(E,vt)|0,g=g+Math.imul(E,gt)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,g=Math.imul(Z,ht),l=l+Math.imul(D,ct)|0,s=s+Math.imul(D,lt)|0,s=s+Math.imul(q,ct)|0,g=g+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,g=g+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,gt)|0,s=s+Math.imul(R,vt)|0,g=g+Math.imul(R,gt)|0,l=l+Math.imul(u,mt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,mt)|0,g=g+Math.imul(E,At)|0;var Ie=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,g=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,g=g+Math.imul(Z,lt)|0,l=l+Math.imul(D,dt)|0,s=s+Math.imul(D,pt)|0,s=s+Math.imul(q,dt)|0,g=g+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,gt)|0,s=s+Math.imul(O,vt)|0,g=g+Math.imul(O,gt)|0,l=l+Math.imul(B,mt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(R,mt)|0,g=g+Math.imul(R,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,g=g+Math.imul(E,yt)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,g=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,g=g+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,g=g+Math.imul(Z,pt)|0,l=l+Math.imul(D,vt)|0,s=s+Math.imul(D,gt)|0,s=s+Math.imul(q,vt)|0,g=g+Math.imul(q,gt)|0,l=l+Math.imul(P,mt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,mt)|0,g=g+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(R,bt)|0,g=g+Math.imul(R,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,g=g+Math.imul(E,xt)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,g=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,g=g+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,g=g+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,gt)|0,s=s+Math.imul(Z,vt)|0,g=g+Math.imul(Z,gt)|0,l=l+Math.imul(D,mt)|0,s=s+Math.imul(D,At)|0,s=s+Math.imul(q,mt)|0,g=g+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,g=g+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(R,wt)|0,g=g+Math.imul(R,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,g=g+Math.imul(E,Et)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,g=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,g=g+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,g=g+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,gt)|0,s=s+Math.imul(tt,vt)|0,g=g+Math.imul(tt,gt)|0,l=l+Math.imul(X,mt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,mt)|0,g=g+Math.imul(Z,At)|0,l=l+Math.imul(D,bt)|0,s=s+Math.imul(D,yt)|0,s=s+Math.imul(q,bt)|0,g=g+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,g=g+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(R,Mt)|0,g=g+Math.imul(R,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,g=g+Math.imul(E,Nt)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,g=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,g=g+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,g=g+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,gt)|0,s=s+Math.imul(rt,vt)|0,g=g+Math.imul(rt,gt)|0,l=l+Math.imul($,mt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,mt)|0,g=g+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,g=g+Math.imul(Z,yt)|0,l=l+Math.imul(D,wt)|0,s=s+Math.imul(D,xt)|0,s=s+Math.imul(q,wt)|0,g=g+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,g=g+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(R,St)|0,g=g+Math.imul(R,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,g=g+Math.imul(E,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,g=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,g=g+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,gt)|0,s=s+Math.imul(nt,vt)|0,g=g+Math.imul(nt,gt)|0,l=l+Math.imul(et,mt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,mt)|0,g=g+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,g=g+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,g=g+Math.imul(Z,xt)|0,l=l+Math.imul(D,Mt)|0,s=s+Math.imul(D,Et)|0,s=s+Math.imul(q,Mt)|0,g=g+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,g=g+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(R,It)|0,g=g+Math.imul(R,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,g=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,gt)|0,s=s+Math.imul(ot,vt)|0,g=g+Math.imul(ot,gt)|0,l=l+Math.imul(it,mt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,mt)|0,g=g+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,g=g+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,g=g+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,g=g+Math.imul(Z,Et)|0,l=l+Math.imul(D,St)|0,s=s+Math.imul(D,Nt)|0,s=s+Math.imul(q,St)|0,g=g+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,g=g+Math.imul(O,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,vt),s=Math.imul(st,gt),s=s+Math.imul(at,vt)|0,g=Math.imul(at,gt),l=l+Math.imul(ft,mt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,mt)|0,g=g+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,g=g+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,g=g+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,g=g+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,g=g+Math.imul(Z,Nt)|0,l=l+Math.imul(D,It)|0,s=s+Math.imul(D,_t)|0,s=s+Math.imul(q,It)|0,g=g+Math.imul(q,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,mt),s=Math.imul(st,At),s=s+Math.imul(at,mt)|0,g=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,g=g+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,g=g+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,g=g+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,g=g+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,g=g+Math.imul(Z,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,g=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,g=g+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,g=g+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,g=g+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,g=g+Math.imul(tt,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,g=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,g=g+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,g=g+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,g=g+Math.imul(rt,_t)|0;var ui=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,g=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,g=g+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,g=g+Math.imul(nt,_t)|0;var hi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(hi>>>26)|0,hi&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,g=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,g=g+Math.imul(ot,_t)|0;var ci=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ci>>>26)|0,ci&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,g=Math.imul(at,_t);var li=(M+l|0)+((s&8191)<<13)|0;return M=(g+(s>>>13)|0)+(li>>>26)|0,li&=67108863,x[0]=Me,x[1]=Ee,x[2]=Se,x[3]=Ne,x[4]=Ie,x[5]=$r,x[6]=ti,x[7]=ei,x[8]=ri,x[9]=ii,x[10]=ni,x[11]=fi,x[12]=oi,x[13]=si,x[14]=ai,x[15]=ui,x[16]=hi,x[17]=ci,x[18]=li,M!==0&&(x[19]=M,c.length++),c};Math.imul||(J=U);function Bt(b,f,a){a.negative=f.negative^b.negative,a.length=b.length+f.length;for(var c=0,d=0,m=0;m>>26)|0,d+=x>>>26,x&=67108863}a.words[m]=M,c=x,x=d}return c!==0?a.words[m]=c:a.length--,a._strip()}function G(b,f,a){return Bt(b,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=J(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=G(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),G(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=m/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,m;if(a!==0){var x=0;for(m=0;m>>26-a}x&&(this.words[m]=x,this.length++)}if(c!==0){for(m=this.length-1;m>=0;m--)this.words[m+c]=this.words[m];for(m=0;m=0);var d;a?d=(a-a%26)/26:d=0;var m=f%26,x=Math.min((f-m)/26,this.length),M=67108863^67108863>>>m<x)for(this.length-=x,s=0;s=0&&(g!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=g<<26-m|k>>>m,g=k&M}return l&&g!==0&&(l.words[l.length++]=g),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[m+c]=x&67108863}for(;m>26,this.words[m+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,m=0;m>26,this.words[m]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),m=f,x=m.words[m.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(m=m.ushln(c),d.iushln(c),x=m.words[m.length-1]|0);var l=d.length-m.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var g=0;g=0;u--){var E=(d.words[m.length+u]|0)*67108864+(d.words[m.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(m,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(m,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,m,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.iadd(f)),{div:d,mod:m}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.isub(f)),{div:x.div,mod:m}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),m=f.andln(1),x=c.cmp(d);return x<0||m===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,m=this.length-1;m>=0;m--)d=(c*d+(this.words[m]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var m=(this.words[d]|0)+c*67108864;this.words[d]=m/f|0,c=m%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),g=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||m.isOdd())&&(d.iadd(s),m.isub(g)),d.iushrn(1),m.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(g)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),m.isub(M)):(c.isub(a),x.isub(d),M.isub(m))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,g=1;!(c.words[0]&g)&&s<26;++s,g<<=1);if(s>0)for(c.iushrn(s);s-- >0;)m.isOdd()&&m.iadd(x),m.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(m)):(c.isub(a),m.isub(d))}var k;return a.cmpn(1)===0?k=d:k=m,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var m=a.cmp(c);if(m<0){var x=a;a=c,c=x}else if(m===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return m!==0&&(this.words[x]=m,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,m=f.words[c]|0;if(d!==m){dm&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function L(b,f){this.name=b,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},L.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},L.prototype.split=function(f,a){f.iushrn(this.n,0,a)},L.prototype.imulK=function(f){return f.imul(this.k)};function Pt(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Pt,L),Pt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),m=0;m>>22,x=M}x>>>=22,f.words[m-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Pt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=m,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Pt;else if(f==="p224")a=new W;else if(f==="p192")a=new Rt;else if(f==="p25519")a=new Vt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(b){if(typeof b=="string"){var f=o._prime(b);this.m=f.p,this.prime=f}else i(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),m=0;!d.isZero()&&d.andln(1)===0;)m++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var g=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=m;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;m--){for(var g=a.words[m],k=s-1;k>=0;k--){var u=g>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(m!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Wt(f)};function Wt(b){Y.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Wt,Y),Wt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Wt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Wt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,Tn)})(Gn);var K=Gn.exports;const Yn="bignumber/5.7.0";var Fr=K.BN;const Ae=new z(Yn),Ni={},Vn=9007199254740991;function Ts(e){return e!=null&&(V.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Jt(e)||typeof e=="bigint"||nr(e))}let Wn=!1;class V{constructor(t,r){t!==Ni&&Ae.throwError("cannot call constructor directly; use BigNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return zt(j(this).fromTwos(t))}toTwos(t){return zt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?V.from(this._hex.substring(1)):this}add(t){return zt(j(this).add(j(t)))}sub(t){return zt(j(this).sub(j(t)))}div(t){return V.from(t).isZero()&&Zt("division-by-zero","div"),zt(j(this).div(j(t)))}mul(t){return zt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Zt("division-by-zero","mod"),zt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Zt("negative-power","pow"),zt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","and"),zt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","or"),zt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","xor"),zt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Zt("negative-width","mask"),zt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Zt("negative-width","shl"),zt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Zt("negative-width","shr"),zt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Zt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Ae.throwError("this platform does not support BigInt",z.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Wn||(Wn=!0,Ae.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Ae.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",z.errors.UNEXPECTED_ARGUMENT,{}):Ae.throwError("BigNumber.toString does not accept parameters",z.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new V(Ni,mr(t)):t.match(/^-?[0-9]+$/)?new V(Ni,mr(new Fr(t))):Ae.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Zt("underflow","BigNumber.from",t),(t>=Vn||t<=-Vn)&&Zt("overflow","BigNumber.from",t),V.from(String(t));const r=t;if(typeof r=="bigint")return V.from(r.toString());if(nr(r))return V.from(Kt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return V.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Jt(i)||i[0]==="-"&&Jt(i.substring(1))))return V.from(i)}return Ae.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function mr(e){if(typeof e!="string")return mr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Ae.throwArgumentError("invalid hex","value",e),e=mr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function zt(e){return V.from(mr(e))}function j(e){const t=V.from(e).toHexString();return t[0]==="-"?new Fr("-"+t.substring(3),16):new Fr(t.substring(2),16)}function Zt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),Ae.throwError(e,z.errors.NUMERIC_FAULT,i)}function Us(e){return new Fr(e,36).toString(16)}const Ht=new z(Yn),Ar={},Xn=V.from(0),Zn=V.from(-1);function $n(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Ht.throwError(e,z.errors.NUMERIC_FAULT,n)}let br="0";for(;br.length<256;)br+=br;function Ii(e){if(typeof e!="number")try{e=V.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+br.substring(0,e):Ht.throwArgumentError("invalid decimal size","decimals",e)}function _i(e,t){t==null&&(t=0);const r=Ii(t);e=V.from(e);const i=e.lt(Xn);i&&(e=e.mul(Zn));let n=e.mod(r).toString();for(;n.length2&&Ht.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&$n("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?A:(typeof t[h]!==p&&Ht.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Ht.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Ht.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new vr(Ar,r,i,n)}}class Ut{constructor(t,r,i,n){t!==Ar&&Ht.throwError("cannot use FixedNumber constructor; use FixedNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ht.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(tf.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(tf.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ht.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=Ut.from("1"+br.substring(0,t),this.format),n=ks.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ht.throwArgumentError("invalid byte width","width",t);const r=V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return oe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ut.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Ts(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),Ut.fromString(_i(t,r),vr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=vr.from(r),n=be(t,i.decimals);!i.signed&&n.lt(Xn)&&$n("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=oe(o,i.width/8));const h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=vr.from(r);if(Ot(t).length>i.width/8)throw new Error("overflow");let n=V.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static from(t,r){if(typeof t=="string")return Ut.fromString(t,r);if(nr(t))return Ut.fromBytes(t,r);try{return Ut.fromValue(t,0,r)}catch(i){if(i.code!==z.errors.INVALID_ARGUMENT)throw i}return Ht.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const tf=Ut.from(1),ks=Ut.from("0.5"),qs="strings/5.7.0",ef=new z(qs);var Tr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Tr||(Tr={}));var fr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(fr||(fr={}));function Ks(e,t,r,i,n){return ef.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function rf(e,t,r,i,n){if(e===fr.BAD_PREFIX||e===fr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===fr.OVERRUN?r.length-t-1:0}function Hs(e,t,r,i,n){return e===fr.OVERLONG?(i.push(n),0):(i.push(65533),rf(e,t,r))}Object.freeze({error:Ks,ignore:rf,replace:Hs});function Bi(e,t=Tr.current){t!=Tr.current&&(ef.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Ot(r)}function Ls(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function nf(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}nf("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Ci("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Ci("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ci("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Ls),nf("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const ff="hash/5.7.0";function zs(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function js(e){const t={};for(let r=0;r>--A&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,C=S-1;let F=0;for(let H=0;H1;){let Vt=L+Pt>>>1;H>>1|w(),W=W<<1^I,Rt=(Rt^I)<<1|I|1;J=W,Bt=1+Rt-W}let G=i-4;return U.map(H=>{switch(H-G){case 3:return G+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return G+256+(e[p++]<<8|e[p++]);case 1:return G+e[p++];default:return H-1}})}function Js(e){let t=0;return()=>e[t++]}function Gs(e){return Js(Qs(e))}function Ys(e){return e&1?~e>>1:e>>1}function Vs(e,t){let r=Array(e);for(let i=0;it[h]):r}function Xs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push($s(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(t0(r,e))}return js(of(t))}function Zs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function af(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function $s(e,t){let r=1+t(),i=t(),n=Zs(t),o=af(n.length,1+e,t);return of(o.map((h,p)=>{const A=h[0],v=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[A+y*r,v.map(I=>I+S)]})}))}function t0(e,t){let r=1+t();return af(r,1+e,t).map(n=>[n[0],n.slice(1)])}function e0(e){let t=Ur(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let v=Ur(e,t);if(v.length==0)break;i.push({set:new Set(v),node:r()})}i.sort((v,w)=>w.set.size-v.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,A=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:A}}}function r0(){return Gs(zs("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"))}const kr=r0();new Set(Ur(kr)),new Set(Ur(kr)),Xs(kr),e0(kr),new z(ff);const i0=new Uint8Array(32);i0.fill(0);const n0=`Ethereum Signed Message: ++`;function uf(e){return typeof e=="string"&&(e=Bi(e)),Si(Cs([Bi(n0),Bi(String(e.length)),e]))}const f0="rlp/5.7.0";new z(f0);const o0="address/5.7.0",yr=new z(o0);function hf(e){Jt(e,20)||yr.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Ot(Si(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const s0=9007199254740991;function a0(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ri={};for(let e=0;e<10;e++)Ri[String(e)]=String(e);for(let e=0;e<26;e++)Ri[String.fromCharCode(65+e)]=String(10+e);const cf=Math.floor(a0(s0));function u0(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ri[i]).join("");for(;t.length>=cf;){let i=t.substring(0,cf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function h0(e){let t=null;if(typeof e!="string"&&yr.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=hf(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&yr.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==u0(e)&&yr.throwArgumentError("bad icap checksum","address",e),t=Us(e.substring(4));t.length<40;)t="0"+t;t=hf("0x"+t)}else yr.throwArgumentError("invalid address","address",e);return t}const c0="properties/5.7.0";new z(c0);function wr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new z(ff);const l0=new Uint8Array(32);l0.fill(0),V.from(-1);const d0=V.from(0),p0=V.from(1);V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oe(p0.toHexString(),32),oe(d0.toHexString(),32);var se={},Q={},xr=lf;function lf(e,t){if(!e)throw new Error(t||"Assertion failed")}lf.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var Oi={exports:{}};typeof Object.create=="function"?Oi.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Oi.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var v0=xr,g0=Oi.exports;Q.inherits=g0;function m0(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function A0(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):m0(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Q.htonl=df;function y0(e,t){for(var r="",i=0;i>>0}return o}Q.join32=w0;function x0(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}Q.split32=x0;function M0(e,t){return e>>>t|e<<32-t}Q.rotr32=M0;function E0(e,t){return e<>>32-t}Q.rotl32=E0;function S0(e,t){return e+t>>>0}Q.sum32=S0;function N0(e,t,r){return e+t+r>>>0}Q.sum32_3=N0;function I0(e,t,r,i){return e+t+r+i>>>0}Q.sum32_4=I0;function _0(e,t,r,i,n){return e+t+r+i+n>>>0}Q.sum32_5=_0;function B0(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}Q.sum64=B0;function C0(e,t,r,i){var n=t+i>>>0,o=(n>>0}Q.sum64_hi=C0;function R0(e,t,r,i){var n=t+i;return n>>>0}Q.sum64_lo=R0;function O0(e,t,r,i,n,o,h,p){var A=0,v=t;v=v+i>>>0,A+=v>>0,A+=v>>0,A+=v>>0}Q.sum64_4_hi=O0;function P0(e,t,r,i,n,o,h,p){var A=t+i+o+p;return A>>>0}Q.sum64_4_lo=P0;function D0(e,t,r,i,n,o,h,p,A,v){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}Q.sum64_5_hi=D0;function F0(e,t,r,i,n,o,h,p,A,v){var w=t+i+o+p+v;return w>>>0}Q.sum64_5_lo=F0;function T0(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}Q.rotr64_hi=T0;function U0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.rotr64_lo=U0;function k0(e,t,r){return e>>>r}Q.shr64_hi=k0;function q0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.shr64_lo=q0;var or={},gf=Q,K0=xr;function qr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}or.BlockHash=qr,qr.prototype.update=function(t,r){if(t=gf.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=gf.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}ae.g0_256=Q0;function J0(e){return ue(e,17)^ue(e,19)^e>>>10}ae.g1_256=J0;var ar=Q,G0=or,Y0=ae,Pi=ar.rotl32,Mr=ar.sum32,V0=ar.sum32_5,W0=Y0.ft_1,yf=G0.BlockHash,X0=[1518500249,1859775393,2400959708,3395469782];function he(){if(!(this instanceof he))return new he;yf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ar.inherits(he,yf);var Z0=he;he.blockSize=512,he.outSize=160,he.hmacStrength=80,he.padLength=64,he.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),qa(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?A.push(y,S):A.push(S)}return A}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",A=0;A(S>>1)-1?C=(S>>1)-F:C=F,I.isubn(C)):C=0,y[N]=C,I.iushrn(1)}return y}r.getNAF=i;function n(A,v){var w=[[],[]];A=A.clone(),v=v.clone();for(var y=0,S=0,I;A.cmpn(-y)>0||v.cmpn(-S)>0;){var N=A.andln(3)+y&3,C=v.andln(3)+S&3;N===3&&(N=-1),C===3&&(C=-1);var F;N&1?(I=A.andln(7)+y&7,(I===3||I===5)&&C===2?F=-N:F=N):F=0,w[0].push(F);var U;C&1?(I=v.andln(7)+S&7,(I===3||I===5)&&N===2?U=-C:U=C):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),A.iushrn(1),v.iushrn(1)}return w}r.getJSF=n;function o(A,v,w){var y="_"+v;A.prototype[v]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(A){return typeof A=="string"?r.toArray(A,"hex"):A}r.parseBytes=h;function p(A){return new K(A,"hex","le")}r.intFromLE=p}),Hr=Gt.getNAF,La=Gt.getJSF,Lr=Gt.assert;function Ce(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ze=Ce;Ce.prototype.point=function(){throw new Error("Not implemented")},Ce.prototype.validate=function(){throw new Error("Not implemented")},Ce.prototype._fixedNafMul=function(t,r){Lr(t.precomputed);var i=t._getDoubles(),n=Hr(r,1,this._bitLength),o=(1<=p;v--)A=(A<<1)+n[v];h.push(A)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;A--){for(var v=0;A>=0&&h[A]===0;A--)v++;if(A>=0&&v++,p=p.dblp(v),A<0)break;var w=h[A];Lr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Ce.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,A=this._wnafT3,v=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,C=w;if(h[N]!==1||h[C]!==1){A[N]=Hr(i[N],h[N],this._bitLength),A[C]=Hr(i[C],h[C],this._bitLength),v=Math.max(A[N].length,v),v=Math.max(A[C].length,v);continue}var F=[r[N],null,null,r[C]];r[N].y.cmp(r[C].y)===0?(F[1]=r[N].add(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg())):r[N].y.cmp(r[C].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].add(r[C].neg())):(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],J=La(i[N],i[C]);for(v=Math.max(J[0].length,v),A[N]=new Array(v),A[C]=new Array(v),y=0;y=0;w--){for(var Pt=0;w>=0;){var W=!0;for(y=0;y=0&&Pt++,H=H.dblp(Pt),w<0)break;for(y=0;y0?S=p[y][Rt-1>>1]:Rt<0&&(S=p[y][-Rt-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},$t.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=v,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},te.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),A=h.mul(n.a),v=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(A),S=v.add(w).neg();return{k1:y,k2:S}},te.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},te.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},te.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Ft.prototype.isInfinity=function(){return this.inf},Ft.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Ft.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Ft.prototype.getX=function(){return this.x.fromRed()},Ft.prototype.getY=function(){return this.y.fromRed()},Ft.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ft.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Ft.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Ft.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ft.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Tt(e,t,r,i){Ze.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}qi(Tt,Ze.BasePoint),te.prototype.jpoint=function(t,r,i){return new Tt(this,t,r,i)},Tt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Tt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Tt.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),A=n.redSub(o),v=h.redSub(p);if(A.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=A.redSqr(),y=w.redMul(A),S=n.redMul(w),I=v.redSqr().redIAdd(y).redISub(S).redISub(S),N=v.redMul(S.redISub(I)).redISub(h.redMul(y)),C=this.z.redMul(t.z).redMul(A);return this.curve.jpoint(I,N,C)},Tt.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),A=o.redSub(h);if(p.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=p.redSqr(),w=v.redMul(p),y=i.redMul(v),S=A.redSqr().redIAdd(w).redISub(y).redISub(y),I=A.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Tt.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Tt.prototype.inspect=function(){return this.isInfinity()?"":""},Tt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var zr=lr(function(e,t){var r=t;r.base=Ze,r.short=ja,r.mont=null,r.edwards=null}),jr=lr(function(e,t){var r=t,i=Gt.assert;function n(p){p.type==="short"?this.curve=new zr.short(p):p.type==="edwards"?this.curve=new zr.edwards(p):this.curve=new zr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,A){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var v=new n(A);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:v}),v}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:se.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:se.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:se.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:se.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:se.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:se.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=fe.toArray(e.entropy,e.entropyEnc||"hex"),r=fe.toArray(e.nonce,e.nonceEnc||"hex"),i=fe.toArray(e.pers,e.persEnc||"hex");ki(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Ff=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=fe.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var Qa=Gt.assert;function Qr(e,t){if(e instanceof Qr)return e;this._importDER(e,t)||(Qa(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var Jr=Qr;function Ja(){this.place=0}function Li(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Tf(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Qr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Tf(r),i=Tf(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];zi(n,r.length),n=n.concat(r),n.push(2),zi(n,i.length);var o=n.concat(i),h=[48];return zi(h,o.length),h=h.concat(o),Gt.encode(h,t)};var Ga=function(){throw new Error("unsupported")},Uf=Gt.assert;function ee(e){if(!(this instanceof ee))return new ee(e);typeof e=="string"&&(Uf(Object.prototype.hasOwnProperty.call(jr,e),"Unknown curve "+e),e=jr[e]),e instanceof jr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var Ya=ee;ee.prototype.keyPair=function(t){return new Hi(this,t)},ee.prototype.keyFromPrivate=function(t,r){return Hi.fromPrivate(this,t,r)},ee.prototype.keyFromPublic=function(t,r){return Hi.fromPublic(this,t,r)},ee.prototype.genKeyPair=function(t){t||(t={});for(var r=new Ff({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Ga(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},ee.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},ee.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),A=new Ff({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),v=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(A.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(v)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var C=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(C=C.umod(this.n),C.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&C.cmp(this.nh)>0&&(C=this.n.sub(C),F^=1),new Jr({r:N,s:C,recoveryParam:F})}}}}}},ee.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new Jr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),A=p.mul(t).umod(this.n),v=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},ee.prototype.recoverPubKey=function(e,t,r,i){Uf((3&r)===r,"The recovery param is more than two bits"),t=new Jr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,A=r&1,v=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?h=this.curve.pointFromX(h.add(this.curve.n),A):h=this.curve.pointFromX(h,A);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},ee.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new Jr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var Va=lr(function(e,t){var r=t;r.version="6.5.4",r.utils=Gt,r.rand=function(){throw new Error("unsupported")},r.curve=zr,r.curves=jr,r.ec=Ya,r.eddsa=null}),Wa=Va.ec;const Xa="signing-key/5.7.0",ji=new z(Xa);let Qi=null;function ve(){return Qi||(Qi=new Wa("secp256k1")),Qi}class Za{constructor(t){wr(this,"curve","secp256k1"),wr(this,"privateKey",Kt(t)),Os(this.privateKey)!==32&&ji.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=ve().keyFromPrivate(Ot(this.privateKey));wr(this,"publicKey","0x"+r.getPublic(!1,"hex")),wr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),wr(this,"_isSigningKey",!0)}_addPoint(t){const r=ve().keyFromPublic(Ot(this.publicKey)),i=ve().keyFromPublic(Ot(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=Ot(t);i.length!==32&&ji.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return Jn({recoveryParam:n.recoveryParam,r:oe("0x"+n.r.toString(16),32),s:oe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=ve().keyFromPublic(Ot(kf(t)));return oe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function $a(e,t){const r=Jn(t),i={r:Ot(r.r),s:Ot(r.s)};return"0x"+ve().recoverPubKey(Ot(e),i,r.recoveryParam).encode("hex",!1)}function kf(e,t){const r=Ot(e);if(r.length===32){const i=new Za(r);return t?"0x"+ve().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Kt(r):"0x"+ve().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+ve().keyFromPublic(r).getPublic(!0,"hex"):Kt(r)}return ji.throwArgumentError("invalid public or private key","key","[REDACTED]")}const tu="transactions/5.7.0";new z(tu);var qf;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(qf||(qf={}));function eu(e){const t=kf(e);return h0(Qn(Si(Qn(t,1)),12))}function ru(e,t){return eu($a(Ot(e),t))}const iu="https://rpc.walletconnect.com/v1";async function Kf(e,t,r,i,n,o){switch(r.t){case"eip191":return Hf(e,t,r.s);case"eip1271":return await Lf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Hf(e,t,r){return ru(uf(t),r).toLowerCase()===e.toLowerCase()}async function Lf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",A="0000000000000000000000000000000000000000000000000000000000000041",v=r.substring(2),w=uf(t).substring(2),y=h+w+p+A+v,S=await fetch(`${o||iu}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:nu(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function nu(){return Date.now()+Math.floor(Math.random()*1e3)}var fu=Object.defineProperty,ou=Object.defineProperties,su=Object.getOwnPropertyDescriptors,zf=Object.getOwnPropertySymbols,au=Object.prototype.hasOwnProperty,uu=Object.prototype.propertyIsEnumerable,jf=(e,t,r)=>t in e?fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ji=(e,t)=>{for(var r in t||(t={}))au.call(t,r)&&jf(e,r,t[r]);if(zf)for(var r of zf(t))uu.call(t,r)&&jf(e,r,t[r]);return e},Qf=(e,t)=>ou(e,su(t));const hu="did:pkh:",Gr=e=>e?.split(":"),Gi=e=>{const t=e&&Gr(e);if(t)return e.includes(hu)?t[3]:t[1]},cu=e=>{const t=e&&Gr(e);if(t)return t[2]+":"+t[3]},Yi=e=>{const t=e&&Gr(e);if(t)return t.pop()};async function lu(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=Jf(n,n.iss),h=Yi(n.iss);return await Kf(h,o,i,Gi(n.iss),r)}const Jf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=Yi(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${Gi(t)}`,A=`Nonce: ${e.nonce}`,v=`Issued At: ${e.iat}`,w=e.exp?`Expiration Time: ${e.exp}`:void 0,y=e.nbf?`Not Before: ${e.nbf}`:void 0,S=e.requestId?`Request ID: ${e.requestId}`:void 0,I=e.resources?`Resources:${e.resources.map(C=>` ++- ${C}`).join("")}`:void 0,N=Vr(e.resources);if(N){const C=Oe(N);n=Xi(n,C)}return[r,i,"",n,"",o,h,p,A,v,w,y,S,I].filter(C=>C!=null).join(` ++`)};function du(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function pu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=wi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const A=Gf(r.resources);if(!A)return r;ge(A);const v=Yf(A,"eip155");let w=r?.resources||[];if(v!=null&&v.length){const y=Vf(v),S=wi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=Vi("request",S,{chains:p}),N=$f(A,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(Yr(N))}return Qf(Ji({},r),{statement:eo(o,Vr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function Gf(e){const t=Vr(e);if(t&&Wi(t))return Oe(t)}function vu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Yf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function gu(e){return e?.map(t=>Object.keys(t))||[]}function Vf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Wf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function Xf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function ge(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Zf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:Vi(t,r,i)}}}function $f(e,t,r){var i;return e.att[t]=Ji({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function Vi(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function Yr(e){return ge(e),`urn:recap:${Wf(e).replace(/=/g,"")}`}function Oe(e){const t=Xf(e.replace("urn:recap:",""));return ge(t),t}function mu(e,t,r){const i=Zf(e,t,r);return Yr(i)}function Wi(e){return e&&e.includes("urn:recap:")}function Au(e,t){const r=Oe(e),i=Oe(t),n=to(r,i);return Yr(n)}function to(e,t){ge(e),ge(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,A)=>p.localeCompare(A)).forEach(p=>{var A,v;i.att[n]=Qf(Ji({},i.att[n]),{[p]:((A=e.att[n])==null?void 0:A[p])||((v=t.att[n])==null?void 0:v[p])})})}),i}function Xi(e="",t){ge(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const A=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));A.sort((y,S)=>y.action.localeCompare(S.action));const v={};A.forEach(y=>{v[y.ability]||(v[y.ability]=[]),v[y.ability].push(y.action)});const w=Object.keys(v).map(y=>(n++,`(${n}) '${y}': '${v[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function bu(e){var t;const r=Oe(e);ge(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function yu(e){const t=Oe(e);ge(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function eo(e,t){if(!t)return e;const r=Oe(t);return ge(r),Xi(e,r)}function Vr(e){if(!e)return;const t=e?.[e.length-1];return Wi(t)?t:void 0}const Zi="base10",Lt="base16",$i="base64pad",wu="base64url",dr="utf8",tn=0,pr=1,Sr=2,xu=0,ro=1,Nr=12,en=32;function Mu(){const e=gn.generateKeyPair();return{privateKey:Qt(e.secretKey,Lt),publicKey:Qt(e.publicKey,Lt)}}function Eu(){const e=Cr(en);return Qt(e,Lt)}function Su(e,t){const r=gn.sharedKey(Xt(e,Lt),Xt(t,Lt),!0),i=new Ko(pn,r).expand(en);return Qt(i,Lt)}function Nu(e){const t=vn(Xt(e,Lt));return Qt(t,Lt)}function Iu(e){const t=vn(Xt(e,dr));return Qt(t,Lt)}function rn(e){return Xt(`${e}`,Zi)}function $e(e){return Number(Qt(e,Zi))}function _u(e){const t=rn(typeof e.type<"u"?e.type:tn);if($e(t)===pr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?Xt(e.senderPublicKey,Lt):void 0,i=typeof e.iv<"u"?Xt(e.iv,Lt):Cr(Nr),n=new dn(Xt(e.symKey,Lt)).seal(i,Xt(e.message,dr));return nn({type:t,sealed:n,iv:i,senderPublicKey:r,encoding:e.encoding})}function Bu(e,t){const r=rn(Sr),i=Cr(Nr),n=Xt(e,dr);return nn({type:r,sealed:n,iv:i,encoding:t})}function Cu(e){const t=new dn(Xt(e.symKey,Lt)),{sealed:r,iv:i}=Wr({encoded:e.encoded,encoding:e?.encoding}),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return Qt(n,dr)}function Ru(e,t){const{sealed:r}=Wr({encoded:e,encoding:t});return Qt(r,dr)}function nn(e){const{encoding:t=$i}=e;if($e(e.type)===Sr)return Qt(vi([e.type,e.sealed]),t);if($e(e.type)===pr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Qt(vi([e.type,e.senderPublicKey,e.iv,e.sealed]),t)}return Qt(vi([e.type,e.iv,e.sealed]),t)}function Wr(e){const{encoded:t,encoding:r=$i}=e,i=Xt(t,r),n=i.slice(xu,ro),o=ro;if($e(n)===pr){const v=o+en,w=v+Nr,y=i.slice(o,v),S=i.slice(v,w),I=i.slice(w);return{type:n,sealed:I,iv:S,senderPublicKey:y}}if($e(n)===Sr){const v=i.slice(o),w=Cr(Nr);return{type:n,sealed:v,iv:w}}const h=o+Nr,p=i.slice(o,h),A=i.slice(h);return{type:n,sealed:A,iv:p}}function Ou(e,t){const r=Wr({encoded:e,encoding:t?.encoding});return io({type:$e(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?Qt(r.senderPublicKey,Lt):void 0,receiverPublicKey:t?.receiverPublicKey})}function io(e){const t=e?.type||tn;if(t===pr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function Pu(e){return e.type===pr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}function Du(e){return e.type===Sr}function no(e){return new Ho("p256").keyFromPublic({x:Buffer.from(e.x,"base64").toString("hex"),y:Buffer.from(e.y,"base64").toString("hex")},"hex")}function Fu(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");const r=t.length%4;return r>0&&(t+="=".repeat(4-r)),t}function Tu(e){return Buffer.from(Fu(e),"base64")}function Uu(e,t){const[r,i,n]=e.split("."),o=Tu(n);if(o.length!==64)throw new Error("Invalid signature length");const h=o.slice(0,32).toString("hex"),p=o.slice(32,64).toString("hex"),A=`${r}.${i}`,v=new pn().update(Buffer.from(A)).digest(),w=no(t),y=Buffer.from(v).toString("hex");if(!w.verify(y,{r:h,s:p}))throw new Error("Invalid signature");return Lo(e).payload}const fo="irn";function ku(e){return e?.relay||{protocol:fo}}function qu(e){const t=zo[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Ku=Object.defineProperty,Hu=Object.defineProperties,Lu=Object.getOwnPropertyDescriptors,oo=Object.getOwnPropertySymbols,zu=Object.prototype.hasOwnProperty,ju=Object.prototype.propertyIsEnumerable,so=(e,t,r)=>t in e?Ku(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ao=(e,t)=>{for(var r in t||(t={}))zu.call(t,r)&&so(e,r,t[r]);if(oo)for(var r of oo(t))ju.call(t,r)&&so(e,r,t[r]);return e},Qu=(e,t)=>Hu(e,Lu(t));function uo(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Ju(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Br.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:ho(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:uo(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function ho(e){return e.startsWith("//")?e.substring(2):e}function co(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Gu(e){return`${e.protocol}:${e.topic}@${e.version}?`+Br.stringify(ao(Qu(ao({symKey:e.symKey},co(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}function Yu(e,t,r){return`${e}?wc_ev=${r}&topic=${t}`}var Vu=Object.defineProperty,Wu=Object.defineProperties,Xu=Object.getOwnPropertyDescriptors,lo=Object.getOwnPropertySymbols,Zu=Object.prototype.hasOwnProperty,$u=Object.prototype.propertyIsEnumerable,po=(e,t,r)=>t in e?Vu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,th=(e,t)=>{for(var r in t||(t={}))Zu.call(t,r)&&po(e,r,t[r]);if(lo)for(var r of lo(t))$u.call(t,r)&&po(e,r,t[r]);return e},eh=(e,t)=>Wu(e,Xu(t));function tr(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function vo(e){const t=[];return Object.values(e).forEach(r=>{t.push(...tr(r.accounts))}),t}function go(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.methods)}),r}function mo(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.events)}),r}function rh(e,t){const r=_o(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function ih(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=on(t),o=on(r),h={};Object.keys(i).forEach(v=>{const w=i[v].chains,y=i[v].methods,S=i[v].events,I=i[v].accounts;w.forEach(N=>{if(!I.some(C=>C.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${v}`)}),h[v]={chains:w,methods:y,events:S,accounts:I}});const p=Co(t,h,"approve()");if(p)throw new Error(p.message);const A={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(v=>{const w=i[v].chains.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.chains)==null?void 0:F.includes(N)}),y=i[v].methods.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.methods)==null?void 0:F.includes(N)}),S=i[v].events.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[v].accounts.filter(C=>C.includes(`${N}:`))).flat();A[v]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(v=>{var w,y,S,I,N,C;if(!i[v])return;const F=(y=(w=o[v])==null?void 0:w.chains)==null?void 0:y.filter(G=>i[v].chains.includes(G)),U=i[v].methods.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.methods)==null?void 0:L.includes(G)}),J=i[v].events.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.events)==null?void 0:L.includes(G)}),Bt=F?.map(G=>i[v].accounts.filter(H=>H.includes(`${G}:`))).flat();A[v]={chains:me((S=A[v])==null?void 0:S.chains,F),methods:me((I=A[v])==null?void 0:I.methods,U),events:me((N=A[v])==null?void 0:N.events,J),accounts:me((C=A[v])==null?void 0:C.accounts,Bt)}}),A)}function fn(e){return e.includes(":")}function Ao(e){return fn(e)?e.split(":")[0]:e}function on(e){var t,r,i;const n={};if(!Xr(e))return n;for(const[o,h]of Object.entries(e)){const p=fn(o)?[o]:h.chains,A=h.methods||[],v=h.events||[],w=Ao(o);n[w]=eh(th({},n[w]),{chains:me(p,(t=n[w])==null?void 0:t.chains),methods:me(A,(r=n[w])==null?void 0:r.methods),events:me(v,(i=n[w])==null?void 0:i.events)})}return n}function bo(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function nh(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=bo(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=me(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const yo={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},wo={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function xe(e,t){const{message:r,code:i}=wo[e];return{message:t?`${r} ${t}`:r,code:i}}function er(e,t){const{message:r,code:i}=yo[e];return{message:t?`${r} ${t}`:r,code:i}}function Ir(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Xr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Pe(e){return typeof e>"u"}function Yt(e,t){return t&&Pe(e)?!0:typeof e=="string"&&!!e.trim().length}function Zr(e,t){return t&&Pe(e)?!0:typeof e=="number"&&!isNaN(e)}function fh(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return _e(n,i)?(i.forEach(h=>{const{accounts:p,methods:A,events:v}=e.namespaces[h],w=tr(p),y=r[h];(!_e(Or(h,y),w)||!_e(y.methods,A)||!_e(y.events,v))&&(o=!1)}),o):!1}function _r(e){return Yt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function xo(e){if(Yt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&_r(r)}}return!1}function oh(e){if(Yt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function sh(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function ah(e){return e?.topic}function uh(e,t){let r=null;return Yt(e?.publicKey,!1)||(r=xe("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function sn(e){let t=!0;return Ir(e)?e.length&&(t=e.every(r=>Yt(r,!1))):t=!1,t}function Mo(e,t,r){let i=null;return Ir(t)&&t.length?t.forEach(n=>{i||_r(n)||(i=er("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):_r(e)||(i=er("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Eo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=Mo(n,Or(n,o),`${t} ${r}`);h&&(i=h)}),i}function So(e,t){let r=null;return Ir(e)?e.forEach(i=>{r||xo(i)||(r=er("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=er("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function No(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=So(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function Io(e,t){let r=null;return sn(e?.methods)?sn(e?.events)||(r=er("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=er("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function an(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Io(i,`${t}, namespace`);n&&(r=n)}),r}function hh(e,t,r){let i=null;if(e&&Xr(e)){const n=an(e,t);n&&(i=n);const o=Eo(e,t,r);o&&(i=o)}else i=xe("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function _o(e,t){let r=null;if(e&&Xr(e)){const i=an(e,t);i&&(r=i);const n=No(e,t);n&&(r=n)}else r=xe("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function Bo(e){return Yt(e.protocol,!0)}function ch(e,t){let r=!1;return t&&!e?r=!0:e&&Ir(e)&&e.length&&e.forEach(i=>{r=Bo(i)}),r}function lh(e){return typeof e=="number"}function dh(e){return typeof e<"u"&&typeof e!==null}function ph(e){return!(!e||typeof e!="object"||!e.code||!Zr(e.code,!1)||!e.message||!Yt(e.message,!1))}function vh(e){return!(Pe(e)||!Yt(e.method,!1))}function gh(e){return!(Pe(e)||Pe(e.result)&&Pe(e.error)||!Zr(e.id,!1)||!Yt(e.jsonrpc,!1))}function mh(e){return!(Pe(e)||!Yt(e.name,!1))}function Ah(e,t){return!(!_r(t)||!vo(e).includes(t))}function bh(e,t,r){return Yt(r,!1)?go(e,t).includes(r):!1}function yh(e,t,r){return Yt(r,!1)?mo(e,t).includes(r):!1}function Co(e,t,r){let i=null;const n=wh(e),o=xh(t),h=Object.keys(n),p=Object.keys(o),A=Ro(Object.keys(e)),v=Ro(Object.keys(t)),w=A.filter(y=>!v.includes(y));return w.length&&(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++ Required: ${w.toString()} ++ Received: ${Object.keys(t).toString()}`)),_e(h,p)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. ++ Required: ${h.toString()} ++ Approved: ${p.toString()}`)),Object.keys(t).forEach(y=>{if(!y.includes(":")||i)return;const S=tr(t[y].accounts);S.includes(y)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${y} ++ Required: ${y} ++ Approved: ${S.toString()}`))}),h.forEach(y=>{i||(_e(n[y].methods,o[y].methods)?_e(n[y].events,o[y].events)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function wh(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function Ro(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function xh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=tr(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function Mh(e,t){return Zr(e,!1)&&e<=t.max&&e>=t.min}function Eh(){const e=We();return new Promise(t=>{switch(e){case qt.browser:t(Oo());break;case qt.reactNative:t(Po());break;case qt.node:t(Do());break;default:t(!0)}})}function Oo(){return gr()&&navigator?.onLine}async function Po(){if(rr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Do(){return!0}function Sh(e){switch(We()){case qt.browser:Fo(e);break;case qt.reactNative:To(e);break;case qt.node:break}}function Fo(e){!rr()&&gr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function To(e){rr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const un={};class Nh{static get(t){return un[t]}static set(t,r){un[t]=r}static delete(t){delete un[t]}}export{Zi as BASE10,Lt as BASE16,$i as BASE64,wu as BASE64URL,Zo as COLON,Ai as DEFAULT_DEPTH,Pr as EMPTY_SPACE,qt as ENV_MAP,wo as INTERNAL_ERRORS,Nh as MemoryStore,$o as ONE_THOUSAND,Nn as REACT_NATIVE_PRODUCT,fo as RELAYER_DEFAULT_PROTOCOL,yo as SDK_ERRORS,_n as SDK_TYPE,In as SLASH,tn as TYPE_0,pr as TYPE_1,Sr as TYPE_2,dr as UTF8,$f as addResourceToRecap,Bn as appendToQueryString,fs as assertType,Vi as assignAbilityToActions,Xf as base64Decode,Wf as base64Encode,ih as buildApprovedNamespaces,du as buildAuthObject,nh as buildNamespacesFromAuth,eo as buildRecapStatement,ms as calcExpiry,cs as capitalize,Fn as capitalizeWord,ls as createDelayedPromise,mu as createEncodedRecap,ds as createExpiringPromise,Zf as createRecap,Oe as decodeRecap,$e as decodeTypeByte,Ru as decodeTypeTwoEnvelope,Cu as decrypt,Su as deriveSymKey,Wr as deserialize,Yr as encodeRecap,rn as encodeTypeByte,Bu as encodeTypeTwoEnvelope,_u as encrypt,bs as engineEvent,hs as enumify,bn as formatAccountId,jo as formatAccountWithChain,An as formatChainId,yi as formatExpirerTarget,vs as formatIdTarget,Jf as formatMessage,os as formatMessageContext,co as formatRelayParams,is as formatRelayRpcUrl,Xi as formatStatementFromRecap,ps as formatTopicTarget,On as formatUA,Gu as formatUri,Mu as generateKeyPair,Eu as generateRandomBytes32,tr as getAccountsChains,Jo as getAccountsFromNamespaces,yn as getAddressFromAccount,Qo as getAddressesFromAccounts,es as getAppMetadata,Oo as getBrowserOnlineStatus,ts as getBundleId,wn as getChainFromAccount,xn as getChainsFromAccounts,Or as getChainsFromNamespace,Go as getChainsFromNamespaces,yu as getChainsFromRecap,Yo as getChainsFromRequiredNamespaces,wi as getCommonValuesInArrays,no as getCryptoKeyFromKeyData,Gf as getDecodedRecapFromResources,ws as getDeepLink,Yi as getDidAddress,Gr as getDidAddressSegments,Gi as getDidChainId,We as getEnvironment,ns as getHttpUrl,xe as getInternalError,Rn as getJavascriptID,Cn as getJavascriptOS,Dn as getLastItems,Yu as getLinkModeURL,bu as getMethodsFromRecap,cu as getNamespacedDidChainId,vo as getNamespacesChains,mo as getNamespacesEventsForChainId,bo as getNamespacesFromAccounts,go as getNamespacesMethodsForChainId,Do as getNodeOnlineStatus,Vf as getReCapActions,Po as getReactNativeOnlineStatus,gu as getRecapAbilitiesFromResource,Vr as getRecapFromResources,Yf as getRecapResource,rs as getRelayClientMetadata,qu as getRelayProtocolApi,ku as getRelayProtocolName,rh as getRequiredNamespacesFromNamespaces,er as getSdkError,xs as getSearchParamFromURL,mi as getUniqueValues,ys as handleDeeplinkRedirect,_e as hasOverlap,Nu as hashKey,Iu as hashMessage,gr as isBrowser,fn as isCaipNamespace,Co as isConformingNamespaces,As as isExpired,bi as isNode,Eh as isOnline,sh as isProposalStruct,rr as isReactNative,Wi as isRecap,fh as isSessionCompatible,ah as isSessionStruct,Pu as isTypeOneEnvelope,Du as isTypeTwoEnvelope,Pe as isUndefined,xo as isValidAccountId,So as isValidAccounts,Io as isValidActions,Ir as isValidArray,_r as isValidChainId,Mo as isValidChains,uh as isValidController,Lf as isValidEip1271Signature,Hf as isValidEip191Signature,ph as isValidErrorReason,mh as isValidEvent,lh as isValidId,No as isValidNamespaceAccounts,an as isValidNamespaceActions,Eo as isValidNamespaceChains,sn as isValidNamespaceMethodsOrEvents,_o as isValidNamespaces,Ah as isValidNamespacesChainId,yh as isValidNamespacesEvent,bh as isValidNamespacesRequest,Zr as isValidNumber,Xr as isValidObject,dh as isValidParams,ge as isValidRecap,Bo as isValidRelay,ch as isValidRelays,vh as isValidRequest,Mh as isValidRequestExpiry,hh as isValidRequiredNamespaces,gh as isValidResponse,Yt as isValidString,oh as isValidUrl,us as mapEntries,ss as mapToObj,me as mergeArrays,Au as mergeEncodedRecaps,to as mergeRecaps,on as normalizeNamespaces,as as objToMap,gi as parseAccountId,mn as parseChainId,Pn as parseContextNames,gs as parseExpirerTarget,Ao as parseNamespaceKey,uo as parseRelayParams,ho as parseTopic,Ju as parseUri,pu as populateAuthPayload,vu as recapHasResource,nn as serialize,Fo as subscribeToBrowserNetworkChange,Sh as subscribeToNetworkChange,To as subscribeToReactNativeNetworkChange,Ms as uuidv4,Ou as validateDecoding,io as validateEncoding,lu as validateSignedCacao,Uu as verifyP256Jwt,Kf as verifySignature}; ++//# sourceMappingURL=index.es.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.es.js.map b/node_modules/@walletconnect/utils/dist/index.es.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..1eeba5f0a497cd2413ea5f8a874b75483ee9d6f4 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.es.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.es.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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jB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAA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GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI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AG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CA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CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;KACd,WAAW,GAAG,UAAU,CAAC;IAC1B;AACH;GACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;KAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C;AACA;AACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;OACrB,OAAO,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;OACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;SAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;AAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;SACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;AACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;SACzB,MAAM,IAAI,SAAS,CAAC;QACrB;OACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACrB,KAAK,GAAG,MAAM,CAAC;OACf,MAAM,GAAG,OAAO,CAAC;MAClB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3B,MAAK,MAAM;AACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;AACL;AACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IACrB;AACH;GACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACvC;AACA;AACA;KACI,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;KAC7C,IAAI,GAAG,CAAC;KACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;OAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;OACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;OACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,MAAK,MAAM;OACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MAClC;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AAqMJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;OAC/C,KAAK,KAAK,EAAE,CAAC;OACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACnC;AACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;OACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;MAChC;AACL;AACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;AACL;KACI,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;KACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;AACA;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;KACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;OAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;MACvB;AACL;AACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;OAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;SACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;SACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB;MACF;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;KAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;AACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;SAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/B;AACP;OACM,IAAI,KAAK,EAAE;SACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;MACF;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC;AACP;OACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;AACP;AACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;MAClB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AAC7C;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;AAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;KAC9C,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,EAAE;OACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACpC,MAAK,MAAM;OACL,CAAC,GAAG,CAAC,CAAC;MACP;AACL;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;KACI,CAAC,IAAI,CAAC,CAAC;KACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACA;KACI,IAAI,WAAW,EAAE;AACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC;AACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;MACxB;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC;AACP,MAAK,MAAM;OACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;KACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;OAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;AACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;MACrB;AACL;AACA;AACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;OAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;MACjD;AACL;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;OACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7D;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;AACA;KACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;KAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;OACpB,OAAO,IAAI,CAAC;MACb;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;OACX,CAAC,EAAE,CAAC;MACL;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;MACrC;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;AAC3D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACP;AACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;AACA;KACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;OAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;OAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;SACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAO,MAAM;SACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrB;MACF;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;KACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAK,MAAM;AACX;OACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACxB;MACF;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;KACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;KAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;KAC7B,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;KACI,IAAI,CAAC,CAAC;AACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;AACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MACvC;KACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MACvC;AACL;KACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1C;AACA;AACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB,KAAK,GAAG,CAAC,CAAC;AACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;KACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;AACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACjC;AACL;AACA;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;KAC5B,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;OACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB;MACF;AACL;AACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;OACvB,CAAC,GAAG,IAAI,CAAC;OACT,IAAI,CAAC,EAAE;SACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB;MACF;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;AACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;OACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACvB,EAAE,EAAE,CAAC;AACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;SACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;UACjB;QACF;OACD,IAAI,CAAC,EAAE;SACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB;MACF;KACD,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,MAAM,EAAE,CAAC;MACZ;AACL,KAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACf;AACA;KACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;MACjB;AACL;AACA,KAAI,OAAO;AACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;OACd,GAAG,EAAE,CAAC;AACZ,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACvB,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB,QAAO,CAAC;MACH;AACL;AACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB;AACP;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACf;QACF;AACP;AACA,OAAM,OAAO;SACL,GAAG,EAAE,GAAG;SACR,GAAG,EAAE,GAAG;AAChB,QAAO,CAAC;MACH;AACL;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB;AACP;AACA,OAAM,OAAO;SACL,GAAG,EAAE,GAAG;AAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;AACpB,QAAO,CAAC;MACH;AACL;KACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;AAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACf;QACF;AACP;AACA,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;SACZ,GAAG,EAAE,GAAG;AAChB,QAAO,CAAC;MACH;AACL;AACA;AACA;AACA;AACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvD,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACd,GAAG,EAAE,IAAI;AACjB,QAAO,CAAC;MACH;AACL;AACA;AACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1B,SAAQ,OAAO;AACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAC5B,GAAG,EAAE,IAAI;AACnB,UAAS,CAAC;QACH;AACP;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1B,SAAQ,OAAO;WACL,GAAG,EAAE,IAAI;AACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,UAAS,CAAC;QACH;AACP;AACA,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAO,CAAC;MACH;AACL;KACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC7C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;KAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA;AACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;KACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;KACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AAC1D;AACA;KACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;KACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;MAC7C;AACL;AACA,KAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACjC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;MACjB;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;KACd,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;OACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;MACf;AACL;AACA;KACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;AACA;KACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;KACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACZ,EAAE,CAAC,CAAC;MACL;AACL;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;AACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;WACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ;AACX;AACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;QACF;AACP;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;WACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ;AACX;AACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;QACF;AACP;OACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX;MACF;AACL;AACA,KAAI,OAAO;OACL,CAAC,EAAE,CAAC;OACJ,CAAC,EAAE,CAAC;AACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;AACA;AACA;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;KACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;OACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;MACf;AACL;KACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;AACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB;AACX;AACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACd;QACF;AACP;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB;AACX;AACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACd;QACF;AACP;OACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,QAAO,MAAM;AACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb;MACF;AACL;KACI,IAAI,GAAG,CAAC;KACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;OACnB,GAAG,GAAG,EAAE,CAAC;AACf,MAAK,MAAM;OACL,GAAG,GAAG,EAAE,CAAC;MACV;AACL;KACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACb;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;KACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;AACA;AACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;AAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;AACL;AACA,KAAI,GAAG;AACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACP;OACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB;AACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;SACV,CAAC,GAAG,CAAC,CAAC;SACN,CAAC,GAAG,CAAC,CAAC;AACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7C,SAAQ,MAAM;QACP;AACP;AACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACX,QAAQ,IAAI,EAAE;AACnB;AACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;AACA;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;OACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;OACnB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1B,CAAC,IAAI,KAAK,CAAC;AACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;OACjB,CAAC,IAAI,SAAS,CAAC;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;KAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;KACI,IAAI,GAAG,CAAC;AACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;OACnB,GAAG,GAAG,CAAC,CAAC;AACd,MAAK,MAAM;OACL,IAAI,QAAQ,EAAE;AACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;QACZ;AACP;OACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;OACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACxC;AACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;KACzC,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;KACzC,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;KACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;OACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;AAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;AACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;SAChB,GAAG,GAAG,CAAC,CAAC;QACT;AACP,OAAM,MAAM;MACP;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;KAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;KACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;AACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KACf,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;KAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;AAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;AAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;KAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,IAAI,MAAM,GAAG;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,MAAM,EAAE,IAAI;AAChB,IAAG,CAAC;AACJ;AACA;AACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;AAC5B;AACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;KACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB;AACH;GACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;KACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC9C,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;AACpD;AACA;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;KACZ,IAAI,IAAI,CAAC;AACb;AACA,KAAI,GAAG;OACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;OACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;KACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;OACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;OAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;AACjC;AACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;AAClB,QAAO,MAAM;AACb;AACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACZ;MACF;AACL;KACI,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,yEAAyE,CAAC,CAAC;IAC9E;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACxD;AACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;AACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAClC;AACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;AACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;OACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO;MACR;AACL;AACA;KACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;AACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;OAC3D,IAAI,GAAG,IAAI,CAAC;MACb;KACD,IAAI,MAAM,EAAE,CAAC;KACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;KAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;MACnB;AACL,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC9C;KACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;AACA;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;OAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;MACxC;AACL;AACA;AACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;MACF;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,gEAAgE,CAAC,CAAC;IACrE;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,uDAAuD,CAAC,CAAC;IAC5D;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;GACE,SAAS,MAAM,IAAI;AACrB;KACI,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,OAAO;OACP,qEAAqE,CAAC,CAAC;IAC1E;AACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;GACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAChD;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;AACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;OACxB,EAAE,MAAM,EAAE,CAAC;AACjB;OACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;OAClB,KAAK,GAAG,EAAE,CAAC;MACZ;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;MACjC;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AACpC;KACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;KACI,IAAI,KAAK,CAAC;AACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;AAC3B,MAAK,MAAM;OACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;MAC1C;AACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;KACI,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;AACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;OACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,MAAK,MAAM;OACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;MACnB;IACF;AACH;GACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;KAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;KAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;AACrD,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;AAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;OAC7B,iCAAiC,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE;AACA,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACxC,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;AACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;MAClB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;KACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;KACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;AACA;AACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;OACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MACzB;AACL;AACA;AACA;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;OACtC,CAAC,EAAE,CAAC;AACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;KACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA;AACA;AACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MACjB;AACL;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;KACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACpB;AACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;OACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;OACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAChB,CAAC,GAAG,CAAC,CAAC;MACP;AACL;KACI,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACrC,MAAK,MAAM;AACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MACvB;AACL,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;AACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;KACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;AACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MAClC;AACL;AACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;KACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,KAAK,GAAG,EAAE,CAAC;MACZ;AACL;AACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;WAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACrB;AACT;SACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;WAC9B,UAAU,GAAG,CAAC,CAAC;AACzB,WAAU,SAAS;UACV;AACT;SACQ,OAAO,KAAK,CAAC,CAAC;SACd,OAAO,IAAI,GAAG,CAAC;SACf,UAAU,EAAE,CAAC;AACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;AACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;SAClC,UAAU,GAAG,CAAC,CAAC;SACf,OAAO,GAAG,CAAC,CAAC;QACb;OACD,KAAK,GAAG,EAAE,CAAC;MACZ;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;KACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;KACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;AACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;KACf,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;KAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;KACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;AAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;MACtC;AACL;AACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;KACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;GACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;AACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;AAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;KACb,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;OAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;OACb,OAAO,CAAC,CAAC;MACV;AACL;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;KACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB;AACL;AACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;KACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB;AACL;AACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AAC1C;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;EACH,EAAmC,MAAM,EAAEC,cAAI,CAAC,CAAA;;;;;AC19G1C,MAAMrE,SAAO,GAAG,iBAAiB;;ACSxC,IAAI,EAAE,GAAGsE,IAAG,CAAC,EAAE,CAAC;AAIhB,MAAMF,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC,MAAMuE,mBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAC3B,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACpE,QAAQ,WAAW,CAAC,KAAK,CAAC;AAC1B,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC;AACrC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC;AACD;AACA,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAC1B,MAAM,SAAS,CAAC;AACvB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;AACvC,QAAQ,IAAI,gBAAgB,KAAKA,mBAAiB,EAAE;AACpD,YAAYH,QAAM,CAAC,UAAU,CAAC,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC3H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,GAAG,GAAG;AACV,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACxB,YAAYI,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAYA,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAYA,YAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,QAAQ,OAAOJ,QAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/G,YAAY,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AAClC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,GAAG;AACf;AACA,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AACrC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C,oBAAoB,oBAAoB,GAAG,IAAI,CAAC;AAChD,oBAAoBA,QAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AACzG,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAC1C,gBAAgBA,QAAM,CAAC,UAAU,CAAC,gFAAgF,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC3J,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC1H,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE;AAChB,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9D,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,YAAY,SAAS,EAAE;AACxC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACjD,gBAAgB,OAAO,IAAI,SAAS,CAACG,mBAAiB,EAAEE,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC3C,gBAAgB,OAAO,IAAI,SAAS,CAACF,mBAAiB,EAAEE,OAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,YAAY,OAAOL,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3B,gBAAgBI,YAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;AACzD,gBAAgBA,YAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChE,aAAa;AACb,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AAC5C,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB;AACA,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAoB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;AACxC;AACA,gBAAgB,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;AAClE,oBAAoB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACvC,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAoB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,wBAAwB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAOJ,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;AAC9B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/C,KAAK;AACL,CAAC;AACD;AACA,SAASK,OAAK,CAAC,KAAK,EAAE;AACtB;AACA,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAOA,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1B;AACA,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC9B,YAAYL,QAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrE,SAAS;AACT;AACA,QAAQ,KAAK,GAAGK,OAAK,CAAC,KAAK,CAAC,CAAC;AAC7B;AACA,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACxC,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;AACjE,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AACD,SAAS,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACpD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxB,QAAQ,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACpD,KAAK;AACL,IAAI,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AACD,SAASD,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAOJ,QAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AACD;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5C;;ACvSA,MAAMA,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AAEnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM0E,MAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAON,QAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AACD;AACA,IAAI,KAAK,GAAG,GAAG,CAAC;AAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;AAC3B,IAAI,KAAK,IAAI,KAAK,CAAC;AACnB,CAAC;AACD;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC/F,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;AACpD,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnF,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAACM,MAAI,CAAC,CAAC;AACpC,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL;AACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,QAAQ,KAAK,GAAG,KAAK,CAAC;AACtB,KAAK;AACL,SAAS;AACT,QAAQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpE,QAAQN,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACrD,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;AACvB,QAAQA,QAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAClD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,QAAQ,UAAU,CAAC,uCAAuC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACvF,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;AACzB,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,QAAQ,QAAQ,IAAI,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9D,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACM,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3D,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE;AAC1C,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,KAAK,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE,CAEtB;AACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;AACzC,gBAAgB,MAAM,GAAG,KAAK,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC1E,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvF,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,gBAAgB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,aAAa,IAAI,KAAK,EAAE;AACxB,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK;AACvD,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;AACxC,oBAAoB,OAAO,YAAY,CAAC;AACxC,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;AAClD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,aAAa,CAAC;AACd,YAAY,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACxD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AAC9G,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;AAC3B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,2CAA2C,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAChH,SAAS;AACT,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3E,KAAK;AACL,CAAC;AACM,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACpD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACvG,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;AAC9C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;AAC/C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,SAAS;AACT;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC7D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACzF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AAC9D,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxC,KAAK;AACL,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACtG,QAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,aAAa,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;AAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC9C;AACA,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC7E,YAAY,MAAM,GAAG,QAAQ,CAAC;AAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAACM,MAAI,CAAC,EAAE;AACrD,YAAY,UAAU,CAAC,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;AACvB,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACxC,YAAY,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AACpC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5D,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACnG,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB;AACA,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC/D,gBAAgB,MAAM,KAAK,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,OAAON,QAAM,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;AAChC,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACjD,KAAK;AACL,CAAC;AACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;ACvW7B,MAAMpE,SAAO,GAAG,eAAe;;ACItC,MAAMoE,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC;AACO,IAAI,wBAAwB,CAAC;AACpC,CAAC,UAAU,wBAAwB,EAAE;AACrC,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAC7C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;AAEzD,IAAI,eAAe,CAAC;AAC3B,CAAC,UAAU,eAAe,EAAE;AAC5B;AACA;AACA,IAAI,eAAe,CAAC,qBAAqB,CAAC,GAAG,8BAA8B,CAAC;AAC5E;AACA;AACA,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;AAC3D;AACA;AACA,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;AAClD;AACA;AACA,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG,2BAA2B,CAAC;AACtE;AACA;AACA;AACA,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;AAC3D;AACA;AACA;AACA,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;AAC5D;AACA;AACA;AACA,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;AAC5D,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;AAE9C,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AAChE,IAAI,OAAOoE,QAAM,CAAC,kBAAkB,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzG,CAAC;AACD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AACjE;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,UAAU,IAAI,MAAM,KAAK,eAAe,CAAC,mBAAmB,EAAE;AACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACxC,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,CAAC,EAAE,CAAC;AAChB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE;AAC5C,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AAClE;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAA2B,CAAC,CAAC;AACnE,CAAC;AACD;AAC8B,MAAM,CAAC,MAAM,CAAC;AAC5C,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,OAAO,EAAE,WAAW;AACxB,CAAC,EAAE;AAsFH;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE;AAC1E,IAAI,IAAI,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE;AAClD,QAAQA,QAAM,CAAC,cAAc,EAAE,CAAC;AAChC,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;AACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,aAAa,IAAI,CAAC,GAAG,KAAK,EAAE;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,aAAa,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE;AACzC,YAAY,CAAC,EAAE,CAAC;AAChB,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM,EAAE;AAC7D,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxD,aAAa;AACb;AACA,YAAY,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AACrD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AAClD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B;;AC1MA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,IAAI,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACtC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAClC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChC,KAAK,CAAC,CAAC;AACP,CAAC;AAewB,gBAAgB,CAAC,87CAA87C,EAAE;AAC1+C;AACwB,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AA6C3F,WAAW,CAAC,ufAAuf,EAAE;AACrgB,WAAW,CAAC,wdAAwd,EAAE;AACte,WAAW,CAAC,w3DAAw3D,EAAE,MAAM,EAAE;AACj5D,gBAAgB,CAAC,yLAAyL;;ACxG1N,MAAMpE,SAAO,GAAG,YAAY;;ACE5B,SAAS,MAAM,CAAC,QAAQ,EAAE;AACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;AAC3C,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;AACzC,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACzC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3B,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACM,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AACjE;AACA,IAAI,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC;AAC1B,IAAI,GAAG,IAAI,IAAI,CAAC;AAChB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,SAAS,QAAQ,GAAG;AACxB,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;AAC7B;AACA;AACA,YAAY,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5D,YAAY,UAAU,GAAG,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,CAAC,WAAW,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;AACjB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAC1B;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;AAChD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC;AAC/B,QAAQ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC;AAC1C,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAgB,GAAG,GAAG,GAAG,CAAC;AAC1B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,KAAK,GAAG,GAAG,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,KAAK,IAAI,CAAC;AACtB,YAAY,MAAM;AAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACrE,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;AACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;AAC3D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;AACzF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,GAAG,GAAG,CAAC,CAAC;AAChB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;AAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC5B,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAC1B,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAClI,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjG,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD,YAAY,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACO,SAAS,YAAY,CAAC,CAAC,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,CAAC;AACM,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AACD;AACO,SAAS,MAAM,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AAC1B,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACM,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AAChD,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACnB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACO,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM;AAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,YAAY,MAAM;AAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AACM,SAAS,0BAA0B,CAAC,IAAI,EAAE;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM;AAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9B,YAAY,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvD,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AACM,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI,OAAO,IAAI,EAAE,CAAC;AAClB,IAAI,SAAS,IAAI,GAAG;AACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,IAAI,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvD,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAChC,gBAAgB,MAAM;AACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzD,QAAQ,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;AAC7B,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,KAAK,CAAC,CAAC;AACnB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;AAC9B,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtD,KAAK;AACL;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,SAAS,OAAO,GAAG;AAC1B,IAAI,OAAO,uBAAuB,CAAC,MAAM,CAAC,k6cAAk6c,CAAC,CAAC,CAAC;AAC/8c;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMkE,GAAC,GAAG,OAAO,EAAE,CAAC;AAEpB;AACc,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;AAC5B,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;AAC/B,eAAe,CAACA,GAAC,EAAE;AACf,eAAe,CAACA,GAAC;;AC/BrB,IAAI,MAAM,CAAClE,SAAO,EAAE;AAEnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ACLN,MAAM,aAAa,GAAG,gCAAgC,CAAC;AACvD,SAAS2E,aAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC;AAC5B,QAAQ,WAAW,CAAC,aAAa,CAAC;AAClC,QAAQ,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,OAAO;AACf,KAAK,CAAC,CAAC,CAAC;AACR;;ACbO,MAAM3E,SAAO,GAAG,WAAW;;ACKnB,IAAI,MAAM,CAACA,SAAO;;ACL1B,MAAMA,SAAO,GAAG,eAAe;;ACOtC,MAAMoE,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;AACnC,QAAQoE,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD;AACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvD,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;AACjD;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC7C;AACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;AAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClF,SAAS;AACT;AACA,KAAK;AACL,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;AAC9D;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;AACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AACnD,KAAK;AACL,SAAS;AACT,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB;;AChGO,MAAMpE,SAAO,GAAG,kBAAkB;;ACCzB,CAACqE,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,EAAE;AAGa,IAAI,MAAM,CAACrE,SAAO,EAAE;AAC5B,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACxC,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,KAAK;AACvB,KAAK,CAAC,CAAC;AACP;;ACnBgB,CAACqE,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,EAAE;AAQa,IAAI,MAAM,CAACrE,SAAO,EAAE;AAEnC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,SAAS,CAAC,IAAI,CAAC,oEAAoE,EAAE;AASxF,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;AACjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;;;;;;ICjClD4E,oBAAc,GAAGC,QAAM,CAAC;AACxB;AACA,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AAC1B,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;AAC/C,CAAC;AACD;AACAA,QAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;;;;ACVD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACzC;AACA,EAAEC,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1D,QAAQ,WAAW,EAAE;AACrB,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,UAAU,EAAE,KAAK;AAC3B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS;AACT,OAAO,EAAC;AACR,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,MAAM;AACP;AACA,EAAEA,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;AACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;AAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;AACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;AACvC,KAAK;AACL,IAAG;AACH;;ACxBA,IAAID,QAAM,GAAGE,oBAA8B,CAAC;AAC5C,IAAI,QAAQ,GAAGC,0BAAmB,CAAC;AACnC;AACgBC,OAAA,CAAA,QAAA,GAAG,SAAS;AAC5B;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;AACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;AAC/C,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AACpC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;AACrD,CAAC;AACD;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,EAAE,CAAC;AACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;AACd;AACA;AACA;AACA;AACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;AACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;AAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS,MAAM;AACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;AACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;AAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;AAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;AACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;AACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;AACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;AAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;AAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;AAC5B;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;AACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;AACxB,EAAEJ,QAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E;AACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACaI,OAAA,CAAA,MAAA,GAAG,OAAO;AACxB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;AAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC5B,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACaD,OAAA,CAAA,MAAA,GAAGC,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACaF,OAAA,CAAA,MAAA,GAAGE,SAAO;AACxB;AACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AACYH,OAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AACcJ,OAAA,CAAA,OAAA,GAAGI,UAAQ;AAC1B;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AACcL,OAAA,CAAA,OAAA,GAAGK,UAAQ;AAC1B;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AACcN,OAAA,CAAA,OAAA,GAAGM,UAAQ;AAC1B;AACA,SAASC,OAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AACYP,OAAA,CAAA,KAAA,GAAGO,QAAM;AACtB;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACeR,OAAA,CAAA,QAAA,GAAGQ,WAAS;AAC5B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACeT,OAAA,CAAA,QAAA,GAAGS,WAAS;AAC5B;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBV,OAAA,CAAA,UAAA,GAAGU,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBX,OAAA,CAAA,UAAA,GAAGW,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBZ,OAAA,CAAA,UAAA,GAAGY,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBb,OAAA,CAAA,UAAA,GAAGa,aAAW;AAChC;AACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACgBd,OAAA,CAAA,SAAA,GAAGc,YAAU;AAC9B;AACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACgBf,OAAA,CAAA,SAAA,GAAGe,YAAU;AAC9B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;AACpB,CAAC;AACehB,OAAA,CAAA,QAAA,GAAGgB,WAAS;AAC5B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACDjB,OAAA,CAAA,QAAgB,GAAGiB;;;;ACnRnB,IAAIjB,OAAK,GAAGF,OAAkB,CAAC;AAC/B,IAAIF,QAAM,GAAGG,oBAA8B,CAAC;AAC5C;AACA,SAASmB,WAAS,GAAG;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtC,CAAC;AACgBC,QAAA,CAAA,SAAA,GAAGD,YAAU;AAC9B;AACAA,WAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACvD;AACA,EAAE,GAAG,GAAGlB,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;AACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;AACA;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;AACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;AACA,IAAI,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;AACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACAkB,WAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,EAAEtB,QAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACAsB,WAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;AAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;AACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACA;AACA,EAAE,GAAG,KAAK,CAAC,CAAC;AACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;AACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1B,GAAG,MAAM;AACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;;;;;;ACzFD,IAAIlB,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAI,MAAM,GAAGE,OAAK,CAAC,MAAM,CAAC;AAC1B;AACA,SAASoB,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAOC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAOC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AACWH,QAAA,CAAA,IAAA,GAAGC,OAAK;AACpB;AACA,SAASC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,CAAC;AACWF,QAAA,CAAA,IAAA,GAAGE,OAAK;AACpB;AACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC;AACYH,QAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;AACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AACUH,QAAA,CAAA,GAAA,GAAG,IAAI;AAClB;AACA,SAASI,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AACaJ,QAAA,CAAA,MAAA,GAAGI,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AACaL,QAAA,CAAA,MAAA,GAAGK,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AACaN,QAAA,CAAA,MAAA,GAAGM,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC;AACDP,QAAA,CAAA,MAAc,GAAGO;;AC9CjB,IAAI1B,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAI4B,WAAS,GAAGC,QAAmB,CAAC;AACpC;AACA,IAAI1B,QAAM,GAAGF,OAAK,CAAC,MAAM,CAAC;AAC1B,IAAIG,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;AACxB,IAAIM,SAAO,GAAGN,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG2B,WAAS,CAAC,IAAI,CAAC;AAC1B,IAAIT,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,MAAM,GAAG;AACb,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,UAAU,EAAE,UAAU;AACxB,CAAC,CAAC;AACF;AACA,SAAS,IAAI,GAAG;AAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;AACA,EAAED,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;AACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACD;AACAlB,OAAK,CAAC,QAAQ,CAAC,IAAI,EAAEkB,WAAS,CAAC,CAAC;IAChC,EAAc,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;AACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;AACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGhB,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,GAAGI,SAAO,CAACJ,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOH,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;;ACvED,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAI,SAAS,GAAG6B,QAAmB,CAAC;AACpC,IAAIhC,QAAM,GAAGiC,oBAA8B,CAAC;AAC5C;AACA,IAAI1B,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;AACxB,IAAIK,SAAO,GAAGL,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC5B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;AACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,QAAQ,GAAG;AACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAASW,QAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;AAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;AACA,EAAEZ,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACDlB,OAAK,CAAC,QAAQ,CAAC8B,QAAM,EAAEZ,WAAS,CAAC,CAAC;IAClC,IAAc,GAAGY,QAAM,CAAC;AACxB;AACAA,QAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvBA,QAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,QAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,QAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACAA,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGzB,SAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAET,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,EAAE,GAAGO,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA2B,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO9B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;;ACtGD,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;AAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC;AACDC,OAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;AACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD;AACA,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;;AC1BD,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAIH,QAAM,GAAGgC,oBAA8B,CAAC;AAC5C;AACA,IAAI,SAAS,GAAG5B,OAAK,CAAC,SAAS,CAAC;AAChC,IAAI,SAAS,GAAGA,OAAK,CAAC,SAAS,CAAC;AAChC,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;AACxB,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC;AACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,QAAQ,GAAG;AACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EA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EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AA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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js b/node_modules/@walletconnect/utils/dist/index.umd.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e76a0973fdda33fb46b864846fee9be7495101d1 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.umd.js +@@ -0,0 +1,31 @@ ++(function(K,dr){typeof exports=="object"&&typeof module<"u"?dr(exports):typeof define=="function"&&define.amd?define(["exports"],dr):(K=typeof globalThis<"u"?globalThis:K||self,dr(K["@walletconnect/utils"]={}))})(this,function(K){"use strict";const dr=":";function ua(t){const[e,r]=t.split(dr);return{namespace:e,reference:r}}function ha(t){const{namespace:e,reference:r}=t;return[e,r].join(dr)}function Bn(t){const[e,r,i]=t.split(dr);return{namespace:e,reference:r,address:i}}function ca(t){const{namespace:e,reference:r,address:i}=t;return[e,r,i].join(dr)}function On(t,e){const r=[];return t.forEach(i=>{const f=e(i);r.includes(f)||r.push(f)}),r}function da(t){const{address:e}=Bn(t);return e}function la(t){const{namespace:e,reference:r}=Bn(t);return ha({namespace:e,reference:r})}function Ys(t,e){const{namespace:r,reference:i}=ua(e);return ca({namespace:r,reference:i,address:t})}function Js(t){return On(t,da)}function ba(t){return On(t,la)}function Ws(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...f.accounts)}),r}function Qs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...ba(f.accounts))}),r}function Xs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...zi(i,f))}),r}function zi(t,e){return t.includes(":")?[t]:e.chains||[]}var va=function(t,e,r){if(r||arguments.length===2)for(var i=0,f=e.length,n;i"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new iu:typeof navigator<"u"?ga(navigator.userAgent):hu()}function su(t){return t!==""&&au.reduce(function(e,r){var i=r[0],f=r[1];if(e)return e;var n=f.exec(t);return!!n&&[i,n]},!1)}function ga(t){var e=su(t);if(!e)return null;var r=e[0],i=e[1];if(r==="searchbot")return new ru;var f=i[1]&&i[1].split(".").join("_").split("_").slice(0,3);f?f.length=0;c--)(d=t[c])&&(n=(f<3?d(n):f>3?d(e,r,n):d(e,r))||n);return f>3&&n&&Object.defineProperty(e,r,n),n}function vu(t,e){return function(r,i){e(r,i,t)}}function pu(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function mu(t,e,r,i){function f(n){return n instanceof r?n:new r(function(d){d(n)})}return new(r||(r=Promise))(function(n,d){function c(x){try{A(i.next(x))}catch(E){d(E)}}function y(x){try{A(i.throw(x))}catch(E){d(E)}}function A(x){x.done?n(x.value):f(x.value).then(c,y)}A((i=i.apply(t,e||[])).next())})}function gu(t,e){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,f,n,d;return d={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(d[Symbol.iterator]=function(){return this}),d;function c(A){return function(x){return y([A,x])}}function y(A){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,f&&(n=A[0]&2?f.return:A[0]?f.throw||((n=f.return)&&n.call(f),0):f.next)&&!(n=n.call(f,A[1])).done)return n;switch(f=0,n&&(A=[A[0]&2,n.value]),A[0]){case 0:case 1:n=A;break;case 4:return r.label++,{value:A[1],done:!1};case 5:r.label++,f=A[1],A=[0];continue;case 7:A=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(A[0]===6||A[0]===2)){r=0;continue}if(A[0]===3&&(!n||A[1]>n[0]&&A[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function wa(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var i=r.call(t),f,n=[],d;try{for(;(e===void 0||e-- >0)&&!(f=i.next()).done;)n.push(f.value)}catch(c){d={error:c}}finally{try{f&&!f.done&&(r=i.return)&&r.call(i)}finally{if(d)throw d.error}}return n}function Au(){for(var t=[],e=0;e1||c(N,D)})})}function c(N,D){try{y(i[N](D))}catch(I){E(n[0][3],I)}}function y(N){N.value instanceof yi?Promise.resolve(N.value.v).then(A,x):E(n[0][2],N)}function A(N){c("next",N)}function x(N){c("throw",N)}function E(N,D){N(D),n.shift(),n.length&&c(n[0][0],n[0][1])}}function Mu(t){var e,r;return e={},i("next"),i("throw",function(f){throw f}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(f,n){e[f]=t[f]?function(d){return(r=!r)?{value:yi(t[f](d)),done:f==="return"}:n?n(d):d}:n}}function Eu(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Fn=="function"?Fn(t):t[Symbol.iterator](),r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=t[n]&&function(d){return new Promise(function(c,y){d=t[n](d),f(c,y,d.done,d.value)})}}function f(n,d,c,y){Promise.resolve(y).then(function(A){n({value:A,done:c})},d)}}function Su(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Du(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Iu(t){return t&&t.__esModule?t:{default:t}}function Nu(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function Cu(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var Bu=Object.freeze({__proto__:null,__extends:du,get __assign(){return Tn},__rest:lu,__decorate:bu,__param:vu,__metadata:pu,__awaiter:mu,__generator:gu,__createBinding:yu,__exportStar:wu,__values:Fn,__read:wa,__spread:Au,__spreadArrays:xu,__await:yi,__asyncGenerator:_u,__asyncDelegator:Mu,__asyncValues:Eu,__makeTemplateObject:Su,__importStar:Du,__importDefault:Iu,__classPrivateFieldGet:Nu,__classPrivateFieldSet:Cu}),ki=ya(Bu),Un={},wi={},Aa;function Ou(){if(Aa)return wi;Aa=1,Object.defineProperty(wi,"__esModule",{value:!0}),wi.delay=void 0;function t(e){return new Promise(r=>{setTimeout(()=>{r(!0)},e)})}return wi.delay=t,wi}var Mr={},Ln={},Er={},xa;function Ru(){return xa||(xa=1,Object.defineProperty(Er,"__esModule",{value:!0}),Er.ONE_THOUSAND=Er.ONE_HUNDRED=void 0,Er.ONE_HUNDRED=100,Er.ONE_THOUSAND=1e3),Er}var qn={},_a;function Pu(){return _a||(_a=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.ONE_YEAR=t.FOUR_WEEKS=t.THREE_WEEKS=t.TWO_WEEKS=t.ONE_WEEK=t.THIRTY_DAYS=t.SEVEN_DAYS=t.FIVE_DAYS=t.THREE_DAYS=t.ONE_DAY=t.TWENTY_FOUR_HOURS=t.TWELVE_HOURS=t.SIX_HOURS=t.THREE_HOURS=t.ONE_HOUR=t.SIXTY_MINUTES=t.THIRTY_MINUTES=t.TEN_MINUTES=t.FIVE_MINUTES=t.ONE_MINUTE=t.SIXTY_SECONDS=t.THIRTY_SECONDS=t.TEN_SECONDS=t.FIVE_SECONDS=t.ONE_SECOND=void 0,t.ONE_SECOND=1,t.FIVE_SECONDS=5,t.TEN_SECONDS=10,t.THIRTY_SECONDS=30,t.SIXTY_SECONDS=60,t.ONE_MINUTE=t.SIXTY_SECONDS,t.FIVE_MINUTES=t.ONE_MINUTE*5,t.TEN_MINUTES=t.ONE_MINUTE*10,t.THIRTY_MINUTES=t.ONE_MINUTE*30,t.SIXTY_MINUTES=t.ONE_MINUTE*60,t.ONE_HOUR=t.SIXTY_MINUTES,t.THREE_HOURS=t.ONE_HOUR*3,t.SIX_HOURS=t.ONE_HOUR*6,t.TWELVE_HOURS=t.ONE_HOUR*12,t.TWENTY_FOUR_HOURS=t.ONE_HOUR*24,t.ONE_DAY=t.TWENTY_FOUR_HOURS,t.THREE_DAYS=t.ONE_DAY*3,t.FIVE_DAYS=t.ONE_DAY*5,t.SEVEN_DAYS=t.ONE_DAY*7,t.THIRTY_DAYS=t.ONE_DAY*30,t.ONE_WEEK=t.SEVEN_DAYS,t.TWO_WEEKS=t.ONE_WEEK*2,t.THREE_WEEKS=t.ONE_WEEK*3,t.FOUR_WEEKS=t.ONE_WEEK*4,t.ONE_YEAR=t.ONE_DAY*365}(qn)),qn}var Ma;function Ea(){return Ma||(Ma=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ru(),t),e.__exportStar(Pu(),t)}(Ln)),Ln}var Sa;function Tu(){if(Sa)return Mr;Sa=1,Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.fromMiliseconds=Mr.toMiliseconds=void 0;const t=Ea();function e(i){return i*t.ONE_THOUSAND}Mr.toMiliseconds=e;function r(i){return Math.floor(i/t.ONE_THOUSAND)}return Mr.fromMiliseconds=r,Mr}var Da;function Fu(){return Da||(Da=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ou(),t),e.__exportStar(Tu(),t)}(Un)),Un}var Qr={},Ia;function Uu(){if(Ia)return Qr;Ia=1,Object.defineProperty(Qr,"__esModule",{value:!0}),Qr.Watch=void 0;class t{constructor(){this.timestamps=new Map}start(r){if(this.timestamps.has(r))throw new Error(`Watch already started for label: ${r}`);this.timestamps.set(r,{started:Date.now()})}stop(r){const i=this.get(r);if(typeof i.elapsed<"u")throw new Error(`Watch already stopped for label: ${r}`);const f=Date.now()-i.started;this.timestamps.set(r,{started:i.started,elapsed:f})}get(r){const i=this.timestamps.get(r);if(typeof i>"u")throw new Error(`No timestamp found for label: ${r}`);return i}elapsed(r){const i=this.get(r);return i.elapsed||Date.now()-i.started}}return Qr.Watch=t,Qr.default=t,Qr}var zn={},Ai={},Na;function Lu(){if(Na)return Ai;Na=1,Object.defineProperty(Ai,"__esModule",{value:!0}),Ai.IWatch=void 0;class t{}return Ai.IWatch=t,Ai}var Ca;function qu(){return Ca||(Ca=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),ki.__exportStar(Lu(),t)}(zn)),zn}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Fu(),t),e.__exportStar(Uu(),t),e.__exportStar(qu(),t),e.__exportStar(Ea(),t)})(_r);var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.getLocalStorage=Xe.getLocalStorageOrThrow=Xe.getCrypto=Xe.getCryptoOrThrow=Hn=Xe.getLocation=Xe.getLocationOrThrow=kn=Xe.getNavigator=Xe.getNavigatorOrThrow=Hi=Xe.getDocument=Xe.getDocumentOrThrow=Xe.getFromWindowOrThrow=Xe.getFromWindow=void 0;function Sr(t){let e;return typeof window<"u"&&typeof window[t]<"u"&&(e=window[t]),e}Xe.getFromWindow=Sr;function Xr(t){const e=Sr(t);if(!e)throw new Error(`${t} is not defined in Window`);return e}Xe.getFromWindowOrThrow=Xr;function zu(){return Xr("document")}Xe.getDocumentOrThrow=zu;function ku(){return Sr("document")}var Hi=Xe.getDocument=ku;function Hu(){return Xr("navigator")}Xe.getNavigatorOrThrow=Hu;function Ku(){return Sr("navigator")}var kn=Xe.getNavigator=Ku;function ju(){return Xr("location")}Xe.getLocationOrThrow=ju;function $u(){return Sr("location")}var Hn=Xe.getLocation=$u;function Vu(){return Xr("crypto")}Xe.getCryptoOrThrow=Vu;function Gu(){return Sr("crypto")}Xe.getCrypto=Gu;function Yu(){return Xr("localStorage")}Xe.getLocalStorageOrThrow=Yu;function Ju(){return Sr("localStorage")}Xe.getLocalStorage=Ju;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0});var Ba=Kn.getWindowMetadata=void 0;const Oa=Xe;function Wu(){let t,e;try{t=Oa.getDocumentOrThrow(),e=Oa.getLocationOrThrow()}catch{return null}function r(){const E=t.getElementsByTagName("link"),N=[];for(let D=0;D-1){const H=I.getAttribute("href");if(H)if(H.toLowerCase().indexOf("https:")===-1&&H.toLowerCase().indexOf("http:")===-1&&H.indexOf("//")!==0){let V=e.protocol+"//"+e.host;if(H.indexOf("/")===0)V+=H;else{const z=e.pathname.split("/");z.pop();const j=z.join("/");V+=j+"/"+H}N.push(V)}else if(H.indexOf("//")===0){const V=e.protocol+H;N.push(V)}else N.push(H)}}return N}function i(...E){const N=t.getElementsByTagName("meta");for(let D=0;DI.getAttribute(H)).filter(H=>H?E.includes(H):!1);if(q.length&&q){const H=I.getAttribute("content");if(H)return H}}return""}function f(){let E=i("name","og:site_name","og:title","twitter:title");return E||(E=t.title),E}function n(){return i("description","og:description","twitter:description","keywords")}const d=f(),c=n(),y=e.origin,A=r();return{description:c,url:y,icons:A,name:d}}Ba=Kn.getWindowMetadata=Wu;var xi={},Qu=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),Ra="%[a-f0-9]{2}",Pa=new RegExp("("+Ra+")|([^%]+?)","gi"),Ta=new RegExp("("+Ra+")+","gi");function jn(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),i=t.slice(e);return Array.prototype.concat.call([],jn(r),jn(i))}function Xu(t){try{return decodeURIComponent(t)}catch{for(var e=t.match(Pa)||[],r=1;r{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];const r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]},rh=function(t,e){for(var r={},i=Object.keys(t),f=Array.isArray(e),n=0;nz==null,d=Symbol("encodeFragmentIdentifier");function c(z){switch(z.arrayFormat){case"index":return j=>(F,U)=>{const L=F.length;return U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[",L,"]"].join("")]:[...F,[x(j,z),"[",x(L,z),"]=",x(U,z)].join("")]};case"bracket":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[]"].join("")]:[...F,[x(j,z),"[]=",x(U,z)].join("")];case"colon-list-separator":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),":list="].join("")]:[...F,[x(j,z),":list=",x(U,z)].join("")];case"comma":case"separator":case"bracket-separator":{const j=z.arrayFormat==="bracket-separator"?"[]=":"=";return F=>(U,L)=>L===void 0||z.skipNull&&L===null||z.skipEmptyString&&L===""?U:(L=L===null?"":L,U.length===0?[[x(F,z),j,x(L,z)].join("")]:[[U,x(L,z)].join(z.arrayFormatSeparator)])}default:return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,x(j,z)]:[...F,[x(j,z),"=",x(U,z)].join("")]}}function y(z){let j;switch(z.arrayFormat){case"index":return(F,U,L)=>{if(j=/\[(\d*)\]$/.exec(F),F=F.replace(/\[\d*\]$/,""),!j){L[F]=U;return}L[F]===void 0&&(L[F]={}),L[F][j[1]]=U};case"bracket":return(F,U,L)=>{if(j=/(\[\])$/.exec(F),F=F.replace(/\[\]$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"colon-list-separator":return(F,U,L)=>{if(j=/(:list)$/.exec(F),F=F.replace(/:list$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"comma":case"separator":return(F,U,L)=>{const m=typeof U=="string"&&U.includes(z.arrayFormatSeparator),P=typeof U=="string"&&!m&&E(U,z).includes(z.arrayFormatSeparator);U=P?E(U,z):U;const Y=m||P?U.split(z.arrayFormatSeparator).map(Q=>E(Q,z)):U===null?U:E(U,z);L[F]=Y};case"bracket-separator":return(F,U,L)=>{const m=/(\[\])$/.test(F);if(F=F.replace(/\[\]$/,""),!m){L[F]=U&&E(U,z);return}const P=U===null?[]:U.split(z.arrayFormatSeparator).map(Y=>E(Y,z));if(L[F]===void 0){L[F]=P;return}L[F]=[].concat(L[F],P)};default:return(F,U,L)=>{if(L[F]===void 0){L[F]=U;return}L[F]=[].concat(L[F],U)}}}function A(z){if(typeof z!="string"||z.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function x(z,j){return j.encode?j.strict?e(z):encodeURIComponent(z):z}function E(z,j){return j.decode?r(z):z}function N(z){return Array.isArray(z)?z.sort():typeof z=="object"?N(Object.keys(z)).sort((j,F)=>Number(j)-Number(F)).map(j=>z[j]):z}function D(z){const j=z.indexOf("#");return j!==-1&&(z=z.slice(0,j)),z}function I(z){let j="";const F=z.indexOf("#");return F!==-1&&(j=z.slice(F)),j}function q(z){z=D(z);const j=z.indexOf("?");return j===-1?"":z.slice(j+1)}function H(z,j){return j.parseNumbers&&!Number.isNaN(Number(z))&&typeof z=="string"&&z.trim()!==""?z=Number(z):j.parseBooleans&&z!==null&&(z.toLowerCase()==="true"||z.toLowerCase()==="false")&&(z=z.toLowerCase()==="true"),z}function V(z,j){j=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},j),A(j.arrayFormatSeparator);const F=y(j),U=Object.create(null);if(typeof z!="string"||(z=z.trim().replace(/^[?#&]/,""),!z))return U;for(const L of z.split("&")){if(L==="")continue;let[m,P]=i(j.decode?L.replace(/\+/g," "):L,"=");P=P===void 0?null:["comma","separator","bracket-separator"].includes(j.arrayFormat)?P:E(P,j),F(E(m,j),P,U)}for(const L of Object.keys(U)){const m=U[L];if(typeof m=="object"&&m!==null)for(const P of Object.keys(m))m[P]=H(m[P],j);else U[L]=H(m,j)}return j.sort===!1?U:(j.sort===!0?Object.keys(U).sort():Object.keys(U).sort(j.sort)).reduce((L,m)=>{const P=U[m];return P&&typeof P=="object"&&!Array.isArray(P)?L[m]=N(P):L[m]=P,L},Object.create(null))}t.extract=q,t.parse=V,t.stringify=(z,j)=>{if(!z)return"";j=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},j),A(j.arrayFormatSeparator);const F=P=>j.skipNull&&n(z[P])||j.skipEmptyString&&z[P]==="",U=c(j),L={};for(const P of Object.keys(z))F(P)||(L[P]=z[P]);const m=Object.keys(L);return j.sort!==!1&&m.sort(j.sort),m.map(P=>{const Y=z[P];return Y===void 0?"":Y===null?x(P,j):Array.isArray(Y)?Y.length===0&&j.arrayFormat==="bracket-separator"?x(P,j)+"[]":Y.reduce(U(P),[]).join("&"):x(P,j)+"="+x(Y,j)}).filter(P=>P.length>0).join("&")},t.parseUrl=(z,j)=>{j=Object.assign({decode:!0},j);const[F,U]=i(z,"#");return Object.assign({url:F.split("?")[0]||"",query:V(q(z),j)},j&&j.parseFragmentIdentifier&&U?{fragmentIdentifier:E(U,j)}:{})},t.stringifyUrl=(z,j)=>{j=Object.assign({encode:!0,strict:!0,[d]:!0},j);const F=D(z.url).split("?")[0]||"",U=t.extract(z.url),L=t.parse(U,{sort:!1}),m=Object.assign(L,z.query);let P=t.stringify(m,j);P&&(P=`?${P}`);let Y=I(z.url);return z.fragmentIdentifier&&(Y=`#${j[d]?x(z.fragmentIdentifier,j):z.fragmentIdentifier}`),`${F}${P}${Y}`},t.pick=(z,j,F)=>{F=Object.assign({parseFragmentIdentifier:!0,[d]:!1},F);const{url:U,query:L,fragmentIdentifier:m}=t.parseUrl(z,F);return t.stringifyUrl({url:U,query:f(L,j),fragmentIdentifier:m},F)},t.exclude=(z,j,F)=>{const U=Array.isArray(j)?L=>!j.includes(L):(L,m)=>!j(L,m);return t.pick(z,U,F)}})(xi);var ih=Object.defineProperty,Fa=Object.getOwnPropertySymbols,nh=Object.prototype.hasOwnProperty,fh=Object.prototype.propertyIsEnumerable,Ua=(t,e,r)=>e in t?ih(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,La=(t,e)=>{for(var r in e||(e={}))nh.call(e,r)&&Ua(t,r,e[r]);if(Fa)for(var r of Fa(e))fh.call(e,r)&&Ua(t,r,e[r]);return t};const qa="ReactNative",vt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Ki=" ",ah=":",za="/",$n=2,oh=1e3,ka="js";function Vn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function Zr(){return!Hi()&&!!kn()&&navigator.product===qa}function _i(){return!Vn()&&!!kn()&&!!Hi()}function Dr(){return Zr()?vt.reactNative:Vn()?vt.node:_i()?vt.browser:vt.unknown}function sh(){var t;try{return Zr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Ha(t,e){let r=xi.parse(t);return r=La(La({},r),e),t=xi.stringify(r),t}function uh(){return Ba()||{name:"",description:"",url:"",icons:[""]}}function hh(t,e){var r;const i=Dr(),f={protocol:t,version:e,env:i};return i==="browser"&&(f.host=((r=Hn())==null?void 0:r.host)||"unknown"),f}function Ka(){if(Dr()===vt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const t=ou();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function ja(){var t;const e=Dr();return e===vt.browser?[e,((t=Hn())==null?void 0:t.host)||"unknown"].join(":"):e}function $a(t,e,r){const i=Ka(),f=ja();return[[t,e].join("-"),[ka,r].join("-"),i,f].join("/")}function ch({protocol:t,version:e,relayUrl:r,sdkVersion:i,auth:f,projectId:n,useOnCloseEvent:d,bundleId:c}){const y=r.split("?"),A=$a(t,e,i),x={auth:f,ua:A,projectId:n,useOnCloseEvent:d||void 0,origin:c||void 0},E=Ha(y[1]||"",x);return y[0]+"?"+E}function dh(t){let e=(t.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof e<"u"?t.split("://")[1]:t;return e=e==="wss"?"https":"http",[e,r].join("://")}function lh(t,e,r){if(!t[e]||typeof t[e]!==r)throw new Error(`Missing or invalid "${e}" param`)}function Va(t,e=$n){return Ga(t.split(za),e)}function bh(t){return Va(t).join(Ki)}function lr(t,e){return t.filter(r=>e.includes(r)).length===t.length}function Ga(t,e=$n){return t.slice(Math.max(t.length-e,0))}function vh(t){return Object.fromEntries(t.entries())}function ph(t){return new Map(Object.entries(t))}function mh(t,e){const r={};return Object.keys(t).forEach(i=>{r[i]=e(t[i])}),r}const gh=t=>t;function Ya(t){return t.trim().replace(/^\w/,e=>e.toUpperCase())}function yh(t){return t.split(Ki).map(e=>Ya(e)).join(Ki)}function wh(t=_r.FIVE_MINUTES,e){const r=_r.toMiliseconds(t||_r.FIVE_MINUTES);let i,f,n;return{resolve:d=>{n&&i&&(clearTimeout(n),i(d))},reject:d=>{n&&f&&(clearTimeout(n),f(d))},done:()=>new Promise((d,c)=>{n=setTimeout(()=>{c(new Error(e))},r),i=d,f=c})}}function Ah(t,e,r){return new Promise(async(i,f)=>{const n=setTimeout(()=>f(new Error(r)),e);try{const d=await t;i(d)}catch(d){f(d)}clearTimeout(n)})}function Gn(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function xh(t){return Gn("topic",t)}function _h(t){return Gn("id",t)}function Mh(t){const[e,r]=t.split(":"),i={id:void 0,topic:void 0};if(e==="topic"&&typeof r=="string")i.topic=r;else if(e==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${r}`);return i}function Eh(t,e){return _r.fromMiliseconds((e||Date.now())+_r.toMiliseconds(t))}function Sh(t){return Date.now()>=_r.toMiliseconds(t)}function Dh(t,e){return`${t}${e?`:${e}`:""}`}function fr(t=[],e=[]){return[...new Set([...t,...e])]}async function Ih({id:t,topic:e,wcDeepLink:r}){var i;try{if(!r)return;const f=typeof r=="string"?JSON.parse(r):r;let n=f?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const d=`${n}/wc?requestId=${t}&sessionTopic=${e}`,c=Dr();if(c===vt.browser){if(!((i=Hi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}d.startsWith("https://")||d.startsWith("http://")?window.open(d,"_blank","noreferrer noopener"):window.open(d,"_self","noreferrer noopener")}else c===vt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(d)}catch(f){console.error(f)}}async function Nh(t,e){try{return await t.getItem(e)||(_i()?localStorage.getItem(e):void 0)}catch(r){console.error(r)}}function Yn(t,e){return t.filter(r=>e.includes(r))}function Ch(t,e){if(!t.includes(e))return null;const r=t.split(/([&,?,=])/),i=r.indexOf(e);return r[i+2]}function Bh(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}var Ja={exports:{}};/** ++ * [js-sha3]{@link https://github.com/emn178/js-sha3} ++ * ++ * @version 0.8.0 ++ * @author Chen, Yi-Cyuan [emn178@gmail.com] ++ * @copyright Chen, Yi-Cyuan 2015-2018 ++ * @license MIT ++ */(function(t){(function(){var e="input is invalid type",r="finalize already called",i=typeof window=="object",f=i?window:{};f.JS_SHA3_NO_WINDOW&&(i=!1);var n=!i&&typeof self=="object",d=!f.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?f=Rn:n&&(f=self);var c=!f.JS_SHA3_NO_COMMON_JS&&!0&&t.exports,y=!f.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",A="0123456789abcdef".split(""),x=[31,7936,2031616,520093696],E=[4,1024,262144,67108864],N=[1,256,65536,16777216],D=[6,1536,393216,100663296],I=[0,8,16,24],q=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],H=[224,256,384,512],V=[128,256],z=["hex","buffer","arrayBuffer","array","digest"],j={128:168,256:136};(f.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(M){return Object.prototype.toString.call(M)==="[object Array]"}),y&&(f.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(M){return typeof M=="object"&&M.buffer&&M.buffer.constructor===ArrayBuffer});for(var F=function(M,k,B){return function(T){return new b(M,k,M).update(T)[B]()}},U=function(M,k,B){return function(T,O){return new b(M,k,O).update(T)[B]()}},L=function(M,k,B){return function(T,O,v,R){return a["cshake"+M].update(T,O,v,R)[B]()}},m=function(M,k,B){return function(T,O,v,R){return a["kmac"+M].update(T,O,v,R)[B]()}},P=function(M,k,B,T){for(var O=0;O>5,this.byteCount=this.blockCount<<2,this.outputBlocks=B>>5,this.extraBytes=(B&31)>>3;for(var T=0;T<50;++T)this.s[T]=0}b.prototype.update=function(M){if(this.finalized)throw new Error(r);var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}for(var T=this.blocks,O=this.byteCount,v=M.length,R=this.blockCount,$=0,J=this.s,W,X;$>2]|=M[$]<>2]|=X<>2]|=(192|X>>6)<>2]|=(128|X&63)<=57344?(T[W>>2]|=(224|X>>12)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<>2]|=(240|X>>18)<>2]|=(128|X>>12&63)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<=O){for(this.start=W-O,this.block=T[R],W=0;W>8,B=M&255;B>0;)O.unshift(B),M=M>>8,B=M&255,++T;return k?O.push(T):O.unshift(T),this.update(O),O.length},b.prototype.encodeString=function(M){var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}var T=0,O=M.length;if(k)T=O;else for(var v=0;v=57344?T+=3:(R=65536+((R&1023)<<10|M.charCodeAt(++v)&1023),T+=4)}return T+=this.encode(T*8),this.update(M),T},b.prototype.bytepad=function(M,k){for(var B=this.encode(k),T=0;T>2]|=this.padding[k&3],this.lastByteIndex===this.byteCount)for(M[0]=M[B],k=1;k>4&15]+A[$&15]+A[$>>12&15]+A[$>>8&15]+A[$>>20&15]+A[$>>16&15]+A[$>>28&15]+A[$>>24&15];v%M===0&&(G(k),O=0)}return T&&($=k[O],R+=A[$>>4&15]+A[$&15],T>1&&(R+=A[$>>12&15]+A[$>>8&15]),T>2&&(R+=A[$>>20&15]+A[$>>16&15])),R},b.prototype.arrayBuffer=function(){this.finalize();var M=this.blockCount,k=this.s,B=this.outputBlocks,T=this.extraBytes,O=0,v=0,R=this.outputBits>>3,$;T?$=new ArrayBuffer(B+1<<2):$=new ArrayBuffer(R);for(var J=new Uint32Array($);v>8&255,R[$+2]=J>>16&255,R[$+3]=J>>24&255;v%M===0&&G(k)}return T&&($=v<<2,J=k[O],R[$]=J&255,T>1&&(R[$+1]=J>>8&255),T>2&&(R[$+2]=J>>16&255)),R};function S(M,k,B){b.call(this,M,k,B)}S.prototype=new b,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),b.prototype.finalize.call(this)};var G=function(M){var k,B,T,O,v,R,$,J,W,X,be,ye,fe,Ee,pe,te,se,oe,ee,ae,ne,Z,ve,me,re,ge,we,ie,Ae,xe,_e,je,$e,Me,Ve,Ge,Se,Ie,Ne,ue,Ce,Be,he,Oe,Re,ce,Pe,Te,de,Fe,Ue,le,Le,We,De,Qe,Ye,Je,Ut,Lt,qt,zt,kt;for(T=0;T<48;T+=2)O=M[0]^M[10]^M[20]^M[30]^M[40],v=M[1]^M[11]^M[21]^M[31]^M[41],R=M[2]^M[12]^M[22]^M[32]^M[42],$=M[3]^M[13]^M[23]^M[33]^M[43],J=M[4]^M[14]^M[24]^M[34]^M[44],W=M[5]^M[15]^M[25]^M[35]^M[45],X=M[6]^M[16]^M[26]^M[36]^M[46],be=M[7]^M[17]^M[27]^M[37]^M[47],ye=M[8]^M[18]^M[28]^M[38]^M[48],fe=M[9]^M[19]^M[29]^M[39]^M[49],k=ye^(R<<1|$>>>31),B=fe^($<<1|R>>>31),M[0]^=k,M[1]^=B,M[10]^=k,M[11]^=B,M[20]^=k,M[21]^=B,M[30]^=k,M[31]^=B,M[40]^=k,M[41]^=B,k=O^(J<<1|W>>>31),B=v^(W<<1|J>>>31),M[2]^=k,M[3]^=B,M[12]^=k,M[13]^=B,M[22]^=k,M[23]^=B,M[32]^=k,M[33]^=B,M[42]^=k,M[43]^=B,k=R^(X<<1|be>>>31),B=$^(be<<1|X>>>31),M[4]^=k,M[5]^=B,M[14]^=k,M[15]^=B,M[24]^=k,M[25]^=B,M[34]^=k,M[35]^=B,M[44]^=k,M[45]^=B,k=J^(ye<<1|fe>>>31),B=W^(fe<<1|ye>>>31),M[6]^=k,M[7]^=B,M[16]^=k,M[17]^=B,M[26]^=k,M[27]^=B,M[36]^=k,M[37]^=B,M[46]^=k,M[47]^=B,k=X^(O<<1|v>>>31),B=be^(v<<1|O>>>31),M[8]^=k,M[9]^=B,M[18]^=k,M[19]^=B,M[28]^=k,M[29]^=B,M[38]^=k,M[39]^=B,M[48]^=k,M[49]^=B,Ee=M[0],pe=M[1],ce=M[11]<<4|M[10]>>>28,Pe=M[10]<<4|M[11]>>>28,ie=M[20]<<3|M[21]>>>29,Ae=M[21]<<3|M[20]>>>29,Lt=M[31]<<9|M[30]>>>23,qt=M[30]<<9|M[31]>>>23,Be=M[40]<<18|M[41]>>>14,he=M[41]<<18|M[40]>>>14,Me=M[2]<<1|M[3]>>>31,Ve=M[3]<<1|M[2]>>>31,te=M[13]<<12|M[12]>>>20,se=M[12]<<12|M[13]>>>20,Te=M[22]<<10|M[23]>>>22,de=M[23]<<10|M[22]>>>22,xe=M[33]<<13|M[32]>>>19,_e=M[32]<<13|M[33]>>>19,zt=M[42]<<2|M[43]>>>30,kt=M[43]<<2|M[42]>>>30,We=M[5]<<30|M[4]>>>2,De=M[4]<<30|M[5]>>>2,Ge=M[14]<<6|M[15]>>>26,Se=M[15]<<6|M[14]>>>26,oe=M[25]<<11|M[24]>>>21,ee=M[24]<<11|M[25]>>>21,Fe=M[34]<<15|M[35]>>>17,Ue=M[35]<<15|M[34]>>>17,je=M[45]<<29|M[44]>>>3,$e=M[44]<<29|M[45]>>>3,me=M[6]<<28|M[7]>>>4,re=M[7]<<28|M[6]>>>4,Qe=M[17]<<23|M[16]>>>9,Ye=M[16]<<23|M[17]>>>9,Ie=M[26]<<25|M[27]>>>7,Ne=M[27]<<25|M[26]>>>7,ae=M[36]<<21|M[37]>>>11,ne=M[37]<<21|M[36]>>>11,le=M[47]<<24|M[46]>>>8,Le=M[46]<<24|M[47]>>>8,Oe=M[8]<<27|M[9]>>>5,Re=M[9]<<27|M[8]>>>5,ge=M[18]<<20|M[19]>>>12,we=M[19]<<20|M[18]>>>12,Je=M[29]<<7|M[28]>>>25,Ut=M[28]<<7|M[29]>>>25,ue=M[38]<<8|M[39]>>>24,Ce=M[39]<<8|M[38]>>>24,Z=M[48]<<14|M[49]>>>18,ve=M[49]<<14|M[48]>>>18,M[0]=Ee^~te&oe,M[1]=pe^~se&ee,M[10]=me^~ge&ie,M[11]=re^~we&Ae,M[20]=Me^~Ge&Ie,M[21]=Ve^~Se&Ne,M[30]=Oe^~ce&Te,M[31]=Re^~Pe&de,M[40]=We^~Qe&Je,M[41]=De^~Ye&Ut,M[2]=te^~oe&ae,M[3]=se^~ee&ne,M[12]=ge^~ie&xe,M[13]=we^~Ae&_e,M[22]=Ge^~Ie&ue,M[23]=Se^~Ne&Ce,M[32]=ce^~Te&Fe,M[33]=Pe^~de&Ue,M[42]=Qe^~Je&Lt,M[43]=Ye^~Ut&qt,M[4]=oe^~ae&Z,M[5]=ee^~ne&ve,M[14]=ie^~xe&je,M[15]=Ae^~_e&$e,M[24]=Ie^~ue&Be,M[25]=Ne^~Ce&he,M[34]=Te^~Fe&le,M[35]=de^~Ue&Le,M[44]=Je^~Lt&zt,M[45]=Ut^~qt&kt,M[6]=ae^~Z&Ee,M[7]=ne^~ve&pe,M[16]=xe^~je&me,M[17]=_e^~$e&re,M[26]=ue^~Be&Me,M[27]=Ce^~he&Ve,M[36]=Fe^~le&Oe,M[37]=Ue^~Le&Re,M[46]=Lt^~zt&We,M[47]=qt^~kt&De,M[8]=Z^~Ee&te,M[9]=ve^~pe&se,M[18]=je^~me&ge,M[19]=$e^~re&we,M[28]=Be^~Me&Ge,M[29]=he^~Ve&Se,M[38]=le^~Oe&ce,M[39]=Le^~Re&Pe,M[48]=zt^~We&Qe,M[49]=kt^~De&Ye,M[0]^=q[T],M[1]^=q[T+1]};if(c)t.exports=a;else for(l=0;l{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}const Za=Ph();var Wn;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Wn||(Wn={}));var Ht;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Ht||(Ht={}));const e0="0123456789abcdef";class ke{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const i=e.toLowerCase();ji[i]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Xa>ji[i])&&console.log.apply(console,r)}debug(...e){this._log(ke.levels.DEBUG,e)}info(...e){this._log(ke.levels.INFO,e)}warn(...e){this._log(ke.levels.WARNING,e)}makeError(e,r,i){if(Qa)return this.makeError("censored error",r,{});r||(r=ke.errors.UNKNOWN_ERROR),i||(i={});const f=[];Object.keys(i).forEach(y=>{const A=i[y];try{if(A instanceof Uint8Array){let x="";for(let E=0;E>4],x+=e0[A[E]&15];f.push(y+"=Uint8Array(0x"+x+")")}else f.push(y+"="+JSON.stringify(A))}catch{f.push(y+"="+JSON.stringify(i[y].toString()))}}),f.push(`code=${r}`),f.push(`version=${this.version}`);const n=e;let d="";switch(r){case Ht.NUMERIC_FAULT:{d="NUMERIC_FAULT";const y=e;switch(y){case"overflow":case"underflow":case"division-by-zero":d+="-"+y;break;case"negative-power":case"negative-width":d+="-unsupported";break;case"unbound-bitwise-result":d+="-unbound-result";break}break}case Ht.CALL_EXCEPTION:case Ht.INSUFFICIENT_FUNDS:case Ht.MISSING_NEW:case Ht.NONCE_EXPIRED:case Ht.REPLACEMENT_UNDERPRICED:case Ht.TRANSACTION_REPLACED:case Ht.UNPREDICTABLE_GAS_LIMIT:d=r;break}d&&(e+=" [ See: https://links.ethers.org/v5-errors-"+d+" ]"),f.length&&(e+=" ("+f.join(", ")+")");const c=new Error(e);return c.reason=n,c.code=r,Object.keys(i).forEach(function(y){c[y]=i[y]}),c}throwError(e,r,i){throw this.makeError(e,r,i)}throwArgumentError(e,r,i){return this.throwError(e,ke.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(e,r,i,f){e||this.throwError(r,i,f)}assertArgument(e,r,i,f){e||this.throwArgumentError(r,i,f)}checkNormalize(e){Za&&this.throwError("platform missing String.prototype.normalize",ke.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Za})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,i){i?i=": "+i:i="",er&&this.throwError("too many arguments"+i,ke.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ke.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Jn||(Jn=new ke(Rh)),Jn}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Wa){if(!e)return;this.globalLogger().throwError("error censorship permanent",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Qa=!!e,Wa=!!r}static setLogLevel(e){const r=ji[e.toLowerCase()];if(r==null){ke.globalLogger().warn("invalid log level - "+e);return}Xa=r}static from(e){return new ke(e)}}ke.errors=Ht,ke.levels=Wn;const Th="bytes/5.7.0",it=new ke(Th);function t0(t){return!!t.toHexString}function ei(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return ei(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function Fh(t){return xt(t)&&!(t.length%2)||ti(t)}function r0(t){return typeof t=="number"&&t==t&&t%1===0}function ti(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!r0(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function tt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),ei(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t)&&(t=t.toHexString()),xt(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":it.throwArgumentError("hex data is odd-length","value",t));const i=[];for(let f=0;ftt(f)),r=e.reduce((f,n)=>f+n.length,0),i=new Uint8Array(r);return e.reduce((f,n)=>(i.set(n,f),f+n.length),0),ei(i)}function Lh(t,e){t=tt(t),t.length>e&&it.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),ei(r)}function xt(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const Qn="0123456789abcdef";function pt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=Qn[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t))return t.toHexString();if(xt(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":it.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(ti(t)){let r="0x";for(let i=0;i>4]+Qn[f&15]}return r}return it.throwArgumentError("invalid hexlify value","value",t)}function qh(t){if(typeof t!="string")t=pt(t);else if(!xt(t)||t.length%2)return null;return(t.length-2)/2}function i0(t,e,r){return typeof t!="string"?t=pt(t):(!xt(t)||t.length%2)&&it.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function Vt(t,e){for(typeof t!="string"?t=pt(t):xt(t)||it.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&it.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function n0(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Fh(t)){let r=tt(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64))):r.length===65?(e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64)),e.v=r[64]):it.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:it.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=pt(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const f=Lh(tt(e._vs),32);e._vs=pt(f);const n=f[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=n:e.recoveryParam!==n&&it.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),f[0]&=127;const d=pt(f);e.s==null?e.s=d:e.s!==d&&it.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?it.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const f=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==f&&it.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!xt(e.r)?it.throwArgumentError("signature missing or invalid r","signature",t):e.r=Vt(e.r,32),e.s==null||!xt(e.s)?it.throwArgumentError("signature missing or invalid s","signature",t):e.s=Vt(e.s,32);const r=tt(e.s);r[0]>=128&&it.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const i=pt(r);e._vs&&(xt(e._vs)||it.throwArgumentError("signature invalid _vs","signature",t),e._vs=Vt(e._vs,32)),e._vs==null?e._vs=i:e._vs!==i&&it.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function Xn(t){return"0x"+Oh.keccak_256(tt(t))}var f0={exports:{}},zh={},kh=Object.freeze({__proto__:null,default:zh}),$i=ya(kh);(function(t){(function(e,r){function i(u,a){if(!u)throw new Error(a||"Assertion failed")}function f(u,a){u.super_=a;var o=function(){};o.prototype=a.prototype,u.prototype=new o,u.prototype.constructor=u}function n(u,a,o){if(n.isBN(u))return u;this.negative=0,this.words=null,this.length=0,this.red=null,u!==null&&((a==="le"||a==="be")&&(o=a,a=10),this._init(u||0,a||10,o||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(a){return a instanceof n?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===n.wordSize&&Array.isArray(a.words)},n.max=function(a,o){return a.cmp(o)>0?a:o},n.min=function(a,o){return a.cmp(o)<0?a:o},n.prototype._init=function(a,o,l){if(typeof a=="number")return this._initNumber(a,o,l);if(typeof a=="object")return this._initArray(a,o,l);o==="hex"&&(o=16),i(o===(o|0)&&o>=2&&o<=36),a=a.toString().replace(/\s+/g,"");var w=0;a[0]==="-"&&(w++,this.negative=1),w=0;w-=3)g=a[w]|a[w-1]<<8|a[w-2]<<16,this.words[_]|=g<>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);else if(l==="le")for(w=0,_=0;w>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);return this._strip()};function c(u,a){var o=u.charCodeAt(a);if(o>=48&&o<=57)return o-48;if(o>=65&&o<=70)return o-55;if(o>=97&&o<=102)return o-87;i(!1,"Invalid character in "+u)}function y(u,a,o){var l=c(u,o);return o-1>=a&&(l|=c(u,o-1)<<4),l}n.prototype._parseHex=function(a,o,l){this.length=Math.ceil((a.length-o)/6),this.words=new Array(this.length);for(var w=0;w=o;w-=2)s=y(a,o,w)<<_,this.words[g]|=s&67108863,_>=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8;else{var p=a.length-o;for(w=p%2===0?o+1:o;w=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8}this._strip()};function A(u,a,o,l){for(var w=0,_=0,g=Math.min(u.length,o),s=a;s=49?_=p-49+10:p>=17?_=p-17+10:_=p,i(p>=0&&_1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=E}catch{n.prototype.inspect=E}else n.prototype.inspect=E;function E(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],D=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],I=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(a,o){a=a||10,o=o|0||1;var l;if(a===16||a==="hex"){l="";for(var w=0,_=0,g=0;g>>24-w&16777215,w+=2,w>=26&&(w-=26,g--),_!==0||g!==this.length-1?l=N[6-p.length]+p+l:l=p+l}for(_!==0&&(l=_.toString(16)+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}if(a===(a|0)&&a>=2&&a<=36){var b=D[a],S=I[a];l="";var G=this.clone();for(G.negative=0;!G.isZero();){var M=G.modrn(S).toString(a);G=G.idivn(S),G.isZero()?l=M+l:l=N[b-M.length]+M+l}for(this.isZero()&&(l="0"+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},n.prototype.toJSON=function(){return this.toString(16,2)},d&&(n.prototype.toBuffer=function(a,o){return this.toArrayLike(d,a,o)}),n.prototype.toArray=function(a,o){return this.toArrayLike(Array,a,o)};var q=function(a,o){return a.allocUnsafe?a.allocUnsafe(o):new a(o)};n.prototype.toArrayLike=function(a,o,l){this._strip();var w=this.byteLength(),_=l||Math.max(1,w);i(w<=_,"byte array longer than desired length"),i(_>0,"Requested array length <= 0");var g=q(a,_),s=o==="le"?"LE":"BE";return this["_toArrayLike"+s](g,w),g},n.prototype._toArrayLikeLE=function(a,o){for(var l=0,w=0,_=0,g=0;_>8&255),l>16&255),g===6?(l>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l=0&&(a[l--]=s>>8&255),l>=0&&(a[l--]=s>>16&255),g===6?(l>=0&&(a[l--]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l>=0)for(a[l--]=w;l>=0;)a[l--]=0},Math.clz32?n.prototype._countBits=function(a){return 32-Math.clz32(a)}:n.prototype._countBits=function(a){var o=a,l=0;return o>=4096&&(l+=13,o>>>=13),o>=64&&(l+=7,o>>>=7),o>=8&&(l+=4,o>>>=4),o>=2&&(l+=2,o>>>=2),l+o},n.prototype._zeroBits=function(a){if(a===0)return 26;var o=a,l=0;return o&8191||(l+=13,o>>>=13),o&127||(l+=7,o>>>=7),o&15||(l+=4,o>>>=4),o&3||(l+=2,o>>>=2),o&1||l++,l},n.prototype.bitLength=function(){var a=this.words[this.length-1],o=this._countBits(a);return(this.length-1)*26+o};function H(u){for(var a=new Array(u.bitLength()),o=0;o>>w&1}return a}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,o=0;oa.length?this.clone().ior(a):a.clone().ior(this)},n.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},n.prototype.iuand=function(a){var o;this.length>a.length?o=a:o=this;for(var l=0;la.length?this.clone().iand(a):a.clone().iand(this)},n.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},n.prototype.iuxor=function(a){var o,l;this.length>a.length?(o=this,l=a):(o=a,l=this);for(var w=0;wa.length?this.clone().ixor(a):a.clone().ixor(this)},n.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},n.prototype.inotn=function(a){i(typeof a=="number"&&a>=0);var o=Math.ceil(a/26)|0,l=a%26;this._expand(o),l>0&&o--;for(var w=0;w0&&(this.words[w]=~this.words[w]&67108863>>26-l),this._strip()},n.prototype.notn=function(a){return this.clone().inotn(a)},n.prototype.setn=function(a,o){i(typeof a=="number"&&a>=0);var l=a/26|0,w=a%26;return this._expand(l+1),o?this.words[l]=this.words[l]|1<a.length?(l=this,w=a):(l=a,w=this);for(var _=0,g=0;g>>26;for(;_!==0&&g>>26;if(this.length=l.length,_!==0)this.words[this.length]=_,this.length++;else if(l!==this)for(;ga.length?this.clone().iadd(a):a.clone().iadd(this)},n.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var o=this.iadd(a);return a.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var l=this.cmp(a);if(l===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,_;l>0?(w=this,_=a):(w=a,_=this);for(var g=0,s=0;s<_.length;s++)o=(w.words[s]|0)-(_.words[s]|0)+g,g=o>>26,this.words[s]=o&67108863;for(;g!==0&&s>26,this.words[s]=o&67108863;if(g===0&&s>>26,G=p&67108863,M=Math.min(b,a.length-1),k=Math.max(0,b-u.length+1);k<=M;k++){var B=b-k|0;w=u.words[B]|0,_=a.words[k]|0,g=w*_+G,S+=g/67108864|0,G=g&67108863}o.words[b]=G|0,p=S|0}return p!==0?o.words[b]=p|0:o.length--,o._strip()}var z=function(a,o,l){var w=a.words,_=o.words,g=l.words,s=0,p,b,S,G=w[0]|0,M=G&8191,k=G>>>13,B=w[1]|0,T=B&8191,O=B>>>13,v=w[2]|0,R=v&8191,$=v>>>13,J=w[3]|0,W=J&8191,X=J>>>13,be=w[4]|0,ye=be&8191,fe=be>>>13,Ee=w[5]|0,pe=Ee&8191,te=Ee>>>13,se=w[6]|0,oe=se&8191,ee=se>>>13,ae=w[7]|0,ne=ae&8191,Z=ae>>>13,ve=w[8]|0,me=ve&8191,re=ve>>>13,ge=w[9]|0,we=ge&8191,ie=ge>>>13,Ae=_[0]|0,xe=Ae&8191,_e=Ae>>>13,je=_[1]|0,$e=je&8191,Me=je>>>13,Ve=_[2]|0,Ge=Ve&8191,Se=Ve>>>13,Ie=_[3]|0,Ne=Ie&8191,ue=Ie>>>13,Ce=_[4]|0,Be=Ce&8191,he=Ce>>>13,Oe=_[5]|0,Re=Oe&8191,ce=Oe>>>13,Pe=_[6]|0,Te=Pe&8191,de=Pe>>>13,Fe=_[7]|0,Ue=Fe&8191,le=Fe>>>13,Le=_[8]|0,We=Le&8191,De=Le>>>13,Qe=_[9]|0,Ye=Qe&8191,Je=Qe>>>13;l.negative=a.negative^o.negative,l.length=19,p=Math.imul(M,xe),b=Math.imul(M,_e),b=b+Math.imul(k,xe)|0,S=Math.imul(k,_e);var Ut=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,p=Math.imul(T,xe),b=Math.imul(T,_e),b=b+Math.imul(O,xe)|0,S=Math.imul(O,_e),p=p+Math.imul(M,$e)|0,b=b+Math.imul(M,Me)|0,b=b+Math.imul(k,$e)|0,S=S+Math.imul(k,Me)|0;var Lt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,p=Math.imul(R,xe),b=Math.imul(R,_e),b=b+Math.imul($,xe)|0,S=Math.imul($,_e),p=p+Math.imul(T,$e)|0,b=b+Math.imul(T,Me)|0,b=b+Math.imul(O,$e)|0,S=S+Math.imul(O,Me)|0,p=p+Math.imul(M,Ge)|0,b=b+Math.imul(M,Se)|0,b=b+Math.imul(k,Ge)|0,S=S+Math.imul(k,Se)|0;var qt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qt>>>26)|0,qt&=67108863,p=Math.imul(W,xe),b=Math.imul(W,_e),b=b+Math.imul(X,xe)|0,S=Math.imul(X,_e),p=p+Math.imul(R,$e)|0,b=b+Math.imul(R,Me)|0,b=b+Math.imul($,$e)|0,S=S+Math.imul($,Me)|0,p=p+Math.imul(T,Ge)|0,b=b+Math.imul(T,Se)|0,b=b+Math.imul(O,Ge)|0,S=S+Math.imul(O,Se)|0,p=p+Math.imul(M,Ne)|0,b=b+Math.imul(M,ue)|0,b=b+Math.imul(k,Ne)|0,S=S+Math.imul(k,ue)|0;var zt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zt>>>26)|0,zt&=67108863,p=Math.imul(ye,xe),b=Math.imul(ye,_e),b=b+Math.imul(fe,xe)|0,S=Math.imul(fe,_e),p=p+Math.imul(W,$e)|0,b=b+Math.imul(W,Me)|0,b=b+Math.imul(X,$e)|0,S=S+Math.imul(X,Me)|0,p=p+Math.imul(R,Ge)|0,b=b+Math.imul(R,Se)|0,b=b+Math.imul($,Ge)|0,S=S+Math.imul($,Se)|0,p=p+Math.imul(T,Ne)|0,b=b+Math.imul(T,ue)|0,b=b+Math.imul(O,Ne)|0,S=S+Math.imul(O,ue)|0,p=p+Math.imul(M,Be)|0,b=b+Math.imul(M,he)|0,b=b+Math.imul(k,Be)|0,S=S+Math.imul(k,he)|0;var kt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kt>>>26)|0,kt&=67108863,p=Math.imul(pe,xe),b=Math.imul(pe,_e),b=b+Math.imul(te,xe)|0,S=Math.imul(te,_e),p=p+Math.imul(ye,$e)|0,b=b+Math.imul(ye,Me)|0,b=b+Math.imul(fe,$e)|0,S=S+Math.imul(fe,Me)|0,p=p+Math.imul(W,Ge)|0,b=b+Math.imul(W,Se)|0,b=b+Math.imul(X,Ge)|0,S=S+Math.imul(X,Se)|0,p=p+Math.imul(R,Ne)|0,b=b+Math.imul(R,ue)|0,b=b+Math.imul($,Ne)|0,S=S+Math.imul($,ue)|0,p=p+Math.imul(T,Be)|0,b=b+Math.imul(T,he)|0,b=b+Math.imul(O,Be)|0,S=S+Math.imul(O,he)|0,p=p+Math.imul(M,Re)|0,b=b+Math.imul(M,ce)|0,b=b+Math.imul(k,Re)|0,S=S+Math.imul(k,ce)|0;var qr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qr>>>26)|0,qr&=67108863,p=Math.imul(oe,xe),b=Math.imul(oe,_e),b=b+Math.imul(ee,xe)|0,S=Math.imul(ee,_e),p=p+Math.imul(pe,$e)|0,b=b+Math.imul(pe,Me)|0,b=b+Math.imul(te,$e)|0,S=S+Math.imul(te,Me)|0,p=p+Math.imul(ye,Ge)|0,b=b+Math.imul(ye,Se)|0,b=b+Math.imul(fe,Ge)|0,S=S+Math.imul(fe,Se)|0,p=p+Math.imul(W,Ne)|0,b=b+Math.imul(W,ue)|0,b=b+Math.imul(X,Ne)|0,S=S+Math.imul(X,ue)|0,p=p+Math.imul(R,Be)|0,b=b+Math.imul(R,he)|0,b=b+Math.imul($,Be)|0,S=S+Math.imul($,he)|0,p=p+Math.imul(T,Re)|0,b=b+Math.imul(T,ce)|0,b=b+Math.imul(O,Re)|0,S=S+Math.imul(O,ce)|0,p=p+Math.imul(M,Te)|0,b=b+Math.imul(M,de)|0,b=b+Math.imul(k,Te)|0,S=S+Math.imul(k,de)|0;var zr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zr>>>26)|0,zr&=67108863,p=Math.imul(ne,xe),b=Math.imul(ne,_e),b=b+Math.imul(Z,xe)|0,S=Math.imul(Z,_e),p=p+Math.imul(oe,$e)|0,b=b+Math.imul(oe,Me)|0,b=b+Math.imul(ee,$e)|0,S=S+Math.imul(ee,Me)|0,p=p+Math.imul(pe,Ge)|0,b=b+Math.imul(pe,Se)|0,b=b+Math.imul(te,Ge)|0,S=S+Math.imul(te,Se)|0,p=p+Math.imul(ye,Ne)|0,b=b+Math.imul(ye,ue)|0,b=b+Math.imul(fe,Ne)|0,S=S+Math.imul(fe,ue)|0,p=p+Math.imul(W,Be)|0,b=b+Math.imul(W,he)|0,b=b+Math.imul(X,Be)|0,S=S+Math.imul(X,he)|0,p=p+Math.imul(R,Re)|0,b=b+Math.imul(R,ce)|0,b=b+Math.imul($,Re)|0,S=S+Math.imul($,ce)|0,p=p+Math.imul(T,Te)|0,b=b+Math.imul(T,de)|0,b=b+Math.imul(O,Te)|0,S=S+Math.imul(O,de)|0,p=p+Math.imul(M,Ue)|0,b=b+Math.imul(M,le)|0,b=b+Math.imul(k,Ue)|0,S=S+Math.imul(k,le)|0;var kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kr>>>26)|0,kr&=67108863,p=Math.imul(me,xe),b=Math.imul(me,_e),b=b+Math.imul(re,xe)|0,S=Math.imul(re,_e),p=p+Math.imul(ne,$e)|0,b=b+Math.imul(ne,Me)|0,b=b+Math.imul(Z,$e)|0,S=S+Math.imul(Z,Me)|0,p=p+Math.imul(oe,Ge)|0,b=b+Math.imul(oe,Se)|0,b=b+Math.imul(ee,Ge)|0,S=S+Math.imul(ee,Se)|0,p=p+Math.imul(pe,Ne)|0,b=b+Math.imul(pe,ue)|0,b=b+Math.imul(te,Ne)|0,S=S+Math.imul(te,ue)|0,p=p+Math.imul(ye,Be)|0,b=b+Math.imul(ye,he)|0,b=b+Math.imul(fe,Be)|0,S=S+Math.imul(fe,he)|0,p=p+Math.imul(W,Re)|0,b=b+Math.imul(W,ce)|0,b=b+Math.imul(X,Re)|0,S=S+Math.imul(X,ce)|0,p=p+Math.imul(R,Te)|0,b=b+Math.imul(R,de)|0,b=b+Math.imul($,Te)|0,S=S+Math.imul($,de)|0,p=p+Math.imul(T,Ue)|0,b=b+Math.imul(T,le)|0,b=b+Math.imul(O,Ue)|0,S=S+Math.imul(O,le)|0,p=p+Math.imul(M,We)|0,b=b+Math.imul(M,De)|0,b=b+Math.imul(k,We)|0,S=S+Math.imul(k,De)|0;var Hr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,p=Math.imul(we,xe),b=Math.imul(we,_e),b=b+Math.imul(ie,xe)|0,S=Math.imul(ie,_e),p=p+Math.imul(me,$e)|0,b=b+Math.imul(me,Me)|0,b=b+Math.imul(re,$e)|0,S=S+Math.imul(re,Me)|0,p=p+Math.imul(ne,Ge)|0,b=b+Math.imul(ne,Se)|0,b=b+Math.imul(Z,Ge)|0,S=S+Math.imul(Z,Se)|0,p=p+Math.imul(oe,Ne)|0,b=b+Math.imul(oe,ue)|0,b=b+Math.imul(ee,Ne)|0,S=S+Math.imul(ee,ue)|0,p=p+Math.imul(pe,Be)|0,b=b+Math.imul(pe,he)|0,b=b+Math.imul(te,Be)|0,S=S+Math.imul(te,he)|0,p=p+Math.imul(ye,Re)|0,b=b+Math.imul(ye,ce)|0,b=b+Math.imul(fe,Re)|0,S=S+Math.imul(fe,ce)|0,p=p+Math.imul(W,Te)|0,b=b+Math.imul(W,de)|0,b=b+Math.imul(X,Te)|0,S=S+Math.imul(X,de)|0,p=p+Math.imul(R,Ue)|0,b=b+Math.imul(R,le)|0,b=b+Math.imul($,Ue)|0,S=S+Math.imul($,le)|0,p=p+Math.imul(T,We)|0,b=b+Math.imul(T,De)|0,b=b+Math.imul(O,We)|0,S=S+Math.imul(O,De)|0,p=p+Math.imul(M,Ye)|0,b=b+Math.imul(M,Je)|0,b=b+Math.imul(k,Ye)|0,S=S+Math.imul(k,Je)|0;var Kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,p=Math.imul(we,$e),b=Math.imul(we,Me),b=b+Math.imul(ie,$e)|0,S=Math.imul(ie,Me),p=p+Math.imul(me,Ge)|0,b=b+Math.imul(me,Se)|0,b=b+Math.imul(re,Ge)|0,S=S+Math.imul(re,Se)|0,p=p+Math.imul(ne,Ne)|0,b=b+Math.imul(ne,ue)|0,b=b+Math.imul(Z,Ne)|0,S=S+Math.imul(Z,ue)|0,p=p+Math.imul(oe,Be)|0,b=b+Math.imul(oe,he)|0,b=b+Math.imul(ee,Be)|0,S=S+Math.imul(ee,he)|0,p=p+Math.imul(pe,Re)|0,b=b+Math.imul(pe,ce)|0,b=b+Math.imul(te,Re)|0,S=S+Math.imul(te,ce)|0,p=p+Math.imul(ye,Te)|0,b=b+Math.imul(ye,de)|0,b=b+Math.imul(fe,Te)|0,S=S+Math.imul(fe,de)|0,p=p+Math.imul(W,Ue)|0,b=b+Math.imul(W,le)|0,b=b+Math.imul(X,Ue)|0,S=S+Math.imul(X,le)|0,p=p+Math.imul(R,We)|0,b=b+Math.imul(R,De)|0,b=b+Math.imul($,We)|0,S=S+Math.imul($,De)|0,p=p+Math.imul(T,Ye)|0,b=b+Math.imul(T,Je)|0,b=b+Math.imul(O,Ye)|0,S=S+Math.imul(O,Je)|0;var jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(jr>>>26)|0,jr&=67108863,p=Math.imul(we,Ge),b=Math.imul(we,Se),b=b+Math.imul(ie,Ge)|0,S=Math.imul(ie,Se),p=p+Math.imul(me,Ne)|0,b=b+Math.imul(me,ue)|0,b=b+Math.imul(re,Ne)|0,S=S+Math.imul(re,ue)|0,p=p+Math.imul(ne,Be)|0,b=b+Math.imul(ne,he)|0,b=b+Math.imul(Z,Be)|0,S=S+Math.imul(Z,he)|0,p=p+Math.imul(oe,Re)|0,b=b+Math.imul(oe,ce)|0,b=b+Math.imul(ee,Re)|0,S=S+Math.imul(ee,ce)|0,p=p+Math.imul(pe,Te)|0,b=b+Math.imul(pe,de)|0,b=b+Math.imul(te,Te)|0,S=S+Math.imul(te,de)|0,p=p+Math.imul(ye,Ue)|0,b=b+Math.imul(ye,le)|0,b=b+Math.imul(fe,Ue)|0,S=S+Math.imul(fe,le)|0,p=p+Math.imul(W,We)|0,b=b+Math.imul(W,De)|0,b=b+Math.imul(X,We)|0,S=S+Math.imul(X,De)|0,p=p+Math.imul(R,Ye)|0,b=b+Math.imul(R,Je)|0,b=b+Math.imul($,Ye)|0,S=S+Math.imul($,Je)|0;var $r=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+($r>>>26)|0,$r&=67108863,p=Math.imul(we,Ne),b=Math.imul(we,ue),b=b+Math.imul(ie,Ne)|0,S=Math.imul(ie,ue),p=p+Math.imul(me,Be)|0,b=b+Math.imul(me,he)|0,b=b+Math.imul(re,Be)|0,S=S+Math.imul(re,he)|0,p=p+Math.imul(ne,Re)|0,b=b+Math.imul(ne,ce)|0,b=b+Math.imul(Z,Re)|0,S=S+Math.imul(Z,ce)|0,p=p+Math.imul(oe,Te)|0,b=b+Math.imul(oe,de)|0,b=b+Math.imul(ee,Te)|0,S=S+Math.imul(ee,de)|0,p=p+Math.imul(pe,Ue)|0,b=b+Math.imul(pe,le)|0,b=b+Math.imul(te,Ue)|0,S=S+Math.imul(te,le)|0,p=p+Math.imul(ye,We)|0,b=b+Math.imul(ye,De)|0,b=b+Math.imul(fe,We)|0,S=S+Math.imul(fe,De)|0,p=p+Math.imul(W,Ye)|0,b=b+Math.imul(W,Je)|0,b=b+Math.imul(X,Ye)|0,S=S+Math.imul(X,Je)|0;var Vr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,p=Math.imul(we,Be),b=Math.imul(we,he),b=b+Math.imul(ie,Be)|0,S=Math.imul(ie,he),p=p+Math.imul(me,Re)|0,b=b+Math.imul(me,ce)|0,b=b+Math.imul(re,Re)|0,S=S+Math.imul(re,ce)|0,p=p+Math.imul(ne,Te)|0,b=b+Math.imul(ne,de)|0,b=b+Math.imul(Z,Te)|0,S=S+Math.imul(Z,de)|0,p=p+Math.imul(oe,Ue)|0,b=b+Math.imul(oe,le)|0,b=b+Math.imul(ee,Ue)|0,S=S+Math.imul(ee,le)|0,p=p+Math.imul(pe,We)|0,b=b+Math.imul(pe,De)|0,b=b+Math.imul(te,We)|0,S=S+Math.imul(te,De)|0,p=p+Math.imul(ye,Ye)|0,b=b+Math.imul(ye,Je)|0,b=b+Math.imul(fe,Ye)|0,S=S+Math.imul(fe,Je)|0;var Gr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,p=Math.imul(we,Re),b=Math.imul(we,ce),b=b+Math.imul(ie,Re)|0,S=Math.imul(ie,ce),p=p+Math.imul(me,Te)|0,b=b+Math.imul(me,de)|0,b=b+Math.imul(re,Te)|0,S=S+Math.imul(re,de)|0,p=p+Math.imul(ne,Ue)|0,b=b+Math.imul(ne,le)|0,b=b+Math.imul(Z,Ue)|0,S=S+Math.imul(Z,le)|0,p=p+Math.imul(oe,We)|0,b=b+Math.imul(oe,De)|0,b=b+Math.imul(ee,We)|0,S=S+Math.imul(ee,De)|0,p=p+Math.imul(pe,Ye)|0,b=b+Math.imul(pe,Je)|0,b=b+Math.imul(te,Ye)|0,S=S+Math.imul(te,Je)|0;var Yr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,p=Math.imul(we,Te),b=Math.imul(we,de),b=b+Math.imul(ie,Te)|0,S=Math.imul(ie,de),p=p+Math.imul(me,Ue)|0,b=b+Math.imul(me,le)|0,b=b+Math.imul(re,Ue)|0,S=S+Math.imul(re,le)|0,p=p+Math.imul(ne,We)|0,b=b+Math.imul(ne,De)|0,b=b+Math.imul(Z,We)|0,S=S+Math.imul(Z,De)|0,p=p+Math.imul(oe,Ye)|0,b=b+Math.imul(oe,Je)|0,b=b+Math.imul(ee,Ye)|0,S=S+Math.imul(ee,Je)|0;var Jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,p=Math.imul(we,Ue),b=Math.imul(we,le),b=b+Math.imul(ie,Ue)|0,S=Math.imul(ie,le),p=p+Math.imul(me,We)|0,b=b+Math.imul(me,De)|0,b=b+Math.imul(re,We)|0,S=S+Math.imul(re,De)|0,p=p+Math.imul(ne,Ye)|0,b=b+Math.imul(ne,Je)|0,b=b+Math.imul(Z,Ye)|0,S=S+Math.imul(Z,Je)|0;var Wr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,p=Math.imul(we,We),b=Math.imul(we,De),b=b+Math.imul(ie,We)|0,S=Math.imul(ie,De),p=p+Math.imul(me,Ye)|0,b=b+Math.imul(me,Je)|0,b=b+Math.imul(re,Ye)|0,S=S+Math.imul(re,Je)|0;var oa=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(oa>>>26)|0,oa&=67108863,p=Math.imul(we,Ye),b=Math.imul(we,Je),b=b+Math.imul(ie,Ye)|0,S=Math.imul(ie,Je);var sa=(s+p|0)+((b&8191)<<13)|0;return s=(S+(b>>>13)|0)+(sa>>>26)|0,sa&=67108863,g[0]=Ut,g[1]=Lt,g[2]=qt,g[3]=zt,g[4]=kt,g[5]=qr,g[6]=zr,g[7]=kr,g[8]=Hr,g[9]=Kr,g[10]=jr,g[11]=$r,g[12]=Vr,g[13]=Gr,g[14]=Yr,g[15]=Jr,g[16]=Wr,g[17]=oa,g[18]=sa,s!==0&&(g[19]=s,l.length++),l};Math.imul||(z=V);function j(u,a,o){o.negative=a.negative^u.negative,o.length=u.length+a.length;for(var l=0,w=0,_=0;_>>26)|0,w+=g>>>26,g&=67108863}o.words[_]=s,l=g,g=w}return l!==0?o.words[_]=l:o.length--,o._strip()}function F(u,a,o){return j(u,a,o)}n.prototype.mulTo=function(a,o){var l,w=this.length+a.length;return this.length===10&&a.length===10?l=z(this,a,o):w<63?l=V(this,a,o):w<1024?l=j(this,a,o):l=F(this,a,o),l},n.prototype.mul=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),this.mulTo(a,o)},n.prototype.mulf=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),F(this,a,o)},n.prototype.imul=function(a){return this.clone().mulTo(a,this)},n.prototype.imuln=function(a){var o=a<0;o&&(a=-a),i(typeof a=="number"),i(a<67108864);for(var l=0,w=0;w>=26,l+=_/67108864|0,l+=g>>>26,this.words[w]=g&67108863}return l!==0&&(this.words[w]=l,this.length++),o?this.ineg():this},n.prototype.muln=function(a){return this.clone().imuln(a)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(a){var o=H(a);if(o.length===0)return new n(1);for(var l=this,w=0;w=0);var o=a%26,l=(a-o)/26,w=67108863>>>26-o<<26-o,_;if(o!==0){var g=0;for(_=0;_>>26-o}g&&(this.words[_]=g,this.length++)}if(l!==0){for(_=this.length-1;_>=0;_--)this.words[_+l]=this.words[_];for(_=0;_=0);var w;o?w=(o-o%26)/26:w=0;var _=a%26,g=Math.min((a-_)/26,this.length),s=67108863^67108863>>>_<<_,p=l;if(w-=g,w=Math.max(0,w),p){for(var b=0;bg)for(this.length-=g,b=0;b=0&&(S!==0||b>=w);b--){var G=this.words[b]|0;this.words[b]=S<<26-_|G>>>_,S=G&s}return p&&S!==0&&(p.words[p.length++]=S),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(a,o,l){return i(this.negative===0),this.iushrn(a,o,l)},n.prototype.shln=function(a){return this.clone().ishln(a)},n.prototype.ushln=function(a){return this.clone().iushln(a)},n.prototype.shrn=function(a){return this.clone().ishrn(a)},n.prototype.ushrn=function(a){return this.clone().iushrn(a)},n.prototype.testn=function(a){i(typeof a=="number"&&a>=0);var o=a%26,l=(a-o)/26,w=1<=0);var o=a%26,l=(a-o)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=l)return this;if(o!==0&&l++,this.length=Math.min(l,this.length),o!==0){var w=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(a){if(i(typeof a=="number"),i(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(p/67108864|0),this.words[_+l]=g&67108863}for(;_>26,this.words[_+l]=g&67108863;if(s===0)return this._strip();for(i(s===-1),s=0,_=0;_>26,this.words[_]=g&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(a,o){var l=this.length-a.length,w=this.clone(),_=a,g=_.words[_.length-1]|0,s=this._countBits(g);l=26-s,l!==0&&(_=_.ushln(l),w.iushln(l),g=_.words[_.length-1]|0);var p=w.length-_.length,b;if(o!=="mod"){b=new n(null),b.length=p+1,b.words=new Array(b.length);for(var S=0;S=0;M--){var k=(w.words[_.length+M]|0)*67108864+(w.words[_.length+M-1]|0);for(k=Math.min(k/g|0,67108863),w._ishlnsubmul(_,k,M);w.negative!==0;)k--,w.negative=0,w._ishlnsubmul(_,1,M),w.isZero()||(w.negative^=1);b&&(b.words[M]=k)}return b&&b._strip(),w._strip(),o!=="div"&&l!==0&&w.iushrn(l),{div:b||null,mod:w}},n.prototype.divmod=function(a,o,l){if(i(!a.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var w,_,g;return this.negative!==0&&a.negative===0?(g=this.neg().divmod(a,o),o!=="mod"&&(w=g.div.neg()),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.iadd(a)),{div:w,mod:_}):this.negative===0&&a.negative!==0?(g=this.divmod(a.neg(),o),o!=="mod"&&(w=g.div.neg()),{div:w,mod:g.mod}):this.negative&a.negative?(g=this.neg().divmod(a.neg(),o),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.isub(a)),{div:g.div,mod:_}):a.length>this.length||this.cmp(a)<0?{div:new n(0),mod:this}:a.length===1?o==="div"?{div:this.divn(a.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new n(this.modrn(a.words[0]))}:this._wordDiv(a,o)},n.prototype.div=function(a){return this.divmod(a,"div",!1).div},n.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},n.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},n.prototype.divRound=function(a){var o=this.divmod(a);if(o.mod.isZero())return o.div;var l=o.div.negative!==0?o.mod.isub(a):o.mod,w=a.ushrn(1),_=a.andln(1),g=l.cmp(w);return g<0||_===1&&g===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modrn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=(1<<26)%a,w=0,_=this.length-1;_>=0;_--)w=(l*w+(this.words[_]|0))%a;return o?-w:w},n.prototype.modn=function(a){return this.modrn(a)},n.prototype.idivn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=0,w=this.length-1;w>=0;w--){var _=(this.words[w]|0)+l*67108864;this.words[w]=_/a|0,l=_%a}return this._strip(),o?this.ineg():this},n.prototype.divn=function(a){return this.clone().idivn(a)},n.prototype.egcd=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=new n(0),s=new n(1),p=0;o.isEven()&&l.isEven();)o.iushrn(1),l.iushrn(1),++p;for(var b=l.clone(),S=o.clone();!o.isZero();){for(var G=0,M=1;!(o.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(o.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(b),_.isub(S)),w.iushrn(1),_.iushrn(1);for(var k=0,B=1;!(l.words[0]&B)&&k<26;++k,B<<=1);if(k>0)for(l.iushrn(k);k-- >0;)(g.isOdd()||s.isOdd())&&(g.iadd(b),s.isub(S)),g.iushrn(1),s.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(g),_.isub(s)):(l.isub(o),g.isub(w),s.isub(_))}return{a:g,b:s,gcd:l.iushln(p)}},n.prototype._invmp=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=l.clone();o.cmpn(1)>0&&l.cmpn(1)>0;){for(var s=0,p=1;!(o.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(o.iushrn(s);s-- >0;)w.isOdd()&&w.iadd(g),w.iushrn(1);for(var b=0,S=1;!(l.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(l.iushrn(b);b-- >0;)_.isOdd()&&_.iadd(g),_.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(_)):(l.isub(o),_.isub(w))}var G;return o.cmpn(1)===0?G=w:G=_,G.cmpn(0)<0&&G.iadd(a),G},n.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var o=this.clone(),l=a.clone();o.negative=0,l.negative=0;for(var w=0;o.isEven()&&l.isEven();w++)o.iushrn(1),l.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;l.isEven();)l.iushrn(1);var _=o.cmp(l);if(_<0){var g=o;o=l,l=g}else if(_===0||l.cmpn(1)===0)break;o.isub(l)}while(!0);return l.iushln(w)},n.prototype.invm=function(a){return this.egcd(a).a.umod(a)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(a){return this.words[0]&a},n.prototype.bincn=function(a){i(typeof a=="number");var o=a%26,l=(a-o)/26,w=1<>>26,s&=67108863,this.words[g]=s}return _!==0&&(this.words[g]=_,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(a){var o=a<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this._strip();var l;if(this.length>1)l=1;else{o&&(a=-a),i(a<=67108863,"Number is too big");var w=this.words[0]|0;l=w===a?0:wa.length)return 1;if(this.length=0;l--){var w=this.words[l]|0,_=a.words[l]|0;if(w!==_){w<_?o=-1:w>_&&(o=1);break}}return o},n.prototype.gtn=function(a){return this.cmpn(a)===1},n.prototype.gt=function(a){return this.cmp(a)===1},n.prototype.gten=function(a){return this.cmpn(a)>=0},n.prototype.gte=function(a){return this.cmp(a)>=0},n.prototype.ltn=function(a){return this.cmpn(a)===-1},n.prototype.lt=function(a){return this.cmp(a)===-1},n.prototype.lten=function(a){return this.cmpn(a)<=0},n.prototype.lte=function(a){return this.cmp(a)<=0},n.prototype.eqn=function(a){return this.cmpn(a)===0},n.prototype.eq=function(a){return this.cmp(a)===0},n.red=function(a){return new C(a)},n.prototype.toRed=function(a){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(a){return this.red=a,this},n.prototype.forceRed=function(a){return i(!this.red,"Already a number in reduction context"),this._forceRed(a)},n.prototype.redAdd=function(a){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},n.prototype.redIAdd=function(a){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},n.prototype.redSub=function(a){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},n.prototype.redISub=function(a){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},n.prototype.redShl=function(a){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},n.prototype.redMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},n.prototype.redIMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(a){return i(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var U={k256:null,p224:null,p192:null,p25519:null};function L(u,a){this.name=u,this.p=new n(a,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var a=new n(null);return a.words=new Array(Math.ceil(this.n/13)),a},L.prototype.ireduce=function(a){var o=a,l;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),l=o.bitLength();while(l>this.n);var w=l0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},L.prototype.split=function(a,o){a.iushrn(this.n,0,o)},L.prototype.imulK=function(a){return a.imul(this.k)};function m(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(m,L),m.prototype.split=function(a,o){for(var l=4194303,w=Math.min(a.length,9),_=0;_>>22,g=s}g>>>=22,a.words[_-10]=g,g===0&&a.length>10?a.length-=10:a.length-=9},m.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var o=0,l=0;l>>=26,a.words[l]=_,o=w}return o!==0&&(a.words[a.length++]=o),a},n._prime=function(a){if(U[a])return U[a];var o;if(a==="k256")o=new m;else if(a==="p224")o=new P;else if(a==="p192")o=new Y;else if(a==="p25519")o=new Q;else throw new Error("Unknown prime "+a);return U[a]=o,o};function C(u){if(typeof u=="string"){var a=n._prime(u);this.m=a.p,this.prime=a}else i(u.gtn(1),"modulus must be greater than 1"),this.m=u,this.prime=null}C.prototype._verify1=function(a){i(a.negative===0,"red works only with positives"),i(a.red,"red works only with red numbers")},C.prototype._verify2=function(a,o){i((a.negative|o.negative)===0,"red works only with positives"),i(a.red&&a.red===o.red,"red works only with red numbers")},C.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(x(a,a.umod(this.m)._forceRed(this)),a)},C.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},C.prototype.add=function(a,o){this._verify2(a,o);var l=a.add(o);return l.cmp(this.m)>=0&&l.isub(this.m),l._forceRed(this)},C.prototype.iadd=function(a,o){this._verify2(a,o);var l=a.iadd(o);return l.cmp(this.m)>=0&&l.isub(this.m),l},C.prototype.sub=function(a,o){this._verify2(a,o);var l=a.sub(o);return l.cmpn(0)<0&&l.iadd(this.m),l._forceRed(this)},C.prototype.isub=function(a,o){this._verify2(a,o);var l=a.isub(o);return l.cmpn(0)<0&&l.iadd(this.m),l},C.prototype.shl=function(a,o){return this._verify1(a),this.imod(a.ushln(o))},C.prototype.imul=function(a,o){return this._verify2(a,o),this.imod(a.imul(o))},C.prototype.mul=function(a,o){return this._verify2(a,o),this.imod(a.mul(o))},C.prototype.isqr=function(a){return this.imul(a,a.clone())},C.prototype.sqr=function(a){return this.mul(a,a)},C.prototype.sqrt=function(a){if(a.isZero())return a.clone();var o=this.m.andln(3);if(i(o%2===1),o===3){var l=this.m.add(new n(1)).iushrn(2);return this.pow(a,l)}for(var w=this.m.subn(1),_=0;!w.isZero()&&w.andln(1)===0;)_++,w.iushrn(1);i(!w.isZero());var g=new n(1).toRed(this),s=g.redNeg(),p=this.m.subn(1).iushrn(1),b=this.m.bitLength();for(b=new n(2*b*b).toRed(this);this.pow(b,p).cmp(s)!==0;)b.redIAdd(s);for(var S=this.pow(b,w),G=this.pow(a,w.addn(1).iushrn(1)),M=this.pow(a,w),k=_;M.cmp(g)!==0;){for(var B=M,T=0;B.cmp(g)!==0;T++)B=B.redSqr();i(T=0;_--){for(var S=o.words[_],G=b-1;G>=0;G--){var M=S>>G&1;if(g!==w[0]&&(g=this.sqr(g)),M===0&&s===0){p=0;continue}s<<=1,s|=M,p++,!(p!==l&&(_!==0||G!==0))&&(g=this.mul(g,w[s]),p=0,s=0)}b=26}return g},C.prototype.convertTo=function(a){var o=a.umod(this.m);return o===a?o.clone():o},C.prototype.convertFrom=function(a){var o=a.clone();return o.red=null,o},n.mont=function(a){return new h(a)};function h(u){C.call(this,u),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(h,C),h.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},h.prototype.convertFrom=function(a){var o=this.imod(a.mul(this.rinv));return o.red=null,o},h.prototype.imul=function(a,o){if(a.isZero()||o.isZero())return a.words[0]=0,a.length=1,a;var l=a.imul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.mul=function(a,o){if(a.isZero()||o.isZero())return new n(0)._forceRed(this);var l=a.mul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.invm=function(a){var o=this.imod(a._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(t,Rn)})(f0);var qe=f0.exports;const a0="bignumber/5.7.0";var Vi=qe.BN;const ar=new ke(a0),Zn={},o0=9007199254740991;function Hh(t){return t!=null&&(Ze.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||xt(t)||typeof t=="bigint"||ti(t))}let s0=!1;class Ze{constructor(e,r){e!==Zn&&ar.throwError("cannot call constructor directly; use BigNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return yt(He(this).fromTwos(e))}toTwos(e){return yt(He(this).toTwos(e))}abs(){return this._hex[0]==="-"?Ze.from(this._hex.substring(1)):this}add(e){return yt(He(this).add(He(e)))}sub(e){return yt(He(this).sub(He(e)))}div(e){return Ze.from(e).isZero()&&Nt("division-by-zero","div"),yt(He(this).div(He(e)))}mul(e){return yt(He(this).mul(He(e)))}mod(e){const r=He(e);return r.isNeg()&&Nt("division-by-zero","mod"),yt(He(this).umod(r))}pow(e){const r=He(e);return r.isNeg()&&Nt("negative-power","pow"),yt(He(this).pow(r))}and(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","and"),yt(He(this).and(r))}or(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","or"),yt(He(this).or(r))}xor(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","xor"),yt(He(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&Nt("negative-width","mask"),yt(He(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&Nt("negative-width","shl"),yt(He(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&Nt("negative-width","shr"),yt(He(this).shrn(e))}eq(e){return He(this).eq(He(e))}lt(e){return He(this).lt(He(e))}lte(e){return He(this).lte(He(e))}gt(e){return He(this).gt(He(e))}gte(e){return He(this).gte(He(e))}isNegative(){return this._hex[0]==="-"}isZero(){return He(this).isZero()}toNumber(){try{return He(this).toNumber()}catch{Nt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return ar.throwError("this platform does not support BigInt",ke.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?s0||(s0=!0,ar.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?ar.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",ke.errors.UNEXPECTED_ARGUMENT,{}):ar.throwError("BigNumber.toString does not accept parameters",ke.errors.UNEXPECTED_ARGUMENT,{})),He(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof Ze)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new Ze(Zn,Mi(e)):e.match(/^-?[0-9]+$/)?new Ze(Zn,Mi(new Vi(e))):ar.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&Nt("underflow","BigNumber.from",e),(e>=o0||e<=-o0)&&Nt("overflow","BigNumber.from",e),Ze.from(String(e));const r=e;if(typeof r=="bigint")return Ze.from(r.toString());if(ti(r))return Ze.from(pt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return Ze.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(xt(i)||i[0]==="-"&&xt(i.substring(1))))return Ze.from(i)}return ar.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Mi(t){if(typeof t!="string")return Mi(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&ar.throwArgumentError("invalid hex","value",t),t=Mi(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function yt(t){return Ze.from(Mi(t))}function He(t){const e=Ze.from(t).toHexString();return e[0]==="-"?new Vi("-"+e.substring(3),16):new Vi(e.substring(2),16)}function Nt(t,e,r){const i={fault:t,operation:e};return r!=null&&(i.value=r),ar.throwError(t,ke.errors.NUMERIC_FAULT,i)}function Kh(t){return new Vi(t,36).toString(16)}const mt=new ke(a0),Ei={},u0=Ze.from(0),h0=Ze.from(-1);function c0(t,e,r,i){const f={fault:e,operation:r};return i!==void 0&&(f.value=i),mt.throwError(t,ke.errors.NUMERIC_FAULT,f)}let Si="0";for(;Si.length<256;)Si+=Si;function ef(t){if(typeof t!="number")try{t=Ze.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+Si.substring(0,t):mt.throwArgumentError("invalid decimal size","decimals",t)}function tf(t,e){e==null&&(e=0);const r=ef(e);t=Ze.from(t);const i=t.lt(u0);i&&(t=t.mul(h0));let f=t.mod(r).toString();for(;f.length2&&mt.throwArgumentError("too many decimal points","value",t);let n=f[0],d=f[1];for(n||(n="0"),d||(d="0");d[d.length-1]==="0";)d=d.substring(0,d.length-1);for(d.length>r.length-1&&c0("fractional component exceeds decimals","underflow","parseFixed"),d===""&&(d="0");d.lengthe[d]==null?y:(typeof e[d]!==c&&mt.throwArgumentError("invalid fixed format ("+d+" not "+c+")","format."+d,e[d]),e[d]);r=n("signed","boolean",r),i=n("width","number",i),f=n("decimals","number",f)}return i%8&&mt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),f>80&&mt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",f),new ri(Ei,r,i,f)}}class st{constructor(e,r,i,f){e!==Ei&&mt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=f,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&mt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(d0.toFormat(r.format))),r}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(d0.toFormat(r.format))),r}round(e){e==null&&(e=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&mt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;const i=st.from("1"+Si.substring(0,e),this.format),f=jh.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(f).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&mt.throwArgumentError("invalid byte width","width",e);const r=Ze.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Vt(r,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return st.fromString(this._value,e)}static fromValue(e,r,i){return i==null&&r!=null&&!Hh(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),st.fromString(tf(e,r),ri.from(i))}static fromString(e,r){r==null&&(r="fixed");const i=ri.from(r),f=or(e,i.decimals);!i.signed&&f.lt(u0)&&c0("unsigned value cannot be negative","overflow","value",e);let n=null;i.signed?n=f.toTwos(i.width).toHexString():(n=f.toHexString(),n=Vt(n,i.width/8));const d=tf(f,i.decimals);return new st(Ei,n,d,i)}static fromBytes(e,r){r==null&&(r="fixed");const i=ri.from(r);if(tt(e).length>i.width/8)throw new Error("overflow");let f=Ze.from(e);i.signed&&(f=f.fromTwos(i.width));const n=f.toTwos((i.signed?0:1)+i.width).toHexString(),d=tf(f,i.decimals);return new st(Ei,n,d,i)}static from(e,r){if(typeof e=="string")return st.fromString(e,r);if(ti(e))return st.fromBytes(e,r);try{return st.fromValue(e,0,r)}catch(i){if(i.code!==ke.errors.INVALID_ARGUMENT)throw i}return mt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const d0=st.from(1),jh=st.from("0.5"),$h="strings/5.7.0",l0=new ke($h);var Gi;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Gi||(Gi={}));var ii;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(ii||(ii={}));function Vh(t,e,r,i,f){return l0.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)}function b0(t,e,r,i,f){if(t===ii.BAD_PREFIX||t===ii.UNEXPECTED_CONTINUE){let n=0;for(let d=e+1;d>6===2;d++)n++;return n}return t===ii.OVERRUN?r.length-e-1:0}function Gh(t,e,r,i,f){return t===ii.OVERLONG?(i.push(f),0):(i.push(65533),b0(t,e,r))}Object.freeze({error:Vh,ignore:b0,replace:Gh});function rf(t,e=Gi.current){e!=Gi.current&&(l0.checkNormalize(),t=t.normalize(e));let r=[];for(let i=0;i>6|192),r.push(f&63|128);else if((f&64512)==55296){i++;const n=t.charCodeAt(i);if(i>=t.length||(n&64512)!==56320)throw new Error("invalid utf-8 string");const d=65536+((f&1023)<<10)+(n&1023);r.push(d>>18|240),r.push(d>>12&63|128),r.push(d>>6&63|128),r.push(d&63|128)}else r.push(f>>12|224),r.push(f>>6&63|128),r.push(f&63|128)}return tt(r)}function Yh(t){if(t.length%4!==0)throw new Error("bad data");let e=[];for(let r=0;r{let n=f.split(":");r+=parseInt(n[0],16),i[r]=e(n[1])}),i}function v0(t){let e=0;return t.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let f=e+parseInt(i[0],16);return e=parseInt(i[1],16),{l:f,h:e}})}v0("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nf("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),nf("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),nf("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Yh),v0("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const p0="hash/5.7.0";function Jh(t){t=atob(t);const e=[];for(let r=0;r0&&Array.isArray(c)?f(c,d-1):r.push(c)})};return f(t,e),r}function Wh(t){const e={};for(let r=0;r>--y&1}const E=31,N=Math.pow(2,E),D=N>>>1,I=D>>1,q=N-1;let H=0;for(let U=0;U1;){let Q=L+m>>>1;U>>1|x(),P=P<<1^D,Y=(Y^D)<<1|D|1;z=P,j=1+Y-P}let F=i-4;return V.map(U=>{switch(U-F){case 3:return F+65792+(t[c++]<<16|t[c++]<<8|t[c++]);case 2:return F+256+(t[c++]<<8|t[c++]);case 1:return F+t[c++];default:return U-1}})}function Xh(t){let e=0;return()=>t[e++]}function Zh(t){return Xh(Qh(t))}function ec(t){return t&1?~t>>1:t>>1}function tc(t,e){let r=Array(t);for(let i=0;ie[d]):r}function ic(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(fc(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(ac(r,t))}return Wh(m0(e))}function nc(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(r)}return e}function y0(t,e,r){let i=Array(t).fill(void 0).map(()=>[]);for(let f=0;fi[d].push(n));return i}function fc(t,e){let r=1+e(),i=e(),f=nc(e),n=y0(f.length,1+t,e);return m0(n.map((d,c)=>{const y=d[0],A=d.slice(1);return Array(f[c]).fill(void 0).map((x,E)=>{let N=E*i;return[y+E*r,A.map(D=>D+N)]})}))}function ac(t,e){let r=1+e();return y0(r,1+t,e).map(f=>[f[0],f.slice(1)])}function oc(t){let e=Yi(t).sort((i,f)=>i-f);return r();function r(){let i=[];for(;;){let A=Yi(t,e);if(A.length==0)break;i.push({set:new Set(A),node:r()})}i.sort((A,x)=>x.set.size-A.set.size);let f=t(),n=f%3;f=f/3|0;let d=!!(f&1);f>>=1;let c=f==1,y=f==2;return{branches:i,valid:n,fe0f:d,save:c,check:y}}}function sc(){return Zh(Jh("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"))}const Ji=sc();new Set(Yi(Ji)),new Set(Yi(Ji)),ic(Ji),oc(Ji),new ke(p0),new Uint8Array(32).fill(0);const uc=`Ethereum Signed Message: ++`;function w0(t){return typeof t=="string"&&(t=rf(t)),Xn(Uh([rf(uc),rf(String(t.length)),t]))}const hc="rlp/5.7.0";new ke(hc);const cc="address/5.7.0",Di=new ke(cc);function A0(t){xt(t,20)||Di.throwArgumentError("invalid address","address",t),t=t.toLowerCase();const e=t.substring(2).split(""),r=new Uint8Array(40);for(let f=0;f<40;f++)r[f]=e[f].charCodeAt(0);const i=tt(Xn(r));for(let f=0;f<40;f+=2)i[f>>1]>>4>=8&&(e[f]=e[f].toUpperCase()),(i[f>>1]&15)>=8&&(e[f+1]=e[f+1].toUpperCase());return"0x"+e.join("")}const dc=9007199254740991;function lc(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}const ff={};for(let t=0;t<10;t++)ff[String(t)]=String(t);for(let t=0;t<26;t++)ff[String.fromCharCode(65+t)]=String(10+t);const x0=Math.floor(lc(dc));function bc(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";let e=t.split("").map(i=>ff[i]).join("");for(;e.length>=x0;){let i=e.substring(0,x0);e=parseInt(i,10)%97+e.substring(i.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function vc(t){let e=null;if(typeof t!="string"&&Di.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=A0(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&Di.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==bc(t)&&Di.throwArgumentError("bad icap checksum","address",t),e=Kh(t.substring(4));e.length<40;)e="0"+e;e=A0("0x"+e)}else Di.throwArgumentError("invalid address","address",t);return e}const pc="properties/5.7.0";new ke(pc);function Ii(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}new ke(p0),new Uint8Array(32).fill(0),Ze.from(-1);const mc=Ze.from(0),gc=Ze.from(1);Ze.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Vt(gc.toHexString(),32),Vt(mc.toHexString(),32);var _t={},Ke={},Ir=_0;function _0(t,e){if(!t)throw new Error(e||"Assertion failed")}_0.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)};var ni={exports:{}};typeof Object.create=="function"?ni.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:ni.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}};var yc=Ir,wc=ni.exports;Ke.inherits=wc;function Ac(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function xc(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),f=0;f>6|192,r[i++]=n&63|128):Ac(t,f)?(n=65536+((n&1023)<<10)+(t.charCodeAt(++f)&1023),r[i++]=n>>18|240,r[i++]=n>>12&63|128,r[i++]=n>>6&63|128,r[i++]=n&63|128):(r[i++]=n>>12|224,r[i++]=n>>6&63|128,r[i++]=n&63|128)}else for(f=0;f>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Ke.htonl=M0;function Mc(t,e){for(var r="",i=0;i>>0}return n}Ke.join32=Ec;function Sc(t,e){for(var r=new Array(t.length*4),i=0,f=0;i>>24,r[f+1]=n>>>16&255,r[f+2]=n>>>8&255,r[f+3]=n&255):(r[f+3]=n>>>24,r[f+2]=n>>>16&255,r[f+1]=n>>>8&255,r[f]=n&255)}return r}Ke.split32=Sc;function Dc(t,e){return t>>>e|t<<32-e}Ke.rotr32=Dc;function Ic(t,e){return t<>>32-e}Ke.rotl32=Ic;function Nc(t,e){return t+e>>>0}Ke.sum32=Nc;function Cc(t,e,r){return t+e+r>>>0}Ke.sum32_3=Cc;function Bc(t,e,r,i){return t+e+r+i>>>0}Ke.sum32_4=Bc;function Oc(t,e,r,i,f){return t+e+r+i+f>>>0}Ke.sum32_5=Oc;function Rc(t,e,r,i){var f=t[e],n=t[e+1],d=i+n>>>0,c=(d>>0,t[e+1]=d}Ke.sum64=Rc;function Pc(t,e,r,i){var f=e+i>>>0,n=(f>>0}Ke.sum64_hi=Pc;function Tc(t,e,r,i){var f=e+i;return f>>>0}Ke.sum64_lo=Tc;function Fc(t,e,r,i,f,n,d,c){var y=0,A=e;A=A+i>>>0,y+=A>>0,y+=A>>0,y+=A>>0}Ke.sum64_4_hi=Fc;function Uc(t,e,r,i,f,n,d,c){var y=e+i+n+c;return y>>>0}Ke.sum64_4_lo=Uc;function Lc(t,e,r,i,f,n,d,c,y,A){var x=0,E=e;E=E+i>>>0,x+=E>>0,x+=E>>0,x+=E>>0,x+=E>>0}Ke.sum64_5_hi=Lc;function qc(t,e,r,i,f,n,d,c,y,A){var x=e+i+n+c+A;return x>>>0}Ke.sum64_5_lo=qc;function zc(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Ke.rotr64_hi=zc;function kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.rotr64_lo=kc;function Hc(t,e,r){return t>>>r}Ke.shr64_hi=Hc;function Kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.shr64_lo=Kc;var fi={},D0=Ke,jc=Ir;function Wi(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}fi.BlockHash=Wi,Wi.prototype.update=function(e,r){if(e=D0.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=D0.join32(e,0,e.length-i,this.endian);for(var f=0;f>>24&255,f[n++]=e>>>16&255,f[n++]=e>>>8&255,f[n++]=e&255}else for(f[n++]=e&255,f[n++]=e>>>8&255,f[n++]=e>>>16&255,f[n++]=e>>>24&255,f[n++]=0,f[n++]=0,f[n++]=0,f[n++]=0,d=8;d>>3}Gt.g0_256=Jc;function Wc(t){return Yt(t,17)^Yt(t,19)^t>>>10}Gt.g1_256=Wc;var oi=Ke,Qc=fi,Xc=Gt,af=oi.rotl32,Ni=oi.sum32,Zc=oi.sum32_5,ed=Xc.ft_1,B0=Qc.BlockHash,td=[1518500249,1859775393,2400959708,3395469782];function Jt(){if(!(this instanceof Jt))return new Jt;B0.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}oi.inherits(Jt,B0);var rd=Jt;Jt.blockSize=512,Jt.outSize=160,Jt.hmacStrength=80,Jt.padLength=64,Jt.prototype._update=function(e,r){for(var i=this.W,f=0;f<16;f++)i[f]=e[r+f];for(;fthis.blockSize&&(e=new this.Hash().update(e).digest()),Kd(e.length<=this.blockSize);for(var r=e.length;r>8,N=x&255;E?y.push(E,N):y.push(N)}return y}r.toArray=i;function f(d){return d.length===1?"0"+d:d}r.zero2=f;function n(d){for(var c="",y=0;y(N>>1)-1?q=(N>>1)-H:q=H,D.isubn(q)):q=0,E[I]=q,D.iushrn(1)}return E}r.getNAF=i;function f(y,A){var x=[[],[]];y=y.clone(),A=A.clone();for(var E=0,N=0,D;y.cmpn(-E)>0||A.cmpn(-N)>0;){var I=y.andln(3)+E&3,q=A.andln(3)+N&3;I===3&&(I=-1),q===3&&(q=-1);var H;I&1?(D=y.andln(7)+E&7,(D===3||D===5)&&q===2?H=-I:H=I):H=0,x[0].push(H);var V;q&1?(D=A.andln(7)+N&7,(D===3||D===5)&&I===2?V=-q:V=q):V=0,x[1].push(V),2*E===H+1&&(E=1-E),2*N===V+1&&(N=1-N),y.iushrn(1),A.iushrn(1)}return x}r.getJSF=f;function n(y,A,x){var E="_"+A;y.prototype[A]=function(){return this[E]!==void 0?this[E]:this[E]=x.call(this)}}r.cachedProperty=n;function d(y){return typeof y=="string"?r.toArray(y,"hex"):y}r.parseBytes=d;function c(y){return new qe(y,"hex","le")}r.intFromLE=c}),Xi=Mt.getNAF,Vd=Mt.getJSF,Zi=Mt.assert;function vr(t,e){this.type=t,this.p=new qe(e.p,16),this.red=e.prime?qe.red(e.prime):qe.mont(this.p),this.zero=new qe(0).toRed(this.red),this.one=new qe(1).toRed(this.red),this.two=new qe(2).toRed(this.red),this.n=e.n&&new qe(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Cr=vr;vr.prototype.point=function(){throw new Error("Not implemented")},vr.prototype.validate=function(){throw new Error("Not implemented")},vr.prototype._fixedNafMul=function(e,r){Zi(e.precomputed);var i=e._getDoubles(),f=Xi(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];Zi(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},vr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=Xi(i[I],d[I],this._bitLength),y[q]=Xi(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=Vd(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Ct.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Bt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Bt.prototype.pointFromX=function(e,r){e=new qe(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Bt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Bt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},nt.prototype.isInfinity=function(){return this.inf},nt.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},nt.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},nt.prototype.getX=function(){return this.x.fromRed()},nt.prototype.getY=function(){return this.y.fromRed()},nt.prototype.mul=function(e){return e=new qe(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},nt.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},nt.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},nt.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},nt.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},nt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ut(t,e,r,i){Cr.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new qe(0)):(this.x=new qe(e,16),this.y=new qe(r,16),this.z=new qe(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}df(ut,Cr.BasePoint),Bt.prototype.jpoint=function(e,r,i){return new ut(this,e,r,i)},ut.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ut.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ut.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ut.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ut.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ut.prototype.inspect=function(){return this.isInfinity()?"":""},ut.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var en=ci(function(t,e){var r=e;r.base=Cr,r.short=Yd,r.mont=null,r.edwards=null}),tn=ci(function(t,e){var r=e,i=Mt.assert;function f(c){c.type==="short"?this.curve=new en.short(c):c.type==="edwards"?this.curve=new en.edwards(c):this.curve=new en.mont(c),this.g=this.curve.g,this.n=this.curve.n,this.hash=c.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=f;function n(c,y){Object.defineProperty(r,c,{configurable:!0,enumerable:!0,get:function(){var A=new f(y);return Object.defineProperty(r,c,{configurable:!0,enumerable:!0,value:A}),A}})}n("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:_t.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),n("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:_t.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),n("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:_t.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),n("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:_t.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),n("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:_t.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),n("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["9"]}),n("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var d;try{d=null.crash()}catch{d=void 0}n("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:_t.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",d]})});function pr(t){if(!(this instanceof pr))return new pr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=$t.toArray(t.entropy,t.entropyEnc||"hex"),r=$t.toArray(t.nonce,t.nonceEnc||"hex"),i=$t.toArray(t.pers,t.persEnc||"hex");cf(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var V0=pr;pr.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},pr.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=$t.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var Jd=Mt.assert;function rn(t,e){if(t instanceof rn)return t;this._importDER(t,e)||(Jd(t.r&&t.s,"Signature without r or s"),this.r=new qe(t.r,16),this.s=new qe(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var nn=rn;function Wd(){this.place=0}function vf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function G0(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}rn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=G0(r),i=G0(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];pf(f,r.length),f=f.concat(r),f.push(2),pf(f,i.length);var n=f.concat(i),d=[48];return pf(d,n.length),d=d.concat(n),Mt.encode(d,e)};var Qd=function(){throw new Error("unsupported")},Y0=Mt.assert;function Ot(t){if(!(this instanceof Ot))return new Ot(t);typeof t=="string"&&(Y0(Object.prototype.hasOwnProperty.call(tn,t),"Unknown curve "+t),t=tn[t]),t instanceof tn.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Xd=Ot;Ot.prototype.keyPair=function(e){return new bf(this,e)},Ot.prototype.keyFromPrivate=function(e,r){return bf.fromPrivate(this,e,r)},Ot.prototype.keyFromPublic=function(e,r){return bf.fromPublic(this,e,r)},Ot.prototype.genKeyPair=function(e){e||(e={});for(var r=new V0({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Qd(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new qe(2));;){var n=new qe(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ot.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ot.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new qe(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new V0({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new qe(1)),x=0;;x++){var E=f.k?f.k(x):new qe(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new nn({r:I,s:q,recoveryParam:H})}}}}}},Ot.prototype.verify=function(e,r,i,f){e=this._truncateToN(new qe(e,16)),i=this.keyFromPublic(i,f),r=new nn(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ot.prototype.recoverPubKey=function(t,e,r,i){Y0((3&r)===r,"The recovery param is more than two bits"),e=new nn(e,i);var f=this.n,n=new qe(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ot.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new nn(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Zd=ci(function(t,e){var r=e;r.version="6.5.4",r.utils=Mt,r.rand=function(){throw new Error("unsupported")},r.curve=en,r.curves=tn,r.ec=Xd,r.eddsa=null}),el=Zd.ec;const tl="signing-key/5.7.0",mf=new ke(tl);let gf=null;function er(){return gf||(gf=new el("secp256k1")),gf}class rl{constructor(e){Ii(this,"curve","secp256k1"),Ii(this,"privateKey",pt(e)),qh(this.privateKey)!==32&&mf.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=er().keyFromPrivate(tt(this.privateKey));Ii(this,"publicKey","0x"+r.getPublic(!1,"hex")),Ii(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),Ii(this,"_isSigningKey",!0)}_addPoint(e){const r=er().keyFromPublic(tt(this.publicKey)),i=er().keyFromPublic(tt(e));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=tt(e);i.length!==32&&mf.throwArgumentError("bad digest length","digest",e);const f=r.sign(i,{canonical:!0});return n0({recoveryParam:f.recoveryParam,r:Vt("0x"+f.r.toString(16),32),s:Vt("0x"+f.s.toString(16),32)})}computeSharedSecret(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=er().keyFromPublic(tt(J0(e)));return Vt("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(e){return!!(e&&e._isSigningKey)}}function il(t,e){const r=n0(e),i={r:tt(r.r),s:tt(r.s)};return"0x"+er().recoverPubKey(tt(t),i,r.recoveryParam).encode("hex",!1)}function J0(t,e){const r=tt(t);if(r.length===32){const i=new rl(r);return e?"0x"+er().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return e?pt(r):"0x"+er().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+er().keyFromPublic(r).getPublic(!0,"hex"):pt(r)}return mf.throwArgumentError("invalid public or private key","key","[REDACTED]")}const nl="transactions/5.7.0";new ke(nl);var W0;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(W0||(W0={}));function fl(t){const e=J0(t);return vc(i0(Xn(i0(e,1)),12))}function al(t,e){return fl(il(tt(t),e))}const ol="https://rpc.walletconnect.com/v1";async function Q0(t,e,r,i,f,n){switch(r.t){case"eip191":return X0(t,e,r.s);case"eip1271":return await Z0(t,e,r.s,i,f,n);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function X0(t,e,r){return al(w0(e),r).toLowerCase()===t.toLowerCase()}async function Z0(t,e,r,i,f,n){try{const d="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",y="0000000000000000000000000000000000000000000000000000000000000041",A=r.substring(2),x=w0(e).substring(2),E=d+x+c+y+A,N=await fetch(`${n||ol}/?chainId=${i}&projectId=${f}`,{method:"POST",body:JSON.stringify({id:sl(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:E},"latest"]})}),{result:D}=await N.json();return D?D.slice(0,d.length).toLowerCase()===d.toLowerCase():!1}catch(d){return console.error("isValidEip1271Signature: ",d),!1}}function sl(){return Date.now()+Math.floor(Math.random()*1e3)}var ul=Object.defineProperty,hl=Object.defineProperties,cl=Object.getOwnPropertyDescriptors,eo=Object.getOwnPropertySymbols,dl=Object.prototype.hasOwnProperty,ll=Object.prototype.propertyIsEnumerable,to=(t,e,r)=>e in t?ul(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,yf=(t,e)=>{for(var r in e||(e={}))dl.call(e,r)&&to(t,r,e[r]);if(eo)for(var r of eo(e))ll.call(e,r)&&to(t,r,e[r]);return t},ro=(t,e)=>hl(t,cl(e));const bl="did:pkh:",fn=t=>t?.split(":"),wf=t=>{const e=t&&fn(t);if(e)return t.includes(bl)?e[3]:e[1]},vl=t=>{const e=t&&fn(t);if(e)return e[2]+":"+e[3]},Af=t=>{const e=t&&fn(t);if(e)return e.pop()};async function pl(t){const{cacao:e,projectId:r}=t,{s:i,p:f}=e,n=io(f,f.iss),d=Af(f.iss);return await Q0(d,n,i,wf(f.iss),r)}const io=(t,e)=>{const r=`${t.domain} wants you to sign in with your Ethereum account:`,i=Af(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let f=t.statement||void 0;const n=`URI: ${t.aud||t.uri}`,d=`Version: ${t.version}`,c=`Chain ID: ${wf(e)}`,y=`Nonce: ${t.nonce}`,A=`Issued At: ${t.iat}`,x=t.exp?`Expiration Time: ${t.exp}`:void 0,E=t.nbf?`Not Before: ${t.nbf}`:void 0,N=t.requestId?`Request ID: ${t.requestId}`:void 0,D=t.resources?`Resources:${t.resources.map(q=>` ++- ${q}`).join("")}`:void 0,I=on(t.resources);if(I){const q=mr(I);f=Mf(f,q)}return[r,i,"",f,"",n,d,c,y,A,x,E,N,D].filter(q=>q!=null).join(` ++`)};function ml(t,e,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:t.domain,aud:t.aud,version:t.version,nonce:t.nonce,iat:t.iat,statement:t.statement,requestId:t.requestId,resources:t.resources,nbf:t.nbf,exp:t.exp},s:e}}function gl(t){var e;const{authPayload:r,chains:i,methods:f}=t,n=r.statement||"";if(!(i!=null&&i.length))return r;const d=r.chains,c=Yn(d,i);if(!(c!=null&&c.length))throw new Error("No supported chains");const y=no(r.resources);if(!y)return r;tr(y);const A=fo(y,"eip155");let x=r?.resources||[];if(A!=null&&A.length){const E=ao(A),N=Yn(E,f);if(!(N!=null&&N.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(E)}, supported: ${JSON.stringify(f)}`);const D=xf("request",N,{chains:c}),I=ho(y,"eip155",D);x=((e=r?.resources)==null?void 0:e.slice(0,-1))||[],x.push(an(I))}return ro(yf({},r),{statement:lo(n,on(x)),chains:c,resources:r!=null&&r.resources||x.length>0?x:void 0})}function no(t){const e=on(t);if(e&&_f(e))return mr(e)}function yl(t,e){var r;return(r=t?.att)==null?void 0:r.hasOwnProperty(e)}function fo(t,e){var r,i;return(r=t?.att)!=null&&r[e]?Object.keys((i=t?.att)==null?void 0:i[e]):[]}function wl(t){return t?.map(e=>Object.keys(e))||[]}function ao(t){return t?.map(e=>{var r;return(r=e.split("/"))==null?void 0:r[1]})||[]}function oo(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function so(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function tr(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(r=>{const i=t.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(f=>{const n=i[f];if(!Array.isArray(n))throw new Error(`Ability limits ${f} must be an array of objects, found: ${n}`);if(!n.length)throw new Error(`Value of ${f} is empty array, must be an array with objects`);n.forEach(d=>{if(typeof d!="object")throw new Error(`Ability limits (${f}) must be an array of objects, found: ${d}`)})})})}function uo(t,e,r,i={}){return r?.sort((f,n)=>f.localeCompare(n)),{att:{[t]:xf(e,r,i)}}}function ho(t,e,r){var i;return t.att[e]=yf({},r),((i=Object.keys(t.att))==null?void 0:i.sort((f,n)=>f.localeCompare(n))).reduce((f,n)=>(f.att[n]=t.att[n],f),{att:{}})}function xf(t,e,r={}){e=e?.sort((f,n)=>f.localeCompare(n));const i=e.map(f=>({[`${t}/${f}`]:[r]}));return Object.assign({},...i)}function an(t){return tr(t),`urn:recap:${oo(t).replace(/=/g,"")}`}function mr(t){const e=so(t.replace("urn:recap:",""));return tr(e),e}function Al(t,e,r){const i=uo(t,e,r);return an(i)}function _f(t){return t&&t.includes("urn:recap:")}function xl(t,e){const r=mr(t),i=mr(e),f=co(r,i);return an(f)}function co(t,e){tr(t),tr(e);const r=Object.keys(t.att).concat(Object.keys(e.att)).sort((f,n)=>f.localeCompare(n)),i={att:{}};return r.forEach(f=>{var n,d;Object.keys(((n=t.att)==null?void 0:n[f])||{}).concat(Object.keys(((d=e.att)==null?void 0:d[f])||{})).sort((c,y)=>c.localeCompare(y)).forEach(c=>{var y,A;i.att[f]=ro(yf({},i.att[f]),{[c]:((y=t.att[f])==null?void 0:y[c])||((A=e.att[f])==null?void 0:A[c])})})}),i}function Mf(t="",e){tr(e);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(r))return t;const i=[];let f=0;Object.keys(e.att).forEach(c=>{const y=Object.keys(e.att[c]).map(E=>({ability:E.split("/")[0],action:E.split("/")[1]}));y.sort((E,N)=>E.action.localeCompare(N.action));const A={};y.forEach(E=>{A[E.ability]||(A[E.ability]=[]),A[E.ability].push(E.action)});const x=Object.keys(A).map(E=>(f++,`(${f}) '${E}': '${A[E].join("', '")}' for '${c}'.`));i.push(x.join(", ").replace(".,","."))});const n=i.join(" "),d=`${r}${n}`;return`${t?t+" ":""}${d}`}function _l(t){var e;const r=mr(t);tr(r);const i=(e=r.att)==null?void 0:e.eip155;return i?Object.keys(i).map(f=>f.split("/")[1]):[]}function Ml(t){const e=mr(t);tr(e);const r=[];return Object.values(e.att).forEach(i=>{Object.values(i).forEach(f=>{var n;(n=f?.[0])!=null&&n.chains&&r.push(f[0].chains)})}),[...new Set(r.flat())]}function lo(t,e){if(!e)return t;const r=mr(e);return tr(r),Mf(t,r)}function on(t){if(!t)return;const e=t?.[t.length-1];return _f(e)?e:void 0}var Ef={},sn={},ze={},bo={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(c,y){var A=c>>>16&65535,x=c&65535,E=y>>>16&65535,N=y&65535;return x*N+(A*N+x*E<<16>>>0)|0}t.mul=Math.imul||e;function r(c,y){return c+y|0}t.add=r;function i(c,y){return c-y|0}t.sub=i;function f(c,y){return c<>>32-y}t.rotl=f;function n(c,y){return c<<32-y|c>>>y}t.rotr=n;function d(c){return typeof c=="number"&&isFinite(c)&&Math.floor(c)===c}t.isInteger=Number.isInteger||d,t.MAX_SAFE_INTEGER=9007199254740991,t.isSafeInteger=function(c){return t.isInteger(c)&&c>=-t.MAX_SAFE_INTEGER&&c<=t.MAX_SAFE_INTEGER}})(bo),Object.defineProperty(ze,"__esModule",{value:!0});var vo=bo;function El(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])<<16>>16}ze.readInt16BE=El;function Sl(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])>>>0}ze.readUint16BE=Sl;function Dl(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])<<16>>16}ze.readInt16LE=Dl;function Il(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])>>>0}ze.readUint16LE=Il;function po(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>8,e[r+1]=t>>>0,e}ze.writeUint16BE=po,ze.writeInt16BE=po;function mo(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e}ze.writeUint16LE=mo,ze.writeInt16LE=mo;function Sf(t,e){return e===void 0&&(e=0),t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}ze.readInt32BE=Sf;function Df(t,e){return e===void 0&&(e=0),(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}ze.readUint32BE=Df;function If(t,e){return e===void 0&&(e=0),t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e]}ze.readInt32LE=If;function Nf(t,e){return e===void 0&&(e=0),(t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e])>>>0}ze.readUint32LE=Nf;function un(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>24,e[r+1]=t>>>16,e[r+2]=t>>>8,e[r+3]=t>>>0,e}ze.writeUint32BE=un,ze.writeInt32BE=un;function hn(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e[r+2]=t>>>16,e[r+3]=t>>>24,e}ze.writeUint32LE=hn,ze.writeInt32LE=hn;function Nl(t,e){e===void 0&&(e=0);var r=Sf(t,e),i=Sf(t,e+4);return r*4294967296+i-(i>>31)*4294967296}ze.readInt64BE=Nl;function Cl(t,e){e===void 0&&(e=0);var r=Df(t,e),i=Df(t,e+4);return r*4294967296+i}ze.readUint64BE=Cl;function Bl(t,e){e===void 0&&(e=0);var r=If(t,e),i=If(t,e+4);return i*4294967296+r-(r>>31)*4294967296}ze.readInt64LE=Bl;function Ol(t,e){e===void 0&&(e=0);var r=Nf(t,e),i=Nf(t,e+4);return i*4294967296+r}ze.readUint64LE=Ol;function go(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),un(t/4294967296>>>0,e,r),un(t>>>0,e,r+4),e}ze.writeUint64BE=go,ze.writeInt64BE=go;function yo(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),hn(t>>>0,e,r),hn(t/4294967296>>>0,e,r+4),e}ze.writeUint64LE=yo,ze.writeInt64LE=yo;function Rl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintBE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintBE: array is too short for the given bitLength");for(var i=0,f=1,n=t/8+r-1;n>=r;n--)i+=e[n]*f,f*=256;return i}ze.readUintBE=Rl;function Pl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintLE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintLE: array is too short for the given bitLength");for(var i=0,f=1,n=r;n=i;n--)r[n]=e/f&255,f*=256;return r}ze.writeUintBE=Tl;function Fl(t,e,r,i){if(r===void 0&&(r=new Uint8Array(t/8)),i===void 0&&(i=0),t%8!==0)throw new Error("writeUintLE supports only bitLengths divisible by 8");if(!vo.isSafeInteger(e))throw new Error("writeUintLE value must be an integer");for(var f=1,n=i;n>>32-16|o<<16,C=C+o|0,m^=C,m=m>>>32-12|m<<12,F=F+P|0,l^=F,l=l>>>32-16|l<<16,h=h+l|0,P^=h,P=P>>>32-12|P<<12,U=U+Y|0,w^=U,w=w>>>32-16|w<<16,u=u+w|0,Y^=u,Y=Y>>>32-12|Y<<12,L=L+Q|0,_^=L,_=_>>>32-16|_<<16,a=a+_|0,Q^=a,Q=Q>>>32-12|Q<<12,U=U+Y|0,w^=U,w=w>>>32-8|w<<8,u=u+w|0,Y^=u,Y=Y>>>32-7|Y<<7,L=L+Q|0,_^=L,_=_>>>32-8|_<<8,a=a+_|0,Q^=a,Q=Q>>>32-7|Q<<7,F=F+P|0,l^=F,l=l>>>32-8|l<<8,h=h+l|0,P^=h,P=P>>>32-7|P<<7,j=j+m|0,o^=j,o=o>>>32-8|o<<8,C=C+o|0,m^=C,m=m>>>32-7|m<<7,j=j+P|0,_^=j,_=_>>>32-16|_<<16,u=u+_|0,P^=u,P=P>>>32-12|P<<12,F=F+Y|0,o^=F,o=o>>>32-16|o<<16,a=a+o|0,Y^=a,Y=Y>>>32-12|Y<<12,U=U+Q|0,l^=U,l=l>>>32-16|l<<16,C=C+l|0,Q^=C,Q=Q>>>32-12|Q<<12,L=L+m|0,w^=L,w=w>>>32-16|w<<16,h=h+w|0,m^=h,m=m>>>32-12|m<<12,U=U+Q|0,l^=U,l=l>>>32-8|l<<8,C=C+l|0,Q^=C,Q=Q>>>32-7|Q<<7,L=L+m|0,w^=L,w=w>>>32-8|w<<8,h=h+w|0,m^=h,m=m>>>32-7|m<<7,F=F+Y|0,o^=F,o=o>>>32-8|o<<8,a=a+o|0,Y^=a,Y=Y>>>32-7|Y<<7,j=j+P|0,_^=j,_=_>>>32-8|_<<8,u=u+_|0,P^=u,P=P>>>32-7|P<<7;lt.writeUint32LE(j+i|0,t,0),lt.writeUint32LE(F+f|0,t,4),lt.writeUint32LE(U+n|0,t,8),lt.writeUint32LE(L+d|0,t,12),lt.writeUint32LE(m+c|0,t,16),lt.writeUint32LE(P+y|0,t,20),lt.writeUint32LE(Y+A|0,t,24),lt.writeUint32LE(Q+x|0,t,28),lt.writeUint32LE(C+E|0,t,32),lt.writeUint32LE(h+N|0,t,36),lt.writeUint32LE(u+D|0,t,40),lt.writeUint32LE(a+I|0,t,44),lt.writeUint32LE(o+q|0,t,48),lt.writeUint32LE(l+H|0,t,52),lt.writeUint32LE(w+V|0,t,56),lt.writeUint32LE(_+z|0,t,60)}function wo(t,e,r,i,f){if(f===void 0&&(f=0),t.length!==32)throw new Error("ChaCha: key size must be 32 bytes");if(i.length>>=8,e++;if(i>0)throw new Error("ChaCha: counter overflow")}var Ao={},gr={};Object.defineProperty(gr,"__esModule",{value:!0});function Wl(t,e,r){return~(t-1)&e|t-1&r}gr.select=Wl;function Ql(t,e){return(t|0)-(e|0)-1>>>31&1}gr.lessOrEqual=Ql;function xo(t,e){if(t.length!==e.length)return 0;for(var r=0,i=0;i>>8}gr.compare=xo;function Xl(t,e){return t.length===0||e.length===0?!1:xo(t,e)!==0}gr.equal=Xl,function(t){Object.defineProperty(t,"__esModule",{value:!0});var e=gr,r=Et;t.DIGEST_LENGTH=16;var i=function(){function d(c){this.digestLength=t.DIGEST_LENGTH,this._buffer=new Uint8Array(16),this._r=new Uint16Array(10),this._h=new Uint16Array(10),this._pad=new Uint16Array(8),this._leftover=0,this._fin=0,this._finished=!1;var y=c[0]|c[1]<<8;this._r[0]=y&8191;var A=c[2]|c[3]<<8;this._r[1]=(y>>>13|A<<3)&8191;var x=c[4]|c[5]<<8;this._r[2]=(A>>>10|x<<6)&7939;var E=c[6]|c[7]<<8;this._r[3]=(x>>>7|E<<9)&8191;var N=c[8]|c[9]<<8;this._r[4]=(E>>>4|N<<12)&255,this._r[5]=N>>>1&8190;var D=c[10]|c[11]<<8;this._r[6]=(N>>>14|D<<2)&8191;var I=c[12]|c[13]<<8;this._r[7]=(D>>>11|I<<5)&8065;var q=c[14]|c[15]<<8;this._r[8]=(I>>>8|q<<8)&8191,this._r[9]=q>>>5&127,this._pad[0]=c[16]|c[17]<<8,this._pad[1]=c[18]|c[19]<<8,this._pad[2]=c[20]|c[21]<<8,this._pad[3]=c[22]|c[23]<<8,this._pad[4]=c[24]|c[25]<<8,this._pad[5]=c[26]|c[27]<<8,this._pad[6]=c[28]|c[29]<<8,this._pad[7]=c[30]|c[31]<<8}return d.prototype._blocks=function(c,y,A){for(var x=this._fin?0:2048,E=this._h[0],N=this._h[1],D=this._h[2],I=this._h[3],q=this._h[4],H=this._h[5],V=this._h[6],z=this._h[7],j=this._h[8],F=this._h[9],U=this._r[0],L=this._r[1],m=this._r[2],P=this._r[3],Y=this._r[4],Q=this._r[5],C=this._r[6],h=this._r[7],u=this._r[8],a=this._r[9];A>=16;){var o=c[y+0]|c[y+1]<<8;E+=o&8191;var l=c[y+2]|c[y+3]<<8;N+=(o>>>13|l<<3)&8191;var w=c[y+4]|c[y+5]<<8;D+=(l>>>10|w<<6)&8191;var _=c[y+6]|c[y+7]<<8;I+=(w>>>7|_<<9)&8191;var g=c[y+8]|c[y+9]<<8;q+=(_>>>4|g<<12)&8191,H+=g>>>1&8191;var s=c[y+10]|c[y+11]<<8;V+=(g>>>14|s<<2)&8191;var p=c[y+12]|c[y+13]<<8;z+=(s>>>11|p<<5)&8191;var b=c[y+14]|c[y+15]<<8;j+=(p>>>8|b<<8)&8191,F+=b>>>5|x;var S=0,G=S;G+=E*U,G+=N*(5*a),G+=D*(5*u),G+=I*(5*h),G+=q*(5*C),S=G>>>13,G&=8191,G+=H*(5*Q),G+=V*(5*Y),G+=z*(5*P),G+=j*(5*m),G+=F*(5*L),S+=G>>>13,G&=8191;var M=S;M+=E*L,M+=N*U,M+=D*(5*a),M+=I*(5*u),M+=q*(5*h),S=M>>>13,M&=8191,M+=H*(5*C),M+=V*(5*Q),M+=z*(5*Y),M+=j*(5*P),M+=F*(5*m),S+=M>>>13,M&=8191;var k=S;k+=E*m,k+=N*L,k+=D*U,k+=I*(5*a),k+=q*(5*u),S=k>>>13,k&=8191,k+=H*(5*h),k+=V*(5*C),k+=z*(5*Q),k+=j*(5*Y),k+=F*(5*P),S+=k>>>13,k&=8191;var B=S;B+=E*P,B+=N*m,B+=D*L,B+=I*U,B+=q*(5*a),S=B>>>13,B&=8191,B+=H*(5*u),B+=V*(5*h),B+=z*(5*C),B+=j*(5*Q),B+=F*(5*Y),S+=B>>>13,B&=8191;var T=S;T+=E*Y,T+=N*P,T+=D*m,T+=I*L,T+=q*U,S=T>>>13,T&=8191,T+=H*(5*a),T+=V*(5*u),T+=z*(5*h),T+=j*(5*C),T+=F*(5*Q),S+=T>>>13,T&=8191;var O=S;O+=E*Q,O+=N*Y,O+=D*P,O+=I*m,O+=q*L,S=O>>>13,O&=8191,O+=H*U,O+=V*(5*a),O+=z*(5*u),O+=j*(5*h),O+=F*(5*C),S+=O>>>13,O&=8191;var v=S;v+=E*C,v+=N*Q,v+=D*Y,v+=I*P,v+=q*m,S=v>>>13,v&=8191,v+=H*L,v+=V*U,v+=z*(5*a),v+=j*(5*u),v+=F*(5*h),S+=v>>>13,v&=8191;var R=S;R+=E*h,R+=N*C,R+=D*Q,R+=I*Y,R+=q*P,S=R>>>13,R&=8191,R+=H*m,R+=V*L,R+=z*U,R+=j*(5*a),R+=F*(5*u),S+=R>>>13,R&=8191;var $=S;$+=E*u,$+=N*h,$+=D*C,$+=I*Q,$+=q*Y,S=$>>>13,$&=8191,$+=H*P,$+=V*m,$+=z*L,$+=j*U,$+=F*(5*a),S+=$>>>13,$&=8191;var J=S;J+=E*a,J+=N*u,J+=D*h,J+=I*C,J+=q*Q,S=J>>>13,J&=8191,J+=H*Y,J+=V*P,J+=z*m,J+=j*L,J+=F*U,S+=J>>>13,J&=8191,S=(S<<2)+S|0,S=S+G|0,G=S&8191,S=S>>>13,M+=S,E=G,N=M,D=k,I=B,q=T,H=O,V=v,z=R,j=$,F=J,y+=16,A-=16}this._h[0]=E,this._h[1]=N,this._h[2]=D,this._h[3]=I,this._h[4]=q,this._h[5]=H,this._h[6]=V,this._h[7]=z,this._h[8]=j,this._h[9]=F},d.prototype.finish=function(c,y){y===void 0&&(y=0);var A=new Uint16Array(10),x,E,N,D;if(this._leftover){for(D=this._leftover,this._buffer[D++]=1;D<16;D++)this._buffer[D]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(x=this._h[1]>>>13,this._h[1]&=8191,D=2;D<10;D++)this._h[D]+=x,x=this._h[D]>>>13,this._h[D]&=8191;for(this._h[0]+=x*5,x=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=x,x=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=x,A[0]=this._h[0]+5,x=A[0]>>>13,A[0]&=8191,D=1;D<10;D++)A[D]=this._h[D]+x,x=A[D]>>>13,A[D]&=8191;for(A[9]-=8192,E=(x^1)-1,D=0;D<10;D++)A[D]&=E;for(E=~E,D=0;D<10;D++)this._h[D]=this._h[D]&E|A[D];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,N=this._h[0]+this._pad[0],this._h[0]=N&65535,D=1;D<8;D++)N=(this._h[D]+this._pad[D]|0)+(N>>>16)|0,this._h[D]=N&65535;return c[y+0]=this._h[0]>>>0,c[y+1]=this._h[0]>>>8,c[y+2]=this._h[1]>>>0,c[y+3]=this._h[1]>>>8,c[y+4]=this._h[2]>>>0,c[y+5]=this._h[2]>>>8,c[y+6]=this._h[3]>>>0,c[y+7]=this._h[3]>>>8,c[y+8]=this._h[4]>>>0,c[y+9]=this._h[4]>>>8,c[y+10]=this._h[5]>>>0,c[y+11]=this._h[5]>>>8,c[y+12]=this._h[6]>>>0,c[y+13]=this._h[6]>>>8,c[y+14]=this._h[7]>>>0,c[y+15]=this._h[7]>>>8,this._finished=!0,this},d.prototype.update=function(c){var y=0,A=c.length,x;if(this._leftover){x=16-this._leftover,x>A&&(x=A);for(var E=0;E=16&&(x=A-A%16,this._blocks(c,y,x),y+=x,A-=x),A){for(var E=0;E16)throw new Error("ChaCha20Poly1305: incorrect nonce length");var D=new Uint8Array(16);D.set(A,D.length-A.length);var I=new Uint8Array(32);e.stream(this._key,D,I,4);var q=x.length+this.tagLength,H;if(N){if(N.length!==q)throw new Error("ChaCha20Poly1305: incorrect destination length");H=N}else H=new Uint8Array(q);return e.streamXOR(this._key,D,x,H,4),this._authenticate(H.subarray(H.length-this.tagLength,H.length),I,H.subarray(0,H.length-this.tagLength),E),i.wipe(D),H},y.prototype.open=function(A,x,E,N){if(A.length>16)throw new Error("ChaCha20Poly1305: incorrect nonce length");if(x.length0&&D.update(d.subarray(N.length%16))),D.update(E),E.length%16>0&&D.update(d.subarray(E.length%16));var I=new Uint8Array(8);N&&f.writeUint64LE(N.length,I),D.update(I),f.writeUint64LE(E.length,I),D.update(I);for(var q=D.digest(),H=0;Hthis.blockSize?this._inner.update(r).finish(i).clean():i.set(r);for(var f=0;f1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0},t.prototype.expand=function(e){for(var r=new Uint8Array(e),i=0;i256)throw new Error("randomString charset is too long");let N="";const D=x.length,I=256-256%D;for(;A>0;){const q=f(Math.ceil(A*256/I),E);for(let H=0;H0;H++){const V=q[H];V0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._temp,this._state,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%64<56?64:128;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._state.set(y.state),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.state),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA256=i;var f=new Int32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(c,y,A,x,E){for(;E>=64;){for(var N=y[0],D=y[1],I=y[2],q=y[3],H=y[4],V=y[5],z=y[6],j=y[7],F=0;F<16;F++){var U=x+F*4;c[F]=e.readUint32BE(A,U)}for(var F=16;F<64;F++){var L=c[F-2],m=(L>>>17|L<<32-17)^(L>>>19|L<<32-19)^L>>>10;L=c[F-15];var P=(L>>>7|L<<32-7)^(L>>>18|L<<32-18)^L>>>3;c[F]=(m+c[F-7]|0)+(P+c[F-16]|0)}for(var F=0;F<64;F++){var m=(((H>>>6|H<<26)^(H>>>11|H<<21)^(H>>>25|H<<7))+(H&V^~H&z)|0)+(j+(f[F]+c[F]|0)|0)|0,P=((N>>>2|N<<32-2)^(N>>>13|N<<32-13)^(N>>>22|N<<32-22))+(N&D^N&I^D&I)|0;j=z,z=V,V=H,H=q+m|0,q=I,I=D,D=N,N=m+P|0}y[0]+=N,y[1]+=D,y[2]+=I,y[3]+=q,y[4]+=H,y[5]+=V,y[6]+=z,y[7]+=j,x+=64,E-=64}return x}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(Oi);var Of={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.sharedKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.scalarMultBase=t.scalarMult=t.SHARED_KEY_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=void 0;const e=Br,r=Et;t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=32,t.SHARED_KEY_LENGTH=32;function i(F){const U=new Float64Array(16);if(F)for(let L=0;L>16&1),L[Q-1]&=65535;L[15]=m[15]-32767-(L[14]>>16&1);const Y=L[15]>>16&1;L[14]&=65535,c(m,L,1-Y)}for(let P=0;P<16;P++)F[2*P]=m[P]&255,F[2*P+1]=m[P]>>8}function A(F,U){for(let L=0;L<16;L++)F[L]=U[2*L]+(U[2*L+1]<<8);F[15]&=32767}function x(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]+L[m]}function E(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]-L[m]}function N(F,U,L){let m,P,Y=0,Q=0,C=0,h=0,u=0,a=0,o=0,l=0,w=0,_=0,g=0,s=0,p=0,b=0,S=0,G=0,M=0,k=0,B=0,T=0,O=0,v=0,R=0,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=L[0],te=L[1],se=L[2],oe=L[3],ee=L[4],ae=L[5],ne=L[6],Z=L[7],ve=L[8],me=L[9],re=L[10],ge=L[11],we=L[12],ie=L[13],Ae=L[14],xe=L[15];m=U[0],Y+=m*pe,Q+=m*te,C+=m*se,h+=m*oe,u+=m*ee,a+=m*ae,o+=m*ne,l+=m*Z,w+=m*ve,_+=m*me,g+=m*re,s+=m*ge,p+=m*we,b+=m*ie,S+=m*Ae,G+=m*xe,m=U[1],Q+=m*pe,C+=m*te,h+=m*se,u+=m*oe,a+=m*ee,o+=m*ae,l+=m*ne,w+=m*Z,_+=m*ve,g+=m*me,s+=m*re,p+=m*ge,b+=m*we,S+=m*ie,G+=m*Ae,M+=m*xe,m=U[2],C+=m*pe,h+=m*te,u+=m*se,a+=m*oe,o+=m*ee,l+=m*ae,w+=m*ne,_+=m*Z,g+=m*ve,s+=m*me,p+=m*re,b+=m*ge,S+=m*we,G+=m*ie,M+=m*Ae,k+=m*xe,m=U[3],h+=m*pe,u+=m*te,a+=m*se,o+=m*oe,l+=m*ee,w+=m*ae,_+=m*ne,g+=m*Z,s+=m*ve,p+=m*me,b+=m*re,S+=m*ge,G+=m*we,M+=m*ie,k+=m*Ae,B+=m*xe,m=U[4],u+=m*pe,a+=m*te,o+=m*se,l+=m*oe,w+=m*ee,_+=m*ae,g+=m*ne,s+=m*Z,p+=m*ve,b+=m*me,S+=m*re,G+=m*ge,M+=m*we,k+=m*ie,B+=m*Ae,T+=m*xe,m=U[5],a+=m*pe,o+=m*te,l+=m*se,w+=m*oe,_+=m*ee,g+=m*ae,s+=m*ne,p+=m*Z,b+=m*ve,S+=m*me,G+=m*re,M+=m*ge,k+=m*we,B+=m*ie,T+=m*Ae,O+=m*xe,m=U[6],o+=m*pe,l+=m*te,w+=m*se,_+=m*oe,g+=m*ee,s+=m*ae,p+=m*ne,b+=m*Z,S+=m*ve,G+=m*me,M+=m*re,k+=m*ge,B+=m*we,T+=m*ie,O+=m*Ae,v+=m*xe,m=U[7],l+=m*pe,w+=m*te,_+=m*se,g+=m*oe,s+=m*ee,p+=m*ae,b+=m*ne,S+=m*Z,G+=m*ve,M+=m*me,k+=m*re,B+=m*ge,T+=m*we,O+=m*ie,v+=m*Ae,R+=m*xe,m=U[8],w+=m*pe,_+=m*te,g+=m*se,s+=m*oe,p+=m*ee,b+=m*ae,S+=m*ne,G+=m*Z,M+=m*ve,k+=m*me,B+=m*re,T+=m*ge,O+=m*we,v+=m*ie,R+=m*Ae,$+=m*xe,m=U[9],_+=m*pe,g+=m*te,s+=m*se,p+=m*oe,b+=m*ee,S+=m*ae,G+=m*ne,M+=m*Z,k+=m*ve,B+=m*me,T+=m*re,O+=m*ge,v+=m*we,R+=m*ie,$+=m*Ae,J+=m*xe,m=U[10],g+=m*pe,s+=m*te,p+=m*se,b+=m*oe,S+=m*ee,G+=m*ae,M+=m*ne,k+=m*Z,B+=m*ve,T+=m*me,O+=m*re,v+=m*ge,R+=m*we,$+=m*ie,J+=m*Ae,W+=m*xe,m=U[11],s+=m*pe,p+=m*te,b+=m*se,S+=m*oe,G+=m*ee,M+=m*ae,k+=m*ne,B+=m*Z,T+=m*ve,O+=m*me,v+=m*re,R+=m*ge,$+=m*we,J+=m*ie,W+=m*Ae,X+=m*xe,m=U[12],p+=m*pe,b+=m*te,S+=m*se,G+=m*oe,M+=m*ee,k+=m*ae,B+=m*ne,T+=m*Z,O+=m*ve,v+=m*me,R+=m*re,$+=m*ge,J+=m*we,W+=m*ie,X+=m*Ae,be+=m*xe,m=U[13],b+=m*pe,S+=m*te,G+=m*se,M+=m*oe,k+=m*ee,B+=m*ae,T+=m*ne,O+=m*Z,v+=m*ve,R+=m*me,$+=m*re,J+=m*ge,W+=m*we,X+=m*ie,be+=m*Ae,ye+=m*xe,m=U[14],S+=m*pe,G+=m*te,M+=m*se,k+=m*oe,B+=m*ee,T+=m*ae,O+=m*ne,v+=m*Z,R+=m*ve,$+=m*me,J+=m*re,W+=m*ge,X+=m*we,be+=m*ie,ye+=m*Ae,fe+=m*xe,m=U[15],G+=m*pe,M+=m*te,k+=m*se,B+=m*oe,T+=m*ee,O+=m*ae,v+=m*ne,R+=m*Z,$+=m*ve,J+=m*me,W+=m*re,X+=m*ge,be+=m*we,ye+=m*ie,fe+=m*Ae,Ee+=m*xe,Y+=38*M,Q+=38*k,C+=38*B,h+=38*T,u+=38*O,a+=38*v,o+=38*R,l+=38*$,w+=38*J,_+=38*W,g+=38*X,s+=38*be,p+=38*ye,b+=38*fe,S+=38*Ee,P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),F[0]=Y,F[1]=Q,F[2]=C,F[3]=h,F[4]=u,F[5]=a,F[6]=o,F[7]=l,F[8]=w,F[9]=_,F[10]=g,F[11]=s,F[12]=p,F[13]=b,F[14]=S,F[15]=G}function D(F,U){N(F,U,U)}function I(F,U){const L=i();for(let m=0;m<16;m++)L[m]=U[m];for(let m=253;m>=0;m--)D(L,L),m!==2&&m!==4&&N(L,L,U);for(let m=0;m<16;m++)F[m]=L[m]}function q(F,U){const L=new Uint8Array(32),m=new Float64Array(80),P=i(),Y=i(),Q=i(),C=i(),h=i(),u=i();for(let w=0;w<31;w++)L[w]=F[w];L[31]=F[31]&127|64,L[0]&=248,A(m,U);for(let w=0;w<16;w++)Y[w]=m[w];P[0]=C[0]=1;for(let w=254;w>=0;--w){const _=L[w>>>3]>>>(w&7)&1;c(P,Y,_),c(Q,C,_),x(h,P,Q),E(P,P,Q),x(Q,Y,C),E(Y,Y,C),D(C,h),D(u,P),N(P,Q,P),N(Q,Y,h),x(h,P,Q),E(P,P,Q),D(Y,P),E(Q,C,u),N(P,Q,n),x(P,P,C),N(Q,Q,P),N(P,C,u),N(C,Y,m),D(Y,h),c(P,Y,_),c(Q,C,_)}for(let w=0;w<16;w++)m[w+16]=P[w],m[w+32]=Q[w],m[w+48]=Y[w],m[w+64]=C[w];const a=m.subarray(32),o=m.subarray(16);I(a,a),N(o,o,a);const l=new Uint8Array(32);return y(l,o),l}t.scalarMult=q;function H(F){return q(F,f)}t.scalarMultBase=H;function V(F){if(F.length!==t.SECRET_KEY_LENGTH)throw new Error(`x25519: seed must be ${t.SECRET_KEY_LENGTH} bytes`);const U=new Uint8Array(F);return{publicKey:H(U),secretKey:U}}t.generateKeyPairFromSeed=V;function z(F){const U=(0,e.randomBytes)(32,F),L=V(U);return(0,r.wipe)(U),L}t.generateKeyPair=z;function j(F,U,L=!1){if(F.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect secret key length");if(U.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect public key length");const m=q(F,U);if(L){let P=0;for(let Y=0;Yf+n.length,0));const r=Io(e);let i=0;for(const f of t)r.set(f,i),i+=f.length;return r}function d1(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),i=0;i>>0,F=new Uint8Array(j);V!==z;){for(var U=I[V],L=0,m=j-1;(U!==0||L>>0,F[m]=U%c>>>0,U=U/c>>>0;if(U!==0)throw new Error("Non-zero carry");H=L,V++}for(var P=j-H;P!==j&&F[P]===0;)P++;for(var Y=y.repeat(q);P>>0,j=new Uint8Array(z);I[q];){var F=r[I.charCodeAt(q)];if(F===255)return;for(var U=0,L=z-1;(F!==0||U>>0,j[L]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");V=U,q++}if(I[q]!==" "){for(var m=z-V;m!==z&&j[m]===0;)m++;for(var P=new Uint8Array(H+(z-m)),Y=H;m!==z;)P[Y++]=j[m++];return P}}}function D(I){var q=N(I);if(q)return q;throw new Error(`Non-${e} character`)}return{encode:E,decodeUnsafe:N,decode:D}}var l1=d1,b1=l1;const No=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},v1=t=>new TextEncoder().encode(t),p1=t=>new TextDecoder().decode(t);class m1{constructor(e,r,i){this.name=e,this.prefix=r,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class g1{constructor(e,r,i){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Co(this,e)}}class y1{constructor(e){this.decoders=e}or(e){return Co(this,e)}decode(e){const r=e[0],i=this.decoders[r];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Co=(t,e)=>new y1({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class w1{constructor(e,r,i,f){this.name=e,this.prefix=r,this.baseEncode=i,this.baseDecode=f,this.encoder=new m1(e,r,i),this.decoder=new g1(e,r,f)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const bn=({name:t,prefix:e,encode:r,decode:i})=>new w1(t,e,r,i),Ri=({prefix:t,name:e,alphabet:r})=>{const{encode:i,decode:f}=b1(r,e);return bn({prefix:t,name:e,encode:i,decode:n=>No(f(n))})},A1=(t,e,r,i)=>{const f={};for(let x=0;x=8&&(c-=8,d[A++]=255&y>>c)}if(c>=r||255&y<<8-c)throw new SyntaxError("Unexpected end of data");return d},x1=(t,e,r)=>{const i=e[e.length-1]==="=",f=(1<r;)d-=r,n+=e[f&c>>d];if(d&&(n+=e[f&c<bn({prefix:e,name:t,encode(f){return x1(f,i,r)},decode(f){return A1(f,i,r,t)}}),_1=bn({prefix:"\0",name:"identity",encode:t=>p1(t),decode:t=>v1(t)});var M1=Object.freeze({__proto__:null,identity:_1});const E1=ht({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var S1=Object.freeze({__proto__:null,base2:E1});const D1=ht({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var I1=Object.freeze({__proto__:null,base8:D1});const N1=Ri({prefix:"9",name:"base10",alphabet:"0123456789"});var C1=Object.freeze({__proto__:null,base10:N1});const B1=ht({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),O1=ht({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var R1=Object.freeze({__proto__:null,base16:B1,base16upper:O1});const P1=ht({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),T1=ht({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),F1=ht({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),U1=ht({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),L1=ht({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),q1=ht({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),z1=ht({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),k1=ht({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),H1=ht({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var K1=Object.freeze({__proto__:null,base32:P1,base32upper:T1,base32pad:F1,base32padupper:U1,base32hex:L1,base32hexupper:q1,base32hexpad:z1,base32hexpadupper:k1,base32z:H1});const j1=Ri({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),$1=Ri({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var V1=Object.freeze({__proto__:null,base36:j1,base36upper:$1});const G1=Ri({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Y1=Ri({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var J1=Object.freeze({__proto__:null,base58btc:G1,base58flickr:Y1});const W1=ht({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Q1=ht({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),X1=ht({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Z1=ht({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var e2=Object.freeze({__proto__:null,base64:W1,base64pad:Q1,base64url:X1,base64urlpad:Z1});const Bo=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),t2=Bo.reduce((t,e,r)=>(t[r]=e,t),[]),r2=Bo.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function i2(t){return t.reduce((e,r)=>(e+=t2[r],e),"")}function n2(t){const e=[];for(const r of t){const i=r2[r.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(i)}return new Uint8Array(e)}const f2=bn({prefix:"\u{1F680}",name:"base256emoji",encode:i2,decode:n2});var a2=Object.freeze({__proto__:null,base256emoji:f2}),o2=Ro,Oo=128,s2=127,u2=~s2,h2=Math.pow(2,31);function Ro(t,e,r){e=e||[],r=r||0;for(var i=r;t>=h2;)e[r++]=t&255|Oo,t/=128;for(;t&u2;)e[r++]=t&255|Oo,t>>>=7;return e[r]=t|0,Ro.bytes=r-i+1,e}var c2=Pf,d2=128,Po=127;function Pf(t,i){var r=0,i=i||0,f=0,n=i,d,c=t.length;do{if(n>=c)throw Pf.bytes=0,new RangeError("Could not decode varint");d=t[n++],r+=f<28?(d&Po)<=d2);return Pf.bytes=n-i,r}var l2=Math.pow(2,7),b2=Math.pow(2,14),v2=Math.pow(2,21),p2=Math.pow(2,28),m2=Math.pow(2,35),g2=Math.pow(2,42),y2=Math.pow(2,49),w2=Math.pow(2,56),A2=Math.pow(2,63),x2=function(t){return t(To.encode(t,e,r),e),Uo=t=>To.encodingLength(t),Tf=(t,e)=>{const r=e.byteLength,i=Uo(t),f=i+Uo(r),n=new Uint8Array(f+r);return Fo(t,n,0),Fo(r,n,i),n.set(e,f),new M2(t,r,e,n)};class M2{constructor(e,r,i,f){this.code=e,this.size=r,this.digest=i,this.bytes=f}}const Lo=({name:t,code:e,encode:r})=>new E2(t,e,r);class E2{constructor(e,r,i){this.name=e,this.code=r,this.encode=i}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?Tf(this.code,r):r.then(i=>Tf(this.code,i))}else throw Error("Unknown type, must be binary type")}}const qo=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),S2=Lo({name:"sha2-256",code:18,encode:qo("SHA-256")}),D2=Lo({name:"sha2-512",code:19,encode:qo("SHA-512")});var I2=Object.freeze({__proto__:null,sha256:S2,sha512:D2});const zo=0,N2="identity",ko=No;var C2=Object.freeze({__proto__:null,identity:{code:zo,name:N2,encode:ko,digest:t=>Tf(zo,ko(t))}});new TextEncoder,new TextDecoder;const vn={...M1,...S1,...I1,...C1,...R1,...K1,...V1,...J1,...e2,...a2};({...I2,...C2});function Ho(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const Ko=Ho("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ff=Ho("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=Io(t.length);for(let r=0;r",z2="MIT",k2={url:"https://github.com/indutny/elliptic/issues"},H2="https://github.com/indutny/elliptic",K2={brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},j2={"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},$2={name:B2,version:O2,description:R2,main:P2,files:T2,scripts:F2,repository:U2,keywords:L2,author:q2,license:z2,bugs:k2,homepage:H2,devDependencies:K2,dependencies:j2},Dt={},ir={exports:{}};(function(t){(function(e,r){function i(C,h){if(!C)throw new Error(h||"Assertion failed")}function f(C,h){C.super_=h;var u=function(){};u.prototype=h.prototype,C.prototype=new u,C.prototype.constructor=C}function n(C,h,u){if(n.isBN(C))return C;this.negative=0,this.words=null,this.length=0,this.red=null,C!==null&&((h==="le"||h==="be")&&(u=h,h=10),this._init(C||0,h||10,u||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(h){return h instanceof n?!0:h!==null&&typeof h=="object"&&h.constructor.wordSize===n.wordSize&&Array.isArray(h.words)},n.max=function(h,u){return h.cmp(u)>0?h:u},n.min=function(h,u){return h.cmp(u)<0?h:u},n.prototype._init=function(h,u,a){if(typeof h=="number")return this._initNumber(h,u,a);if(typeof h=="object")return this._initArray(h,u,a);u==="hex"&&(u=16),i(u===(u|0)&&u>=2&&u<=36),h=h.toString().replace(/\s+/g,"");var o=0;h[0]==="-"&&(o++,this.negative=1),o=0;o-=3)w=h[o]|h[o-1]<<8|h[o-2]<<16,this.words[l]|=w<<_&67108863,this.words[l+1]=w>>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);else if(a==="le")for(o=0,l=0;o>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);return this.strip()};function c(C,h){var u=C.charCodeAt(h);return u>=65&&u<=70?u-55:u>=97&&u<=102?u-87:u-48&15}function y(C,h,u){var a=c(C,u);return u-1>=h&&(a|=c(C,u-1)<<4),a}n.prototype._parseHex=function(h,u,a){this.length=Math.ceil((h.length-u)/6),this.words=new Array(this.length);for(var o=0;o=u;o-=2)_=y(h,u,o)<=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8;else{var g=h.length-u;for(o=g%2===0?u+1:u;o=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8}this.strip()};function A(C,h,u,a){for(var o=0,l=Math.min(C.length,u),w=h;w=49?o+=_-49+10:_>=17?o+=_-17+10:o+=_}return o}n.prototype._parseBase=function(h,u,a){this.words=[0],this.length=1;for(var o=0,l=1;l<=67108863;l*=u)o++;o--,l=l/u|0;for(var w=h.length-a,_=w%o,g=Math.min(w,w-_)+a,s=0,p=a;p1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var x=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],E=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(h,u){h=h||10,u=u|0||1;var a;if(h===16||h==="hex"){a="";for(var o=0,l=0,w=0;w>>24-o&16777215,l!==0||w!==this.length-1?a=x[6-g.length]+g+a:a=g+a,o+=2,o>=26&&(o-=26,w--)}for(l!==0&&(a=l.toString(16)+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}if(h===(h|0)&&h>=2&&h<=36){var s=E[h],p=N[h];a="";var b=this.clone();for(b.negative=0;!b.isZero();){var S=b.modn(p).toString(h);b=b.idivn(p),b.isZero()?a=S+a:a=x[s-S.length]+S+a}for(this.isZero()&&(a="0"+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var h=this.words[0];return this.length===2?h+=this.words[1]*67108864:this.length===3&&this.words[2]===1?h+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-h:h},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(h,u){return i(typeof d<"u"),this.toArrayLike(d,h,u)},n.prototype.toArray=function(h,u){return this.toArrayLike(Array,h,u)},n.prototype.toArrayLike=function(h,u,a){var o=this.byteLength(),l=a||Math.max(1,o);i(o<=l,"byte array longer than desired length"),i(l>0,"Requested array length <= 0"),this.strip();var w=u==="le",_=new h(l),g,s,p=this.clone();if(w){for(s=0;!p.isZero();s++)g=p.andln(255),p.iushrn(8),_[s]=g;for(;s=4096&&(a+=13,u>>>=13),u>=64&&(a+=7,u>>>=7),u>=8&&(a+=4,u>>>=4),u>=2&&(a+=2,u>>>=2),a+u},n.prototype._zeroBits=function(h){if(h===0)return 26;var u=h,a=0;return u&8191||(a+=13,u>>>=13),u&127||(a+=7,u>>>=7),u&15||(a+=4,u>>>=4),u&3||(a+=2,u>>>=2),u&1||a++,a},n.prototype.bitLength=function(){var h=this.words[this.length-1],u=this._countBits(h);return(this.length-1)*26+u};function D(C){for(var h=new Array(C.bitLength()),u=0;u>>o}return h}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var h=0,u=0;uh.length?this.clone().ior(h):h.clone().ior(this)},n.prototype.uor=function(h){return this.length>h.length?this.clone().iuor(h):h.clone().iuor(this)},n.prototype.iuand=function(h){var u;this.length>h.length?u=h:u=this;for(var a=0;ah.length?this.clone().iand(h):h.clone().iand(this)},n.prototype.uand=function(h){return this.length>h.length?this.clone().iuand(h):h.clone().iuand(this)},n.prototype.iuxor=function(h){var u,a;this.length>h.length?(u=this,a=h):(u=h,a=this);for(var o=0;oh.length?this.clone().ixor(h):h.clone().ixor(this)},n.prototype.uxor=function(h){return this.length>h.length?this.clone().iuxor(h):h.clone().iuxor(this)},n.prototype.inotn=function(h){i(typeof h=="number"&&h>=0);var u=Math.ceil(h/26)|0,a=h%26;this._expand(u),a>0&&u--;for(var o=0;o0&&(this.words[o]=~this.words[o]&67108863>>26-a),this.strip()},n.prototype.notn=function(h){return this.clone().inotn(h)},n.prototype.setn=function(h,u){i(typeof h=="number"&&h>=0);var a=h/26|0,o=h%26;return this._expand(a+1),u?this.words[a]=this.words[a]|1<h.length?(a=this,o=h):(a=h,o=this);for(var l=0,w=0;w>>26;for(;l!==0&&w>>26;if(this.length=a.length,l!==0)this.words[this.length]=l,this.length++;else if(a!==this)for(;wh.length?this.clone().iadd(h):h.clone().iadd(this)},n.prototype.isub=function(h){if(h.negative!==0){h.negative=0;var u=this.iadd(h);return h.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(h),this.negative=1,this._normSign();var a=this.cmp(h);if(a===0)return this.negative=0,this.length=1,this.words[0]=0,this;var o,l;a>0?(o=this,l=h):(o=h,l=this);for(var w=0,_=0;_>26,this.words[_]=u&67108863;for(;w!==0&&_>26,this.words[_]=u&67108863;if(w===0&&_>>26,b=g&67108863,S=Math.min(s,h.length-1),G=Math.max(0,s-C.length+1);G<=S;G++){var M=s-G|0;o=C.words[M]|0,l=h.words[G]|0,w=o*l+b,p+=w/67108864|0,b=w&67108863}u.words[s]=b|0,g=p|0}return g!==0?u.words[s]=g|0:u.length--,u.strip()}var q=function(h,u,a){var o=h.words,l=u.words,w=a.words,_=0,g,s,p,b=o[0]|0,S=b&8191,G=b>>>13,M=o[1]|0,k=M&8191,B=M>>>13,T=o[2]|0,O=T&8191,v=T>>>13,R=o[3]|0,$=R&8191,J=R>>>13,W=o[4]|0,X=W&8191,be=W>>>13,ye=o[5]|0,fe=ye&8191,Ee=ye>>>13,pe=o[6]|0,te=pe&8191,se=pe>>>13,oe=o[7]|0,ee=oe&8191,ae=oe>>>13,ne=o[8]|0,Z=ne&8191,ve=ne>>>13,me=o[9]|0,re=me&8191,ge=me>>>13,we=l[0]|0,ie=we&8191,Ae=we>>>13,xe=l[1]|0,_e=xe&8191,je=xe>>>13,$e=l[2]|0,Me=$e&8191,Ve=$e>>>13,Ge=l[3]|0,Se=Ge&8191,Ie=Ge>>>13,Ne=l[4]|0,ue=Ne&8191,Ce=Ne>>>13,Be=l[5]|0,he=Be&8191,Oe=Be>>>13,Re=l[6]|0,ce=Re&8191,Pe=Re>>>13,Te=l[7]|0,de=Te&8191,Fe=Te>>>13,Ue=l[8]|0,le=Ue&8191,Le=Ue>>>13,We=l[9]|0,De=We&8191,Qe=We>>>13;a.negative=h.negative^u.negative,a.length=19,g=Math.imul(S,ie),s=Math.imul(S,Ae),s=s+Math.imul(G,ie)|0,p=Math.imul(G,Ae);var Ye=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,g=Math.imul(k,ie),s=Math.imul(k,Ae),s=s+Math.imul(B,ie)|0,p=Math.imul(B,Ae),g=g+Math.imul(S,_e)|0,s=s+Math.imul(S,je)|0,s=s+Math.imul(G,_e)|0,p=p+Math.imul(G,je)|0;var Je=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Je>>>26)|0,Je&=67108863,g=Math.imul(O,ie),s=Math.imul(O,Ae),s=s+Math.imul(v,ie)|0,p=Math.imul(v,Ae),g=g+Math.imul(k,_e)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(B,_e)|0,p=p+Math.imul(B,je)|0,g=g+Math.imul(S,Me)|0,s=s+Math.imul(S,Ve)|0,s=s+Math.imul(G,Me)|0,p=p+Math.imul(G,Ve)|0;var Ut=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul($,ie),s=Math.imul($,Ae),s=s+Math.imul(J,ie)|0,p=Math.imul(J,Ae),g=g+Math.imul(O,_e)|0,s=s+Math.imul(O,je)|0,s=s+Math.imul(v,_e)|0,p=p+Math.imul(v,je)|0,g=g+Math.imul(k,Me)|0,s=s+Math.imul(k,Ve)|0,s=s+Math.imul(B,Me)|0,p=p+Math.imul(B,Ve)|0,g=g+Math.imul(S,Se)|0,s=s+Math.imul(S,Ie)|0,s=s+Math.imul(G,Se)|0,p=p+Math.imul(G,Ie)|0;var Lt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(X,ie),s=Math.imul(X,Ae),s=s+Math.imul(be,ie)|0,p=Math.imul(be,Ae),g=g+Math.imul($,_e)|0,s=s+Math.imul($,je)|0,s=s+Math.imul(J,_e)|0,p=p+Math.imul(J,je)|0,g=g+Math.imul(O,Me)|0,s=s+Math.imul(O,Ve)|0,s=s+Math.imul(v,Me)|0,p=p+Math.imul(v,Ve)|0,g=g+Math.imul(k,Se)|0,s=s+Math.imul(k,Ie)|0,s=s+Math.imul(B,Se)|0,p=p+Math.imul(B,Ie)|0,g=g+Math.imul(S,ue)|0,s=s+Math.imul(S,Ce)|0,s=s+Math.imul(G,ue)|0,p=p+Math.imul(G,Ce)|0;var qt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(fe,ie),s=Math.imul(fe,Ae),s=s+Math.imul(Ee,ie)|0,p=Math.imul(Ee,Ae),g=g+Math.imul(X,_e)|0,s=s+Math.imul(X,je)|0,s=s+Math.imul(be,_e)|0,p=p+Math.imul(be,je)|0,g=g+Math.imul($,Me)|0,s=s+Math.imul($,Ve)|0,s=s+Math.imul(J,Me)|0,p=p+Math.imul(J,Ve)|0,g=g+Math.imul(O,Se)|0,s=s+Math.imul(O,Ie)|0,s=s+Math.imul(v,Se)|0,p=p+Math.imul(v,Ie)|0,g=g+Math.imul(k,ue)|0,s=s+Math.imul(k,Ce)|0,s=s+Math.imul(B,ue)|0,p=p+Math.imul(B,Ce)|0,g=g+Math.imul(S,he)|0,s=s+Math.imul(S,Oe)|0,s=s+Math.imul(G,he)|0,p=p+Math.imul(G,Oe)|0;var zt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zt>>>26)|0,zt&=67108863,g=Math.imul(te,ie),s=Math.imul(te,Ae),s=s+Math.imul(se,ie)|0,p=Math.imul(se,Ae),g=g+Math.imul(fe,_e)|0,s=s+Math.imul(fe,je)|0,s=s+Math.imul(Ee,_e)|0,p=p+Math.imul(Ee,je)|0,g=g+Math.imul(X,Me)|0,s=s+Math.imul(X,Ve)|0,s=s+Math.imul(be,Me)|0,p=p+Math.imul(be,Ve)|0,g=g+Math.imul($,Se)|0,s=s+Math.imul($,Ie)|0,s=s+Math.imul(J,Se)|0,p=p+Math.imul(J,Ie)|0,g=g+Math.imul(O,ue)|0,s=s+Math.imul(O,Ce)|0,s=s+Math.imul(v,ue)|0,p=p+Math.imul(v,Ce)|0,g=g+Math.imul(k,he)|0,s=s+Math.imul(k,Oe)|0,s=s+Math.imul(B,he)|0,p=p+Math.imul(B,Oe)|0,g=g+Math.imul(S,ce)|0,s=s+Math.imul(S,Pe)|0,s=s+Math.imul(G,ce)|0,p=p+Math.imul(G,Pe)|0;var kt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(ee,ie),s=Math.imul(ee,Ae),s=s+Math.imul(ae,ie)|0,p=Math.imul(ae,Ae),g=g+Math.imul(te,_e)|0,s=s+Math.imul(te,je)|0,s=s+Math.imul(se,_e)|0,p=p+Math.imul(se,je)|0,g=g+Math.imul(fe,Me)|0,s=s+Math.imul(fe,Ve)|0,s=s+Math.imul(Ee,Me)|0,p=p+Math.imul(Ee,Ve)|0,g=g+Math.imul(X,Se)|0,s=s+Math.imul(X,Ie)|0,s=s+Math.imul(be,Se)|0,p=p+Math.imul(be,Ie)|0,g=g+Math.imul($,ue)|0,s=s+Math.imul($,Ce)|0,s=s+Math.imul(J,ue)|0,p=p+Math.imul(J,Ce)|0,g=g+Math.imul(O,he)|0,s=s+Math.imul(O,Oe)|0,s=s+Math.imul(v,he)|0,p=p+Math.imul(v,Oe)|0,g=g+Math.imul(k,ce)|0,s=s+Math.imul(k,Pe)|0,s=s+Math.imul(B,ce)|0,p=p+Math.imul(B,Pe)|0,g=g+Math.imul(S,de)|0,s=s+Math.imul(S,Fe)|0,s=s+Math.imul(G,de)|0,p=p+Math.imul(G,Fe)|0;var qr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qr>>>26)|0,qr&=67108863,g=Math.imul(Z,ie),s=Math.imul(Z,Ae),s=s+Math.imul(ve,ie)|0,p=Math.imul(ve,Ae),g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ae,_e)|0,p=p+Math.imul(ae,je)|0,g=g+Math.imul(te,Me)|0,s=s+Math.imul(te,Ve)|0,s=s+Math.imul(se,Me)|0,p=p+Math.imul(se,Ve)|0,g=g+Math.imul(fe,Se)|0,s=s+Math.imul(fe,Ie)|0,s=s+Math.imul(Ee,Se)|0,p=p+Math.imul(Ee,Ie)|0,g=g+Math.imul(X,ue)|0,s=s+Math.imul(X,Ce)|0,s=s+Math.imul(be,ue)|0,p=p+Math.imul(be,Ce)|0,g=g+Math.imul($,he)|0,s=s+Math.imul($,Oe)|0,s=s+Math.imul(J,he)|0,p=p+Math.imul(J,Oe)|0,g=g+Math.imul(O,ce)|0,s=s+Math.imul(O,Pe)|0,s=s+Math.imul(v,ce)|0,p=p+Math.imul(v,Pe)|0,g=g+Math.imul(k,de)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(B,de)|0,p=p+Math.imul(B,Fe)|0,g=g+Math.imul(S,le)|0,s=s+Math.imul(S,Le)|0,s=s+Math.imul(G,le)|0,p=p+Math.imul(G,Le)|0;var zr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zr>>>26)|0,zr&=67108863,g=Math.imul(re,ie),s=Math.imul(re,Ae),s=s+Math.imul(ge,ie)|0,p=Math.imul(ge,Ae),g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(ve,_e)|0,p=p+Math.imul(ve,je)|0,g=g+Math.imul(ee,Me)|0,s=s+Math.imul(ee,Ve)|0,s=s+Math.imul(ae,Me)|0,p=p+Math.imul(ae,Ve)|0,g=g+Math.imul(te,Se)|0,s=s+Math.imul(te,Ie)|0,s=s+Math.imul(se,Se)|0,p=p+Math.imul(se,Ie)|0,g=g+Math.imul(fe,ue)|0,s=s+Math.imul(fe,Ce)|0,s=s+Math.imul(Ee,ue)|0,p=p+Math.imul(Ee,Ce)|0,g=g+Math.imul(X,he)|0,s=s+Math.imul(X,Oe)|0,s=s+Math.imul(be,he)|0,p=p+Math.imul(be,Oe)|0,g=g+Math.imul($,ce)|0,s=s+Math.imul($,Pe)|0,s=s+Math.imul(J,ce)|0,p=p+Math.imul(J,Pe)|0,g=g+Math.imul(O,de)|0,s=s+Math.imul(O,Fe)|0,s=s+Math.imul(v,de)|0,p=p+Math.imul(v,Fe)|0,g=g+Math.imul(k,le)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(B,le)|0,p=p+Math.imul(B,Le)|0,g=g+Math.imul(S,De)|0,s=s+Math.imul(S,Qe)|0,s=s+Math.imul(G,De)|0,p=p+Math.imul(G,Qe)|0;var kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kr>>>26)|0,kr&=67108863,g=Math.imul(re,_e),s=Math.imul(re,je),s=s+Math.imul(ge,_e)|0,p=Math.imul(ge,je),g=g+Math.imul(Z,Me)|0,s=s+Math.imul(Z,Ve)|0,s=s+Math.imul(ve,Me)|0,p=p+Math.imul(ve,Ve)|0,g=g+Math.imul(ee,Se)|0,s=s+Math.imul(ee,Ie)|0,s=s+Math.imul(ae,Se)|0,p=p+Math.imul(ae,Ie)|0,g=g+Math.imul(te,ue)|0,s=s+Math.imul(te,Ce)|0,s=s+Math.imul(se,ue)|0,p=p+Math.imul(se,Ce)|0,g=g+Math.imul(fe,he)|0,s=s+Math.imul(fe,Oe)|0,s=s+Math.imul(Ee,he)|0,p=p+Math.imul(Ee,Oe)|0,g=g+Math.imul(X,ce)|0,s=s+Math.imul(X,Pe)|0,s=s+Math.imul(be,ce)|0,p=p+Math.imul(be,Pe)|0,g=g+Math.imul($,de)|0,s=s+Math.imul($,Fe)|0,s=s+Math.imul(J,de)|0,p=p+Math.imul(J,Fe)|0,g=g+Math.imul(O,le)|0,s=s+Math.imul(O,Le)|0,s=s+Math.imul(v,le)|0,p=p+Math.imul(v,Le)|0,g=g+Math.imul(k,De)|0,s=s+Math.imul(k,Qe)|0,s=s+Math.imul(B,De)|0,p=p+Math.imul(B,Qe)|0;var Hr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,g=Math.imul(re,Me),s=Math.imul(re,Ve),s=s+Math.imul(ge,Me)|0,p=Math.imul(ge,Ve),g=g+Math.imul(Z,Se)|0,s=s+Math.imul(Z,Ie)|0,s=s+Math.imul(ve,Se)|0,p=p+Math.imul(ve,Ie)|0,g=g+Math.imul(ee,ue)|0,s=s+Math.imul(ee,Ce)|0,s=s+Math.imul(ae,ue)|0,p=p+Math.imul(ae,Ce)|0,g=g+Math.imul(te,he)|0,s=s+Math.imul(te,Oe)|0,s=s+Math.imul(se,he)|0,p=p+Math.imul(se,Oe)|0,g=g+Math.imul(fe,ce)|0,s=s+Math.imul(fe,Pe)|0,s=s+Math.imul(Ee,ce)|0,p=p+Math.imul(Ee,Pe)|0,g=g+Math.imul(X,de)|0,s=s+Math.imul(X,Fe)|0,s=s+Math.imul(be,de)|0,p=p+Math.imul(be,Fe)|0,g=g+Math.imul($,le)|0,s=s+Math.imul($,Le)|0,s=s+Math.imul(J,le)|0,p=p+Math.imul(J,Le)|0,g=g+Math.imul(O,De)|0,s=s+Math.imul(O,Qe)|0,s=s+Math.imul(v,De)|0,p=p+Math.imul(v,Qe)|0;var Kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,g=Math.imul(re,Se),s=Math.imul(re,Ie),s=s+Math.imul(ge,Se)|0,p=Math.imul(ge,Ie),g=g+Math.imul(Z,ue)|0,s=s+Math.imul(Z,Ce)|0,s=s+Math.imul(ve,ue)|0,p=p+Math.imul(ve,Ce)|0,g=g+Math.imul(ee,he)|0,s=s+Math.imul(ee,Oe)|0,s=s+Math.imul(ae,he)|0,p=p+Math.imul(ae,Oe)|0,g=g+Math.imul(te,ce)|0,s=s+Math.imul(te,Pe)|0,s=s+Math.imul(se,ce)|0,p=p+Math.imul(se,Pe)|0,g=g+Math.imul(fe,de)|0,s=s+Math.imul(fe,Fe)|0,s=s+Math.imul(Ee,de)|0,p=p+Math.imul(Ee,Fe)|0,g=g+Math.imul(X,le)|0,s=s+Math.imul(X,Le)|0,s=s+Math.imul(be,le)|0,p=p+Math.imul(be,Le)|0,g=g+Math.imul($,De)|0,s=s+Math.imul($,Qe)|0,s=s+Math.imul(J,De)|0,p=p+Math.imul(J,Qe)|0;var jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(jr>>>26)|0,jr&=67108863,g=Math.imul(re,ue),s=Math.imul(re,Ce),s=s+Math.imul(ge,ue)|0,p=Math.imul(ge,Ce),g=g+Math.imul(Z,he)|0,s=s+Math.imul(Z,Oe)|0,s=s+Math.imul(ve,he)|0,p=p+Math.imul(ve,Oe)|0,g=g+Math.imul(ee,ce)|0,s=s+Math.imul(ee,Pe)|0,s=s+Math.imul(ae,ce)|0,p=p+Math.imul(ae,Pe)|0,g=g+Math.imul(te,de)|0,s=s+Math.imul(te,Fe)|0,s=s+Math.imul(se,de)|0,p=p+Math.imul(se,Fe)|0,g=g+Math.imul(fe,le)|0,s=s+Math.imul(fe,Le)|0,s=s+Math.imul(Ee,le)|0,p=p+Math.imul(Ee,Le)|0,g=g+Math.imul(X,De)|0,s=s+Math.imul(X,Qe)|0,s=s+Math.imul(be,De)|0,p=p+Math.imul(be,Qe)|0;var $r=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,g=Math.imul(re,he),s=Math.imul(re,Oe),s=s+Math.imul(ge,he)|0,p=Math.imul(ge,Oe),g=g+Math.imul(Z,ce)|0,s=s+Math.imul(Z,Pe)|0,s=s+Math.imul(ve,ce)|0,p=p+Math.imul(ve,Pe)|0,g=g+Math.imul(ee,de)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ae,de)|0,p=p+Math.imul(ae,Fe)|0,g=g+Math.imul(te,le)|0,s=s+Math.imul(te,Le)|0,s=s+Math.imul(se,le)|0,p=p+Math.imul(se,Le)|0,g=g+Math.imul(fe,De)|0,s=s+Math.imul(fe,Qe)|0,s=s+Math.imul(Ee,De)|0,p=p+Math.imul(Ee,Qe)|0;var Vr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,g=Math.imul(re,ce),s=Math.imul(re,Pe),s=s+Math.imul(ge,ce)|0,p=Math.imul(ge,Pe),g=g+Math.imul(Z,de)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(ve,de)|0,p=p+Math.imul(ve,Fe)|0,g=g+Math.imul(ee,le)|0,s=s+Math.imul(ee,Le)|0,s=s+Math.imul(ae,le)|0,p=p+Math.imul(ae,Le)|0,g=g+Math.imul(te,De)|0,s=s+Math.imul(te,Qe)|0,s=s+Math.imul(se,De)|0,p=p+Math.imul(se,Qe)|0;var Gr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,g=Math.imul(re,de),s=Math.imul(re,Fe),s=s+Math.imul(ge,de)|0,p=Math.imul(ge,Fe),g=g+Math.imul(Z,le)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(ve,le)|0,p=p+Math.imul(ve,Le)|0,g=g+Math.imul(ee,De)|0,s=s+Math.imul(ee,Qe)|0,s=s+Math.imul(ae,De)|0,p=p+Math.imul(ae,Qe)|0;var Yr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,g=Math.imul(re,le),s=Math.imul(re,Le),s=s+Math.imul(ge,le)|0,p=Math.imul(ge,Le),g=g+Math.imul(Z,De)|0,s=s+Math.imul(Z,Qe)|0,s=s+Math.imul(ve,De)|0,p=p+Math.imul(ve,Qe)|0;var Jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,g=Math.imul(re,De),s=Math.imul(re,Qe),s=s+Math.imul(ge,De)|0,p=Math.imul(ge,Qe);var Wr=(_+g|0)+((s&8191)<<13)|0;return _=(p+(s>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,w[0]=Ye,w[1]=Je,w[2]=Ut,w[3]=Lt,w[4]=qt,w[5]=zt,w[6]=kt,w[7]=qr,w[8]=zr,w[9]=kr,w[10]=Hr,w[11]=Kr,w[12]=jr,w[13]=$r,w[14]=Vr,w[15]=Gr,w[16]=Yr,w[17]=Jr,w[18]=Wr,_!==0&&(w[19]=_,a.length++),a};Math.imul||(q=I);function H(C,h,u){u.negative=h.negative^C.negative,u.length=C.length+h.length;for(var a=0,o=0,l=0;l>>26)|0,o+=w>>>26,w&=67108863}u.words[l]=_,a=w,w=o}return a!==0?u.words[l]=a:u.length--,u.strip()}function V(C,h,u){var a=new z;return a.mulp(C,h,u)}n.prototype.mulTo=function(h,u){var a,o=this.length+h.length;return this.length===10&&h.length===10?a=q(this,h,u):o<63?a=I(this,h,u):o<1024?a=H(this,h,u):a=V(this,h,u),a};function z(C,h){this.x=C,this.y=h}z.prototype.makeRBT=function(h){for(var u=new Array(h),a=n.prototype._countBits(h)-1,o=0;o>=1;return o},z.prototype.permute=function(h,u,a,o,l,w){for(var _=0;_>>1)l++;return 1<>>13,a[2*w+1]=l&8191,l=l>>>13;for(w=2*u;w>=26,u+=o/67108864|0,u+=l>>>26,this.words[a]=l&67108863}return u!==0&&(this.words[a]=u,this.length++),this},n.prototype.muln=function(h){return this.clone().imuln(h)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(h){var u=D(h);if(u.length===0)return new n(1);for(var a=this,o=0;o=0);var u=h%26,a=(h-u)/26,o=67108863>>>26-u<<26-u,l;if(u!==0){var w=0;for(l=0;l>>26-u}w&&(this.words[l]=w,this.length++)}if(a!==0){for(l=this.length-1;l>=0;l--)this.words[l+a]=this.words[l];for(l=0;l=0);var o;u?o=(u-u%26)/26:o=0;var l=h%26,w=Math.min((h-l)/26,this.length),_=67108863^67108863>>>l<w)for(this.length-=w,s=0;s=0&&(p!==0||s>=o);s--){var b=this.words[s]|0;this.words[s]=p<<26-l|b>>>l,p=b&_}return g&&p!==0&&(g.words[g.length++]=p),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(h,u,a){return i(this.negative===0),this.iushrn(h,u,a)},n.prototype.shln=function(h){return this.clone().ishln(h)},n.prototype.ushln=function(h){return this.clone().iushln(h)},n.prototype.shrn=function(h){return this.clone().ishrn(h)},n.prototype.ushrn=function(h){return this.clone().iushrn(h)},n.prototype.testn=function(h){i(typeof h=="number"&&h>=0);var u=h%26,a=(h-u)/26,o=1<=0);var u=h%26,a=(h-u)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=a)return this;if(u!==0&&a++,this.length=Math.min(a,this.length),u!==0){var o=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},n.prototype.isubn=function(h){if(i(typeof h=="number"),i(h<67108864),h<0)return this.iaddn(-h);if(this.negative!==0)return this.negative=0,this.iaddn(h),this.negative=1,this;if(this.words[0]-=h,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(g/67108864|0),this.words[l+a]=w&67108863}for(;l>26,this.words[l+a]=w&67108863;if(_===0)return this.strip();for(i(_===-1),_=0,l=0;l>26,this.words[l]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(h,u){var a=this.length-h.length,o=this.clone(),l=h,w=l.words[l.length-1]|0,_=this._countBits(w);a=26-_,a!==0&&(l=l.ushln(a),o.iushln(a),w=l.words[l.length-1]|0);var g=o.length-l.length,s;if(u!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var p=0;p=0;S--){var G=(o.words[l.length+S]|0)*67108864+(o.words[l.length+S-1]|0);for(G=Math.min(G/w|0,67108863),o._ishlnsubmul(l,G,S);o.negative!==0;)G--,o.negative=0,o._ishlnsubmul(l,1,S),o.isZero()||(o.negative^=1);s&&(s.words[S]=G)}return s&&s.strip(),o.strip(),u!=="div"&&a!==0&&o.iushrn(a),{div:s||null,mod:o}},n.prototype.divmod=function(h,u,a){if(i(!h.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var o,l,w;return this.negative!==0&&h.negative===0?(w=this.neg().divmod(h,u),u!=="mod"&&(o=w.div.neg()),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.iadd(h)),{div:o,mod:l}):this.negative===0&&h.negative!==0?(w=this.divmod(h.neg(),u),u!=="mod"&&(o=w.div.neg()),{div:o,mod:w.mod}):this.negative&h.negative?(w=this.neg().divmod(h.neg(),u),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.isub(h)),{div:w.div,mod:l}):h.length>this.length||this.cmp(h)<0?{div:new n(0),mod:this}:h.length===1?u==="div"?{div:this.divn(h.words[0]),mod:null}:u==="mod"?{div:null,mod:new n(this.modn(h.words[0]))}:{div:this.divn(h.words[0]),mod:new n(this.modn(h.words[0]))}:this._wordDiv(h,u)},n.prototype.div=function(h){return this.divmod(h,"div",!1).div},n.prototype.mod=function(h){return this.divmod(h,"mod",!1).mod},n.prototype.umod=function(h){return this.divmod(h,"mod",!0).mod},n.prototype.divRound=function(h){var u=this.divmod(h);if(u.mod.isZero())return u.div;var a=u.div.negative!==0?u.mod.isub(h):u.mod,o=h.ushrn(1),l=h.andln(1),w=a.cmp(o);return w<0||l===1&&w===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},n.prototype.modn=function(h){i(h<=67108863);for(var u=(1<<26)%h,a=0,o=this.length-1;o>=0;o--)a=(u*a+(this.words[o]|0))%h;return a},n.prototype.idivn=function(h){i(h<=67108863);for(var u=0,a=this.length-1;a>=0;a--){var o=(this.words[a]|0)+u*67108864;this.words[a]=o/h|0,u=o%h}return this.strip()},n.prototype.divn=function(h){return this.clone().idivn(h)},n.prototype.egcd=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=new n(0),_=new n(1),g=0;u.isEven()&&a.isEven();)u.iushrn(1),a.iushrn(1),++g;for(var s=a.clone(),p=u.clone();!u.isZero();){for(var b=0,S=1;!(u.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(u.iushrn(b);b-- >0;)(o.isOdd()||l.isOdd())&&(o.iadd(s),l.isub(p)),o.iushrn(1),l.iushrn(1);for(var G=0,M=1;!(a.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(a.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(s),_.isub(p)),w.iushrn(1),_.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(w),l.isub(_)):(a.isub(u),w.isub(o),_.isub(l))}return{a:w,b:_,gcd:a.iushln(g)}},n.prototype._invmp=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=a.clone();u.cmpn(1)>0&&a.cmpn(1)>0;){for(var _=0,g=1;!(u.words[0]&g)&&_<26;++_,g<<=1);if(_>0)for(u.iushrn(_);_-- >0;)o.isOdd()&&o.iadd(w),o.iushrn(1);for(var s=0,p=1;!(a.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(a.iushrn(s);s-- >0;)l.isOdd()&&l.iadd(w),l.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(l)):(a.isub(u),l.isub(o))}var b;return u.cmpn(1)===0?b=o:b=l,b.cmpn(0)<0&&b.iadd(h),b},n.prototype.gcd=function(h){if(this.isZero())return h.abs();if(h.isZero())return this.abs();var u=this.clone(),a=h.clone();u.negative=0,a.negative=0;for(var o=0;u.isEven()&&a.isEven();o++)u.iushrn(1),a.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;a.isEven();)a.iushrn(1);var l=u.cmp(a);if(l<0){var w=u;u=a,a=w}else if(l===0||a.cmpn(1)===0)break;u.isub(a)}while(!0);return a.iushln(o)},n.prototype.invm=function(h){return this.egcd(h).a.umod(h)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(h){return this.words[0]&h},n.prototype.bincn=function(h){i(typeof h=="number");var u=h%26,a=(h-u)/26,o=1<>>26,_&=67108863,this.words[w]=_}return l!==0&&(this.words[w]=l,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(h){var u=h<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this.strip();var a;if(this.length>1)a=1;else{u&&(h=-h),i(h<=67108863,"Number is too big");var o=this.words[0]|0;a=o===h?0:oh.length)return 1;if(this.length=0;a--){var o=this.words[a]|0,l=h.words[a]|0;if(o!==l){ol&&(u=1);break}}return u},n.prototype.gtn=function(h){return this.cmpn(h)===1},n.prototype.gt=function(h){return this.cmp(h)===1},n.prototype.gten=function(h){return this.cmpn(h)>=0},n.prototype.gte=function(h){return this.cmp(h)>=0},n.prototype.ltn=function(h){return this.cmpn(h)===-1},n.prototype.lt=function(h){return this.cmp(h)===-1},n.prototype.lten=function(h){return this.cmpn(h)<=0},n.prototype.lte=function(h){return this.cmp(h)<=0},n.prototype.eqn=function(h){return this.cmpn(h)===0},n.prototype.eq=function(h){return this.cmp(h)===0},n.red=function(h){return new Y(h)},n.prototype.toRed=function(h){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),h.convertTo(this)._forceRed(h)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(h){return this.red=h,this},n.prototype.forceRed=function(h){return i(!this.red,"Already a number in reduction context"),this._forceRed(h)},n.prototype.redAdd=function(h){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,h)},n.prototype.redIAdd=function(h){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,h)},n.prototype.redSub=function(h){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,h)},n.prototype.redISub=function(h){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,h)},n.prototype.redShl=function(h){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,h)},n.prototype.redMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.mul(this,h)},n.prototype.redIMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.imul(this,h)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(h){return i(this.red&&!h.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,h)};var j={k256:null,p224:null,p192:null,p25519:null};function F(C,h){this.name=C,this.p=new n(h,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}F.prototype._tmp=function(){var h=new n(null);return h.words=new Array(Math.ceil(this.n/13)),h},F.prototype.ireduce=function(h){var u=h,a;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),a=u.bitLength();while(a>this.n);var o=a0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},F.prototype.split=function(h,u){h.iushrn(this.n,0,u)},F.prototype.imulK=function(h){return h.imul(this.k)};function U(){F.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(U,F),U.prototype.split=function(h,u){for(var a=4194303,o=Math.min(h.length,9),l=0;l>>22,w=_}w>>>=22,h.words[l-10]=w,w===0&&h.length>10?h.length-=10:h.length-=9},U.prototype.imulK=function(h){h.words[h.length]=0,h.words[h.length+1]=0,h.length+=2;for(var u=0,a=0;a>>=26,h.words[a]=l,u=o}return u!==0&&(h.words[h.length++]=u),h},n._prime=function(h){if(j[h])return j[h];var u;if(h==="k256")u=new U;else if(h==="p224")u=new L;else if(h==="p192")u=new m;else if(h==="p25519")u=new P;else throw new Error("Unknown prime "+h);return j[h]=u,u};function Y(C){if(typeof C=="string"){var h=n._prime(C);this.m=h.p,this.prime=h}else i(C.gtn(1),"modulus must be greater than 1"),this.m=C,this.prime=null}Y.prototype._verify1=function(h){i(h.negative===0,"red works only with positives"),i(h.red,"red works only with red numbers")},Y.prototype._verify2=function(h,u){i((h.negative|u.negative)===0,"red works only with positives"),i(h.red&&h.red===u.red,"red works only with red numbers")},Y.prototype.imod=function(h){return this.prime?this.prime.ireduce(h)._forceRed(this):h.umod(this.m)._forceRed(this)},Y.prototype.neg=function(h){return h.isZero()?h.clone():this.m.sub(h)._forceRed(this)},Y.prototype.add=function(h,u){this._verify2(h,u);var a=h.add(u);return a.cmp(this.m)>=0&&a.isub(this.m),a._forceRed(this)},Y.prototype.iadd=function(h,u){this._verify2(h,u);var a=h.iadd(u);return a.cmp(this.m)>=0&&a.isub(this.m),a},Y.prototype.sub=function(h,u){this._verify2(h,u);var a=h.sub(u);return a.cmpn(0)<0&&a.iadd(this.m),a._forceRed(this)},Y.prototype.isub=function(h,u){this._verify2(h,u);var a=h.isub(u);return a.cmpn(0)<0&&a.iadd(this.m),a},Y.prototype.shl=function(h,u){return this._verify1(h),this.imod(h.ushln(u))},Y.prototype.imul=function(h,u){return this._verify2(h,u),this.imod(h.imul(u))},Y.prototype.mul=function(h,u){return this._verify2(h,u),this.imod(h.mul(u))},Y.prototype.isqr=function(h){return this.imul(h,h.clone())},Y.prototype.sqr=function(h){return this.mul(h,h)},Y.prototype.sqrt=function(h){if(h.isZero())return h.clone();var u=this.m.andln(3);if(i(u%2===1),u===3){var a=this.m.add(new n(1)).iushrn(2);return this.pow(h,a)}for(var o=this.m.subn(1),l=0;!o.isZero()&&o.andln(1)===0;)l++,o.iushrn(1);i(!o.isZero());var w=new n(1).toRed(this),_=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(_)!==0;)s.redIAdd(_);for(var p=this.pow(s,o),b=this.pow(h,o.addn(1).iushrn(1)),S=this.pow(h,o),G=l;S.cmp(w)!==0;){for(var M=S,k=0;M.cmp(w)!==0;k++)M=M.redSqr();i(k=0;l--){for(var p=u.words[l],b=s-1;b>=0;b--){var S=p>>b&1;if(w!==o[0]&&(w=this.sqr(w)),S===0&&_===0){g=0;continue}_<<=1,_|=S,g++,!(g!==a&&(l!==0||b!==0))&&(w=this.mul(w,o[_]),g=0,_=0)}s=26}return w},Y.prototype.convertTo=function(h){var u=h.umod(this.m);return u===h?u.clone():u},Y.prototype.convertFrom=function(h){var u=h.clone();return u.red=null,u},n.mont=function(h){return new Q(h)};function Q(C){Y.call(this,C),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(Q,Y),Q.prototype.convertTo=function(h){return this.imod(h.ushln(this.shift))},Q.prototype.convertFrom=function(h){var u=this.imod(h.mul(this.rinv));return u.red=null,u},Q.prototype.imul=function(h,u){if(h.isZero()||u.isZero())return h.words[0]=0,h.length=1,h;var a=h.imul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.mul=function(h,u){if(h.isZero()||u.isZero())return new n(0)._forceRed(this);var a=h.mul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.invm=function(h){var u=this.imod(h._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(t,Rn)})(ir);var Uf={};(function(t){var e=t;function r(n,d){if(Array.isArray(n))return n.slice();if(!n)return[];var c=[];if(typeof n!="string"){for(var y=0;y>8,E=A&255;x?c.push(x,E):c.push(E)}return c}e.toArray=r;function i(n){return n.length===1?"0"+n:n}e.zero2=i;function f(n){for(var d="",c=0;c(q>>1)-1?V=(q>>1)-z:V=z,H.isubn(V)):V=0,D[I]=V,H.iushrn(1)}return D}e.getNAF=n;function d(x,E){var N=[[],[]];x=x.clone(),E=E.clone();for(var D=0,I=0,q;x.cmpn(-D)>0||E.cmpn(-I)>0;){var H=x.andln(3)+D&3,V=E.andln(3)+I&3;H===3&&(H=-1),V===3&&(V=-1);var z;H&1?(q=x.andln(7)+D&7,(q===3||q===5)&&V===2?z=-H:z=H):z=0,N[0].push(z);var j;V&1?(q=E.andln(7)+I&7,(q===3||q===5)&&H===2?j=-V:j=V):j=0,N[1].push(j),2*D===z+1&&(D=1-D),2*I===j+1&&(I=1-I),x.iushrn(1),E.iushrn(1)}return N}e.getJSF=d;function c(x,E,N){var D="_"+E;x.prototype[E]=function(){return this[D]!==void 0?this[D]:this[D]=N.call(this)}}e.cachedProperty=c;function y(x){return typeof x=="string"?e.toArray(x,"hex"):x}e.parseBytes=y;function A(x){return new r(x,"hex","le")}e.intFromLE=A}(Dt);var pn={exports:{}},Lf;pn.exports=function(e){return Lf||(Lf=new yr(null)),Lf.generate(e)};function yr(t){this.rand=t}if(pn.exports.Rand=yr,yr.prototype.generate=function(e){return this._rand(e)},yr.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var yn=wr;wr.prototype.point=function(){throw new Error("Not implemented")},wr.prototype.validate=function(){throw new Error("Not implemented")},wr.prototype._fixedNafMul=function(e,r){gn(e.precomputed);var i=e._getDoubles(),f=mn(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];gn(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},wr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=mn(i[I],d[I],this._bitLength),y[q]=mn(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=V2(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Pt.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Tt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Tt.prototype.pointFromX=function(e,r){e=new rt(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Tt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Tt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},ft.prototype.isInfinity=function(){return this.inf},ft.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},ft.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},ft.prototype.getX=function(){return this.x.fromRed()},ft.prototype.getY=function(){return this.y.fromRed()},ft.prototype.mul=function(e){return e=new rt(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},ft.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},ft.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},ft.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},ft.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ct(t,e,r,i){di.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new rt(0)):(this.x=new rt(e,16),this.y=new rt(r,16),this.z=new rt(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}zf(ct,di.BasePoint),Tt.prototype.jpoint=function(e,r,i){return new ct(this,e,r,i)},ct.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ct.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ct.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ct.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ct.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ct.prototype.inspect=function(){return this.isInfinity()?"":""},ct.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var li=ir.exports,Go=ni.exports,wn=yn,W2=Dt;function bi(t){wn.call(this,"mont",t),this.a=new li(t.a,16).toRed(this.red),this.b=new li(t.b,16).toRed(this.red),this.i4=new li(4).toRed(this.red).redInvm(),this.two=new li(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Go(bi,wn);var Q2=bi;bi.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),f=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),n=f.redSqrt();return n.redSqr().cmp(f)===0};function at(t,e,r){wn.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new li(e,16),this.z=new li(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Go(at,wn.BasePoint),bi.prototype.decodePoint=function(e,r){return this.point(W2.toArray(e,r),1)},bi.prototype.point=function(e,r){return new at(this,e,r)},bi.prototype.pointFromJSON=function(e){return at.fromJSON(this,e)},at.prototype.precompute=function(){},at.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},at.fromJSON=function(e,r){return new at(e,r[0],r[1]||e.one)},at.prototype.inspect=function(){return this.isInfinity()?"":""},at.prototype.isInfinity=function(){return this.z.cmpn(0)===0},at.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),f=i.redSqr(),n=r.redSub(f),d=r.redMul(f),c=n.redMul(f.redAdd(this.curve.a24.redMul(n)));return this.curve.point(d,c)},at.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),f=this.x.redSub(this.z),n=e.x.redAdd(e.z),d=e.x.redSub(e.z),c=d.redMul(i),y=n.redMul(f),A=r.z.redMul(c.redAdd(y).redSqr()),x=r.x.redMul(c.redISub(y).redSqr());return this.curve.point(A,x)},at.prototype.mul=function(e){for(var r=e.clone(),i=this,f=this.curve.point(null,null),n=this,d=[];r.cmpn(0)!==0;r.iushrn(1))d.push(r.andln(1));for(var c=d.length-1;c>=0;c--)d[c]===0?(i=i.diffAdd(f,n),f=f.dbl()):(f=i.diffAdd(f,n),i=i.dbl());return f},at.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.eq=function(e){return this.getX().cmp(e.getX())===0},at.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},at.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var X2=Dt,hr=ir.exports,Yo=ni.exports,An=yn,Z2=X2.assert;function nr(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,An.call(this,"edwards",t),this.a=new hr(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new hr(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new hr(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),Z2(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Yo(nr,An);var e3=nr;nr.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},nr.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},nr.prototype.jpoint=function(e,r,i,f){return this.point(e,r,i,f)},nr.prototype.pointFromX=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=this.c2.redSub(this.a.redMul(i)),n=this.one.redSub(this.c2.redMul(this.d).redMul(i)),d=f.redMul(n.redInvm()),c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");var y=c.fromRed().isOdd();return(r&&!y||!r&&y)&&(c=c.redNeg()),this.point(e,c)},nr.prototype.pointFromY=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=i.redSub(this.c2),n=i.redMul(this.d).redMul(this.c2).redSub(this.a),d=f.redMul(n.redInvm());if(d.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)},nr.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),f=r.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return f.cmp(n)===0};function et(t,e,r,i,f){An.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new hr(e,16),this.y=new hr(r,16),this.z=i?new hr(i,16):this.curve.one,this.t=f&&new hr(f,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Yo(et,An.BasePoint),nr.prototype.pointFromJSON=function(e){return et.fromJSON(this,e)},nr.prototype.point=function(e,r,i,f){return new et(this,e,r,i,f)},et.fromJSON=function(e,r){return new et(e,r[0],r[1],r[2])},et.prototype.inspect=function(){return this.isInfinity()?"":""},et.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},et.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var f=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),d=f.redAdd(r),c=d.redSub(i),y=f.redSub(r),A=n.redMul(c),x=d.redMul(y),E=n.redMul(y),N=c.redMul(d);return this.curve.point(A,x,N,E)},et.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),f,n,d,c,y,A;if(this.curve.twisted){c=this.curve._mulA(r);var x=c.redAdd(i);this.zOne?(f=e.redSub(r).redSub(i).redMul(x.redSub(this.curve.two)),n=x.redMul(c.redSub(i)),d=x.redSqr().redSub(x).redSub(x)):(y=this.z.redSqr(),A=x.redSub(y).redISub(y),f=e.redSub(r).redISub(i).redMul(A),n=x.redMul(c.redSub(i)),d=x.redMul(A))}else c=r.redAdd(i),y=this.curve._mulC(this.z).redSqr(),A=c.redSub(y).redSub(y),f=this.curve._mulC(e.redISub(c)).redMul(A),n=this.curve._mulC(c).redMul(r.redISub(i)),d=c.redMul(A);return this.curve.point(f,n,d)},et.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},et.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),f=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),d=i.redSub(r),c=n.redSub(f),y=n.redAdd(f),A=i.redAdd(r),x=d.redMul(c),E=y.redMul(A),N=d.redMul(A),D=c.redMul(y);return this.curve.point(x,E,D,N)},et.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),f=this.x.redMul(e.x),n=this.y.redMul(e.y),d=this.curve.d.redMul(f).redMul(n),c=i.redSub(d),y=i.redAdd(d),A=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(f).redISub(n),x=r.redMul(c).redMul(A),E,N;return this.curve.twisted?(E=r.redMul(y).redMul(n.redSub(this.curve._mulA(f))),N=c.redMul(y)):(E=r.redMul(y).redMul(n.redSub(f)),N=this.curve._mulC(c).redMul(y)),this.curve.point(x,E,N)},et.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},et.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},et.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)},et.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)},et.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},et.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},et.prototype.getX=function(){return this.normalize(),this.x.fromRed()},et.prototype.getY=function(){return this.normalize(),this.y.fromRed()},et.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0},et.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),f=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(f),this.x.cmp(r)===0)return!0}},et.prototype.toP=et.prototype.normalize,et.prototype.mixedAdd=et.prototype.add,function(t){var e=t;e.base=yn,e.short=J2,e.mont=Q2,e.edwards=e3}(qf);var xn={},kf,Jo;function t3(){return Jo||(Jo=1,kf={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}),kf}(function(t){var e=t,r=_t,i=qf,f=Dt,n=f.assert;function d(A){A.type==="short"?this.curve=new i.short(A):A.type==="edwards"?this.curve=new i.edwards(A):this.curve=new i.mont(A),this.g=this.curve.g,this.n=this.curve.n,this.hash=A.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}e.PresetCurve=d;function c(A,x){Object.defineProperty(e,A,{configurable:!0,enumerable:!0,get:function(){var E=new d(x);return Object.defineProperty(e,A,{configurable:!0,enumerable:!0,value:E}),E}})}c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:r.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:r.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:r.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:r.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:r.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var y;try{y=t3()}catch{y=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:r.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",y]})})(xn);var r3=_t,Rr=Uf,Wo=Ir;function Ar(t){if(!(this instanceof Ar))return new Ar(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Rr.toArray(t.entropy,t.entropyEnc||"hex"),r=Rr.toArray(t.nonce,t.nonceEnc||"hex"),i=Rr.toArray(t.pers,t.persEnc||"hex");Wo(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i3=Ar;Ar.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},Ar.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=Rr.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var _n=ir.exports,Kf=Dt,o3=Kf.assert;function Mn(t,e){if(t instanceof Mn)return t;this._importDER(t,e)||(o3(t.r&&t.s,"Signature without r or s"),this.r=new _n(t.r,16),this.s=new _n(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var s3=Mn;function u3(){this.place=0}function jf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4||t[e.place]===0)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function Qo(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}Mn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Qo(r),i=Qo(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];$f(f,r.length),f=f.concat(r),f.push(2),$f(f,i.length);var n=f.concat(i),d=[48];return $f(d,n.length),d=d.concat(n),Kf.encode(d,e)};var Pr=ir.exports,Xo=i3,h3=Dt,Vf=xn,c3=pn.exports,Zo=h3.assert,Gf=a3,En=s3;function Ft(t){if(!(this instanceof Ft))return new Ft(t);typeof t=="string"&&(Zo(Object.prototype.hasOwnProperty.call(Vf,t),"Unknown curve "+t),t=Vf[t]),t instanceof Vf.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var d3=Ft;Ft.prototype.keyPair=function(e){return new Gf(this,e)},Ft.prototype.keyFromPrivate=function(e,r){return Gf.fromPrivate(this,e,r)},Ft.prototype.keyFromPublic=function(e,r){return Gf.fromPublic(this,e,r)},Ft.prototype.genKeyPair=function(e){e||(e={});for(var r=new Xo({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||c3(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new Pr(2));;){var n=new Pr(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ft.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ft.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new Pr(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new Xo({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new Pr(1)),x=0;;x++){var E=f.k?f.k(x):new Pr(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new En({r:I,s:q,recoveryParam:H})}}}}}},Ft.prototype.verify=function(e,r,i,f){e=this._truncateToN(new Pr(e,16)),i=this.keyFromPublic(i,f),r=new En(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ft.prototype.recoverPubKey=function(t,e,r,i){Zo((3&r)===r,"The recovery param is more than two bits"),e=new En(e,i);var f=this.n,n=new Pr(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ft.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new En(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Ti=Dt,es=Ti.assert,ts=Ti.parseBytes,vi=Ti.cachedProperty;function ot(t,e){this.eddsa=t,this._secret=ts(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=ts(e.pub)}ot.fromPublic=function(e,r){return r instanceof ot?r:new ot(e,{pub:r})},ot.fromSecret=function(e,r){return r instanceof ot?r:new ot(e,{secret:r})},ot.prototype.secret=function(){return this._secret},vi(ot,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())}),vi(ot,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())}),vi(ot,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,f=r.slice(0,e.encodingLength);return f[0]&=248,f[i]&=127,f[i]|=64,f}),vi(ot,"priv",function(){return this.eddsa.decodeInt(this.privBytes())}),vi(ot,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()}),vi(ot,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)}),ot.prototype.sign=function(e){return es(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},ot.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)},ot.prototype.getSecret=function(e){return es(this._secret,"KeyPair is public only"),Ti.encode(this.secret(),e)},ot.prototype.getPublic=function(e){return Ti.encode(this.pubBytes(),e)};var l3=ot,b3=ir.exports,Sn=Dt,rs=Sn.assert,Dn=Sn.cachedProperty,v3=Sn.parseBytes;function Tr(t,e){this.eddsa=t,typeof e!="object"&&(e=v3(e)),Array.isArray(e)&&(rs(e.length===t.encodingLength*2,"Signature has invalid size"),e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),rs(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof b3&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}Dn(Tr,"S",function(){return this.eddsa.decodeInt(this.Sencoded())}),Dn(Tr,"R",function(){return this.eddsa.decodePoint(this.Rencoded())}),Dn(Tr,"Rencoded",function(){return this.eddsa.encodePoint(this.R())}),Dn(Tr,"Sencoded",function(){return this.eddsa.encodeInt(this.S())}),Tr.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},Tr.prototype.toHex=function(){return Sn.encode(this.toBytes(),"hex").toUpperCase()};var p3=Tr,m3=_t,g3=xn,pi=Dt,y3=pi.assert,is=pi.parseBytes,ns=l3,fs=p3;function At(t){if(y3(t==="ed25519","only tested with ed25519 so far"),!(this instanceof At))return new At(t);t=g3[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=m3.sha512}var w3=At;At.prototype.sign=function(e,r){e=is(e);var i=this.keyFromSecret(r),f=this.hashInt(i.messagePrefix(),e),n=this.g.mul(f),d=this.encodePoint(n),c=this.hashInt(d,i.pubBytes(),e).mul(i.priv()),y=f.add(c).umod(this.curve.n);return this.makeSignature({R:n,S:y,Rencoded:d})},At.prototype.verify=function(e,r,i){if(e=is(e),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var f=this.keyFromPublic(i),n=this.hashInt(r.Rencoded(),f.pubBytes(),e),d=this.g.mul(r.S()),c=r.R().add(f.pub().mul(n));return c.eq(d)},At.prototype.hashInt=function(){for(var e=this.hash(),r=0;r0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%128<112?128:256;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._stateHi.set(y.stateHi),this._stateLo.set(y.stateLo),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.stateHi),r.wipe(y.stateLo),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA512=i;var f=new Int32Array([1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591]);function n(c,y,A,x,E,N,D){for(var I=A[0],q=A[1],H=A[2],V=A[3],z=A[4],j=A[5],F=A[6],U=A[7],L=x[0],m=x[1],P=x[2],Y=x[3],Q=x[4],C=x[5],h=x[6],u=x[7],a,o,l,w,_,g,s,p;D>=128;){for(var b=0;b<16;b++){var S=8*b+N;c[b]=e.readUint32BE(E,S),y[b]=e.readUint32BE(E,S+4)}for(var b=0;b<80;b++){var G=I,M=q,k=H,B=V,T=z,O=j,v=F,R=U,$=L,J=m,W=P,X=Y,be=Q,ye=C,fe=h,Ee=u;if(a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(z>>>14|Q<<32-14)^(z>>>18|Q<<32-18)^(Q>>>41-32|z<<32-(41-32)),o=(Q>>>14|z<<32-14)^(Q>>>18|z<<32-18)^(z>>>41-32|Q<<32-(41-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=z&j^~z&F,o=Q&C^~Q&h,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=f[b*2],o=f[b*2+1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=c[b%16],o=y[b%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,l=s&65535|p<<16,w=_&65535|g<<16,a=l,o=w,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(I>>>28|L<<32-28)^(L>>>34-32|I<<32-(34-32))^(L>>>39-32|I<<32-(39-32)),o=(L>>>28|I<<32-28)^(I>>>34-32|L<<32-(34-32))^(I>>>39-32|L<<32-(39-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=I&q^I&H^q&H,o=L&m^L&P^m&P,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,R=s&65535|p<<16,Ee=_&65535|g<<16,a=B,o=X,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=l,o=w,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,B=s&65535|p<<16,X=_&65535|g<<16,q=G,H=M,V=k,z=B,j=T,F=O,U=v,I=R,m=$,P=J,Y=W,Q=X,C=be,h=ye,u=fe,L=Ee,b%16===15)for(var S=0;S<16;S++)a=c[S],o=y[S],_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=c[(S+9)%16],o=y[(S+9)%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+1)%16],w=y[(S+1)%16],a=(l>>>1|w<<32-1)^(l>>>8|w<<32-8)^l>>>7,o=(w>>>1|l<<32-1)^(w>>>8|l<<32-8)^(w>>>7|l<<32-7),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+14)%16],w=y[(S+14)%16],a=(l>>>19|w<<32-19)^(w>>>61-32|l<<32-(61-32))^l>>>6,o=(w>>>19|l<<32-19)^(l>>>61-32|w<<32-(61-32))^(w>>>6|l<<32-6),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,c[S]=s&65535|p<<16,y[S]=_&65535|g<<16}a=I,o=L,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[0],o=x[0],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[0]=I=s&65535|p<<16,x[0]=L=_&65535|g<<16,a=q,o=m,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[1],o=x[1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[1]=q=s&65535|p<<16,x[1]=m=_&65535|g<<16,a=H,o=P,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[2],o=x[2],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[2]=H=s&65535|p<<16,x[2]=P=_&65535|g<<16,a=V,o=Y,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[3],o=x[3],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[3]=V=s&65535|p<<16,x[3]=Y=_&65535|g<<16,a=z,o=Q,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[4],o=x[4],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[4]=z=s&65535|p<<16,x[4]=Q=_&65535|g<<16,a=j,o=C,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[5],o=x[5],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[5]=j=s&65535|p<<16,x[5]=C=_&65535|g<<16,a=F,o=h,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[6],o=x[6],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[6]=F=s&65535|p<<16,x[6]=h=_&65535|g<<16,a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[7],o=x[7],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[7]=U=s&65535|p<<16,x[7]=u=_&65535|g<<16,N+=128,D-=128}return N}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(as),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertSecretKeyToX25519=t.convertPublicKeyToX25519=t.verify=t.sign=t.extractPublicKeyFromSecretKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.SEED_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=t.SIGNATURE_LENGTH=void 0;const e=Br,r=as,i=Et;t.SIGNATURE_LENGTH=64,t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=64,t.SEED_LENGTH=32;function f(B){const T=new Float64Array(16);if(B)for(let O=0;O>16&1),O[J-1]&=65535;O[15]=v[15]-32767-(O[14]>>16&1);const $=O[15]>>16&1;O[14]&=65535,q(v,O,1-$)}for(let R=0;R<16;R++)B[2*R]=v[R]&255,B[2*R+1]=v[R]>>8}function V(B,T){let O=0;for(let v=0;v<32;v++)O|=B[v]^T[v];return(1&O-1>>>8)-1}function z(B,T){const O=new Uint8Array(32),v=new Uint8Array(32);return H(O,B),H(v,T),V(O,v)}function j(B){const T=new Uint8Array(32);return H(T,B),T[0]&1}function F(B,T){for(let O=0;O<16;O++)B[O]=T[2*O]+(T[2*O+1]<<8);B[15]&=32767}function U(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]+O[v]}function L(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]-O[v]}function m(B,T,O){let v,R,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=0,te=0,se=0,oe=0,ee=0,ae=0,ne=0,Z=0,ve=0,me=0,re=0,ge=0,we=0,ie=0,Ae=0,xe=0,_e=0,je=0,$e=0,Me=0,Ve=0,Ge=0,Se=0,Ie=O[0],Ne=O[1],ue=O[2],Ce=O[3],Be=O[4],he=O[5],Oe=O[6],Re=O[7],ce=O[8],Pe=O[9],Te=O[10],de=O[11],Fe=O[12],Ue=O[13],le=O[14],Le=O[15];v=T[0],$+=v*Ie,J+=v*Ne,W+=v*ue,X+=v*Ce,be+=v*Be,ye+=v*he,fe+=v*Oe,Ee+=v*Re,pe+=v*ce,te+=v*Pe,se+=v*Te,oe+=v*de,ee+=v*Fe,ae+=v*Ue,ne+=v*le,Z+=v*Le,v=T[1],J+=v*Ie,W+=v*Ne,X+=v*ue,be+=v*Ce,ye+=v*Be,fe+=v*he,Ee+=v*Oe,pe+=v*Re,te+=v*ce,se+=v*Pe,oe+=v*Te,ee+=v*de,ae+=v*Fe,ne+=v*Ue,Z+=v*le,ve+=v*Le,v=T[2],W+=v*Ie,X+=v*Ne,be+=v*ue,ye+=v*Ce,fe+=v*Be,Ee+=v*he,pe+=v*Oe,te+=v*Re,se+=v*ce,oe+=v*Pe,ee+=v*Te,ae+=v*de,ne+=v*Fe,Z+=v*Ue,ve+=v*le,me+=v*Le,v=T[3],X+=v*Ie,be+=v*Ne,ye+=v*ue,fe+=v*Ce,Ee+=v*Be,pe+=v*he,te+=v*Oe,se+=v*Re,oe+=v*ce,ee+=v*Pe,ae+=v*Te,ne+=v*de,Z+=v*Fe,ve+=v*Ue,me+=v*le,re+=v*Le,v=T[4],be+=v*Ie,ye+=v*Ne,fe+=v*ue,Ee+=v*Ce,pe+=v*Be,te+=v*he,se+=v*Oe,oe+=v*Re,ee+=v*ce,ae+=v*Pe,ne+=v*Te,Z+=v*de,ve+=v*Fe,me+=v*Ue,re+=v*le,ge+=v*Le,v=T[5],ye+=v*Ie,fe+=v*Ne,Ee+=v*ue,pe+=v*Ce,te+=v*Be,se+=v*he,oe+=v*Oe,ee+=v*Re,ae+=v*ce,ne+=v*Pe,Z+=v*Te,ve+=v*de,me+=v*Fe,re+=v*Ue,ge+=v*le,we+=v*Le,v=T[6],fe+=v*Ie,Ee+=v*Ne,pe+=v*ue,te+=v*Ce,se+=v*Be,oe+=v*he,ee+=v*Oe,ae+=v*Re,ne+=v*ce,Z+=v*Pe,ve+=v*Te,me+=v*de,re+=v*Fe,ge+=v*Ue,we+=v*le,ie+=v*Le,v=T[7],Ee+=v*Ie,pe+=v*Ne,te+=v*ue,se+=v*Ce,oe+=v*Be,ee+=v*he,ae+=v*Oe,ne+=v*Re,Z+=v*ce,ve+=v*Pe,me+=v*Te,re+=v*de,ge+=v*Fe,we+=v*Ue,ie+=v*le,Ae+=v*Le,v=T[8],pe+=v*Ie,te+=v*Ne,se+=v*ue,oe+=v*Ce,ee+=v*Be,ae+=v*he,ne+=v*Oe,Z+=v*Re,ve+=v*ce,me+=v*Pe,re+=v*Te,ge+=v*de,we+=v*Fe,ie+=v*Ue,Ae+=v*le,xe+=v*Le,v=T[9],te+=v*Ie,se+=v*Ne,oe+=v*ue,ee+=v*Ce,ae+=v*Be,ne+=v*he,Z+=v*Oe,ve+=v*Re,me+=v*ce,re+=v*Pe,ge+=v*Te,we+=v*de,ie+=v*Fe,Ae+=v*Ue,xe+=v*le,_e+=v*Le,v=T[10],se+=v*Ie,oe+=v*Ne,ee+=v*ue,ae+=v*Ce,ne+=v*Be,Z+=v*he,ve+=v*Oe,me+=v*Re,re+=v*ce,ge+=v*Pe,we+=v*Te,ie+=v*de,Ae+=v*Fe,xe+=v*Ue,_e+=v*le,je+=v*Le,v=T[11],oe+=v*Ie,ee+=v*Ne,ae+=v*ue,ne+=v*Ce,Z+=v*Be,ve+=v*he,me+=v*Oe,re+=v*Re,ge+=v*ce,we+=v*Pe,ie+=v*Te,Ae+=v*de,xe+=v*Fe,_e+=v*Ue,je+=v*le,$e+=v*Le,v=T[12],ee+=v*Ie,ae+=v*Ne,ne+=v*ue,Z+=v*Ce,ve+=v*Be,me+=v*he,re+=v*Oe,ge+=v*Re,we+=v*ce,ie+=v*Pe,Ae+=v*Te,xe+=v*de,_e+=v*Fe,je+=v*Ue,$e+=v*le,Me+=v*Le,v=T[13],ae+=v*Ie,ne+=v*Ne,Z+=v*ue,ve+=v*Ce,me+=v*Be,re+=v*he,ge+=v*Oe,we+=v*Re,ie+=v*ce,Ae+=v*Pe,xe+=v*Te,_e+=v*de,je+=v*Fe,$e+=v*Ue,Me+=v*le,Ve+=v*Le,v=T[14],ne+=v*Ie,Z+=v*Ne,ve+=v*ue,me+=v*Ce,re+=v*Be,ge+=v*he,we+=v*Oe,ie+=v*Re,Ae+=v*ce,xe+=v*Pe,_e+=v*Te,je+=v*de,$e+=v*Fe,Me+=v*Ue,Ve+=v*le,Ge+=v*Le,v=T[15],Z+=v*Ie,ve+=v*Ne,me+=v*ue,re+=v*Ce,ge+=v*Be,we+=v*he,ie+=v*Oe,Ae+=v*Re,xe+=v*ce,_e+=v*Pe,je+=v*Te,$e+=v*de,Me+=v*Fe,Ve+=v*Ue,Ge+=v*le,Se+=v*Le,$+=38*ve,J+=38*me,W+=38*re,X+=38*ge,be+=38*we,ye+=38*ie,fe+=38*Ae,Ee+=38*xe,pe+=38*_e,te+=38*je,se+=38*$e,oe+=38*Me,ee+=38*Ve,ae+=38*Ge,ne+=38*Se,R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),B[0]=$,B[1]=J,B[2]=W,B[3]=X,B[4]=be,B[5]=ye,B[6]=fe,B[7]=Ee,B[8]=pe,B[9]=te,B[10]=se,B[11]=oe,B[12]=ee,B[13]=ae,B[14]=ne,B[15]=Z}function P(B,T){m(B,T,T)}function Y(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=253;v>=0;v--)P(O,O),v!==2&&v!==4&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function Q(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=250;v>=0;v--)P(O,O),v!==1&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function C(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f(),be=f(),ye=f();L(O,B[1],B[0]),L(ye,T[1],T[0]),m(O,O,ye),U(v,B[0],B[1]),U(ye,T[0],T[1]),m(v,v,ye),m(R,B[3],T[3]),m(R,R,A),m($,B[2],T[2]),U($,$,$),L(J,v,O),L(W,$,R),U(X,$,R),U(be,v,O),m(B[0],J,W),m(B[1],be,X),m(B[2],X,W),m(B[3],J,be)}function h(B,T,O){for(let v=0;v<4;v++)q(B[v],T[v],O)}function u(B,T){const O=f(),v=f(),R=f();Y(R,T[2]),m(O,T[0],R),m(v,T[1],R),H(B,v),B[31]^=j(O)<<7}function a(B,T,O){D(B[0],d),D(B[1],c),D(B[2],c),D(B[3],d);for(let v=255;v>=0;--v){const R=O[v/8|0]>>(v&7)&1;h(B,T,R),C(T,B),C(B,B),h(B,T,R)}}function o(B,T){const O=[f(),f(),f(),f()];D(O[0],x),D(O[1],E),D(O[2],c),m(O[3],x,E),a(B,O,T)}function l(B){if(B.length!==t.SEED_LENGTH)throw new Error(`ed25519: seed must be ${t.SEED_LENGTH} bytes`);const T=(0,r.hash)(B);T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(32),v=[f(),f(),f(),f()];o(v,T),u(O,v);const R=new Uint8Array(64);return R.set(B),R.set(O,32),{publicKey:O,secretKey:R}}t.generateKeyPairFromSeed=l;function w(B){const T=(0,e.randomBytes)(32,B),O=l(T);return(0,i.wipe)(T),O}t.generateKeyPair=w;function _(B){if(B.length!==t.SECRET_KEY_LENGTH)throw new Error(`ed25519: secret key must be ${t.SECRET_KEY_LENGTH} bytes`);return new Uint8Array(B.subarray(32))}t.extractPublicKeyFromSecretKey=_;const g=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function s(B,T){let O,v,R,$;for(v=63;v>=32;--v){for(O=0,R=v-32,$=v-12;R<$;++R)T[R]+=O-16*T[v]*g[R-(v-32)],O=Math.floor((T[R]+128)/256),T[R]-=O*256;T[R]+=O,T[v]=0}for(O=0,R=0;R<32;R++)T[R]+=O-(T[31]>>4)*g[R],O=T[R]>>8,T[R]&=255;for(R=0;R<32;R++)T[R]-=O*g[R];for(v=0;v<32;v++)T[v+1]+=T[v]>>8,B[v]=T[v]&255}function p(B){const T=new Float64Array(64);for(let O=0;O<64;O++)T[O]=B[O];for(let O=0;O<64;O++)B[O]=0;s(B,T)}function b(B,T){const O=new Float64Array(64),v=[f(),f(),f(),f()],R=(0,r.hash)(B.subarray(0,32));R[0]&=248,R[31]&=127,R[31]|=64;const $=new Uint8Array(64);$.set(R.subarray(32),32);const J=new r.SHA512;J.update($.subarray(32)),J.update(T);const W=J.digest();J.clean(),p(W),o(v,W),u($,v),J.reset(),J.update($.subarray(0,32)),J.update(B.subarray(32)),J.update(T);const X=J.digest();p(X);for(let be=0;be<32;be++)O[be]=W[be];for(let be=0;be<32;be++)for(let ye=0;ye<32;ye++)O[be+ye]+=X[be]*R[ye];return s($.subarray(32),O),$}t.sign=b;function S(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f();return D(B[2],c),F(B[1],T),P(R,B[1]),m($,R,y),L(R,R,B[2]),U($,B[2],$),P(J,$),P(W,J),m(X,W,J),m(O,X,R),m(O,O,$),Q(O,O),m(O,O,R),m(O,O,$),m(O,O,$),m(B[0],O,$),P(v,B[0]),m(v,v,$),z(v,R)&&m(B[0],B[0],N),P(v,B[0]),m(v,v,$),z(v,R)?-1:(j(B[0])===T[31]>>7&&L(B[0],d,B[0]),m(B[3],B[0],B[1]),0)}function G(B,T,O){const v=new Uint8Array(32),R=[f(),f(),f(),f()],$=[f(),f(),f(),f()];if(O.length!==t.SIGNATURE_LENGTH)throw new Error(`ed25519: signature must be ${t.SIGNATURE_LENGTH} bytes`);if(S($,B))return!1;const J=new r.SHA512;J.update(O.subarray(0,32)),J.update(B),J.update(T);const W=J.digest();return p(W),a(R,$,W),o($,O.subarray(32)),C(R,$),u(v,R),!V(O,v)}t.verify=G;function M(B){let T=[f(),f(),f(),f()];if(S(T,B))throw new Error("Ed25519: invalid public key");let O=f(),v=f(),R=T[1];U(O,c,R),L(v,c,R),Y(v,v),m(O,O,v);let $=new Uint8Array(32);return H($,O),$}t.convertPublicKeyToX25519=M;function k(B){const T=(0,r.hash)(B.subarray(0,32));T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(T.subarray(0,32));return(0,i.wipe)(T),O}t.convertSecretKeyToX25519=k}(A3);const os=".",ss="base64url",x3="utf8",_3="utf8";function us(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function M3(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?us(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function hs(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const cs=hs("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Yf=hs("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=M3(t.length);for(let r=0;r{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,r=t.replace(e,'$1"$2n"$3');return JSON.parse(r,(i,f)=>typeof f=="string"&&f.match(/^\d+n$/)?BigInt(f.substring(0,f.length-1)):f)};function D3(t){if(typeof t!="string")throw new Error(`Cannot safe json parse value of type ${typeof t}`);try{return S3(t)}catch{return t}}function ls(t){return D3(E3(Jf(t,ss),x3))}function I3(t){return Jf(t,ss)}function N3(t){const e=t.split(os),r=ls(e[0]),i=ls(e[1]),f=I3(e[2]),n=Jf(e.slice(0,2).join(os),_3);return{header:r,payload:i,signature:f,data:n}}const Wf="base10",gt="base16",Qf="base64pad",C3="base64url",mi="utf8",Xf=0,gi=1,Fi=2,B3=0,bs=1,Ui=12,Zf=32;function O3(){const t=Of.generateKeyPair();return{privateKey:St(t.secretKey,gt),publicKey:St(t.publicKey,gt)}}function R3(){const t=Br.randomBytes(Zf);return St(t,gt)}function P3(t,e){const r=Of.sharedKey(Rt(t,gt),Rt(e,gt),!0),i=new n1(Oi.SHA256,r).expand(Zf);return St(i,gt)}function T3(t){const e=Oi.hash(Rt(t,gt));return St(e,gt)}function F3(t){const e=Oi.hash(Rt(t,mi));return St(e,gt)}function ea(t){return Rt(`${t}`,Wf)}function Fr(t){return Number(St(t,Wf))}function U3(t){const e=ea(typeof t.type<"u"?t.type:Xf);if(Fr(e)===gi&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof t.senderPublicKey<"u"?Rt(t.senderPublicKey,gt):void 0,i=typeof t.iv<"u"?Rt(t.iv,gt):Br.randomBytes(Ui),f=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)).seal(i,Rt(t.message,mi));return ta({type:e,sealed:f,iv:i,senderPublicKey:r,encoding:t.encoding})}function L3(t,e){const r=ea(Fi),i=Br.randomBytes(Ui),f=Rt(t,mi);return ta({type:r,sealed:f,iv:i,encoding:e})}function q3(t){const e=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)),{sealed:r,iv:i}=In({encoded:t.encoded,encoding:t?.encoding}),f=e.open(i,r);if(f===null)throw new Error("Failed to decrypt");return St(f,mi)}function z3(t,e){const{sealed:r}=In({encoded:t,encoding:e});return St(r,mi)}function ta(t){const{encoding:e=Qf}=t;if(Fr(t.type)===Fi)return St(Rf([t.type,t.sealed]),e);if(Fr(t.type)===gi){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return St(Rf([t.type,t.senderPublicKey,t.iv,t.sealed]),e)}return St(Rf([t.type,t.iv,t.sealed]),e)}function In(t){const{encoded:e,encoding:r=Qf}=t,i=Rt(e,r),f=i.slice(B3,bs),n=bs;if(Fr(f)===gi){const A=n+Zf,x=A+Ui,E=i.slice(n,A),N=i.slice(A,x),D=i.slice(x);return{type:f,sealed:D,iv:N,senderPublicKey:E}}if(Fr(f)===Fi){const A=i.slice(n),x=Br.randomBytes(Ui);return{type:f,sealed:A,iv:x}}const d=n+Ui,c=i.slice(n,d),y=i.slice(d);return{type:f,sealed:y,iv:c}}function k3(t,e){const r=In({encoded:t,encoding:e?.encoding});return vs({type:Fr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?St(r.senderPublicKey,gt):void 0,receiverPublicKey:e?.receiverPublicKey})}function vs(t){const e=t?.type||Xf;if(e===gi){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function H3(t){return t.type===gi&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function K3(t){return t.type===Fi}function ps(t){return new $o.ec("p256").keyFromPublic({x:Buffer.from(t.x,"base64").toString("hex"),y:Buffer.from(t.y,"base64").toString("hex")},"hex")}function j3(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");const r=e.length%4;return r>0&&(e+="=".repeat(4-r)),e}function $3(t){return Buffer.from(j3(t),"base64")}function V3(t,e){const[r,i,f]=t.split("."),n=$3(f);if(n.length!==64)throw new Error("Invalid signature length");const d=n.slice(0,32).toString("hex"),c=n.slice(32,64).toString("hex"),y=`${r}.${i}`,A=new Oi.SHA256().update(Buffer.from(y)).digest(),x=ps(e),E=Buffer.from(A).toString("hex");if(!x.verify(E,{r:d,s:c}))throw new Error("Invalid signature");return N3(t).payload}const G3={waku:{publish:"waku_publish",batchPublish:"waku_batchPublish",subscribe:"waku_subscribe",batchSubscribe:"waku_batchSubscribe",subscription:"waku_subscription",unsubscribe:"waku_unsubscribe",batchUnsubscribe:"waku_batchUnsubscribe",batchFetchMessages:"waku_batchFetchMessages"},irn:{publish:"irn_publish",batchPublish:"irn_batchPublish",subscribe:"irn_subscribe",batchSubscribe:"irn_batchSubscribe",subscription:"irn_subscription",unsubscribe:"irn_unsubscribe",batchUnsubscribe:"irn_batchUnsubscribe",batchFetchMessages:"irn_batchFetchMessages"},iridium:{publish:"iridium_publish",batchPublish:"iridium_batchPublish",subscribe:"iridium_subscribe",batchSubscribe:"iridium_batchSubscribe",subscription:"iridium_subscription",unsubscribe:"iridium_unsubscribe",batchUnsubscribe:"iridium_batchUnsubscribe",batchFetchMessages:"iridium_batchFetchMessages"}},ms="irn";function Y3(t){return t?.relay||{protocol:ms}}function J3(t){const e=G3[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}var W3=Object.defineProperty,Q3=Object.defineProperties,X3=Object.getOwnPropertyDescriptors,gs=Object.getOwnPropertySymbols,Z3=Object.prototype.hasOwnProperty,eb=Object.prototype.propertyIsEnumerable,ys=(t,e,r)=>e in t?W3(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ws=(t,e)=>{for(var r in e||(e={}))Z3.call(e,r)&&ys(t,r,e[r]);if(gs)for(var r of gs(e))eb.call(e,r)&&ys(t,r,e[r]);return t},tb=(t,e)=>Q3(t,X3(e));function As(t,e="-"){const r={},i="relay"+e;return Object.keys(t).forEach(f=>{if(f.startsWith(i)){const n=f.replace(i,""),d=t[f];r[n]=d}}),r}function rb(t){t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),r=t.indexOf("?")!==-1?t.indexOf("?"):void 0,i=t.substring(0,e),f=t.substring(e+1,r).split("@"),n=typeof r<"u"?t.substring(r):"",d=xi.parse(n),c=typeof d.methods=="string"?d.methods.split(","):void 0;return{protocol:i,topic:xs(f[0]),version:parseInt(f[1],10),symKey:d.symKey,relay:As(d),methods:c,expiryTimestamp:d.expiryTimestamp?parseInt(d.expiryTimestamp,10):void 0}}function xs(t){return t.startsWith("//")?t.substring(2):t}function _s(t,e="-"){const r="relay",i={};return Object.keys(t).forEach(f=>{const n=r+e+f;t[f]&&(i[n]=t[f])}),i}function ib(t){return`${t.protocol}:${t.topic}@${t.version}?`+xi.stringify(ws(tb(ws({symKey:t.symKey},_s(t.relay)),{expiryTimestamp:t.expiryTimestamp}),t.methods?{methods:t.methods.join(",")}:{}))}function nb(t,e,r){return`${t}?wc_ev=${r}&topic=${e}`}var fb=Object.defineProperty,ab=Object.defineProperties,ob=Object.getOwnPropertyDescriptors,Ms=Object.getOwnPropertySymbols,sb=Object.prototype.hasOwnProperty,ub=Object.prototype.propertyIsEnumerable,Es=(t,e,r)=>e in t?fb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,hb=(t,e)=>{for(var r in e||(e={}))sb.call(e,r)&&Es(t,r,e[r]);if(Ms)for(var r of Ms(e))ub.call(e,r)&&Es(t,r,e[r]);return t},cb=(t,e)=>ab(t,ob(e));function Ur(t){const e=[];return t.forEach(r=>{const[i,f]=r.split(":");e.push(`${i}:${f}`)}),e}function Ss(t){const e=[];return Object.values(t).forEach(r=>{e.push(...Ur(r.accounts))}),e}function Ds(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.methods)}),r}function Is(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.events)}),r}function db(t,e){const r=qs(t,e);if(r)throw new Error(r.message);const i={};for(const[f,n]of Object.entries(t))i[f]={methods:n.methods,events:n.events,chains:n.accounts.map(d=>`${d.split(":")[0]}:${d.split(":")[1]}`)};return i}function lb(t){const{proposal:{requiredNamespaces:e,optionalNamespaces:r={}},supportedNamespaces:i}=t,f=ia(e),n=ia(r),d={};Object.keys(i).forEach(A=>{const x=i[A].chains,E=i[A].methods,N=i[A].events,D=i[A].accounts;x.forEach(I=>{if(!D.some(q=>q.includes(I)))throw new Error(`No accounts provided for chain ${I} in namespace ${A}`)}),d[A]={chains:x,methods:E,events:N,accounts:D}});const c=ks(e,d,"approve()");if(c)throw new Error(c.message);const y={};return!Object.keys(e).length&&!Object.keys(r).length?d:(Object.keys(f).forEach(A=>{const x=i[A].chains.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.chains)==null?void 0:H.includes(I)}),E=i[A].methods.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.methods)==null?void 0:H.includes(I)}),N=i[A].events.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.events)==null?void 0:H.includes(I)}),D=x.map(I=>i[A].accounts.filter(q=>q.includes(`${I}:`))).flat();y[A]={chains:x,methods:E,events:N,accounts:D}}),Object.keys(n).forEach(A=>{var x,E,N,D,I,q;if(!i[A])return;const H=(E=(x=n[A])==null?void 0:x.chains)==null?void 0:E.filter(F=>i[A].chains.includes(F)),V=i[A].methods.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.methods)==null?void 0:L.includes(F)}),z=i[A].events.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.events)==null?void 0:L.includes(F)}),j=H?.map(F=>i[A].accounts.filter(U=>U.includes(`${F}:`))).flat();y[A]={chains:fr((N=y[A])==null?void 0:N.chains,H),methods:fr((D=y[A])==null?void 0:D.methods,V),events:fr((I=y[A])==null?void 0:I.events,z),accounts:fr((q=y[A])==null?void 0:q.accounts,j)}}),y)}function ra(t){return t.includes(":")}function Ns(t){return ra(t)?t.split(":")[0]:t}function ia(t){var e,r,i;const f={};if(!Nn(t))return f;for(const[n,d]of Object.entries(t)){const c=ra(n)?[n]:d.chains,y=d.methods||[],A=d.events||[],x=Ns(n);f[x]=cb(hb({},f[x]),{chains:fr(c,(e=f[x])==null?void 0:e.chains),methods:fr(y,(r=f[x])==null?void 0:r.methods),events:fr(A,(i=f[x])==null?void 0:i.events)})}return f}function Cs(t){const e={};return t?.forEach(r=>{const[i,f]=r.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[]}),e[i].accounts.push(r),e[i].chains.push(`${i}:${f}`)}),e}function bb(t,e){e=e.map(i=>i.replace("did:pkh:",""));const r=Cs(e);for(const[i,f]of Object.entries(r))f.methods?f.methods=fr(f.methods,t):f.methods=t,f.events=["chainChanged","accountsChanged"];return r}const Bs={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},Os={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function cr(t,e){const{message:r,code:i}=Os[t];return{message:e?`${r} ${e}`:r,code:i}}function Lr(t,e){const{message:r,code:i}=Bs[t];return{message:e?`${r} ${e}`:r,code:i}}function Li(t,e){return Array.isArray(t)?typeof e<"u"&&t.length?t.every(e):!0:!1}function Nn(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function xr(t){return typeof t>"u"}function It(t,e){return e&&xr(t)?!0:typeof t=="string"&&!!t.trim().length}function Cn(t,e){return e&&xr(t)?!0:typeof t=="number"&&!isNaN(t)}function vb(t,e){const{requiredNamespaces:r}=e,i=Object.keys(t.namespaces),f=Object.keys(r);let n=!0;return lr(f,i)?(i.forEach(d=>{const{accounts:c,methods:y,events:A}=t.namespaces[d],x=Ur(c),E=r[d];(!lr(zi(d,E),x)||!lr(E.methods,y)||!lr(E.events,A))&&(n=!1)}),n):!1}function qi(t){return It(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function Rs(t){if(It(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const r=e[0]+":"+e[1];return!!e[2]&&qi(r)}}return!1}function pb(t){if(It(t,!1))try{return typeof new URL(t)<"u"}catch{return!1}return!1}function mb(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function gb(t){return t?.topic}function yb(t,e){let r=null;return It(t?.publicKey,!1)||(r=cr("MISSING_OR_INVALID",`${e} controller public key should be a string`)),r}function na(t){let e=!0;return Li(t)?t.length&&(e=t.every(r=>It(r,!1))):e=!1,e}function Ps(t,e,r){let i=null;return Li(e)&&e.length?e.forEach(f=>{i||qi(f)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chain ${f} should be a string and conform to "namespace:chainId" format`))}):qi(t)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Ts(t,e,r){let i=null;return Object.entries(t).forEach(([f,n])=>{if(i)return;const d=Ps(f,zi(f,n),`${e} ${r}`);d&&(i=d)}),i}function Fs(t,e){let r=null;return Li(t)?t.forEach(i=>{r||Rs(i)||(r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function Us(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Fs(i?.accounts,`${e} namespace`);f&&(r=f)}),r}function Ls(t,e){let r=null;return na(t?.methods)?na(t?.events)||(r=Lr("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):r=Lr("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),r}function fa(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Ls(i,`${e}, namespace`);f&&(r=f)}),r}function wb(t,e,r){let i=null;if(t&&Nn(t)){const f=fa(t,e);f&&(i=f);const n=Ts(t,e,r);n&&(i=n)}else i=cr("MISSING_OR_INVALID",`${e}, ${r} should be an object with data`);return i}function qs(t,e){let r=null;if(t&&Nn(t)){const i=fa(t,e);i&&(r=i);const f=Us(t,e);f&&(r=f)}else r=cr("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return r}function zs(t){return It(t.protocol,!0)}function Ab(t,e){let r=!1;return e&&!t?r=!0:t&&Li(t)&&t.length&&t.forEach(i=>{r=zs(i)}),r}function xb(t){return typeof t=="number"}function _b(t){return typeof t<"u"&&typeof t!==null}function Mb(t){return!(!t||typeof t!="object"||!t.code||!Cn(t.code,!1)||!t.message||!It(t.message,!1))}function Eb(t){return!(xr(t)||!It(t.method,!1))}function Sb(t){return!(xr(t)||xr(t.result)&&xr(t.error)||!Cn(t.id,!1)||!It(t.jsonrpc,!1))}function Db(t){return!(xr(t)||!It(t.name,!1))}function Ib(t,e){return!(!qi(e)||!Ss(t).includes(e))}function Nb(t,e,r){return It(r,!1)?Ds(t,e).includes(r):!1}function Cb(t,e,r){return It(r,!1)?Is(t,e).includes(r):!1}function ks(t,e,r){let i=null;const f=Bb(t),n=Ob(e),d=Object.keys(f),c=Object.keys(n),y=Hs(Object.keys(t)),A=Hs(Object.keys(e)),x=y.filter(E=>!A.includes(E));return x.length&&(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. ++ Required: ${x.toString()} ++ Received: ${Object.keys(e).toString()}`)),lr(d,c)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. ++ Required: ${d.toString()} ++ Approved: ${c.toString()}`)),Object.keys(e).forEach(E=>{if(!E.includes(":")||i)return;const N=Ur(e[E].accounts);N.includes(E)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${E} ++ Required: ${E} ++ Approved: ${N.toString()}`))}),d.forEach(E=>{i||(lr(f[E].methods,n[E].methods)?lr(f[E].events,n[E].events)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${E}`)):i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${E}`))}),i}function Bb(t){const e={};return Object.keys(t).forEach(r=>{var i;r.includes(":")?e[r]=t[r]:(i=t[r].chains)==null||i.forEach(f=>{e[f]={methods:t[r].methods,events:t[r].events}})}),e}function Hs(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Ob(t){const e={};return Object.keys(t).forEach(r=>{if(r.includes(":"))e[r]=t[r];else{const i=Ur(t[r].accounts);i?.forEach(f=>{e[f]={accounts:t[r].accounts.filter(n=>n.includes(`${f}:`)),methods:t[r].methods,events:t[r].events}})}}),e}function Rb(t,e){return Cn(t,!1)&&t<=e.max&&t>=e.min}function Pb(){const t=Dr();return new Promise(e=>{switch(t){case vt.browser:e(Ks());break;case vt.reactNative:e(js());break;case vt.node:e($s());break;default:e(!0)}})}function Ks(){return _i()&&navigator?.onLine}async function js(){if(Zr()&&typeof global<"u"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t?.isConnected}return!0}function $s(){return!0}function Tb(t){switch(Dr()){case vt.browser:Vs(t);break;case vt.reactNative:Gs(t);break;case vt.node:break}}function Vs(t){!Zr()&&_i()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function Gs(t){Zr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}const aa={};class Fb{static get(e){return aa[e]}static set(e,r){aa[e]=r}static delete(e){delete aa[e]}}K.BASE10=Wf,K.BASE16=gt,K.BASE64=Qf,K.BASE64URL=C3,K.COLON=ah,K.DEFAULT_DEPTH=$n,K.EMPTY_SPACE=Ki,K.ENV_MAP=vt,K.INTERNAL_ERRORS=Os,K.MemoryStore=Fb,K.ONE_THOUSAND=oh,K.REACT_NATIVE_PRODUCT=qa,K.RELAYER_DEFAULT_PROTOCOL=ms,K.SDK_ERRORS=Bs,K.SDK_TYPE=ka,K.SLASH=za,K.TYPE_0=Xf,K.TYPE_1=gi,K.TYPE_2=Fi,K.UTF8=mi,K.addResourceToRecap=ho,K.appendToQueryString=Ha,K.assertType=lh,K.assignAbilityToActions=xf,K.base64Decode=so,K.base64Encode=oo,K.buildApprovedNamespaces=lb,K.buildAuthObject=ml,K.buildNamespacesFromAuth=bb,K.buildRecapStatement=lo,K.calcExpiry=Eh,K.capitalize=yh,K.capitalizeWord=Ya,K.createDelayedPromise=wh,K.createEncodedRecap=Al,K.createExpiringPromise=Ah,K.createRecap=uo,K.decodeRecap=mr,K.decodeTypeByte=Fr,K.decodeTypeTwoEnvelope=z3,K.decrypt=q3,K.deriveSymKey=P3,K.deserialize=In,K.encodeRecap=an,K.encodeTypeByte=ea,K.encodeTypeTwoEnvelope=L3,K.encrypt=U3,K.engineEvent=Dh,K.enumify=gh,K.formatAccountId=ca,K.formatAccountWithChain=Ys,K.formatChainId=ha,K.formatExpirerTarget=Gn,K.formatIdTarget=_h,K.formatMessage=io,K.formatMessageContext=bh,K.formatRelayParams=_s,K.formatRelayRpcUrl=ch,K.formatStatementFromRecap=Mf,K.formatTopicTarget=xh,K.formatUA=$a,K.formatUri=ib,K.generateKeyPair=O3,K.generateRandomBytes32=R3,K.getAccountsChains=Ur,K.getAccountsFromNamespaces=Ws,K.getAddressFromAccount=da,K.getAddressesFromAccounts=Js,K.getAppMetadata=uh,K.getBrowserOnlineStatus=Ks,K.getBundleId=sh,K.getChainFromAccount=la,K.getChainsFromAccounts=ba,K.getChainsFromNamespace=zi,K.getChainsFromNamespaces=Qs,K.getChainsFromRecap=Ml,K.getChainsFromRequiredNamespaces=Xs,K.getCommonValuesInArrays=Yn,K.getCryptoKeyFromKeyData=ps,K.getDecodedRecapFromResources=no,K.getDeepLink=Nh,K.getDidAddress=Af,K.getDidAddressSegments=fn,K.getDidChainId=wf,K.getEnvironment=Dr,K.getHttpUrl=dh,K.getInternalError=cr,K.getJavascriptID=ja,K.getJavascriptOS=Ka,K.getLastItems=Ga,K.getLinkModeURL=nb,K.getMethodsFromRecap=_l,K.getNamespacedDidChainId=vl,K.getNamespacesChains=Ss,K.getNamespacesEventsForChainId=Is,K.getNamespacesFromAccounts=Cs,K.getNamespacesMethodsForChainId=Ds,K.getNodeOnlineStatus=$s,K.getReCapActions=ao,K.getReactNativeOnlineStatus=js,K.getRecapAbilitiesFromResource=wl,K.getRecapFromResources=on,K.getRecapResource=fo,K.getRelayClientMetadata=hh,K.getRelayProtocolApi=J3,K.getRelayProtocolName=Y3,K.getRequiredNamespacesFromNamespaces=db,K.getSdkError=Lr,K.getSearchParamFromURL=Ch,K.getUniqueValues=On,K.handleDeeplinkRedirect=Ih,K.hasOverlap=lr,K.hashKey=T3,K.hashMessage=F3,K.isBrowser=_i,K.isCaipNamespace=ra,K.isConformingNamespaces=ks,K.isExpired=Sh,K.isNode=Vn,K.isOnline=Pb,K.isProposalStruct=mb,K.isReactNative=Zr,K.isRecap=_f,K.isSessionCompatible=vb,K.isSessionStruct=gb,K.isTypeOneEnvelope=H3,K.isTypeTwoEnvelope=K3,K.isUndefined=xr,K.isValidAccountId=Rs,K.isValidAccounts=Fs,K.isValidActions=Ls,K.isValidArray=Li,K.isValidChainId=qi,K.isValidChains=Ps,K.isValidController=yb,K.isValidEip1271Signature=Z0,K.isValidEip191Signature=X0,K.isValidErrorReason=Mb,K.isValidEvent=Db,K.isValidId=xb,K.isValidNamespaceAccounts=Us,K.isValidNamespaceActions=fa,K.isValidNamespaceChains=Ts,K.isValidNamespaceMethodsOrEvents=na,K.isValidNamespaces=qs,K.isValidNamespacesChainId=Ib,K.isValidNamespacesEvent=Cb,K.isValidNamespacesRequest=Nb,K.isValidNumber=Cn,K.isValidObject=Nn,K.isValidParams=_b,K.isValidRecap=tr,K.isValidRelay=zs,K.isValidRelays=Ab,K.isValidRequest=Eb,K.isValidRequestExpiry=Rb,K.isValidRequiredNamespaces=wb,K.isValidResponse=Sb,K.isValidString=It,K.isValidUrl=pb,K.mapEntries=mh,K.mapToObj=vh,K.mergeArrays=fr,K.mergeEncodedRecaps=xl,K.mergeRecaps=co,K.normalizeNamespaces=ia,K.objToMap=ph,K.parseAccountId=Bn,K.parseChainId=ua,K.parseContextNames=Va,K.parseExpirerTarget=Mh,K.parseNamespaceKey=Ns,K.parseRelayParams=As,K.parseTopic=xs,K.parseUri=rb,K.populateAuthPayload=gl,K.recapHasResource=yl,K.serialize=ta,K.subscribeToBrowserNetworkChange=Vs,K.subscribeToNetworkChange=Tb,K.subscribeToReactNativeNetworkChange=Gs,K.uuidv4=Bh,K.validateDecoding=k3,K.validateEncoding=vs,K.validateSignedCacao=pl,K.verifyP256Jwt=V3,K.verifySignature=Q0,Object.defineProperty(K,"__esModule",{value:!0})}); ++//# sourceMappingURL=index.umd.js.map +diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js.map b/node_modules/@walletconnect/utils/dist/index.umd.js.map +new file mode 100644 +index 0000000000000000000000000000000000000000..d47c049165a021ba5d43e927092840659f16aee6 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/index.umd.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.umd.js","sources":["../src/caip.ts","../../../node_modules/detect-browser/es/index.js","../../../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../../node_modules/@walletconnect/time/dist/cjs/index.js","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../../node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../../../node_modules/@stablelib/int/lib/int.js","../../../node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../../../node_modules/@stablelib/hash/lib/hash.js","../../../node_modules/@stablelib/hmac/lib/hmac.js","../../../node_modules/@stablelib/hkdf/lib/hkdf.js","../../../node_modules/@stablelib/random/lib/source/browser.js","../../../node_modules/@stablelib/random/lib/source/node.js","../../../node_modules/@stablelib/random/lib/source/system.js","../../../node_modules/@stablelib/random/lib/random.js","../../../node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/@stablelib/x25519/lib/x25519.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/brorand/index.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../../node_modules/@stablelib/sha512/lib/sha512.js","../../../node_modules/@stablelib/ed25519/lib/ed25519.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/constants.js","../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../node_modules/uint8arrays/esm/src/alloc.js","../../../node_modules/uint8arrays/esm/src/util/bases.js","../../../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/uint8arrays/esm/src/from-string.js","../../../node_modules/@walletconnect/safe-json/dist/esm/index.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/utils.js","../src/crypto.ts","../../../node_modules/@walletconnect/relay-api/dist/index.es.js","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== \"undefined\" && typeof window[name] !== \"undefined\") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow(\"document\");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow(\"document\");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow(\"navigator\");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow(\"navigator\");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow(\"location\");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow(\"location\");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow(\"crypto\");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow(\"crypto\");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow(\"localStorage\");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow(\"localStorage\");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = require(\"@walletconnect/window-getters\");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName(\"link\");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute(\"rel\");\n if (rel) {\n if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n var j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n var j2 = 0x79622D32; // \"2-by\"\n var j3 = 0x6B206574; // \"te k\"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\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 this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var 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);\n 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);\n d0 &= 0x1fff;\n var 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);\n 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);\n d1 &= 0x1fff;\n var 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);\n 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);\n d2 &= 0x1fff;\n var 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);\n 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);\n d3 &= 0x1fff;\n var 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);\n 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);\n d4 &= 0x1fff;\n var 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);\n 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);\n d5 &= 0x1fff;\n var 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);\n 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);\n d6 &= 0x1fff;\n var 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);\n 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);\n d7 &= 0x1fff;\n var 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);\n 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);\n d8 &= 0x1fff;\n var 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);\n 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);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\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 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 Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\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 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 mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n 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 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 mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chacha_1 = require(\"@stablelib/chacha\");\nvar poly1305_1 = require(\"@stablelib/poly1305\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nvar binary_1 = require(\"@stablelib/binary\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== \"undefined\" &&\n typeof h.restoreState !== \"undefined\" &&\n typeof h.cleanSavedState !== \"undefined\");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = require(\"@stablelib/hash\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hmac_1 = require(\"@stablelib/hmac\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeRandomSource = void 0;\nconst wipe_1 = require(\"@stablelib/wipe\");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SystemRandomSource = void 0;\nconst browser_1 = require(\"./browser\");\nconst node_1 = require(\"./node\");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = \"\";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n // No sources, we're out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = require(\"./source/system\");\nconst binary_1 = require(\"@stablelib/binary\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let 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 const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 64;\nexports.BLOCK_SIZE = 128;\n/**\n * SHA-2-512 cryptographic hash algorithm.\n */\nvar SHA512 = /** @class */ (function () {\n function SHA512() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._stateHi = new Int32Array(8); // hash state, high bytes\n this._stateLo = new Int32Array(8); // hash state, low bytes\n this._tempHi = new Int32Array(16); // temporary state, high bytes\n this._tempLo = new Int32Array(16); // temporary state, low bytes\n this._buffer = new Uint8Array(256); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA512.prototype._initState = function () {\n this._stateHi[0] = 0x6a09e667;\n this._stateHi[1] = 0xbb67ae85;\n this._stateHi[2] = 0x3c6ef372;\n this._stateHi[3] = 0xa54ff53a;\n this._stateHi[4] = 0x510e527f;\n this._stateHi[5] = 0x9b05688c;\n this._stateHi[6] = 0x1f83d9ab;\n this._stateHi[7] = 0x5be0cd19;\n this._stateLo[0] = 0xf3bcc908;\n this._stateLo[1] = 0x84caa73b;\n this._stateLo[2] = 0xfe94f82b;\n this._stateLo[3] = 0x5f1d36f1;\n this._stateLo[4] = 0xade682d1;\n this._stateLo[5] = 0x2b3e6c1f;\n this._stateLo[6] = 0xfb41bd6b;\n this._stateLo[7] = 0x137e2179;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA512.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA512.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._tempHi);\n wipe_1.wipe(this._tempLo);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA512.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA512: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA512.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 128 < 112) ? 128 : 256;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 8; i++) {\n binary_1.writeUint32BE(this._stateHi[i], out, i * 8);\n binary_1.writeUint32BE(this._stateLo[i], out, i * 8 + 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA512.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be\n * used with restoreState(). Only chain value is saved, not buffers or\n * other state variables.\n */\n SHA512.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n stateHi: new Int32Array(this._stateHi),\n stateLo: new Int32Array(this._stateLo),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Restores state saved by\n * saveState() and sets bytesHashed to the given value.\n */\n SHA512.prototype.restoreState = function (savedState) {\n this._stateHi.set(savedState.stateHi);\n this._stateLo.set(savedState.stateLo);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA512.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.stateHi);\n wipe_1.wipe(savedState.stateLo);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA512;\n}());\nexports.SHA512 = SHA512;\n// Constants\nvar K = new Int32Array([\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]);\nfunction hashBlocks(wh, wl, hh, hl, m, pos, len) {\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var h, l;\n var th, tl;\n var a, b, c, d;\n while (len >= 128) {\n for (var i = 0; i < 16; i++) {\n var j = 8 * i + pos;\n wh[i] = binary_1.readUint32BE(m, j);\n wl[i] = binary_1.readUint32BE(m, j + 4);\n }\n for (var i = 0; i < 80; i++) {\n var bh0 = ah0;\n var bh1 = ah1;\n var bh2 = ah2;\n var bh3 = ah3;\n var bh4 = ah4;\n var bh5 = ah5;\n var bh6 = ah6;\n var bh7 = ah7;\n var bl0 = al0;\n var bl1 = al1;\n var bl2 = al2;\n var bl3 = al3;\n var bl4 = al4;\n var bl5 = al5;\n var bl6 = al6;\n var bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) |\n (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) |\n (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) |\n (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) |\n (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\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 al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (var j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) |\n (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) |\n (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) |\n (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) |\n (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n len -= 128;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA512();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha512.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;\n/**\n * Package ed25519 implements Ed25519 public-key signature algorithm.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst sha512_1 = require(\"@stablelib/sha512\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.SIGNATURE_LENGTH = 64;\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 64;\nexports.SEED_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst gf0 = gf();\nconst gf1 = gf([1]);\nconst D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203\n]);\nconst D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406\n]);\nconst X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169\n]);\nconst Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666\n]);\nconst I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83\n]);\nfunction set25519(r, a) {\n for (let i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction verify32(x, y) {\n let d = 0;\n for (let i = 0; i < 32; i++) {\n d |= x[i] ^ y[i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction neq25519(a, b) {\n const c = new Uint8Array(32);\n const d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return verify32(c, d);\n}\nfunction par25519(a) {\n const d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 253; a >= 0; a--) {\n square(c, c);\n if (a !== 2 && a !== 4) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction pow2523(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 250; a >= 0; a--) {\n square(c, c);\n if (a !== 1) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction edadd(p, q) {\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n sub(a, p[1], p[0]);\n sub(t, q[1], q[0]);\n mul(a, a, t);\n add(b, p[0], p[1]);\n add(t, q[0], q[1]);\n mul(b, b, t);\n mul(c, p[3], q[3]);\n mul(c, c, D2);\n mul(d, p[2], q[2]);\n add(d, d, d);\n sub(e, b, a);\n sub(f, d, c);\n add(g, d, c);\n add(h, b, a);\n mul(p[0], e, f);\n mul(p[1], h, g);\n mul(p[2], g, f);\n mul(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n for (let i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n const tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n mul(tx, p[0], zi);\n mul(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (let i = 255; i >= 0; --i) {\n const b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n edadd(q, p);\n edadd(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n const q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n mul(q[3], X, Y);\n scalarmult(p, q, s);\n}\n// Generates key pair from secret 32-byte seed.\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SEED_LENGTH) {\n throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);\n }\n const d = (0, sha512_1.hash)(seed);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const publicKey = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n scalarbase(p, d);\n pack(publicKey, p);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\nfunction extractPublicKeyFromSecretKey(secretKey) {\n if (secretKey.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n return new Uint8Array(secretKey.subarray(32));\n}\nexports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;\nconst L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,\n 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 let carry;\n let i;\n let j;\n let 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++) {\n x[j] -= carry * L[j];\n }\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n const x = new Float64Array(64);\n for (let i = 0; i < 64; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 64; i++) {\n r[i] = 0;\n }\n modL(r, x);\n}\n// Returns 64-byte signature of the message under the 64-byte secret key.\nfunction sign(secretKey, message) {\n const x = new Float64Array(64);\n const p = [gf(), gf(), gf(), gf()];\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const signature = new Uint8Array(64);\n signature.set(d.subarray(32), 32);\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(32));\n hs.update(message);\n const r = hs.digest();\n hs.clean();\n reduce(r);\n scalarbase(p, r);\n pack(signature, p);\n hs.reset();\n hs.update(signature.subarray(0, 32));\n hs.update(secretKey.subarray(32));\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n for (let i = 0; i < 32; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 32; i++) {\n for (let j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n modL(signature.subarray(32), x);\n return signature;\n}\nexports.sign = sign;\nfunction unpackneg(r, p) {\n const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n square(num, r[1]);\n mul(den, num, D);\n sub(num, num, r[2]);\n add(den, r[2], den);\n square(den2, den);\n square(den4, den2);\n mul(den6, den4, den2);\n mul(t, den6, num);\n mul(t, t, den);\n pow2523(t, t);\n mul(t, t, num);\n mul(t, t, den);\n mul(t, t, den);\n mul(r[0], t, den);\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n mul(r[0], r[0], I);\n }\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n return -1;\n }\n if (par25519(r[0]) === (p[31] >> 7)) {\n sub(r[0], gf0, r[0]);\n }\n mul(r[3], r[0], r[1]);\n return 0;\n}\nfunction verify(publicKey, message, signature) {\n const t = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n const q = [gf(), gf(), gf(), gf()];\n if (signature.length !== exports.SIGNATURE_LENGTH) {\n throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);\n }\n if (unpackneg(q, publicKey)) {\n return false;\n }\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(0, 32));\n hs.update(publicKey);\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, signature.subarray(32));\n edadd(p, q);\n pack(t, p);\n if (verify32(signature, t)) {\n return false;\n }\n return true;\n}\nexports.verify = verify;\n/**\n * Convert Ed25519 public key to X25519 public key.\n *\n * Throws if given an invalid public key.\n */\nfunction convertPublicKeyToX25519(publicKey) {\n let q = [gf(), gf(), gf(), gf()];\n if (unpackneg(q, publicKey)) {\n throw new Error(\"Ed25519: invalid public key\");\n }\n // Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n let a = gf();\n let b = gf();\n let y = q[1];\n add(a, gf1, y);\n sub(b, gf1, y);\n inv25519(b, b);\n mul(a, a, b);\n let z = new Uint8Array(32);\n pack25519(z, a);\n return z;\n}\nexports.convertPublicKeyToX25519 = convertPublicKeyToX25519;\n/**\n * Convert Ed25519 secret (private) key to X25519 secret key.\n */\nfunction convertSecretKeyToX25519(secretKey) {\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const o = new Uint8Array(d.subarray(0, 32));\n (0, wipe_1.wipe)(d);\n return o;\n}\nexports.convertSecretKeyToX25519 = convertSecretKeyToX25519;\n//# sourceMappingURL=ed25519.js.map","export const JWT_IRIDIUM_ALG = \"EdDSA\";\nexport const JWT_IRIDIUM_TYP = \"JWT\";\nexport const JWT_DELIMITER = \".\";\nexport const JWT_ENCODING = \"base64url\";\nexport const JSON_ENCODING = \"utf8\";\nexport const DATA_ENCODING = \"utf8\";\nexport const DID_DELIMITER = \":\";\nexport const DID_PREFIX = \"did\";\nexport const DID_METHOD = \"key\";\nexport const MULTICODEC_ED25519_ENCODING = \"base58btc\";\nexport const MULTICODEC_ED25519_BASE = \"z\";\nexport const MULTICODEC_ED25519_HEADER = \"K36\";\nexport const MULTICODEC_ED25519_LENGTH = 32;\nexport const KEY_PAIR_SEED_LENGTH = 32;\n//# sourceMappingURL=constants.js.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","const JSONStringify = data => JSON.stringify(data, (_, value) => typeof value === \"bigint\" ? value.toString() + \"n\" : value);\nconst JSONParse = json => {\n const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n const serializedData = json.replace(numbersBiggerThanMaxInt, \"$1\\\"$2n\\\"$3\");\n return JSON.parse(serializedData, (_, value) => {\n const isCustomFormatBigInt = typeof value === \"string\" && value.match(/^\\d+n$/);\n if (isCustomFormatBigInt)\n return BigInt(value.substring(0, value.length - 1));\n return value;\n });\n};\nexport function safeJsonParse(value) {\n if (typeof value !== \"string\") {\n throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n }\n try {\n return JSONParse(value);\n }\n catch (_a) {\n return value;\n }\n}\nexport function safeJsonStringify(value) {\n return typeof value === \"string\" ? value : JSONStringify(value) || \"\";\n}\n//# sourceMappingURL=index.js.map","import { concat } from \"uint8arrays/concat\";\nimport { toString } from \"uint8arrays/to-string\";\nimport { fromString } from \"uint8arrays/from-string\";\nimport { safeJsonParse, safeJsonStringify } from \"@walletconnect/safe-json\";\nimport { DATA_ENCODING, DID_DELIMITER, DID_METHOD, DID_PREFIX, JSON_ENCODING, JWT_DELIMITER, JWT_ENCODING, MULTICODEC_ED25519_BASE, MULTICODEC_ED25519_ENCODING, MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_LENGTH, } from \"./constants\";\nexport function decodeJSON(str) {\n return safeJsonParse(toString(fromString(str, JWT_ENCODING), JSON_ENCODING));\n}\nexport function encodeJSON(val) {\n return toString(fromString(safeJsonStringify(val), JSON_ENCODING), JWT_ENCODING);\n}\nexport function encodeIss(publicKey) {\n const header = fromString(MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_ENCODING);\n const multicodec = MULTICODEC_ED25519_BASE +\n toString(concat([header, publicKey]), MULTICODEC_ED25519_ENCODING);\n return [DID_PREFIX, DID_METHOD, multicodec].join(DID_DELIMITER);\n}\nexport function decodeIss(issuer) {\n const [prefix, method, multicodec] = issuer.split(DID_DELIMITER);\n if (prefix !== DID_PREFIX || method !== DID_METHOD) {\n throw new Error(`Issuer must be a DID with method \"key\"`);\n }\n const base = multicodec.slice(0, 1);\n if (base !== MULTICODEC_ED25519_BASE) {\n throw new Error(`Issuer must be a key in mulicodec format`);\n }\n const bytes = fromString(multicodec.slice(1), MULTICODEC_ED25519_ENCODING);\n const type = toString(bytes.slice(0, 2), MULTICODEC_ED25519_ENCODING);\n if (type !== MULTICODEC_ED25519_HEADER) {\n throw new Error(`Issuer must be a public key with type \"Ed25519\"`);\n }\n const publicKey = bytes.slice(2);\n if (publicKey.length !== MULTICODEC_ED25519_LENGTH) {\n throw new Error(`Issuer must be a public key with length 32 bytes`);\n }\n return publicKey;\n}\nexport function encodeSig(bytes) {\n return toString(bytes, JWT_ENCODING);\n}\nexport function decodeSig(encoded) {\n return fromString(encoded, JWT_ENCODING);\n}\nexport function encodeData(params) {\n return fromString([encodeJSON(params.header), encodeJSON(params.payload)].join(JWT_DELIMITER), DATA_ENCODING);\n}\nexport function decodeData(data) {\n const params = toString(data, DATA_ENCODING).split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n return { header, payload };\n}\nexport function encodeJWT(params) {\n return [\n encodeJSON(params.header),\n encodeJSON(params.payload),\n encodeSig(params.signature),\n ].join(JWT_DELIMITER);\n}\nexport function decodeJWT(jwt) {\n const params = jwt.split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n const signature = decodeSig(params[2]);\n const data = fromString(params.slice(0, 2).join(JWT_DELIMITER), DATA_ENCODING);\n return { header, payload, signature, data };\n}\n//# sourceMappingURL=utils.js.map","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["this","delay_1","delay","require$$0","require$$1","require$$2","watch","require$$3","require$$4","cjs","decode","strictUriEncode","splitOnFirst","h","g","E","x","f","l","T","w.parse","w.stringify","N","y","R","m","d","M","global","version","logger","concat","BN","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","inherits","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","hmac","commonjsRequire","getNAF","getJSF","assert$1","BaseCurve","base","BasePoint","assert$2","ShortCurve","Point","JPoint","hash","HmacDRBG","hmacDrbg","assert$3","KeyPair","key","assert$4","Signature","signature","Position","getLength","rmPadding","constructLength","rand","assert$5","EC","ec","EC$1","c","j","$","A","w","k","wipe_1","hmac_1","require","allocUnsafe","fromString","toString","from","basex","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","sha512","name","base2","base8","base10","base16","base32","base36","base64","base256emoji","createCodec","string","ascii","BASES","bases","brorandModule","brorand","crypto","Base","curve","curves","require$$5","require$$6","parseBytes","cachedProperty","S","u","v.generateKeyPair","o","v.sharedKey","C","K","B","f.parse","f.stringify","z","F","O","b","a","t"],"mappings":";;;;;;EAAA,MAAM,CAAC,CAAC,GAAG,CAAQ,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAQ,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;;ECAhpD,IAAI,aAAa,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,aAAa,KAAK,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;EAC9E,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACzF,QAAQ,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;EAChC,YAAY,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACjE,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,SAAS;EACT,KAAK;EACL,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC7D,CAAC,CAAC;EACF,IAAI,WAAW,kBAAkB,YAAY;EAC7C,IAAI,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;EAC5C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;EACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;EAC9B,KAAK;EACL,IAAI,OAAO,WAAW,CAAC;EACvB,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,QAAQ,kBAAkB,YAAY;EAC1C,IAAI,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EAC3B,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC;EACpB,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,mBAAmB,kBAAkB,YAAY;EACrD,IAAI,SAAS,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE;EACzD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC/B,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;EACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;EACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;EACjC,KAAK;EACL,IAAI,OAAO,mBAAmB,CAAC;EAC/B,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,OAAO,kBAAkB,YAAY;EACzC,IAAI,SAAS,OAAO,GAAG;EACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAC1B,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAC5B,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;EACvB,KAAK;EACL,IAAI,OAAO,OAAO,CAAC;EACnB,CAAC,EAAE,CAAC,CAAC;EAEL,IAAI,eAAe,kBAAkB,YAAY;EACjD,IAAI,SAAS,eAAe,GAAG;EAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;EACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;EACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EAC5B,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;EACvB,KAAK;EACL,IAAI,OAAO,eAAe,CAAC;EAC3B,CAAC,EAAE,CAAC,CAAC;EAEL;EACA,IAAI,kBAAkB,GAAG,8HAA8H,CAAC;EACxJ,IAAI,kBAAkB,GAAG,oFAAoF,CAAC;EAC9G,IAAI,sBAAsB,GAAG,CAAC,CAAC;EAC/B,IAAI,cAAc,GAAG;EACrB,IAAI,CAAC,KAAK,EAAE,wBAAwB,CAAC;EACrC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC;EACjC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC;EACvC,IAAI,CAAC,eAAe,EAAE,wBAAwB,CAAC;EAC/C,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC;EAC1C,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC;EAC7C,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC;EACrC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC;EACxC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;EAC3C,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;EAC1C,IAAI;EACJ,QAAQ,kBAAkB;EAC1B,QAAQ,wDAAwD;EAChE,KAAK;EACL,IAAI,CAAC,QAAQ,EAAE,kDAAkD,CAAC;EAClE,IAAI,CAAC,WAAW,EAAE,+BAA+B,CAAC;EAClD,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;EAC1C,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC;EAC9C,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC;EAClC,IAAI,CAAC,YAAY,EAAE,iCAAiC,CAAC;EACrD,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC;EAC1C,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC;EACxC,IAAI,CAAC,KAAK,EAAE,kDAAkD,CAAC;EAC/D,IAAI,CAAC,KAAK,EAAE,+FAA+F,CAAC;EAC5G,IAAI,CAAC,UAAU,EAAE,sCAAsC,CAAC;EACxD,IAAI,CAAC,IAAI,EAAE,2CAA2C,CAAC;EACvD,IAAI,CAAC,IAAI,EAAE,qCAAqC,CAAC;EACjD,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;EAC1B,IAAI,CAAC,MAAM,EAAE,mCAAmC,CAAC;EACjD,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;EACtC,IAAI,CAAC,KAAK,EAAE,wCAAwC,CAAC;EACrD,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC;EAC9C,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC;EACvC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC;EAC1C,IAAI,CAAC,aAAa,EAAE,iCAAiC,CAAC;EACtD,IAAI,CAAC,aAAa,EAAE,mCAAmC,CAAC;EACxD,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC;EAClC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;EACrC,CAAC,CAAC;EACF,IAAI,oBAAoB,GAAG;EAC3B,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC;EAC7B,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;EAC7B,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC;EACxC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;EAClC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;EAC3B,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;EAC7B,IAAI,CAAC,YAAY,EAAE,mCAAmC,CAAC;EACvD,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC;EAC1C,IAAI,CAAC,cAAc,EAAE,iCAAiC,CAAC;EACvD,IAAI,CAAC,YAAY,EAAE,+BAA+B,CAAC;EACnD,IAAI,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;EAC/C,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC;EACzC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;EACrC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC;EACrC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC;EACvC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC;EACvC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;EAChC,IAAI,CAAC,YAAY,EAAE,qDAAqD,CAAC;EACzE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;EACvB,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;EACzB,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;EAC9B,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;EAC3C,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;EAClB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;EACpB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;EACrB,CAAC,CAAC;EACK,SAAS,MAAM,CAAC,SAAS,EAAE;EAClC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE;EACrB,QAAQ,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;EACzC,KAAK;EACL,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW;EACvC,QAAQ,OAAO,SAAS,KAAK,WAAW;EACxC,QAAQ,SAAS,CAAC,OAAO,KAAK,aAAa,EAAE;EAC7C,QAAQ,OAAO,IAAI,eAAe,EAAE,CAAC;EACrC,KAAK;EACL,IAAI,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;EAC1C,QAAQ,OAAO,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,OAAO,cAAc,EAAE,CAAC;EAC5B,CAAC;EACD,SAAS,cAAc,CAAC,EAAE,EAAE;EAC5B;EACA;EACA;EACA;EACA,IAAI,QAAQ,EAAE,KAAK,EAAE;EACrB,QAAQ,cAAc,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,EAAE,EAAE;EACrD,YAAY,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC/C,YAAY,IAAI,OAAO,EAAE;EACzB,gBAAgB,OAAO,OAAO,CAAC;EAC/B,aAAa;EACb,YAAY,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACzC,YAAY,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACnD,SAAS,EAAE,KAAK,CAAC,EAAE;EACnB,CAAC;EAKM,SAAS,cAAc,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,WAAW,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,WAAW,EAAE;EACtB,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;EACtD,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE;EAC9B,QAAQ,OAAO,IAAI,OAAO,EAAE,CAAC;EAC7B,KAAK;EACL;EACA,IAAI,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxF,IAAI,IAAI,YAAY,EAAE;EACtB,QAAQ,IAAI,YAAY,CAAC,MAAM,GAAG,sBAAsB,EAAE;EAC1D,YAAY,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,kBAAkB,CAAC,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;EACxJ,SAAS;EACT,KAAK;EACL,SAAS;EACT,QAAQ,YAAY,GAAG,EAAE,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzC,IAAI,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC1B,IAAI,IAAI,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACrD,IAAI,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE;EAC7C,QAAQ,OAAO,IAAI,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;EAC9C,CAAC;EACM,SAAS,QAAQ,CAAC,EAAE,EAAE;EAC7B,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;EAC5E,QAAQ,IAAI,EAAE,GAAG,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EACrE,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ,IAAI,KAAK,EAAE;EACnB,YAAY,OAAO,EAAE,CAAC;EACtB,SAAS;EACT,KAAK;EACL,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;EACM,SAAS,cAAc,GAAG;EACjC,IAAI,IAAI,MAAM,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;EACnE,IAAI,OAAO,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAClE,CAAC;EACD,SAAS,kBAAkB,CAAC,KAAK,EAAE;EACnC,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;EACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;ECrNA;EACA;AACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;EACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;EACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;EACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;EACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/B,CAAC,CAAC;AACF;EACO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;EAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;EACzF,CAAC;AACD;EACO,IAAI,QAAQ,GAAG,WAAW;EACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;EACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;EAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACzF,SAAS;EACT,QAAQ,OAAO,CAAC,CAAC;EACjB,MAAK;EACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAC3C,EAAC;AACD;EACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;EACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;EACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAClC,SAAS;EACT,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;AACD;EACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;EAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;EACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;EACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;EACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;EAClE,CAAC;AACD;EACO,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;EAC/C,IAAI,OAAO,UAAU,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE;EACzE,CAAC;AACD;EACO,SAAS,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE;EACvD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;EACnI,CAAC;AACD;EACO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;EAC7D,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;EAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,CAAC;AACD;EACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;EAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;EACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;EACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;EACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;EACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;EACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;EACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;EAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;EACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;EACjE,gBAAgB;EAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;EAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;EAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;EACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;EACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;EAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;EAC3C,aAAa;EACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;EACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;EAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;EACzF,KAAK;EACL,CAAC;AACD;EACO,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;EAC7C,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;EACjC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACjB,CAAC;AACD;EACO,SAAS,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE;EACzC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1F,CAAC;AACD;EACO,SAAS,QAAQ,CAAC,CAAC,EAAE;EAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAClF,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO;EAClD,QAAQ,IAAI,EAAE,YAAY;EAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;EAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;EACpD,SAAS;EACT,KAAK,CAAC;EACN,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;EAC3F,CAAC;AACD;EACO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;EACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;EACrC,IAAI,IAAI;EACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACnF,KAAK;EACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;EAC3C,YAAY;EACZ,QAAQ,IAAI;EACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7D,SAAS;EACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;EACzC,KAAK;EACL,IAAI,OAAO,EAAE,CAAC;EACd,CAAC;AACD;EACO,SAAS,QAAQ,GAAG;EAC3B,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;EACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,OAAO,EAAE,CAAC;EACd,CAAC;AACD;EACO,SAAS,cAAc,GAAG;EACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;EACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;EACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,OAAO,CAAC,CAAC;EACb,CACA;EACO,SAAS,OAAO,CAAC,CAAC,EAAE;EAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;EACzE,CAAC;AACD;EACO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;EACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;EAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;EAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;EACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;EAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;EACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;EACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EACtF,CAAC;AACD;EACO,SAAS,gBAAgB,CAAC,CAAC,EAAE;EACpC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;EACb,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EAChJ,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;EACnJ,CAAC;AACD;EACO,SAAS,aAAa,CAAC,CAAC,EAAE;EACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;EAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;EACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;EACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;EAChI,CAAC;AACD;EACO,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;EAClD,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;EACnH,IAAI,OAAO,MAAM,CAAC;EAClB,CACA;EACO,SAAS,YAAY,CAAC,GAAG,EAAE;EAClC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC;EAC1C,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnG,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;EACzB,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;AACD;EACO,SAAS,eAAe,CAAC,GAAG,EAAE;EACrC,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;EAC5D,CAAC;AACD;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE;EAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;EACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;EAC9E,KAAK;EACL,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EACpC,CAAC;AACD;EACO,SAAS,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;EACpE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;EACnC,QAAQ,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;EAC9E,KAAK;EACL,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;EACpC,IAAI,OAAO,KAAK,CAAC;EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECxNA,CAAA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAaA,KAAA,CAAA,KAAA,GAAG,KAAK,CAAC,CAAC;GACvB,SAASC,OAAK,CAAC,OAAO,EAAE;EACxB,KAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI;WAC1B,UAAU,CAAC,MAAM;EACzB,aAAY,OAAO,CAAC,IAAI,CAAC,CAAC;YACjB,EAAE,OAAO,CAAC,CAAC;EACpB,MAAK,CAAC,CAAC;IACN;EACD,CAAaD,KAAA,CAAA,KAAA,GAAGC,OAAK,CAAC;EACtB,CAAA;;;;;;;;;;;;;;;ECVA,CAAA,MAAM,CAAC,cAAc,CAAC,IAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAA,IAAA,CAAA,YAAoB,GAAG,IAAA,CAAA,WAAmB,GAAG,KAAK,CAAC,CAAC;EACpD,CAAmB,IAAA,CAAA,WAAA,GAAG,GAAG,CAAC;EAC1B,CAAoB,IAAA,CAAA,YAAA,GAAG,IAAI,CAAC;EAC5B,CAAA;;;;;;;;;;;;ICJA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAmB,CAAA,QAAA,GAAA,OAAA,CAAA,UAAA,GAAqB,OAAsB,CAAA,WAAA,GAAA,OAAA,CAAA,SAAA,GAAoB,OAAmB,CAAA,QAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,SAAA,GAAoB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,OAAA,GAAkB,OAA4B,CAAA,iBAAA,GAAA,OAAA,CAAA,YAAA,GAAuB,OAAoB,CAAA,SAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,mBAAmB,OAAwB,CAAA,aAAA,GAAA,OAAA,CAAA,cAAA,GAAyB,OAAsB,CAAA,WAAA,GAAA,OAAA,CAAA,YAAA,GAAuB,OAAqB,CAAA,UAAA,GAAA,OAAA,CAAA,aAAA,GAAwB,OAAyB,CAAA,cAAA,GAAA,OAAA,CAAA,WAAA,GAAsB,OAAuB,CAAA,YAAA,GAAA,OAAA,CAAA,UAAA,GAAqB,KAAK,CAAC,CAAC;EACxiB,EAAA,OAAA,CAAA,UAAA,GAAqB,CAAC,CAAC;EACvB,EAAA,OAAA,CAAA,YAAA,GAAuB,CAAC,CAAC;EACzB,EAAA,OAAA,CAAA,WAAA,GAAsB,EAAE,CAAC;EACzB,EAAA,OAAA,CAAA,cAAA,GAAyB,EAAE,CAAC;EAC5B,EAAA,OAAA,CAAA,aAAA,GAAwB,EAAE,CAAC;IAC3B,OAAqB,CAAA,UAAA,GAAA,OAAO,CAAC,aAAa,CAAC;EAC3C,EAAA,OAAA,CAAA,YAAA,GAAuB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;EAC9C,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;EAC9C,EAAA,OAAA,CAAA,cAAA,GAAyB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;EACjD,EAAA,OAAA,CAAA,aAAA,GAAwB,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;IAChD,OAAmB,CAAA,QAAA,GAAA,OAAO,CAAC,aAAa,CAAC;EACzC,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EAC3C,EAAA,OAAA,CAAA,SAAA,GAAoB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,YAAA,GAAuB,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;EAC7C,EAAA,OAAA,CAAA,iBAAA,GAA4B,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;IAClD,OAAkB,CAAA,OAAA,GAAA,OAAO,CAAC,iBAAiB,CAAC;EAC5C,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,SAAA,GAAoB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;EACxC,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;IAC3C,OAAmB,CAAA,QAAA,GAAA,OAAO,CAAC,UAAU,CAAC;EACtC,EAAA,OAAA,CAAA,SAAA,GAAoB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EACzC,EAAA,OAAA,CAAA,WAAA,GAAsB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EAC3C,EAAA,OAAA,CAAA,UAAA,GAAqB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;EAC1C,EAAA,OAAA,CAAA,QAAA,GAAmB,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;EACzC,EAAA;;;;;;;;;;;IC3BA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAGC,YAAgB,CAAC;EACjC,EAAA,OAAO,CAAC,YAAY,CAACC,aAAiB,EAAE,OAAO,CAAC,CAAC;EACjD,EAAA,OAAO,CAAC,YAAY,CAACC,aAAiB,EAAE,OAAO,CAAC,CAAC;EACjD,EAAA;;;;;;;;;;ECJA,CAAA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAA,OAAA,CAAA,eAAuB,GAAG,OAAA,CAAA,aAAqB,GAAG,KAAK,CAAC,CAAC;GACzD,MAAM,WAAW,GAAGF,gBAAA,EAAuB,CAAC;GAC5C,SAAS,aAAa,CAAC,OAAO,EAAE;EAChC,KAAI,OAAO,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC;IAC7C;EACD,CAAqB,OAAA,CAAA,aAAA,GAAG,aAAa,CAAC;GACtC,SAAS,eAAe,CAAC,WAAW,EAAE;OAClC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAC7D;EACD,CAAuB,OAAA,CAAA,eAAA,GAAG,eAAe,CAAC;EAC1C,CAAA;;;;;;;;;;ICXA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAGA,YAAgB,CAAC;EACjC,EAAA,OAAO,CAAC,YAAY,CAACC,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,EAAA,OAAO,CAAC,YAAY,CAACC,gBAAoB,EAAE,OAAO,CAAC,CAAC;EACpD,EAAA;;;;;;;;;;;;ECJA,CAAA,MAAM,CAAC,cAAc,CAACC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAaA,OAAA,CAAA,KAAA,GAAG,KAAK,CAAC,CAAC;EACvB,CAAA,MAAM,KAAK,CAAC;EACZ,KAAI,WAAW,GAAG;EAClB,SAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B;OACD,KAAK,CAAC,KAAK,EAAE;WACT,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;eAC5B,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE;EACT,SAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACvD;OACD,IAAI,CAAC,KAAK,EAAE;WACR,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC1C,SAAQ,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,WAAW,EAAE;eAC1C,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE;WACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;EACvD,SAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE;OACD,GAAG,CAAC,KAAK,EAAE;WACP,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACrD,SAAQ,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;eAClC,MAAM,IAAI,KAAK,CAAC,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7D;WACD,OAAO,SAAS,CAAC;QACpB;OACD,OAAO,CAAC,KAAK,EAAE;WACX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC1C,SAAQ,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC;WACpE,OAAO,OAAO,CAAC;QAClB;IACJ;EACD,CAAaA,OAAA,CAAA,KAAA,GAAG,KAAK,CAAC;EACtB,CAAeA,OAAA,CAAA,OAAA,GAAG,KAAK,CAAC;EACxB,CAAA;;;;;;;;;;;;;ECnCA,CAAA,MAAM,CAAC,cAAc,CAAC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAc,KAAA,CAAA,MAAA,GAAG,KAAK,CAAC,CAAC;EACxB,CAAA,MAAM,MAAM,CAAC;IACZ;EACD,CAAc,KAAA,CAAA,MAAA,GAAG,MAAM,CAAC;EACxB,CAAA;;;;;;;;;;ICLA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAGH,YAAgB,CAAC;EACjC,EAAA,OAAO,CAAC,YAAY,CAACC,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,EAAA;;;;;;GCHA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;GAC9D,MAAM,OAAO,GAAGD,YAAgB,CAAC;EACjC,CAAA,OAAO,CAAC,YAAY,CAACC,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,CAAA,OAAO,CAAC,YAAY,CAACC,gBAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,CAAA,OAAO,CAAC,YAAY,CAACE,cAAkB,EAAE,OAAO,CAAC,CAAC;EAClD,CAAA,OAAO,CAAC,YAAY,CAACC,kBAAsB,EAAE,OAAO,CAAC,CAAC;EACtD,CAAA;;;;;ECNA,MAAM,CAAC,cAAc,CAACC,KAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvCA,OAAA,CAAA,eAAA,GAAiCA,KAAA,CAAA,sBAAA,GAAoBA,KAAA,CAAA,SAAA,yBAA2B,GAAG,aAAA,GAAAA,KAAA,CAAA,WAAmB,GAAGA,KAAA,CAAA,kBAA0B,GAAG,cAAA,GAAAA,KAAA,CAAA,YAAoB,GAA8BA,KAAA,CAAA,mBAAA,GAAG,aAAmB,GAAAA,KAAA,CAAA,WAAA,GAA6BA,KAAA,CAAA,kBAAA,GAA+BA,KAAA,CAAA,oBAAA,GAAwBA,KAAA,CAAA,aAAA,GAAG,KAAK,EAAE;EACnU,SAAS,aAAa,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,GAAG,GAAG,SAAS,CAAC;EACxB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;EAC9E,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AACoBA,OAAA,CAAA,aAAA,GAAG,cAAc;EACtC,SAAS,oBAAoB,CAAC,IAAI,EAAE;EACpC,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,IAAI,CAAC,GAAG,EAAE;EACd,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AAC2BA,OAAA,CAAA,oBAAA,GAAG,qBAAqB;EACpD,SAAS,kBAAkB,GAAG;EAC9B,IAAI,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;EAC5C,CAAC;AACyBA,OAAA,CAAA,kBAAA,GAAG,mBAAmB;EAChD,SAAS,WAAW,GAAG;EACvB,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC;EACrC,CAAC;EACD,IAAmB,aAAA,GAAAA,KAAA,CAAA,WAAA,GAAG,WAAW,CAAC;EAClC,SAAS,mBAAmB,GAAG;EAC/B,IAAI,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;EAC7C,CAAC;AAC0BA,OAAA,CAAA,mBAAA,GAAG,oBAAoB;EAClD,SAAS,YAAY,GAAG;EACxB,IAAI,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;EACtC,CAAC;EACD,IAAoB,cAAA,GAAAA,KAAA,CAAA,YAAA,GAAG,YAAY,CAAC;EACpC,SAAS,kBAAkB,GAAG;EAC9B,IAAI,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;EAC5C,CAAC;AACyBA,OAAA,CAAA,kBAAA,GAAG,mBAAmB;EAChD,SAAS,WAAW,GAAG;EACvB,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC;EACrC,CAAC;EACD,IAAmB,aAAA,GAAAA,KAAA,CAAA,WAAA,GAAG,WAAW,CAAC;EAClC,SAAS,gBAAgB,GAAG;EAC5B,IAAI,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;EAC1C,CAAC;AACuBA,OAAA,CAAA,gBAAA,GAAG,iBAAiB;EAC5C,SAAS,SAAS,GAAG;EACrB,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnC,CAAC;AACgBA,OAAA,CAAA,SAAA,GAAG,UAAU;EAC9B,SAAS,sBAAsB,GAAG;EAClC,IAAI,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;EAChD,CAAC;AAC6BA,OAAA,CAAA,sBAAA,GAAG,uBAAuB;EACxD,SAAS,eAAe,GAAG;EAC3B,IAAI,OAAO,aAAa,CAAC,cAAc,CAAC,CAAC;EACzC,CAAC;AACsBA,OAAA,CAAA,eAAA,GAAG,eAAe;;;;ECzDzC,MAAM,CAAC,cAAc,CAAC,GAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,IAAyB,mBAAA,GAAA,GAAA,CAAA,iBAAA,GAAG,KAAK,CAAC,CAAC;EACnC,MAAM,gBAAgB,GAAGN,KAAwC,CAAC;EAClE,SAAS,iBAAiB,GAAG;EAC7B,IAAI,IAAI,GAAG,CAAC;EACZ,IAAI,IAAI,GAAG,CAAC;EACZ,IAAI,IAAI;EACR,QAAQ,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;EACpD,QAAQ,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;EACpD,KAAK;EACL,IAAI,OAAO,CAAC,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,SAAS,QAAQ,GAAG;EACxB,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EACvD,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;EACzB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC/C,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAClC,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjD,YAAY,IAAI,GAAG,EAAE;EACrB,gBAAgB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;EAC5D,oBAAoB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC3D,oBAAoB,IAAI,IAAI,EAAE;EAC9B,wBAAwB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;EACvE,4BAA4B,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACtE,4BAA4B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACtD,4BAA4B,IAAI,YAAY,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;EAC9E,4BAA4B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EACzD,gCAAgC,YAAY,IAAI,IAAI,CAAC;EACrD,6BAA6B;EAC7B,iCAAiC;EACjC,gCAAgC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACrE,gCAAgC,IAAI,CAAC,GAAG,EAAE,CAAC;EAC3C,gCAAgC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjE,gCAAgC,YAAY,IAAI,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;EACvE,6BAA6B;EAC7B,4BAA4B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACrD,yBAAyB;EACzB,6BAA6B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC3D,4BAA4B,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;EACpE,4BAA4B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;EACpD,yBAAyB;EACzB,6BAA6B;EAC7B,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7C,yBAAyB;EACzB,qBAAqB;EACrB,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,KAAK,CAAC;EACrB,KAAK;EACL,IAAI,SAAS,sBAAsB,CAAC,GAAG,IAAI,EAAE;EAC7C,QAAQ,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;EAC1D,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACpC,YAAY,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;EAC/D,iBAAiB,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;EAC1D,iBAAiB,MAAM,CAAC,CAAC,IAAI,KAAK;EAClC,gBAAgB,IAAI,IAAI,EAAE;EAC1B,oBAAoB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC/C,iBAAiB;EACjB,gBAAgB,OAAO,KAAK,CAAC;EAC7B,aAAa,CAAC,CAAC;EACf,YAAY,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,EAAE;EACjD,gBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;EAC5D,gBAAgB,IAAI,OAAO,EAAE;EAC7B,oBAAoB,OAAO,OAAO,CAAC;EACnC,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,EAAE,CAAC;EAClB,KAAK;EACL,IAAI,SAAS,OAAO,GAAG;EACvB,QAAQ,IAAI,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;EAC/F,QAAQ,IAAI,CAAC,IAAI,EAAE;EACnB,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;EAC7B,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,SAAS,cAAc,GAAG;EAC9B,QAAQ,MAAM,WAAW,GAAG,sBAAsB,CAAC,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;EACvH,QAAQ,OAAO,WAAW,CAAC;EAC3B,KAAK;EACL,IAAI,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;EAC3B,IAAI,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;EACzC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;EAC3B,IAAI,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;EAC7B,IAAI,MAAM,IAAI,GAAG;EACjB,QAAQ,WAAW;EACnB,QAAQ,GAAG;EACX,QAAQ,KAAK;EACb,QAAQ,IAAI;EACZ,KAAK,CAAC;EACN,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;EACD,mBAAyB,GAAA,GAAA,CAAA,iBAAA,GAAG,iBAAiB;;;;EC/F7C,IAAA,eAAc,GAAG,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;;ECA1H,IAAI,KAAK,GAAG,cAAc,CAAC;EAC3B,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC;EACjE,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD;EACA,SAAS,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE;EAC7C,CAAC,IAAI;EACL;EACA,EAAE,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACnD,EAAE,CAAC,OAAO,GAAG,EAAE;EACf;EACA,EAAE;AACF;EACA,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;EAC9B,EAAE,OAAO,UAAU,CAAC;EACpB,EAAE;AACF;EACA,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;AACpB;EACA;EACA,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACvC,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC;EACA,CAAC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;EACzF,CAAC;AACD;EACA,SAASO,QAAM,CAAC,KAAK,EAAE;EACvB,CAAC,IAAI;EACL,EAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;EACnC,EAAE,CAAC,OAAO,GAAG,EAAE;EACf,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAChD;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,GAAG,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD;EACA,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,OAAO,KAAK,CAAC;EACf,EAAE;EACF,CAAC;AACD;EACA,SAAS,wBAAwB,CAAC,KAAK,EAAE;EACzC;EACA,CAAC,IAAI,UAAU,GAAG;EAClB,EAAE,QAAQ,EAAE,cAAc;EAC1B,EAAE,QAAQ,EAAE,cAAc;EAC1B,EAAE,CAAC;AACH;EACA,CAAC,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACtC,CAAC,OAAO,KAAK,EAAE;EACf,EAAE,IAAI;EACN;EACA,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvD,GAAG,CAAC,OAAO,GAAG,EAAE;EAChB,GAAG,IAAI,MAAM,GAAGA,QAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC;EACA,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;EAC5B,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EAClC,IAAI;EACJ,GAAG;AACH;EACA,EAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACnC,EAAE;AACF;EACA;EACA,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;AAC9B;EACA,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC;EACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C;EACA,EAAE,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EACvB,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/D,EAAE;AACF;EACA,CAAC,OAAO,KAAK,CAAC;EACd,CAAC;AACD;MACA,kBAAc,GAAG,UAAU,UAAU,EAAE;EACvC,CAAC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;EACrC,EAAE,MAAM,IAAI,SAAS,CAAC,qDAAqD,GAAG,OAAO,UAAU,GAAG,GAAG,CAAC,CAAC;EACvG,EAAE;AACF;EACA,CAAC,IAAI;EACL,EAAE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C;EACA;EACA,EAAE,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC;EACxC,EAAE,CAAC,OAAO,GAAG,EAAE;EACf;EACA,EAAE,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;EAC9C,EAAE;EACF,CAAC;;EC3FD,IAAA,YAAc,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK;EACxC,CAAC,IAAI,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,EAAE;EACrE,EAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;EACvE,EAAE;AACF;EACA,CAAC,IAAI,SAAS,KAAK,EAAE,EAAE;EACvB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAClB,EAAE;AACF;EACA,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClD;EACA,CAAC,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;EAC5B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAClB,EAAE;AACF;EACA,CAAC,OAAO;EACR,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;EACjC,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;EACjD,EAAE,CAAC;EACH,CAAC;;ECpBD,IAAA,SAAc,GAAG,UAAU,GAAG,EAAE,SAAS,EAAE;EAC3C,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;EACd,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACtC;EACA,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB;EACA,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;EACxE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAClB,GAAG;EACH,EAAE;AACF;EACA,CAAC,OAAO,GAAG,CAAC;EACZ,CAAC;;;GCfD,MAAMC,iBAAe,GAAGR,eAA4B,CAAC;GACrD,MAAM,eAAe,GAAGC,kBAA+B,CAAC;GACxD,MAAMQ,cAAY,GAAGP,YAAyB,CAAC;GAC/C,MAAM,YAAY,GAAGE,SAAqB,CAAC;AAC3C;GACA,MAAM,iBAAiB,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AACzE;EACA,CAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACpE;GACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;IACvC,QAAQ,OAAO,CAAC,WAAW;EAC5B,GAAE,KAAK,OAAO;EACd,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;EACpC,KAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC;OACI;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE;AACL;EACA,KAAI,OAAO;EACX,MAAK,GAAG,MAAM;EACd,MAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;EAC/F,MAAK,CAAC;EACN,KAAI,CAAC;AACL;EACA,GAAE,KAAK,SAAS;EAChB,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D;AACL;EACA,KAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACvF,KAAI,CAAC;AACL;EACA,GAAE,KAAK,sBAAsB;EAC7B,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D;AACL;EACA,KAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1F,KAAI,CAAC;AACL;KACE,KAAK,OAAO,CAAC;KACb,KAAK,WAAW,CAAC;KACjB,KAAK,mBAAmB,EAAE;EAC5B,IAAG,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,KAAK,mBAAmB;EAClE,KAAI,KAAK;EACT,KAAI,GAAG,CAAC;AACR;EACA,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA;OACI,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACxC;EACA,KAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E;AACL;OACI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;EACjF,KAAI,CAAC;MACF;AACH;KACE;EACF,IAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK;OAChC;QACC,KAAK,KAAK,SAAS;EACxB,OAAM,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;EACzC,OAAM,OAAO,CAAC,eAAe,IAAI,KAAK,KAAK,EAAE,CAAC;SACxC;QACD,OAAO,MAAM,CAAC;QACd;AACL;EACA,KAAI,IAAI,KAAK,KAAK,IAAI,EAAE;EACxB,MAAK,OAAO,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACzC;AACL;EACA,KAAI,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACrF,KAAI,CAAC;KACH;IACD;AACD;GACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;IACtC,IAAI,MAAM,CAAC;AACZ;IACC,QAAQ,OAAO,CAAC,WAAW;EAC5B,GAAE,KAAK,OAAO;EACd,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC;OACI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtC;OACI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;EACxC,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EACxC,KAAI,CAAC;AACL;EACA,GAAE,KAAK,SAAS;EAChB,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC7B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC;OACI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACnC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,CAAC;AACL;EACA,GAAE,KAAK,sBAAsB;EAC7B,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OAC9B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpC;OACI,IAAI,CAAC,MAAM,EAAE;EACjB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QACnC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,CAAC;AACL;KACE,KAAK,OAAO,CAAC;EACf,GAAE,KAAK,WAAW;EAClB,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;EACvC,KAAI,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;OAC1F,MAAM,cAAc,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;EACpI,KAAI,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;EAC5D,KAAI,MAAM,QAAQ,GAAG,OAAO,IAAI,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAChL,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;EAChC,KAAI,CAAC;AACL;EACA,GAAE,KAAK,mBAAmB;EAC1B,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;OACnC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC;OACI,IAAI,CAAC,OAAO,EAAE;EAClB,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;EAC/D,MAAK,OAAO;QACP;AACL;EACA,KAAI,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI;EACrC,MAAK,EAAE;QACF,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAClF;EACA,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;EACxC,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;EACnC,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;EAC/D,KAAI,CAAC;AACL;KACE;EACF,IAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;EACvC,KAAI,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;EACxC,MAAK,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,MAAK,OAAO;QACP;AACL;EACA,KAAI,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,CAAC;KACH;IACD;AACD;GACA,SAAS,4BAA4B,CAAC,KAAK,EAAE;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EACtD,GAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;KAC5E;IACD;AACD;EACA,CAAA,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,EAAC,IAAI,OAAO,CAAC,MAAM,EAAE;EACrB,GAAE,OAAO,OAAO,CAAC,MAAM,GAAGI,iBAAe,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAC3E;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;EACA,CAAA,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,EAAC,IAAI,OAAO,CAAC,MAAM,EAAE;EACrB,GAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;KAC9B;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;GACA,SAAS,UAAU,CAAC,KAAK,EAAE;EAC3B,EAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC3B,GAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;KACpB;AACF;EACA,EAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC9B,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACvC,KAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;OACrC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;GACA,SAAS,UAAU,CAAC,KAAK,EAAE;IAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACtC,EAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;KACrB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;KAClC;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;GACA,SAAS,OAAO,CAAC,GAAG,EAAE;EACtB,EAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACpC,EAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;KACrB,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC5B;AACF;IACC,OAAO,IAAI,CAAC;IACZ;AACD;GACA,SAAS,OAAO,CAAC,KAAK,EAAE;EACxB,EAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EACvC,EAAC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;KACtB,OAAO,EAAE,CAAC;KACV;AACF;IACC,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnC;AACD;EACA,CAAA,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,EAAC,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;EACjH,GAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,EAAE;KAC1H,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;KACvC;AACF;IACC,OAAO,KAAK,CAAC;IACb;AACD;EACA,CAAA,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;EAC/B,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,IAAI,EAAE,IAAI;KACV,WAAW,EAAE,MAAM;KACnB,oBAAoB,EAAE,GAAG;KACzB,YAAY,EAAE,KAAK;KACnB,aAAa,EAAE,KAAK;KACpB,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,4BAA4B,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC5D;EACA,EAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACjD;EACA;IACC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC;EACA,EAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;KAC9B,OAAO,GAAG,CAAC;KACX;AACF;EACA,EAAC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC5C;IACC,IAAI,CAAC,KAAK,EAAE;KACX,OAAO,GAAG,CAAC;KACX;AACF;IACC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;EACvC,GAAE,IAAI,KAAK,KAAK,EAAE,EAAE;EACpB,IAAG,SAAS;MACT;AACH;KACE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAGC,cAAY,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3F;EACA;EACA;EACA,GAAE,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAClJ,GAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;KAC5C;AACF;IACC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;EACrC,GAAE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;MAChD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACvC,KAAI,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;OACzC;EACJ,IAAG,MAAM;MACN,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;MACtC;KACD;AACF;EACA,EAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;KAC3B,OAAO,GAAG,CAAC;KACX;AACF;EACA,EAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK;EACxH,GAAE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACzB,GAAE,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC5E;MACG,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;EACnC,IAAG,MAAM;EACT,IAAG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;MACpB;AACH;KACE,OAAO,MAAM,CAAC;KACd,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB;AACD;EACA,CAAA,OAAA,CAAA,OAAA,GAAkB,OAAO,CAAC;EAC1B,CAAA,OAAA,CAAA,KAAA,GAAgB,KAAK,CAAC;AACtB;EACA,CAAA,OAAA,CAAA,SAAA,GAAoB,CAAC,MAAM,EAAE,OAAO,KAAK;IACxC,IAAI,CAAC,MAAM,EAAE;KACZ,OAAO,EAAE,CAAC;KACV;AACF;EACA,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,WAAW,EAAE,MAAM;KACnB,oBAAoB,EAAE,GAAG;KACzB,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,4BAA4B,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC5D;IACC,MAAM,YAAY,GAAG,GAAG;KACvB,CAAC,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;MAClD,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACjD,GAAE,CAAC;AACH;EACA,EAAC,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAClD;EACA,EAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AACvB;IACC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;EACxC,GAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;MACvB,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MAC9B;KACD;AACF;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC;EACA,EAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE;KAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACxB;AACF;EACA,EAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;EACxB,GAAE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B;EACA,GAAE,IAAI,KAAK,KAAK,SAAS,EAAE;MACxB,OAAO,EAAE,CAAC;MACV;AACH;EACA,GAAE,IAAI,KAAK,KAAK,IAAI,EAAE;EACtB,IAAG,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;MAC5B;AACH;EACA,GAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;EAC5B,IAAG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,KAAK,mBAAmB,EAAE;OACtE,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;OACnC;AACJ;EACA,IAAG,OAAO,KAAK;QACV,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;EAC/B,MAAK,IAAI,CAAC,GAAG,CAAC,CAAC;MACZ;AACH;EACA,GAAE,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7D,GAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACxC,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,QAAA,GAAmB,CAAC,GAAG,EAAE,OAAO,KAAK;EACrC,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAGA,cAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C;IACC,OAAO,MAAM,CAAC,MAAM;KACnB;EACF,IAAG,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;MAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;MACnC;EACH,GAAE,OAAO,IAAI,OAAO,CAAC,uBAAuB,IAAI,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE;EACvG,GAAE,CAAC;EACH,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,YAAA,GAAuB,CAAC,MAAM,EAAE,OAAO,KAAK;EAC5C,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,MAAM,EAAE,IAAI;KACZ,MAAM,EAAE,IAAI;KACZ,CAAC,wBAAwB,GAAG,IAAI;KAChC,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAClD,EAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvE;EACA,EAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,WAAW,EAAE;KAChB,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;KAChC;AACF;IACC,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAChC,EAAC,IAAI,MAAM,CAAC,kBAAkB,EAAE;KAC9B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACxH;AACF;EACA,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EACtC,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,IAAA,GAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK;EAC3C,EAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;KACvB,uBAAuB,EAAE,IAAI;KAC7B,CAAC,wBAAwB,GAAG,KAAK;KACjC,EAAE,OAAO,CAAC,CAAC;AACb;EACA,EAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC3E,EAAC,OAAO,OAAO,CAAC,YAAY,CAAC;EAC7B,GAAE,GAAG;EACL,GAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC;EACpC,GAAE,kBAAkB;KAClB,EAAE,OAAO,CAAC,CAAC;EACb,EAAC,CAAC;AACF;EACA,CAAA,OAAA,CAAA,OAAA,GAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK;EAC9C,EAAC,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpH;IACC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IACrD,CAAA;;;ECjeD,IAAIC,GAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAIC,GAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAACC,GAAC,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAIC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAACH,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACI,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAED,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGF,GAAC,CAAC,IAAI,IAAI,CAAC,IAAIA,GAAC,CAAC,CAAC,CAAC,CAACC,GAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAiV,MAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAY,SAAS,MAAM,EAAE,CAAC,OAAO,OAAO,OAAO,EAAE,WAAW,EAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAQ,SAAS,aAAa,EAAE,CAAC,OAAM,CAACE,aAAC,EAAE,EAAE,CAAC,CAACC,cAAC,EAAE,EAAE,SAAS,CAAC,OAAO,GAAG,oBAAoB,CAAQ,SAAS,SAAS,EAAE,CAAC,OAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,cAAC,EAAE,EAAE,CAAC,CAACD,aAAC,EAAE,CAAQ,SAAS,cAAc,EAAE,CAAC,OAAO,aAAa,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAQ,SAAS,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,aAAa,EAAE,EAAE,OAAO,MAAM,EAAE,WAAW,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAACE,iBAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAACH,GAAC,CAACA,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACI,qBAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,EAAE,CAAC,OAAOC,mBAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAACC,aAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,WAAW,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAACC,MAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,SAAS,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACD,aAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAQ,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAQ,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAQ,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAa,MAAC,OAAO,CAAC,CAAC,EAAE,EAAS,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAQ,SAAS,oBAAoB,CAAC,CAAC,CAACE,kBAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAACC,mBAAC,CAAC,CAAC,EAAED,kBAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,OAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,OAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,CAAC,wDAAwD,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOE,qBAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAED,mBAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,EAAEA,mBAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAQ,eAAe,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAACR,aAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAQ,eAAe,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAQ,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,MAAM,EAAE,CAAC,OAAO,OAAO,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,sCAAsC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;ECQlqN;EACA,CAAA,CAAC,YAAY;AAEb;EACA,GAAE,IAAI,WAAW,GAAG,uBAAuB,CAAC;EAC5C,GAAE,IAAI,cAAc,GAAG,yBAAyB,CAAC;EACjD,GAAE,IAAI,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;KACxC,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;EAClC,GAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;OAC1B,MAAM,GAAG,KAAK,CAAC;MAChB;KACD,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;KACrD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnH,IAAI,OAAO,EAAE;OACX,IAAI,GAAGU,cAAM,CAAC;MACf,MAAM,IAAI,UAAU,EAAE;OACrB,IAAI,GAAG,IAAI,CAAC;MACb;EACH,GAAE,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,QAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;EAE7F,GAAE,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,OAAO,WAAW,KAAK,WAAW,CAAC;KACvF,IAAI,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EAC/C,GAAE,IAAI,aAAa,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;EACrD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;EACnD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EACjD,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;EAC7C,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;KAC3B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU;OACvF,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;EAC/E,KAAI,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;EAC3E,KAAI,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU;EACpF,KAAI,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;EACtF,GAAE,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAChC,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,GAAE,IAAI,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACvE,IAAI,cAAc,GAAG;OACnB,KAAK,EAAE,GAAG;OACV,KAAK,EAAE,GAAG;EACd,IAAG,CAAC;AACJ;KACE,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;EACjD,KAAI,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;EACnC,OAAM,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;EACtE,MAAK,CAAC;MACH;AACH;EACA,GAAE,IAAI,YAAY,KAAK,IAAI,CAAC,+BAA+B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;EACrF,KAAI,WAAW,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE;EACxC,OAAM,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;EAC7F,MAAK,CAAC;MACH;AACH;KACE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;OAC5D,OAAO,UAAU,OAAO,EAAE;EAC9B,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EAC3E,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,uBAAuB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EACrE,KAAI,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE;EAC1C,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EACjF,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,wBAAwB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;OAClE,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;SAC1C,OAAO,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EACtF,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,sBAAsB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;OAChE,OAAO,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;SAC5C,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;EACtF,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;KACE,IAAI,mBAAmB,GAAG,UAAU,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;EAC3E,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAClD,OAAM,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;EACjC,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClD;OACD,OAAO,MAAM,CAAC;EAClB,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;OAC1C,IAAI,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC1D,KAAI,MAAM,CAAC,MAAM,GAAG,YAAY;SAC1B,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;EAC7C,MAAK,CAAC;EACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;SACjC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC7C,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC1E,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;OAC/C,IAAI,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC/D,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE;SACpC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;EACnD,MAAK,CAAC;OACF,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE;EACnD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EACvD,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC/E,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;EACpD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;OAC7B,IAAI,MAAM,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;OAC5D,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;EAChD,OAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;EACpB,SAAQ,OAAO,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;EAC1D,QAAO,MAAM;WACL,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UACjE;EACP,MAAK,CAAC;EACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;EACzD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC7D,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAChF,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,gBAAgB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;EAClD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;OAC7B,IAAI,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;OAC1D,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;EAClD,OAAM,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3F,MAAK,CAAC;EACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;EAC3D,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;EAC/D,MAAK,CAAC;OACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EAC9E,IAAG,CAAC;AACJ;KACE,IAAI,UAAU,GAAG;EACnB,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;EACvF,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;EAC9E,KAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE;EAChG,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE;EACnG,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE;EAC/F,IAAG,CAAC;AACJ;KACE,IAAI,OAAO,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,CAAC;AACrC;EACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC9C,KAAI,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,KAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;EAC9B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EAC1C,OAAM,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACtD,OAAM,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;EACnC,OAAM,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;EAC/E,OAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;WAC7B,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACrD,SAAQ,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;WAChC,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;UAC9C;QACF;MACF;AACH;KACE,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EAC7C,KAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACrB,KAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;EAChB,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EACtB,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;EAC3B,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;EACnB,KAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;OAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;EAC1C,KAAI,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC;OACpC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;SAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf;MACF;AACH;KACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;EAC/C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,OAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACjC;EACL,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,OAAO,CAAC;EACzC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC7B,SAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;EAC9B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,MAAM,IAAI,YAAY,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE;EACxE,WAAU,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;aAClC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;EAC7D,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;cAC9B;YACF;EACT,QAAO,MAAM;EACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B;SACD,SAAS,GAAG,IAAI,CAAC;QAClB;EACL,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM;EACjF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACnE;EACA,KAAI,OAAO,KAAK,GAAG,MAAM,EAAE;EAC3B,OAAM,IAAI,IAAI,CAAC,KAAK,EAAE;EACtB,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;WACnB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC/B,SAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC7C,WAAU,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf;UACF;SACD,IAAI,SAAS,EAAE;EACrB,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;EACvE,WAAU,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACpD;EACT,QAAO,MAAM;EACb,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;aAC7D,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EAC3C,WAAU,IAAI,IAAI,GAAG,IAAI,EAAE;EAC3B,aAAY,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EACrD,YAAW,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;eACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eACzD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;cAC5D,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;eAC1C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EACvE,YAAW,MAAM;eACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;eAClF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eACnE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;eAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;cAC5D;YACF;UACF;EACP,OAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;EAC7B,OAAM,IAAI,CAAC,IAAI,SAAS,EAAE;EAC1B,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;WAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;WAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;aAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB;EACT,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,SAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAC1B,QAAO,MAAM;EACb,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;UAChB;QACF;OACD,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE;OAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;EACpB,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACf,KAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,OAAO,CAAC,GAAG,CAAC,EAAE;EAClB,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACvB,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SACZ,EAAE,CAAC,CAAC;QACL;OACD,IAAI,KAAK,EAAE;EACf,OAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACvB,KAAI,OAAO,KAAK,CAAC,MAAM,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,EAAE;EACjD,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,CAAC;EACrC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC7B,SAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;EAC1B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,MAAM,IAAI,YAAY,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE;EACpE,WAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;aAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;EACzD,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;cAC9B;YACF;EACT,QAAO,MAAM;EACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B;SACD,SAAS,GAAG,IAAI,CAAC;QAClB;OACD,IAAI,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;OACnC,IAAI,SAAS,EAAE;SACb,KAAK,GAAG,MAAM,CAAC;EACrB,MAAK,MAAM;EACX,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;WACnC,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACrC,SAAQ,IAAI,IAAI,GAAG,IAAI,EAAE;aACf,KAAK,IAAI,CAAC,CAAC;EACrB,UAAS,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;aACvB,KAAK,IAAI,CAAC,CAAC;YACZ,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;aAC1C,KAAK,IAAI,CAAC,CAAC;EACrB,UAAS,MAAM;aACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aAC1E,KAAK,IAAI,CAAC,CAAC;YACZ;UACF;QACF;OACD,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EACpC,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;OACjB,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC,EAAE;OAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;SACpC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC;OACD,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;EACrC,KAAI,IAAI,KAAK,GAAG,EAAE,CAAC;EACnB,KAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;EAChC,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;OACnB,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;EAC1C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;EACxB,OAAM,OAAO;QACR;EACL,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;OACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/F,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACtC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,SAAS,EAAE;SACzC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;EACrC,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAC3C,SAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACf;QACF;OACD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;OACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;SAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB;EACL,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACT,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;EACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;EACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;EAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjD,KAAI,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC;EACxB,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;EAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;EAChE,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,SAAQ,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;EACvE,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;EAC1E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;EAC3E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;UACrE;EACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;EAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;WACL,CAAC,GAAG,CAAC,CAAC;UACP;QACF;OACD,IAAI,UAAU,EAAE;EACpB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,OAAM,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;EACtE,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;WAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;UACzE;EACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;WAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;UAC1E;QACF;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;EAC7C,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;EACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;EAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;OAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;OACjC,IAAI,MAAM,CAAC;OACX,IAAI,UAAU,EAAE;EACpB,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACxD,MAAK,MAAM;EACX,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC;OACD,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;EACxC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;EAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;WACxD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACjB;EACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;EAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;UACN;QACF;OACD,IAAI,UAAU,EAAE;SACd,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACjC;OACD,OAAO,MAAM,CAAC;EAClB,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;AACzD;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;EACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;EACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;EAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;OAC7C,IAAI,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;EAClC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;EAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;EAChE,SAAQ,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;EACxB,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;WACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EACrC,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;EAChD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;EACjD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;UAC1C;EACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;EAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;UACN;QACF;OACD,IAAI,UAAU,EAAE;EACpB,OAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;EACtB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EACnC,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;EAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;UACzC;EACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;EAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;UAC1C;QACF;OACD,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;EAC3C,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;MAC9C;AACH;EACA,GAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;OACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;OACnC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAChD,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,GAAG,UAAU,CAAC,EAAE;OACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACvD,OAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;EACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;EACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;SAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;EACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAA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AC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;EACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE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AAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;OACd,WAAW,GAAG,UAAU,CAAC;MAC1B;AACH;KACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;OACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;OAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C;EACA;EACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;SACrB,OAAO,GAAG,CAAC,CAAC;EAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;EACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;EACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;EACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;EAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;WAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;EAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;WACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;EACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;WACzB,MAAM,IAAI,SAAS,CAAC;UACrB;SACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACrB,KAAK,GAAG,MAAM,CAAC;SACf,MAAM,GAAG,OAAO,CAAC;QAClB;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC3B,MAAK,MAAM;EACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;AACL;EACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;MACrB;AACH;KACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;EACvC;EACA;EACA;OACI,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MACjC;AACH;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;OAC7C,IAAI,GAAG,CAAC;OACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;SAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;SACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;SACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACrC,MAAK,MAAM;SACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClC;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AAqMJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;OAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;OAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;EACA,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;EACA;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/C,KAAK,KAAK,EAAE,CAAC;SACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;EACnC;EACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;SACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAChC;AACL;EACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;AACL;OACI,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;EACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;OACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;EAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;EACA;EACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;OACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;SAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;QACvB;AACL;EACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;SAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;WACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;WACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAClB;QACF;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;OAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;OAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;EAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;OACrD,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;EACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;EACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;WAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;WAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;UAC/B;AACP;SACM,IAAI,KAAK,EAAE;WACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;UACf;QACF;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACnC;AACP;SACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACnB;AACP;EACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;EAC7C;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;EAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;OAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;OAC9C,IAAI,CAAC,CAAC;OACN,IAAI,IAAI,EAAE;SACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;EACpC,MAAK,MAAM;SACL,CAAC,GAAG,CAAC,CAAC;QACP;AACL;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;EACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;OACI,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;EACA;OACI,IAAI,WAAW,EAAE;EACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACtC;EACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;EACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;UACnC;EACP,MAAK,MAAM;SACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB;AACL;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;OACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;SAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;EACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QACrB;AACL;EACA;EACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;SAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;QACjD;AACL;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;SACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC7D;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;EAC7C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;OACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;OACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;EAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;OACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;EACA;OACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;EACA;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;EACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACrB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;OAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;OAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SACpB,OAAO,IAAI,CAAC;QACb;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;SACX,CAAC,EAAE,CAAC;QACL;EACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACrC;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;EAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;EACA;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;EAC3D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WAClB,OAAO,IAAI,CAAC;UACb;AACP;EACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACL;EACA;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;EACA;OACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;SAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;WACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9B,QAAO,MAAM;WACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;UACrB;QACF;EACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;EAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACL;OACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,MAAK,MAAM;EACX;SACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;WAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;UACxB;QACF;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;EACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;OACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;OAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;OAC7B,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;OACI,IAAI,CAAC,CAAC;EACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;EAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;EAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;EACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACvC;OACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;EAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;EACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACvC;AACL;OACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1C;EACA;EACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;OACrB,KAAK,GAAG,CAAC,CAAC;EACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;EACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;SAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QAC/B;EACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;OACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;EACA;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;OACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;EACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;EACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC;AACL;EACA;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;OAC5B,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;EACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;SACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;EACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAChB;QACF;AACL;EACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;SACvB,CAAC,GAAG,IAAI,CAAC;SACT,IAAI,CAAC,EAAE;WACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAChB;QACF;AACL;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;EACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;EACA;EACA;EACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;SACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;WACvB,EAAE,EAAE,CAAC;EACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;WACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjB;UACF;SACD,IAAI,CAAC,EAAE;WACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;UACjB;QACF;OACD,IAAI,CAAC,EAAE;EACX,OAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACZ;EACL,KAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACf;EACA;OACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;EACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB;AACL;EACA,KAAI,OAAO;EACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;SACd,GAAG,EAAE,CAAC;EACZ,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;OAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;EACvB,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACtB,QAAO,CAAC;QACH;AACL;EACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;UACrB;AACP;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;WACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf;UACF;AACP;EACA,OAAM,OAAO;WACL,GAAG,EAAE,GAAG;WACR,GAAG,EAAE,GAAG;EAChB,QAAO,CAAC;QACH;AACL;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;UACrB;AACP;EACA,OAAM,OAAO;WACL,GAAG,EAAE,GAAG;EAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;EACpB,QAAO,CAAC;QACH;AACL;OACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;EAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;WACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf;UACF;AACP;EACA,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;WACZ,GAAG,EAAE,GAAG;EAChB,QAAO,CAAC;QACH;AACL;EACA;AACA;EACA;EACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EACvD,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;WACd,GAAG,EAAE,IAAI;EACjB,QAAO,CAAC;QACH;AACL;EACA;EACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;EAC1B,SAAQ,OAAO;EACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC5B,GAAG,EAAE,IAAI;EACnB,UAAS,CAAC;UACH;AACP;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;EAC1B,SAAQ,OAAO;aACL,GAAG,EAAE,IAAI;EACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/C,UAAS,CAAC;UACH;AACP;EACA,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,QAAO,CAAC;QACH;AACL;OACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;EAC9C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;EAC9C,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;EAC7C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;OAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;EACA;EACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;OACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;OACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;EACA;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AAC1D;EACA;OACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrE,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;EACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;OACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QAC7C;AACL;EACA,KAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;EACjC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC3B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;EACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;EACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;EACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;QACjB;AACL;EACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;OACd,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf;AACL;EACA;OACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;EACA;OACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;OACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACZ,EAAE,CAAC,CAAC;QACL;AACL;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;EACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;EACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;EACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;aACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;EACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;cACZ;AACX;EACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;UACF;AACP;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;aACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;EACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;cACZ;AACX;EACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;UACF;AACP;SACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;EACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,QAAO,MAAM;EACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACX;QACF;AACL;EACA,KAAI,OAAO;SACL,CAAC,EAAE,CAAC;SACJ,CAAC,EAAE,CAAC;EACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;EACtB,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;EACA;EACA;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;OACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf;AACL;OACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;EACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;EACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;EAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChB;AACX;EACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd;UACF;AACP;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;EACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;EAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChB;AACX;EACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd;UACF;AACP;SACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;EACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACpB,QAAO,MAAM;EACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;UACb;QACF;AACL;OACI,IAAI,GAAG,CAAC;OACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;SACnB,GAAG,GAAG,EAAE,CAAC;EACf,MAAK,MAAM;SACL,GAAG,GAAG,EAAE,CAAC;QACV;AACL;OACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;OACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;EACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;EACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;EACA;EACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;EAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACL;EACA,KAAI,GAAG;EACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;EACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;AACP;SACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB;EACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;WACV,CAAC,GAAG,CAAC,CAAC;WACN,CAAC,GAAG,CAAC,CAAC;EACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EAC7C,SAAQ,MAAM;UACP;AACP;EACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,QAAQ,IAAI,EAAE;AACnB;EACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC3B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;EACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;OACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;EACA;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnB,OAAO,IAAI,CAAC;QACb;AACL;EACA;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,CAAC,IAAI,KAAK,CAAC;EACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;SACjB,CAAC,IAAI,SAAS,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;OACD,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACpD,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;OAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;EACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;OACI,IAAI,GAAG,CAAC;EACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;SACnB,GAAG,GAAG,CAAC,CAAC;EACd,MAAK,MAAM;SACL,IAAI,QAAQ,EAAE;EACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;UACZ;AACP;SACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;SACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC;EACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;OACzC,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;EAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;OACzC,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C;OACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;EACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;EAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;EACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;WAChB,GAAG,GAAG,CAAC,CAAC;UACT;EACP,OAAM,MAAM;QACP;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACjC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;KACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;OAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;EACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC9C,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;OACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;EACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;OACf,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;OAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;EAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;OAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;OAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;OACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;OACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;EAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;OAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,IAAI,MAAM,GAAG;OACX,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,MAAM,EAAE,IAAI;EAChB,IAAG,CAAC;AACJ;EACA;EACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;EAC5B;EACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;OACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;OACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;OAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;OACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;MACxB;AACH;KACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;OACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;OAC9C,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;EACpD;EACA;EACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;OACZ,IAAI,IAAI,CAAC;AACb;EACA,KAAI,GAAG;SACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;EAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;OACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;SACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;EACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;SAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACrB,MAAK,MAAM;EACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;EACjC;EACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;EAClB,QAAO,MAAM;EACb;EACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;UACZ;QACF;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACjC,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,yEAAyE,CAAC,CAAC;MAC9E;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EACxD;EACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;EACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC;EACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;EACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;SACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACvB,OAAM,OAAO;QACR;AACL;EACA;OACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;EACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;SAC3D,IAAI,GAAG,IAAI,CAAC;QACb;OACD,IAAI,MAAM,EAAE,CAAC;OACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;OAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;EACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM;EACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACnB;EACL,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC9C;OACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;EACA;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;SAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;QACxC;AACL;EACA;EACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;EACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;UACd;QACF;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,gEAAgE,CAAC,CAAC;MACrE;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,uDAAuD,CAAC,CAAC;MAC5D;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;KACE,SAAS,MAAM,IAAI;EACrB;OACI,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,OAAO;SACP,qEAAqE,CAAC,CAAC;MAC1E;EACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;KACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAChD;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;EACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;SACxB,EAAE,MAAM,EAAE,CAAC;AACjB;SACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB,KAAK,GAAG,EAAE,CAAC;QACZ;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;QACjC;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;EACpC;OACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;OACI,IAAI,KAAK,CAAC;EACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;EACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3B,MAAK,MAAM;SACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAC1C;EACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;OACI,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;EACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;EACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACzB,MAAK,MAAM;SACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;EACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB;MACF;AACH;KACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;OAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;OAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;EACrD,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;EACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;EAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;SAC7B,iCAAiC,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE;EACA,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;OACxC,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;EACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QAClB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;OACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;OACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;EACA;EACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;SACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzB;AACL;EACA;EACA;EACA;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;SACtC,CAAC,EAAE,CAAC;EACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;OACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;EACA;EACA;EACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;EAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;EACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB;AACL;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;OACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;OACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;OACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;EAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;UACpB;EACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;SACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;SACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChB,CAAC,GAAG,CAAC,CAAC;QACP;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;SACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACrC,MAAK,MAAM;EACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB;EACL,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;EACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;OACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;EACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC;AACL;EACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;OACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;EACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,KAAK,GAAG,EAAE,CAAC;QACZ;AACL;EACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;WACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;aAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB;AACT;WACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;aAC9B,UAAU,GAAG,CAAC,CAAC;EACzB,WAAU,SAAS;YACV;AACT;WACQ,OAAO,KAAK,CAAC,CAAC;WACd,OAAO,IAAI,GAAG,CAAC;WACf,UAAU,EAAE,CAAC;EACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;EACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;WAClC,UAAU,GAAG,CAAC,CAAC;WACf,OAAO,GAAG,CAAC,CAAC;UACb;SACD,KAAK,GAAG,EAAE,CAAC;QACZ;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;OACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;OACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;EACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;EAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;OACf,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;EACA;AACA;KACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;OAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;OACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;OAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;EAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACtC;AACL;EACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;OACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACnC;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;KACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;EACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC5C,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;EAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;OACb,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;SAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACb,OAAO,CAAC,CAAC;QACV;AACL;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;OACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB;AACL;EACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;OACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB;AACL;EACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EAC1C;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;IACH,EAAmC,MAAM,EAAEH,cAAI,CAAC,CAAA;;;;;EC19G1C,MAAM6B,SAAO,GAAG,iBAAiB;;ECSxC,IAAIG,IAAE,GAAGC,IAAG,CAAC,EAAE,CAAC;EAIhB,MAAMH,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EACnC,MAAMK,mBAAiB,GAAG,EAAE,CAAC;EAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;EAC3B,SAAS,cAAc,CAAC,KAAK,EAAE;EACtC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;EAC3D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;EAC1D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;EACpE,QAAQ,WAAW,CAAC,KAAK,CAAC;EAC1B,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC;EACrC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;EACxB,CAAC;EACD;EACA,IAAI,oBAAoB,GAAG,KAAK,CAAC;EAC1B,MAAM,SAAS,CAAC;EACvB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;EACvC,QAAQ,IAAI,gBAAgB,KAAKA,mBAAiB,EAAE;EACpD,YAAYJ,QAAM,CAAC,UAAU,CAAC,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC3H,gBAAgB,SAAS,EAAE,iBAAiB;EAC5C,aAAa,CAAC,CAAC;EACf,SAAS;EACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,QAAQ,CAAC,KAAK,EAAE;EACpB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,MAAM,CAAC,KAAK,EAAE;EAClB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACrD,KAAK;EACL,IAAI,GAAG,GAAG;EACV,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAClC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1D,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACxB,YAAYK,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;EAClD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAC3B,YAAYA,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;EAClD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAC3B,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;EACxD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;EACvD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;EACxD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;EACjD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,UAAU,GAAG;EACjB,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACtC,KAAK;EACL,IAAI,MAAM,GAAG;EACb,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;EACnC,KAAK;EACL,IAAI,QAAQ,GAAG;EACf,QAAQ,IAAI;EACZ,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;EACzC,SAAS;EACT,QAAQ,OAAO,KAAK,EAAE;EACtB,YAAYA,YAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;EAChE,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,QAAQ,GAAG;EACf,QAAQ,IAAI;EACZ,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC3C,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE,GAAG;EACrB,QAAQ,OAAOL,QAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC/G,YAAY,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;EAClC,SAAS,CAAC,CAAC;EACX,KAAK;EACL,IAAI,QAAQ,GAAG;EACf;EACA,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EAClC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EACrC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;EAC3C,oBAAoB,oBAAoB,GAAG,IAAI,CAAC;EAChD,oBAAoBA,QAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;EACzG,iBAAiB;EACjB,aAAa;EACb,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EAC1C,gBAAgBA,QAAM,CAAC,UAAU,CAAC,gFAAgF,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;EAC3J,aAAa;EACb,iBAAiB;EACjB,gBAAgBA,QAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;EAC1H,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,WAAW,GAAG;EAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;EACzB,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,EAAE;EAChB,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;EAC9D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,KAAK,YAAY,SAAS,EAAE;EACxC,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;EACjD,gBAAgB,OAAO,IAAI,SAAS,CAACI,mBAAiB,EAAEE,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACtE,aAAa;EACb,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;EAC3C,gBAAgB,OAAO,IAAI,SAAS,CAACF,mBAAiB,EAAEE,OAAK,CAAC,IAAIJ,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9E,aAAa;EACb,YAAY,OAAOF,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACzF,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;EAC3B,gBAAgBK,YAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;EACjE,aAAa;EACb,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;EACzD,gBAAgBA,YAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChE,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACjD,SAAS;EACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC;EAC/B,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;EAC5C,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;EACvD,SAAS;EACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;EAC/B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;EACrD,SAAS;EACT,QAAQ,IAAI,QAAQ,EAAE;EACtB;EACA,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;EACtC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;EACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;EAC/C,oBAAoB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC/C,iBAAiB;EACjB,aAAa;EACb,iBAAiB;EACjB;EACA,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;EACxC;EACA,gBAAgB,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;EAClE,oBAAoB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;EACvC,iBAAiB;EACjB,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;EAC/C,oBAAoB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EAC/F,wBAAwB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACnD,qBAAqB;EACrB,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,OAAOL,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACpF,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;EAC9B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;EAC/C,KAAK;EACL,CAAC;EACD;EACA,SAASM,OAAK,CAAC,KAAK,EAAE;EACtB;EACA,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACrC,QAAQ,OAAOA,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC1B;EACA,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACnC;EACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC9B,YAAYN,QAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACrE,SAAS;EACT;EACA,QAAQ,KAAK,GAAGM,OAAK,CAAC,KAAK,CAAC,CAAC;EAC7B;EACA,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;EAC9B,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT;EACA,QAAQ,OAAO,GAAG,GAAG,KAAK,CAAC;EAC3B,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;EACxC,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;EAC7B,KAAK;EACL;EACA,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;EACxB,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EAC1B,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC3C,KAAK;EACL;EACA,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;EACjE,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC;EACD,SAAS,WAAW,CAAC,KAAK,EAAE;EAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,CAAC;EACD,SAAS,IAAI,CAAC,KAAK,EAAE;EACrB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EACpD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACxB,QAAQ,QAAQ,IAAIJ,IAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;EACpD,KAAK;EACL,IAAI,OAAO,IAAIA,IAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACxC,CAAC;EACD,SAASG,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;EAC7C,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;EAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;EACvB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7B,KAAK;EACL,IAAI,OAAOL,QAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;EACzE,CAAC;EACD;EACO,SAAS,WAAW,CAAC,KAAK,EAAE;EACnC,IAAI,OAAO,CAAC,IAAIE,IAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC5C;;ECvSA,MAAMF,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EAEnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;EAC7B,MAAMQ,MAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;EACtD,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;EAC1D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;EAC7B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7B,KAAK;EACL,IAAI,OAAOP,QAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;EAC3E,CAAC;EACD;EACA,IAAI,KAAK,GAAG,GAAG,CAAC;EAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;EAC3B,IAAI,KAAK,IAAI,KAAK,CAAC;EACnB,CAAC;EACD;EACA,SAAS,aAAa,CAAC,QAAQ,EAAE;EACjC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;EACxC,QAAQ,IAAI;EACZ,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;EAC3D,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE,GAAG;EACrB,KAAK;EACL,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;EAC/F,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;EACpD,KAAK;EACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EACnF,CAAC;EACM,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;EAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;EACrB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC/C;EACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAACO,MAAI,CAAC,CAAC;EACpC,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;EACpD,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACpD,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;EAClC,KAAK;EACL;EACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;EACzD,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;EACnD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;EACjC,QAAQ,KAAK,GAAG,KAAK,CAAC;EACtB,KAAK;EACL,SAAS;EACT,QAAQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;EAC5B,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC;EACM,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;EAC5C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;EACrB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC/C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;EACpE,QAAQP,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC3E,KAAK;EACL;EACA,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;EACrD,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;EACvB,QAAQA,QAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACnE,KAAK;EACL;EACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EAC1B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,KAAK,GAAG,GAAG,CAAC;EACpB,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,EAAE;EACnB,QAAQ,QAAQ,GAAG,GAAG,CAAC;EACvB,KAAK;EACL;EACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;EAClD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC9D,KAAK;EACL;EACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACjD,QAAQ,UAAU,CAAC,uCAAuC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;EACvF,KAAK;EACL;EACA,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;EACzB,QAAQ,QAAQ,GAAG,GAAG,CAAC;EACvB,KAAK;EACL;EACA,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACpD,QAAQ,QAAQ,IAAI,GAAG,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC7C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACnD,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;EAC9D,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;EACM,MAAM,WAAW,CAAC;EACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC3D,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;EACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC/H,gBAAgB,SAAS,EAAE,iBAAiB;EAC5C,aAAa,CAAC,CAAC;EACf,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC3F,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE;EAC1C,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,KAAK,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;EACxC,SAAS;EACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;EAC1B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;EAC1B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE,CAEtB;EACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;EACzC,gBAAgB,MAAM,GAAG,KAAK,CAAC;EAC/B,aAAa;EACb,iBAAiB;EACjB,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;EAC1E,gBAAgB,IAAI,CAAC,KAAK,EAAE;EAC5B,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EACvF,iBAAiB;EACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5C,gBAAgB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3C,gBAAgB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9C,aAAa;EACb,SAAS;EACT,aAAa,IAAI,KAAK,EAAE;EACxB,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK;EACvD,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;EACxC,oBAAoB,OAAO,YAAY,CAAC;EACxC,iBAAiB;EACjB,gBAAgB,IAAI,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;EAClD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EAClI,iBAAiB;EACjB,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;EAClC,aAAa,CAAC;EACd,YAAY,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;EACxD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EACpD,YAAY,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;EAC7D,SAAS;EACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;EACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;EAC9G,SAAS;EACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;EAC3B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,2CAA2C,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;EAChH,SAAS;EACT,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EAC3E,KAAK;EACL,CAAC;EACM,MAAM,WAAW,CAAC;EACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;EACtD,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;EACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC/H,gBAAgB,SAAS,EAAE,iBAAiB;EAC5C,aAAa,CAAC,CAAC;EACf,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,YAAY,CAAC,KAAK,EAAE;EACxB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;EACpD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACvG,SAAS;EACT,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAClF,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAClF,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/G,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/G,KAAK;EACL,IAAI,KAAK,GAAG;EACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EACtD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;EAC9C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EACnE,SAAS;EACT,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL,IAAI,OAAO,GAAG;EACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;EAC/C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EACnE,SAAS;EACT,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL;EACA,IAAI,KAAK,CAAC,QAAQ,EAAE;EACpB,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,SAAS;EACT;EACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;EAC7D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EACrF,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,EAAE;EACzC,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;EACT,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACzF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAChD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;EAChF,KAAK;EACL,IAAI,MAAM,GAAG;EACb,QAAQ,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;EAC9D,KAAK;EACL,IAAI,UAAU,GAAG;EACjB,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACxC,KAAK;EACL,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;EACtC,IAAI,WAAW,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;EAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;EAC7B,SAAS;EACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;EACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC5E,SAAS;EACT,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EACtG,QAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,aAAa,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;EAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;EACrB,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC3D,KAAK;EACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC9C;EACA,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;EAC7E,YAAY,MAAM,GAAG,QAAQ,CAAC;EAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,SAAS;EACT,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;EAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;EAC7B,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC9F,KAAK;EACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;EACrC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;EAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;EAC7B,SAAS;EACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAACO,MAAI,CAAC,EAAE;EACrD,YAAY,UAAU,CAAC,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACxF,SAAS;EACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;EACvB,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;EAChC,YAAY,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EAClE,SAAS;EACT,aAAa;EACb,YAAY,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACxC,YAAY,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EACzD,SAAS;EACT,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;EACpC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;EAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;EAC7B,SAAS;EACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;EAC5D,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;EACxC,SAAS;EACT,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC5C,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;EAChC,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC1D,SAAS;EACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EACnG,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;EAC/B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EACzD,SAAS;EACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;EAC5B,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EACxD,SAAS;EACT,QAAQ,IAAI;EACZ,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;EAC3D,SAAS;EACT,QAAQ,OAAO,KAAK,EAAE;EACtB;EACA,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;EAC/D,gBAAgB,MAAM,KAAK,CAAC;EAC5B,aAAa;EACb,SAAS;EACT,QAAQ,OAAOP,QAAM,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACtF,KAAK;EACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;EAChC,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;EACjD,KAAK;EACL,CAAC;EACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;ECvW7B,MAAMD,SAAO,GAAG,eAAe;;ECItC,MAAMC,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EACnC;EACO,IAAI,wBAAwB,CAAC;EACpC,CAAC,UAAU,wBAAwB,EAAE;EACrC,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;EAC7C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;EAC5C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;EAC5C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EAC9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EAC9C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;EAEzD,IAAI,eAAe,CAAC;EAC3B,CAAC,UAAU,eAAe,EAAE;EAC5B;EACA;EACA,IAAI,eAAe,CAAC,qBAAqB,CAAC,GAAG,8BAA8B,CAAC;EAC5E;EACA;EACA,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;EAC3D;EACA;EACA,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;EAClD;EACA;EACA,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG,2BAA2B,CAAC;EACtE;EACA;EACA;EACA,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;EAC3D;EACA;EACA;EACA,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;EAC5D;EACA;EACA;EACA,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;EAC5D,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;EAE9C,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAChE,IAAI,OAAOC,QAAM,CAAC,kBAAkB,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACzG,CAAC;EACD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EACjE;EACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,UAAU,IAAI,MAAM,KAAK,eAAe,CAAC,mBAAmB,EAAE;EACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;EAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxD,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;EACxC,gBAAgB,MAAM;EACtB,aAAa;EACb,YAAY,CAAC,EAAE,CAAC;EAChB,SAAS;EACT,QAAQ,OAAO,CAAC,CAAC;EACjB,KAAK;EACL;EACA;EACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE;EAC5C,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACzC,KAAK;EACL;EACA,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAClE;EACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;EAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAClC,QAAQ,OAAO,CAAC,CAAC;EACjB,KAAK;EACL;EACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACxB;EACA,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAA2B,CAAC,CAAC;EACnE,CAAC;EACD;EAC8B,MAAM,CAAC,MAAM,CAAC;EAC5C,IAAI,KAAK,EAAE,SAAS;EACpB,IAAI,MAAM,EAAE,UAAU;EACtB,IAAI,OAAO,EAAE,WAAW;EACxB,CAAC,EAAE;EAsFH;EACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE;EAC1E,IAAI,IAAI,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE;EAClD,QAAQA,QAAM,CAAC,cAAc,EAAE,CAAC;EAChC,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;EACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,SAAS;EACT,aAAa,IAAI,CAAC,GAAG,KAAK,EAAE;EAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;EACzC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;EAC3C,SAAS;EACT,aAAa,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE;EACzC,YAAY,CAAC,EAAE,CAAC;EAChB,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACzC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM,EAAE;EAC7D,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;EACxD,aAAa;EACb;EACA,YAAY,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;EACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;EAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;EACtD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;EACrD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;EAC9C,SAAS;EACT,aAAa;EACb,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;EAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;EAClD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;EAC3C,SAAS;EACT,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC5B;;EC1MA,SAAS,MAAM,CAAC,IAAI,EAAE;EACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;EACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;EACjC,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,QAAQ,IAAI,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EAClE,KAAK;EACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EACtC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACpC,QAAQ,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACrC,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACpC,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;EACtC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC3B,SAAS;EACT,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EAClC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC3B,SAAS;EACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC7C,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EAChC,KAAK,CAAC,CAAC;EACP,CAAC;EAewB,gBAAgB,CAAC,87CAA87C,EAAE;EAC1+C;EACwB,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;EA6C3F,WAAW,CAAC,ufAAuf,EAAE;EACrgB,WAAW,CAAC,wdAAwd,EAAE;EACte,WAAW,CAAC,w3DAAw3D,EAAE,MAAM,EAAE;EACj5D,gBAAgB,CAAC,yLAAyL;;ECxG1N,MAAMD,SAAO,GAAG,YAAY;;ECE5B,SAASnB,QAAM,CAAC,QAAQ,EAAE;EACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC1B;;ECTA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;EAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;EACvB,QAAQ,KAAK,GAAG,CAAC,CAAC;EAClB,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;EACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;EAC3C,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;EACzC,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;EACjD,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;EACzC,aAAa;EACb,iBAAiB;EACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjC,aAAa;EACb,SAAS,CAAC,CAAC;EACX,KAAK,CAAC;EACN,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAC3B,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD,SAAS,WAAW,CAAC,KAAK,EAAE;EAC5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACM,SAAS,iBAAiB,CAAC,KAAK,EAAE;EACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EACjE;EACA,IAAI,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;EACjC,KAAK;EACL;EACA,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC;EAC1B,IAAI,GAAG,IAAI,IAAI,CAAC;EAChB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;EACxB,IAAI,SAAS,QAAQ,GAAG;EACxB,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;EAC7B;EACA;EACA,YAAY,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC5D,YAAY,UAAU,GAAG,CAAC,CAAC;EAC3B,SAAS;EACT,QAAQ,OAAO,CAAC,WAAW,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;EACjB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAChC,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;EAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;EAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;EAC1B;EACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC9B,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;EAChD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;EACrB,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;EAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;EACtB,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC;EAC/B,QAAQ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;EAChC,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC;EAC1C,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;EAClC,gBAAgB,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAa;EACb,iBAAiB;EACjB,gBAAgB,KAAK,GAAG,GAAG,CAAC;EAC5B,aAAa;EACb,SAAS;EACT,QAAQ,IAAI,KAAK,IAAI,CAAC;EACtB,YAAY,MAAM;EAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;EAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;EACrE,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;EACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;EAC3D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;EAChC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;EACpC,SAAS;EACT,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;EAC9B,YAAY,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;EACzF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;EAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;EAC7C,SAAS;EACT,QAAQ,GAAG,GAAG,CAAC,CAAC;EAChB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;EAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;EAC5B,QAAQ,QAAQ,CAAC,GAAG,MAAM;EAC1B,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;EAClI,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;EACjG,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;EACzD,YAAY,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC;EAClC,SAAS;EACT,KAAK,CAAC,CAAC;EACP,CAAC;EACD;EACO,SAAS,YAAY,CAAC,CAAC,EAAE;EAChC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1B,CAAC;EACM,SAAS,uBAAuB,CAAC,KAAK,EAAE;EAC/C,IAAI,OAAO,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,CAAC;EACD;EACO,SAAS,MAAM,CAAC,CAAC,EAAE;EAC1B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EAC1C,CAAC;EACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;EAC1B,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;EACjC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EAC/B,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EACrC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;EACnC,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACM,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;EAChD,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EACnB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACrC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;EACxC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9B,SAAS;EACT,KAAK;EACL,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9C,CAAC;EACD;EACA;EACA;EACO,SAAS,eAAe,CAAC,IAAI,EAAE;EACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;EACjB,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;EAClB,YAAY,MAAM;EAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;EAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;EACjB,YAAY,MAAM;EAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,CAAC;EACM,SAAS,0BAA0B,CAAC,IAAI,EAAE;EACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;EAClB,YAAY,MAAM;EAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,KAAK;EACL,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;EACrC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;EACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,QAAQ,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,KAAK;EACL,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;EACpC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;EACxB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;EACpB,IAAI,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;EACpD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;EAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxC;EACA;EACA,QAAQ,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;EAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;EAC9B,YAAY,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EACvD,SAAS,CAAC,CAAC;EACX,KAAK,CAAC,CAAC,CAAC;EACR,CAAC;EACD,SAAS,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE;EACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;EAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,CAAC;EACM,SAAS,eAAe,CAAC,IAAI,EAAE;EACtC,IAAI,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/D,IAAI,OAAO,IAAI,EAAE,CAAC;EAClB,IAAI,SAAS,IAAI,GAAG;EACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;EAC1B,QAAQ,OAAO,IAAI,EAAE;EACrB,YAAY,IAAI,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACvD,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;EAChC,gBAAgB,MAAM;EACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;EAChE,SAAS;EACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACzD,QAAQ,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;EAC1B,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;EAC7B,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;EAChC,QAAQ,IAAI,KAAK,CAAC,CAAC;EACnB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;EAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;EAC9B,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACtD,KAAK;EACL;;EC7PA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGO,SAAS,OAAO,GAAG;EAC1B,IAAI,OAAO,uBAAuB,CAACA,QAAM,CAAC,k6cAAk6c,CAAC,CAAC,CAAC;EAC/8c;;EChCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA,MAAM4B,GAAC,GAAG,OAAO,EAAE,CAAC;EAEpB;EACc,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;EAC5B,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;EAC/B,eAAe,CAACA,GAAC,EAAE;EACf,eAAe,CAACA,GAAC;;EC/BrB,IAAI,MAAM,CAACT,SAAO,EAAE;EAEnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ECLN,MAAM,aAAa,GAAG,gCAAgC,CAAC;EACvD,SAASU,aAAW,CAAC,OAAO,EAAE;EACrC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;EACvC,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,OAAO,SAAS,CAACR,QAAM,CAAC;EAC5B,QAAQ,WAAW,CAAC,aAAa,CAAC;EAClC,QAAQ,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EAC3C,QAAQ,OAAO;EACf,KAAK,CAAC,CAAC,CAAC;EACR;;ECbO,MAAMF,SAAO,GAAG,WAAW;;ECKnB,IAAI,MAAM,CAACA,SAAO;;ECL1B,MAAMA,SAAO,GAAG,eAAe;;ECOtC,MAAMC,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EACnC,SAAS,kBAAkB,CAAC,OAAO,EAAE;EACrC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;EACnC,QAAQC,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;EACL,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;EACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;EACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;EAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;EACtD,SAAS;EACT,KAAK;EACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACjC,CAAC;EACD;EACA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;EAC1C,SAAS,KAAK,CAAC,CAAC,EAAE;EAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;EACnC,CAAC;EACD;EACA;EACA,MAAM,UAAU,GAAG,EAAE,CAAC;EACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACtC,CAAC;EACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC;EACD;EACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;EACvD,SAAS,YAAY,CAAC,OAAO,EAAE;EAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;EACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACpF;EACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;EAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;EACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EAC/E,KAAK;EACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;EAClC,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC;EACpB,CAAC;EAEM,SAAS,UAAU,CAAC,OAAO,EAAE;EACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;EACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;EACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;EACjD;EACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;EAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;EACrC,SAAS;EACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;EAC7C;EACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;EAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EAClF,SAAS;EACT;EACA,KAAK;EACL,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;EAC9D;EACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;EAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EAC/E,SAAS;EACT,QAAQ,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EACnD,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;EACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;EAClC,SAAS;EACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;EACnD,KAAK;EACL,SAAS;EACT,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB;;EChGO,MAAMD,SAAO,GAAG,kBAAkB;;ECCzB,CAAC7B,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;EACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;EAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,EAAE;EAGa,IAAI,MAAM,CAAC6B,SAAO,EAAE;EAC5B,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;EACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;EACxC,QAAQ,UAAU,EAAE,IAAI;EACxB,QAAQ,KAAK,EAAE,KAAK;EACpB,QAAQ,QAAQ,EAAE,KAAK;EACvB,KAAK,CAAC,CAAC;EACP;;ECnBgB,CAAC7B,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;EACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;EAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,EAAE;EAQa,IAAI,MAAM,CAAC6B,SAAO,EAAE;EAEnC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;EACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACX,SAAS,CAAC,IAAI,CAAC,oEAAoE,EAAE;EASxF,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;EACjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;;;;;;MCjClDW,oBAAc,GAAGC,QAAM,CAAC;AACxB;EACA,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE;EAC1B,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;EAC/C,CAAC;AACD;AACAA,UAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;EAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;EACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EACpE,CAAC;;;;ECVD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;EACzC;EACA,EAAEC,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;EACtD,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;EAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;EAC1D,QAAQ,WAAW,EAAE;EACrB,UAAU,KAAK,EAAE,IAAI;EACrB,UAAU,UAAU,EAAE,KAAK;EAC3B,UAAU,QAAQ,EAAE,IAAI;EACxB,UAAU,YAAY,EAAE,IAAI;EAC5B,SAAS;EACT,OAAO,EAAC;EACR,KAAK;EACL,GAAG,CAAC;EACJ,CAAC,MAAM;EACP;EACA,EAAEA,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;EACtD,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;EAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;EACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;EAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;EACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;EACvC,KAAK;EACL,IAAG;EACH;;ECxBA,IAAID,QAAM,GAAGtC,oBAA8B,CAAC;EAC5C,IAAIwC,UAAQ,GAAGvC,0BAAmB,CAAC;AACnC;AACgBwC,SAAA,CAAA,QAAA,GAAGD,WAAS;AAC5B;EACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;EACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;EAC/C,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;EACpC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;EACrD,CAAC;AACD;EACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;EAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;EACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;EACvB,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,EAAE,CAAC;EACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;EACd;EACA;EACA;EACA;EACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;EAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;EACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;EAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;EACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;EACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;EAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;EAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;EACpC,SAAS,MAAM;EACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;EACpC,SAAS;EACT,OAAO;EACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;EAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;EAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;EAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;EACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,GAAG,MAAM;EACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;EACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC1B,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACcC,SAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;EACA,SAAS,KAAK,CAAC,GAAG,EAAE;EACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;EACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACtC,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,KAAK,CAAC,CAAC,EAAE;EAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;EACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;EAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;EACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;EAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;EACnB,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;EAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;EAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACjC,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACcA,SAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;EACA,SAAS,KAAK,CAAC,IAAI,EAAE;EACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;EACtB;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,KAAK,CAAC,IAAI,EAAE;EACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;EACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;EACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;EACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;EACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;EAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;EAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;EAC5B;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;EACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;EACxB,EAAEH,QAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;EAC1D,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,MAAM,KAAK,KAAK;EACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/E;EACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACrB,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACaG,SAAA,CAAA,MAAA,GAAG,OAAO;AACxB;EACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;EAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;EACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;EAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;EACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;EACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;EAC5B,KAAK,MAAM;EACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;EACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;EACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACcA,SAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;EACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACrC,CAAC;AACaD,SAAA,CAAA,MAAA,GAAGC,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACrC,CAAC;AACaF,SAAA,CAAA,MAAA,GAAGE,SAAO;AACxB;EACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE;EACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACvB,CAAC;AACYH,SAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;EACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EAC3B,CAAC;AACcJ,SAAA,CAAA,OAAA,GAAGI,UAAQ;AAC1B;EACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EAC/B,CAAC;AACcL,SAAA,CAAA,OAAA,GAAGK,UAAQ;AAC1B;EACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACnC,CAAC;AACcN,SAAA,CAAA,OAAA,GAAGM,UAAQ;AAC1B;EACA,SAASC,OAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;EACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;EACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACpB,CAAC;AACYP,SAAA,CAAA,KAAA,GAAGO,QAAM;AACtB;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;EACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACeR,SAAA,CAAA,QAAA,GAAGQ,WAAS;AAC5B;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACeT,SAAA,CAAA,QAAA,GAAGS,WAAS;AAC5B;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;EACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;EACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBV,SAAA,CAAA,UAAA,GAAGU,aAAW;AAChC;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBX,SAAA,CAAA,UAAA,GAAGW,aAAW;AAChC;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;EACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;EAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBZ,SAAA,CAAA,UAAA,GAAGY,aAAW;AAChC;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;EACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBb,SAAA,CAAA,UAAA,GAAGa,aAAW;AAChC;EACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EACjB,CAAC;AACgBd,SAAA,CAAA,SAAA,GAAGc,YAAU;AAC9B;EACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EACjB,CAAC;AACgBf,SAAA,CAAA,SAAA,GAAGe,YAAU;AAC9B;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;EACpB,CAAC;AACehB,SAAA,CAAA,QAAA,GAAGgB,WAAS;AAC5B;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EACjB,CAAC;AACDjB,SAAA,CAAA,QAAgB,GAAGiB;;;;ECnRnB,IAAIjB,OAAK,GAAGzC,OAAkB,CAAC;EAC/B,IAAIsC,QAAM,GAAGrC,oBAA8B,CAAC;AAC5C;EACA,SAAS0D,WAAS,GAAG;EACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;EAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;EAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;EACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;EAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACtC,CAAC;AACgBC,UAAA,CAAA,SAAA,GAAGD,YAAU;AAC9B;AACAA,aAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;EACvD;EACA,EAAE,GAAG,GAAGlB,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;EACvB;EACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;EACA;EACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;EAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;EACA;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;EACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;EACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;EACA,IAAI,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;EACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;AACAkB,aAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;EAC3B,EAAErB,QAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EAC3B,CAAC,CAAC;AACF;AACAqB,aAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;EAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;EAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;EAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;EACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;EAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;EACA;EACA,EAAE,GAAG,KAAK,CAAC,CAAC;EACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;EAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;EACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;EAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,GAAG,MAAM;EACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;EAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;EACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG;AACH;EACA,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;;;;;;ECzFD,IAAIlB,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI,MAAM,GAAGyC,OAAK,CAAC,MAAM,CAAC;AAC1B;EACA,SAASoB,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;EACb,IAAI,OAAOC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;EACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,KAAK,CAAC;EACb,IAAI,OAAOC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,CAAC;AACWH,UAAA,CAAA,IAAA,GAAGC,OAAK;AACpB;EACA,SAASC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9B,CAAC;AACWF,UAAA,CAAA,IAAA,GAAGE,OAAK;AACpB;EACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,CAAC;AACYH,UAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;EACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,CAAC;AACUH,UAAA,CAAA,GAAA,GAAG,IAAI;AAClB;EACA,SAASI,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,CAAC;AACaJ,UAAA,CAAA,MAAA,GAAGI,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,CAAC;AACaL,UAAA,CAAA,MAAA,GAAGK,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,CAAC;AACaN,UAAA,CAAA,MAAA,GAAGM,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;EACpD,CAAC;AACDP,UAAA,CAAA,MAAc,GAAGO;;EC9CjB,IAAI1B,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI4D,QAAM,GAAG3D,QAAoB,CAAC;EAClC,IAAImE,WAAS,GAAGlE,QAAmB,CAAC;AACpC;EACA,IAAIyC,QAAM,GAAGF,OAAK,CAAC,MAAM,CAAC;EAC1B,IAAIG,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;EACxB,IAAIM,SAAO,GAAGN,OAAK,CAAC,OAAO,CAAC;EAC5B,IAAI,IAAI,GAAG2B,WAAS,CAAC,IAAI,CAAC;EAC1B,IAAIT,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;EACA,IAAI,MAAM,GAAG;EACb,EAAE,UAAU,EAAE,UAAU;EACxB,EAAE,UAAU,EAAE,UAAU;EACxB,CAAC,CAAC;AACF;EACA,SAAS,IAAI,GAAG;EAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;EAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;EACA,EAAED,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;EACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;EACzB,CAAC;AACD;AACAlB,SAAK,CAAC,QAAQ,CAAC,IAAI,EAAEkB,WAAS,CAAC,CAAC;MAChC,EAAc,GAAG,IAAI,CAAC;AACtB;EACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;EACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;EACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;EACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;EACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;EACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;EACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGhB,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;EACvB,IAAI,IAAI,CAAC,GAAGI,SAAO,CAACJ,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACtB,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;EACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;EACnB,IAAI,OAAOH,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC;EACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC,CAAC;;ECvED,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI4D,QAAM,GAAG3D,QAAoB,CAAC;EAClC,IAAI,SAAS,GAAGC,QAAmB,CAAC;EACpC,IAAIoC,QAAM,GAAGlC,oBAA8B,CAAC;AAC5C;EACA,IAAIwC,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;EACxB,IAAIK,SAAO,GAAGL,OAAK,CAAC,OAAO,CAAC;EAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;EAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;EAC1B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;EAC5B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;EACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;EACA,IAAI,QAAQ,GAAG;EACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,CAAC,CAAC;AACF;EACA,SAASS,QAAM,GAAG;EAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;EAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;EACA,EAAEV,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,GAAG,CAAC;EACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;EACzB,CAAC;AACDlB,SAAK,CAAC,QAAQ,CAAC4B,QAAM,EAAEV,WAAS,CAAC,CAAC;MAClC,IAAc,GAAGU,QAAM,CAAC;AACxB;AACAA,UAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvBA,UAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,UAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,UAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACAA,UAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;EACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;EAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGvB,SAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;EACA,EAAER,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;EACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACjC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACnE,IAAI,IAAI,EAAE,GAAGM,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACtB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;AACAyB,UAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAChD,EAAE,IAAI,GAAG,KAAK,KAAK;EACnB,IAAI,OAAO5B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC;EACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC,CAAC;;ECtGD,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;EACA,SAAS,MAAM,GAAG;EAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;EAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;EACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;EACrD,CAAC;AACDwC,SAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;MAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;EACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;EACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;EACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;EAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;EACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAChD;EACA,EAAE,IAAI,GAAG,KAAK,KAAK;EACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACpD;EACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACpD,CAAC;;EC1BD,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI4D,QAAM,GAAG3D,QAAoB,CAAC;EAClC,IAAIqC,QAAM,GAAGpC,oBAA8B,CAAC;AAC5C;EACA,IAAI,SAAS,GAAGuC,OAAK,CAAC,SAAS,CAAC;EAChC,IAAI,SAAS,GAAGA,OAAK,CAAC,SAAS,CAAC;EAChC,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;EACxB,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;EAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;EAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;EAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC;EACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;EACA,IAAI,QAAQ,GAAG;EACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UA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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,EAAE,GAAG;EACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,CAAC,GAAG;EACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,E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IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAA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EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,G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,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GA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GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,G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G,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;OACd,WAAW,GAAG,UAAU,CAAC;MAC1B;AACH;KACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;OACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;OAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C;EACA;EACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;SACrB,OAAO,GAAG,CAAC,CAAC;EAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;EACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;EACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;EACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;EAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;WAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;EAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;WACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;EACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;WACzB,MAAM,IAAI,SAAS,CAAC;UACrB;SACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACrB,KAAK,GAAG,MAAM,CAAC;SACf,MAAM,GAAG,OAAO,CAAC;QAClB;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC3B,MAAK,MAAM;EACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;AACL;EACA,KAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;MACpB;AACH;KACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;EACvC,KAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;OACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MAClC;AACH;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;OAC7C,IAAI,GAAG,CAAC;OACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;SAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;SACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;SACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACrC,MAAK,MAAM;SACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClC;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;AACA;EACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;EACvB,KAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,KAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;MACZ;AACH;KACE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC,EAAE;OAC5C,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACpD,KAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACzC;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,OAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SAC7B,CAAC,KAAK,CAAC,CAAC;QACT;AACL;OACI,OAAO,EAAE,CAAC;EACd,IAAG,CAAC;AACJ;EACA;EACA;KACE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;EAC3E,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,OAAM,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5B,OAAM,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB;EACL,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE;EAC/E,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;EACpC,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB;EACA,OAAM,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EAC5C,OAAM,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;EACrC,SAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;EAC3B,SAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;AAC3B;EACA,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;aAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aACrB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B;aACU,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aACzB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC;aACU,IAAI,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AAC7C;aACU,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;aAC/B,EAAE,GAAG,EAAE,CAAC;AAClB;aACU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;aACtB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAChC;EACA,WAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;EACpC,WAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACpC;EACA;EACA,WAAU,IAAI,CAAC,KAAK,CAAC,EAAE;eACX,EAAE,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AACjD;eACY,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;eACzC,MAAM,GAAG,EAAE,CAAC;cACb;YACF;UACF;QACF;EACL,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE;EAC3D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/B,KAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACpB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,KAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;SAClC,CAAC,EAAE,CAAC;QACL;AACL;OACI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAC5B,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;EAC9D,KAAI,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO;AACvB;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACpC,OAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;EACA,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB;EACA,OAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB;EACA,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACzB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB;EACL,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE;EAC9D,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACpC,OAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;EACpD,SAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACjC,SAAQ,KAAK,CAAC;AACd;SACM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5B;EACA,OAAM,IAAI,CAAC,GAAG,SAAS,EAAE;WACjB,KAAK,GAAG,CAAC,CAAC;EAClB,QAAO,MAAM;EACb,SAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;UAC3B;QACF;AACL;OACI,OAAO,EAAE,CAAC;EACd,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;EACpE,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;SAC5B,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC;EACA,OAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;EACxD,OAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;QACvD;AACL;EACA;EACA,KAAI,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EAClC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACZ;AACL;EACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;OACpB,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACtC,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,OAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX;AACL;OACI,OAAO,EAAE,CAAC;EACd,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;EAClD,KAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9B;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB;OACI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;OACvB,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;OACxB,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;OACI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;OACxB,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;OACzB,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B;EACA,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;EACzB,KAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;EACA,KAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;EAC/C,KAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChD;EACA,KAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EAC/C,KAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,OAAM,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACd;AACL;OACI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EAClC,KAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;OAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;OAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/B;OACI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;OACvC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;EACrC,KAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;EACvB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;OAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;OAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;EACA;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/C,KAAK,KAAK,EAAE,CAAC;SACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;EACnC;EACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;SACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAChC;AACL;EACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;AACL;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;EACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;OACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;EAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;EACA;EACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;OACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;SAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;QACvB;AACL;EACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;SAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;WACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;WACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAClB;QACF;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;OAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;OAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;EAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;OACrD,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;EACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;EACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;WAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;WAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;UAC/B;AACP;SACM,IAAI,KAAK,EAAE;WACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;UACf;QACF;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACnC;AACP;SACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACnB;AACP;EACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;EAC7C;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;EAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;OAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;OAC9C,IAAI,CAAC,CAAC;OACN,IAAI,IAAI,EAAE;SACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;EACpC,MAAK,MAAM;SACL,CAAC,GAAG,CAAC,CAAC;QACP;AACL;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;EACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;OACI,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;EACA;OACI,IAAI,WAAW,EAAE;EACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACtC;EACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;EACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;UACnC;EACP,MAAK,MAAM;SACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB;AACL;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;OACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;SAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;EACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QACrB;AACL;EACA;EACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;SAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;QACjD;AACL;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;SACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;EACxB,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC7D;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;EAC7C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;OACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;OACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;EAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;OACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;EACA;OACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;EACA;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;EACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACrB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;OAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;OAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SACpB,OAAO,IAAI,CAAC;QACb;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;SACX,CAAC,EAAE,CAAC;QACL;EACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACrC;AACL;EACA,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;EACxB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;EAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;EACA;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;EAC1D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WAClB,OAAO,IAAI,CAAC;UACb;AACP;EACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACL;EACA;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;EACA;OACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;SAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;WACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9B,QAAO,MAAM;WACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;UACrB;QACF;EACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;EAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACL;OACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,MAAK,MAAM;EACX;SACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;WAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;UACxB;QACF;AACL;EACA,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;EACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;OACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;OAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;OAC7B,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;OACI,IAAI,CAAC,CAAC;EACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;EAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;EAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;EACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACvC;OACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;EAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;EACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACvC;AACL;OACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACzC;EACA;EACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;OACrB,KAAK,GAAG,CAAC,CAAC;EACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;EACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;SAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QAC/B;EACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;EACA,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;EACxB,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;OACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;EACA;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;OACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;EACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;EACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC;AACL;EACA;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;OAC5B,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;EACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;SACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;EACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAChB;QACF;AACL;EACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;SACvB,CAAC,GAAG,IAAI,CAAC;SACT,IAAI,CAAC,EAAE;WACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAChB;QACF;AACL;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;EACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;EACA;EACA;EACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;SACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;WACvB,EAAE,EAAE,CAAC;EACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;WACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjB;UACF;SACD,IAAI,CAAC,EAAE;WACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;UACjB;QACF;OACD,IAAI,CAAC,EAAE;EACX,OAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACX;EACL,KAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACd;EACA;OACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;EACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB;AACL;EACA,KAAI,OAAO;EACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;SACd,GAAG,EAAE,CAAC;EACZ,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;OAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;EACvB,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACtB,QAAO,CAAC;QACH;AACL;EACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;UACrB;AACP;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;WACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf;UACF;AACP;EACA,OAAM,OAAO;WACL,GAAG,EAAE,GAAG;WACR,GAAG,EAAE,GAAG;EAChB,QAAO,CAAC;QACH;AACL;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;UACrB;AACP;EACA,OAAM,OAAO;WACL,GAAG,EAAE,GAAG;EAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;EACpB,QAAO,CAAC;QACH;AACL;OACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;EAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;WACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf;UACF;AACP;EACA,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;WACZ,GAAG,EAAE,GAAG;EAChB,QAAO,CAAC;QACH;AACL;EACA;AACA;EACA;EACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EACvD,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;WACd,GAAG,EAAE,IAAI;EACjB,QAAO,CAAC;QACH;AACL;EACA;EACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;EAC1B,SAAQ,OAAO;EACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC5B,GAAG,EAAE,IAAI;EACnB,UAAS,CAAC;UACH;AACP;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;EAC1B,SAAQ,OAAO;aACL,GAAG,EAAE,IAAI;EACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9C,UAAS,CAAC;UACH;AACP;EACA,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5C,QAAO,CAAC;QACH;AACL;OACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;EAC9C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;EAC9C,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;EAC7C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;OAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;EACA;EACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;OACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;OACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;EACA;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACxD;EACA;OACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrE,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;OACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QAC7C;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;EACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;EACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;QACjB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf;AACL;EACA;OACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;EACA;OACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;OACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACZ,EAAE,CAAC,CAAC;QACL;AACL;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;EACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;EACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;EACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;aACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;EACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;cACZ;AACX;EACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;UACF;AACP;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;aACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;EACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;cACZ;AACX;EACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;UACF;AACP;SACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;EACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,QAAO,MAAM;EACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACX;QACF;AACL;EACA,KAAI,OAAO;SACL,CAAC,EAAE,CAAC;SACJ,CAAC,EAAE,CAAC;EACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;EACtB,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;EACA;EACA;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;OACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf;AACL;OACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;EACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;EACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;EAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChB;AACX;EACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd;UACF;AACP;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;EACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;EAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChB;AACX;EACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd;UACF;AACP;SACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;EACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACpB,QAAO,MAAM;EACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;UACb;QACF;AACL;OACI,IAAI,GAAG,CAAC;OACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;SACnB,GAAG,GAAG,EAAE,CAAC;EACf,MAAK,MAAM;SACL,GAAG,GAAG,EAAE,CAAC;QACV;AACL;OACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;OACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;EACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;EACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;EACA;EACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;EAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACL;EACA,KAAI,GAAG;EACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;EACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;AACP;SACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB;EACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;WACV,CAAC,GAAG,CAAC,CAAC;WACN,CAAC,GAAG,CAAC,CAAC;EACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EAC7C,SAAQ,MAAM;UACP;AACP;EACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,QAAQ,IAAI,EAAE;AACnB;EACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC3B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;EACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;OACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;EACA;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnB,OAAO,IAAI,CAAC;QACb;AACL;EACA;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,CAAC,IAAI,KAAK,CAAC;EACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;SACjB,CAAC,IAAI,SAAS,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;OACD,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACpD,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;OAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;EACA,KAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB;OACI,IAAI,GAAG,CAAC;EACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;SACnB,GAAG,GAAG,CAAC,CAAC;EACd,MAAK,MAAM;SACL,IAAI,QAAQ,EAAE;EACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;UACZ;AACP;SACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;SACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC;EACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;OACzC,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;EAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;OACzC,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C;OACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;EACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;EAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;EACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;WAChB,GAAG,GAAG,CAAC,CAAC;UACT;EACP,OAAM,MAAM;QACP;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACjC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;KACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;OAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;EACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC9C,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;OACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;EACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;OACf,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;OAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;EAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;OAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;OAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;OACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;OACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;EAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;OAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,IAAI,MAAM,GAAG;OACX,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,MAAM,EAAE,IAAI;EAChB,IAAG,CAAC;AACJ;EACA;EACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;EAC5B;EACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;OACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;OACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;OAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;OACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;MACxB;AACH;KACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;OACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;OAC9C,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;EACpD;EACA;EACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;OACZ,IAAI,IAAI,CAAC;AACb;EACA,KAAI,GAAG;SACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;EAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;OACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;SACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;EACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;SAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACrB,MAAK,MAAM;EACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;EACjC;EACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;EAClB,QAAO,MAAM;EACb;EACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;UACZ;QACF;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACjC,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,yEAAyE,CAAC,CAAC;MAC9E;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EACxD;EACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;EACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC;EACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;EACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;SACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACvB,OAAM,OAAO;QACR;AACL;EACA;OACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;EACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;SAC3D,IAAI,GAAG,IAAI,CAAC;QACb;OACD,IAAI,MAAM,EAAE,CAAC;OACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;OAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;EACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM;EACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACnB;EACL,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC9C;OACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;EACA;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;SAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;QACxC;AACL;EACA;EACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;EACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;UACd;QACF;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,gEAAgE,CAAC,CAAC;MACrE;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,uDAAuD,CAAC,CAAC;MAC5D;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;KACE,SAAS,MAAM,IAAI;EACrB;OACI,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,OAAO;SACP,qEAAqE,CAAC,CAAC;MAC1E;EACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;KACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAChD;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;EACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;SACxB,EAAE,MAAM,EAAE,CAAC;AACjB;SACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB,KAAK,GAAG,EAAE,CAAC;QACZ;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;QACjC;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;EACpC;OACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;OACI,IAAI,KAAK,CAAC;EACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;EACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3B,MAAK,MAAM;SACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAC1C;EACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;OACI,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;EACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;EACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACzB,MAAK,MAAM;SACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;EACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB;MACF;AACH;KACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;OAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;OAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;EACrD,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;EACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;EAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;SAC7B,iCAAiC,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACjE,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC1C,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;EACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QAClB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;OACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;OACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;EACA;EACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;SACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzB;AACL;EACA;EACA;EACA;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;SACtC,CAAC,EAAE,CAAC;EACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;OACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;EACA;EACA;EACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;EAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;EACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB;AACL;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;OACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;OACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;OACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;EAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;UACpB;EACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;SACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;SACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChB,CAAC,GAAG,CAAC,CAAC;QACP;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;SACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACrC,MAAK,MAAM;EACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB;EACL,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;EACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;OACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;EACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC;AACL;EACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;OACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;EACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,KAAK,GAAG,EAAE,CAAC;QACZ;AACL;EACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;WACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;aAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB;AACT;WACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;aAC9B,UAAU,GAAG,CAAC,CAAC;EACzB,WAAU,SAAS;YACV;AACT;WACQ,OAAO,KAAK,CAAC,CAAC;WACd,OAAO,IAAI,GAAG,CAAC;WACf,UAAU,EAAE,CAAC;EACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;EACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;WAClC,UAAU,GAAG,CAAC,CAAC;WACf,OAAO,GAAG,CAAC,CAAC;UACb;SACD,KAAK,GAAG,EAAE,CAAC;QACZ;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;OACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;OACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;EACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;EAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;OACf,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;EACA;AACA;KACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;OAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;OACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;OAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;EAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACtC;AACL;EACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;OACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACnC;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;KACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;EACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC5C,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;EAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;OACb,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;SAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACb,OAAO,CAAC,CAAC;QACV;AACL;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;OACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB;AACL;EACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;OACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB;AACL;EACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EAC1C;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;IACH,EAAmC,MAAM,EAAEH,cAAI,CAAC,CAAA;;;;;;ACp3GjD;GACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;EACA,CAAA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;EAC3B,GAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;EACxB,KAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;KACrB,IAAI,CAAC,GAAG;OACN,OAAO,EAAE,CAAC;EACd,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,GAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;SACjC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OACtB,OAAO,GAAG,CAAC;MACZ;EACH,GAAE,IAAI,GAAG,KAAK,KAAK,EAAE;OACjB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;EAC1C,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;EAC5B,OAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACtB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;SACpC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EAClD,IAAG,MAAM;EACT,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAChC,OAAM,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACtB,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;EACxB,OAAM,IAAI,EAAE;WACJ,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACzB;EACA,SAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB;MACF;KACD,OAAO,GAAG,CAAC;IACZ;EACD,CAAA,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB;GACA,SAAS,KAAK,CAAC,IAAI,EAAE;EACrB,GAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EACvB,KAAI,OAAO,GAAG,GAAG,IAAI,CAAC;EACtB;OACI,OAAO,IAAI,CAAC;IACf;EACD,CAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;GACA,SAAS,KAAK,CAAC,GAAG,EAAE;EACpB,GAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;EACrC,KAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;KACpC,OAAO,GAAG,CAAC;IACZ;EACD,CAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;GACA,KAAK,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;KACvC,IAAI,GAAG,KAAK,KAAK;EACnB,KAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB;OACI,OAAO,GAAG,CAAC;IACd,CAAA;;;;ACxDD;GACA,IAAI,KAAK,GAAG,OAAO,CAAC;GACpB,IAAI,EAAE,GAAGG,UAAgB,CAAC;GAC1B,IAAI,SAAS,GAAGC,oBAA8B,CAAC;GAC/C,IAAI,QAAQ,GAAGC,OAAoC,CAAC;AACpD;EACA,CAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;EACzB,CAAA,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;EACjC,CAAA,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EAC7B,CAAA,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;EAC7B,CAAA,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC/B;EACA;EACA,CAAA,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;KAC5B,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD,IAAI,CAAC,CAAC;EACR,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EACtC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACZ;AACH;KACE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACxB,GAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,GAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OAC/B,IAAI,CAAC,CAAC;OACN,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EAC9B,KAAI,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;SACb,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;WACrB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;EAC5B;WACQ,CAAC,GAAG,GAAG,CAAC;EAChB,OAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACjB,MAAK,MAAM;SACL,CAAC,GAAG,CAAC,CAAC;QACP;AACL;EACA,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,KAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;AACH;KACE,OAAO,GAAG,CAAC;IACZ;EACD,CAAA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;EACA;EACA,CAAA,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;KACtB,IAAI,GAAG,GAAG;EACZ,KAAI,EAAE;EACN,KAAI,EAAE;EACN,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;EAClB,GAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;EAClB,GAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EACb,GAAE,IAAI,EAAE,GAAG,CAAC,CAAC;KACX,IAAI,EAAE,CAAC;KACP,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;EAC/C;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACrC,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;OACjC,IAAI,GAAG,KAAK,CAAC;EACjB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC;OACX,IAAI,GAAG,KAAK,CAAC;EACjB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC;OACX,IAAI,EAAE,CAAC;EACX,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE;SACnB,EAAE,GAAG,CAAC,CAAC;EACb,MAAK,MAAM;EACX,OAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClC,OAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7C,SAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;EAClB;WACQ,EAAE,GAAG,GAAG,CAAC;QACZ;OACD,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB;OACI,IAAI,EAAE,CAAC;EACX,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE;SACnB,EAAE,GAAG,CAAC,CAAC;EACb,MAAK,MAAM;EACX,OAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClC,OAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7C,SAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;EAClB;WACQ,EAAE,GAAG,GAAG,CAAC;QACZ;OACD,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB;EACA;EACA,KAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;EACzB,OAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;EACzB,OAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACjB,KAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACd;AACH;KACE,OAAO,GAAG,CAAC;IACZ;EACD,CAAA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;EACA,CAAA,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC7C,GAAE,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;KACrB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,cAAc,GAAG;OAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;SACxC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACtC,IAAG,CAAC;IACH;EACD,CAAA,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;AACtC;GACA,SAAS,UAAU,CAAC,KAAK,EAAE;EAC3B,GAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;EAChE,KAAI,KAAK,CAAC;IACT;EACD,CAAA,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;GACA,SAAS,SAAS,CAAC,KAAK,EAAE;KACxB,OAAO,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC;GACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;;;;;ECxH3B,IAAI,CAAC,CAAC;AACN;AACAuI,SAAA,CAAA,OAAc,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE;EACpC,EAAE,IAAI,CAAC,CAAC;EACR,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB;EACA,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;EACzB,CAAC,CAAC;AACF;EACA,SAAS,IAAI,CAAC,IAAI,EAAE;EACpB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACnB,CAAC;AACkBC,iBAAA,CAAA,IAAA,GAAG,KAAK;AAC3B;EACA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE;EACjD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACzB,CAAC,CAAC;AACF;EACA;EACA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE;EACzC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;EACxB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjC;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;EAC9B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;EACrC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;EACjC,EAAE,OAAO,GAAG,CAAC;EACb,CAAC,CAAC;AACF;EACA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAC9B,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;EAClD;EACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE;EAC7C,MAAM,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;EACvC,MAAM,OAAO,GAAG,CAAC;EACjB,KAAK,CAAC;EACN,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;EAC7D;EACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE;EAC7C,MAAM,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;EACzC,MAAM,OAAO,GAAG,CAAC;EACjB,KAAK,CAAC;AACN;EACA;EACA,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;EACzC;EACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;EACtC,MAAM,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;EAC7C,KAAK,CAAC;EACN,GAAG;EACH,CAAC,MAAM;EACP;EACA,EAAE,IAAI;EACN,IAAI,IAAIC,QAAM,GAAG3I,YAAiB,CAAC;EACnC,IAAI,IAAI,OAAO2I,QAAM,CAAC,WAAW,KAAK,UAAU;EAChD,MAAM,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACvC;EACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE;EAC7C,MAAM,OAAOA,QAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACnC,KAAK,CAAC;EACN,GAAG,CAAC,OAAO,CAAC,EAAE;EACd,GAAG;EACH;;;;EC9DA,IAAI9G,IAAE,GAAG7B,UAAgB,CAAC;EAC1B,IAAIyC,OAAK,GAAGxC,OAAmB,CAAC;EAChC,IAAI,MAAM,GAAGwC,OAAK,CAAC,MAAM,CAAC;EAC1B,IAAI,MAAM,GAAGA,OAAK,CAAC,MAAM,CAAC;EAC1B,IAAIH,QAAM,GAAGG,OAAK,CAAC,MAAM,CAAC;AAC1B;EACA,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;EAC/B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACnB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIZ,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9B;EACA;EACA,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAGA,IAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAGA,IAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D;EACA;EACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACxC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACvC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC;EACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACxC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D;EACA;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B;EACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpD;EACA;EACA,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACjD,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EACjD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACvC,GAAG;EACH,CAAC;MACD,IAAc,GAAG,SAAS,CAAC;AAC3B;EACA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,GAAG;EAC7C,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;EACrC,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;EACnD,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;EACrC,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/D,EAAES,QAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;EACxB,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAChC;EACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACvE,EAAE,CAAC,IAAI,CAAC,CAAC;AACT;EACA;EACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;EAChB,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,IAAI,CAAC;EACX,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;EACjD,IAAI,IAAI,GAAG,CAAC,CAAC;EACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;EAClD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACxC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACrB,MAAM,IAAI,IAAI,KAAK,CAAC;EACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,WAAW,IAAI,IAAI,KAAK,CAAC,CAAC;EAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAChD,KAAK;EACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;EACjB,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;EACvD,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;EACA;EACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EACrC,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;EACpB,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7B;EACA;EACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C;EACA;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC5C;EACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;EAC/C,MAAM,CAAC,EAAE,CAAC;EACV,IAAI,IAAI,CAAC,IAAI,CAAC;EACd,MAAM,CAAC,EAAE,CAAC;EACV,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB;EACA,IAAI,IAAI,CAAC,GAAG,CAAC;EACb,MAAM,MAAM;EACZ,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnB,IAAIA,QAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACpB,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC7B;EACA,MAAM,IAAI,CAAC,GAAG,CAAC;EACf,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9C;EACA,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EACrD,KAAK,MAAM;EACX;EACA,MAAM,IAAI,CAAC,GAAG,CAAC;EACf,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACzC;EACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAChD,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;EAC/C,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI;EAC3D,EAAE,MAAM;EACR,EAAE,MAAM;EACR,EAAE,GAAG;EACL,EAAE,cAAc,EAAE;EAClB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;EAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;EACzB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB;EACA;EACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5B,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;EAC1C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;EAChC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,GAAG;AACH;EACA;EACA,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;EACpC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EAChD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC/D,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;EAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACzC,MAAM,SAAS;EACf,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG;EACf,MAAM,MAAM,CAAC,CAAC,CAAC;EACf,MAAM,IAAI;EACV,MAAM,IAAI;EACV,MAAM,MAAM,CAAC,CAAC,CAAC;EACf,KAAK,CAAC;AACN;EACA;EACA,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACzC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1D,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;EAC5D,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACpD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAC/C,KAAK,MAAM;EACX,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACpD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1D,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG;EAChB,MAAM,CAAC,CAAC;EACR,MAAM,CAAC,CAAC;EACR,MAAM,CAAC,CAAC;EACR,MAAM,CAAC,CAAC;EACR,MAAM,CAAC;EACP,MAAM,CAAC;EACP,MAAM,CAAC;EACP,MAAM,CAAC;EACP,MAAM,CAAC;EACP,KAAK,CAAC;AACN;EACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC9B,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC7B,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B;EACA,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACjD,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACpB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EACpB,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;EACzB,EAAE,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;EACA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;EACnB,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;EACtB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAChC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/B,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;EACxB,UAAU,IAAI,GAAG,KAAK,CAAC;EACvB,OAAO;EACP,MAAM,IAAI,CAAC,IAAI;EACf,QAAQ,MAAM;EACd,MAAM,CAAC,EAAE,CAAC;EACV,MAAM,CAAC,EAAE,CAAC;EACV,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC;EACd,MAAM,CAAC,EAAE,CAAC;EACV,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,GAAG,CAAC;EACb,MAAM,MAAM;AACZ;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC9B,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EAErB,MAAM,IAAI,CAAC,KAAK,CAAC;EACjB,QAAQ,SAAS;EACjB,WAAW,IAAI,CAAC,GAAG,CAAC;EACpB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACjC,WAAW,IAAI,CAAC,GAAG,CAAC;EACpB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC;EACA,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;EAC7B,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC9B;EACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACzB,KAAK;EACL,GAAG;EACH;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;EAC1B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB;EACA,EAAE,IAAI,cAAc;EACpB,IAAI,OAAO,GAAG,CAAC;EACf;EACA,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;EACrB,CAAC,CAAC;AACF;EACA,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;EAChC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACrB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACnB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;EAC1B,CAAC;EACD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC;EACA,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,YAAY;EAChD,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;EACrC,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;EACnD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;EACnC,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE;EACnE,EAAE,KAAK,GAAGG,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAChC;EACA;EACA,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;EAClE,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;EACpC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;EACzB,MAAMH,QAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAChD,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;EAC9B,MAAMA,QAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD;EACA,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EACjD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzC;EACA,IAAI,OAAO,GAAG,CAAC;EACf,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;EACpD,cAAc,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE;EACxC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;EACvE,GAAG;EACH,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;EAC1C,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,GAAG,EAAE;EACtE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChC,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,OAAO,EAAE;EACxD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;EACtC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzC;EACA,EAAE,IAAI,OAAO;EACb,IAAI,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D;EACA,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;EAC5D,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;EAC3D,EAAE,OAAOG,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;EAClD,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;EAC5D,EAAE,IAAI,IAAI,CAAC,WAAW;EACtB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,WAAW,GAAG;EACpB,IAAI,OAAO,EAAE,IAAI;EACjB,IAAI,GAAG,EAAE,IAAI;EACb,IAAI,IAAI,EAAE,IAAI;EACd,GAAG,CAAC;EACJ,EAAE,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EAC1C,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACnD,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;EACrC,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC;EACA,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE;EAC1D,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;EACvB,IAAI,OAAO,KAAK,CAAC;AACjB;EACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;EACzC,EAAE,IAAI,CAAC,OAAO;EACd,IAAI,OAAO,KAAK,CAAC;AACjB;EACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;EAChF,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;EACpE,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO;EAClD,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACpC;EACA,EAAE,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC;EACzB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC;EACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE;EACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;EACjC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;EACtB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtB,GAAG;EACH,EAAE,OAAO;EACT,IAAI,IAAI,EAAE,IAAI;EACd,IAAI,MAAM,EAAE,OAAO;EACnB,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;EAChE,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG;EAC9C,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAChC;EACA,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;EACrB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;EAC3B,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;EAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACjC,EAAE,OAAO;EACT,IAAI,GAAG,EAAE,GAAG;EACZ,IAAI,MAAM,EAAE,GAAG;EACf,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;EACnD,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,EAAE;EAC5C,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAChB,EAAE,OAAO,CAAC,CAAC;EACX,CAAC;;EC1XD,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI6B,IAAE,GAAG5B,UAAgB,CAAC;EAC1B,IAAIuC,UAAQ,GAAGtC,0BAAmB,CAAC;EACnC,IAAI0I,MAAI,GAAGxI,IAAiB,CAAC;AAC7B;EACA,IAAIkC,QAAM,GAAGG,OAAK,CAAC,MAAM,CAAC;AAC1B;EACA,SAAS,UAAU,CAAC,IAAI,EAAE;EAC1B,EAAEmG,MAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACjC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI/G,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACjC;EACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D;EACA;EACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;EAClC,CAAC;AACDW,YAAQ,CAAC,UAAU,EAAEoG,MAAI,CAAC,CAAC;MAC3B,KAAc,GAAG,UAAU,CAAC;AAC5B;EACA,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,IAAI,EAAE;EACxE;EACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EAC/D,IAAI,OAAO;AACX;EACA;EACA,EAAE,IAAI,IAAI,CAAC;EACX,EAAE,IAAI,MAAM,CAAC;EACb,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB,IAAI,IAAI,GAAG,IAAI/G,IAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjD,GAAG,MAAM;EACT,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3C;EACA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAChC,GAAG;EACH,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;EACnB,IAAI,MAAM,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;EACrC,GAAG,MAAM;EACT;EACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7C,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;EACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAC1B,KAAK,MAAM;EACX,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;EAC1B,MAAMS,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACpE,KAAK;EACL,GAAG;AACH;EACA;EACA,EAAE,IAAI,KAAK,CAAC;EACZ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;EAClB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE;EACzC,MAAM,OAAO;EACb,QAAQ,CAAC,EAAE,IAAIT,IAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;EAC5B,QAAQ,CAAC,EAAE,IAAIA,IAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;EAC5B,OAAO,CAAC;EACR,KAAK,CAAC,CAAC;EACP,GAAG,MAAM;EACT,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACvC,GAAG;AACH;EACA,EAAE,OAAO;EACT,IAAI,IAAI,EAAE,IAAI;EACd,IAAI,MAAM,EAAE,MAAM;EAClB,IAAI,KAAK,EAAE,KAAK;EAChB,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;EACjE;EACA;EACA;EACA,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAGA,IAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACrD,EAAE,IAAI,IAAI,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;EAC5C,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5B;EACA,EAAE,IAAI,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/D;EACA,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EACrC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EACrC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACpB,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,MAAM,EAAE;EACpE;EACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;EACjB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;EACzB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;EACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB;EACA;EACA,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT;EACA,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT;EACA,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;AACT;EACA,EAAE,IAAI,KAAK,CAAC;EACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B;EACA,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;EACpC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;EACvB,MAAM,EAAE,GAAG,EAAE,CAAC;EACd,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACnB,MAAM,EAAE,GAAG,CAAC,CAAC;EACb,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;EAChC,MAAM,MAAM;EACZ,KAAK;EACL,IAAI,KAAK,GAAG,CAAC,CAAC;AACd;EACA,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,IAAI,EAAE,GAAG,CAAC,CAAC;EACX,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,IAAI,EAAE,GAAG,CAAC,CAAC;EACX,GAAG;EACH,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACf,EAAE,EAAE,GAAG,CAAC,CAAC;AACT;EACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;EACpC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;EACpC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;EAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,GAAG;AACH;EACA;EACA,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;EACnB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;EAClB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;EAClB,GAAG;EACH,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;EACnB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;EAClB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;EAClB,GAAG;AACH;EACA,EAAE,OAAO;EACT,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;EACpB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;EACpB,GAAG,CAAC;EACJ,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE;EACzD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;EAC9B,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACxC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB;EACA;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;EAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;EAC5B,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC5B,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE;EAC9D,EAAE,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;EACZ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC1E,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;EAChD,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrC;EACA;EACA;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;EAClC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK;EACpC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE;EACzD,EAAE,IAAI,KAAK,CAAC,GAAG;EACf,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClB;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC5B,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7D,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAC/C,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,eAAe;EACpC,IAAI,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;EAC7D,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;EACrC,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;EACrC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/C,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1B,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChC;EACA,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;EAC/B,UAAU,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;EAC1B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1B,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;EAC/B,UAAU,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;EAC1B,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAChC,SAAS;AACT;EACA,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC3B,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;EAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;EAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;EACtC,OAAO;EACP,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7E;EACA;EACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACtC,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAC1B,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAC1B,OAAO;EACP,MAAM,OAAO,GAAG,CAAC;EACjB,KAAK,CAAC;AACN;EACA,SAASqD,OAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;EACnC,EAAE0D,MAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EAC7C,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;EAChC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;EAClB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;EAClB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EACpB,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI/G,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B;EACA,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtC,KAAK;EACL,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;EACrB,GAAG;EACH,CAAC;AACDW,YAAQ,CAAC0C,OAAK,EAAE0D,MAAI,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;EACzD,EAAE,OAAO,IAAI1D,OAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EACtC,CAAC,CAAC;AACF;EACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE;EACtE,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACxC,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;EAC/C,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;EACtB,IAAI,OAAO;AACX;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;EAC7B,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI;EACrB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB;EACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3E,EAAE,IAAI,GAAG,EAAE;EACX,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,IAAI,IAAI,OAAO,GAAG,SAAS,CAAC,EAAE;EAC9B,MAAM,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3D,KAAK,CAAC;EACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;EACpB,IAAI,IAAI,CAAC,WAAW,GAAG;EACvB,MAAM,IAAI,EAAE,IAAI;EAChB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;EACtB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;EACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;EAC3C,OAAO;EACP,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;EAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;EAC9B,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;EAC/C,OAAO;EACP,KAAK,CAAC;EACN,GAAG;EACH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;EAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;EACvB,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC9B;EACA,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI;EAC/C,IAAI,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI;EACzC,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI;EACzC,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACtD,KAAK;EACL,IAAI,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;EACjC,MAAM,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG;EACnC,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,GAAG,EAAE,CAAC;EACN,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;EACpD,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ;EAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC1B,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EAC7C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACb,IAAI,OAAO,GAAG,CAAC;AACf;EACA,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE;EAC1B,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;EAC5C,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnB,EAAE,GAAG,CAAC,WAAW,GAAG;EACpB,IAAI,IAAI,EAAE,IAAI;EACd,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;EAC5B,MAAM,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;EAC5B,MAAM,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;EAC/D,KAAK;EACL,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;EACpB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;EACtB,MAAM,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;EAC3D,KAAK;EACL,GAAG,CAAC;EACJ,EAAE,OAAO,GAAG,CAAC;EACb,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC7C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,qBAAqB,CAAC;EACjC,EAAE,OAAO,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;EACtD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;EACnD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;EAClB,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;EACtC;EACA,EAAE,IAAI,IAAI,CAAC,GAAG;EACd,IAAI,OAAO,CAAC,CAAC;AACb;EACA;EACA,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAChB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB;EACA;EACA,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACtB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;EACA;EACA,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;EAC3B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;EAC/C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACnD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACvD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACrC,EAAE,IAAI,IAAI,CAAC,GAAG;EACd,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;EAC5B,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACrD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACvD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACvC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC1B,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACvC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC1B,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;EACtC,EAAE,CAAC,GAAG,IAAIrD,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC;EAChB,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;EAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EAC5C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;EAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;EACvD;EACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACxC,CAAC,CAAC;AACF;AACAqD,SAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACrD,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;EAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC1B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;EACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EACtD;EACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EACxD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACvD,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;EAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EAC1B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;EACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EAC5D;EACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;EAC9D,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE;EACpC,EAAE,OAAO,IAAI,KAAK,CAAC;EACnB,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;EAC3B,cAAc,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1E,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,WAAW,EAAE;EAChD,EAAE,IAAI,IAAI,CAAC,GAAG;EACd,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;EACtD,EAAE,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;EACvC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;EAC/B,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,EAAE;EAC7B,MAAM,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;EACrB,KAAK,CAAC;EACN,IAAI,GAAG,CAAC,WAAW,GAAG;EACtB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;EACtB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;EACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;EAC1C,OAAO;EACP,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;EAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;EAC9B,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;EAC9C,OAAO;EACP,KAAK,CAAC;EACN,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACrC,EAAE,IAAI,IAAI,CAAC,GAAG;EACd,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC9D,EAAE,OAAO,GAAG,CAAC;EACb,CAAC,CAAC;AACF;EACA,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAChC,EAAE0D,MAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;EAC/C,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;EAC9C,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI/G,IAAE,CAAC,CAAC,CAAC,CAAC;EACvB,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C;EACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EACxC,CAAC;AACDW,YAAQ,CAAC,MAAM,EAAEoG,MAAI,CAAC,SAAS,CAAC,CAAC;AACjC;EACA,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACvD,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACnC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;EACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAChC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACtC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5D,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;EACvC;EACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,CAAC,CAAC;AACb;EACA;EACA,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;EACpB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD;EACA,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACxD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE;EACjD;EACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACnB;EACA;EACA,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;EACpB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EACjD;EACA,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;EACxB,GAAG;AACH;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACxD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE;EAC3C,EAAE,IAAI,GAAG,KAAK,CAAC;EACf,IAAI,OAAO,IAAI,CAAC;EAChB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC;EAChB,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB;EACA,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;EAC7C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;EAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAClB,IAAI,OAAO,CAAC,CAAC;EACb,GAAG;AACH;EACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACvB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;EACA;EACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC1B,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5B,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;EAC1B,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;EAC5B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;EAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE;EACA,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACzC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;EACnB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;EACA,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,IAAI,EAAE,GAAG,EAAE,CAAC;EACZ,IAAI,GAAG,GAAG,GAAG,CAAC;EACd,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;EACrD,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;EACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;EAC3B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;EAC5B,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;EAC5B;EACA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;EACvB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;EAChD,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT;EACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB;EACA;EACA;AACA;EACA;EACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B;EACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B;EACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;EAC3B;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACjE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACrB;EACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtC;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C;EACA;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC;EACA;EACA,IAAI,EAAE,GAAG,CAAC,CAAC;EACX;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC/C;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,GAAG,MAAM;EACT;EACA;EACA;AACA;EACA;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC5B;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC5B;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACvB;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACrB;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnC;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvB;EACA;EACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACxB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxB;EACA;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACjC;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EAC7C;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACxB,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,GAAG;EAClD,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT;EACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB;EACA;EACA;AACA;EACA;EACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B;EACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC7B;EACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;EAC3B;EACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACjE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACrB;EACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5D;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC7C;EACA,IAAI,EAAE,GAAG,CAAC,CAAC;EACX;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC/C;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,GAAG,MAAM;EACT;EACA;AACA;EACA;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAChC;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAChC;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACpC;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EAClE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC/C;EACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACjC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACpC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACvC;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EACtE;EACA,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;EACjC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EACvC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAC1D,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB;EACA;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAClB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;EACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;EACxB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACxB;EACA,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;EACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC3B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC7C,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1B;EACA,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;EAC1B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EACtC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACxC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;EACvB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;EACA;EACA;AACA;EACA;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B;EACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;EACzB;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACpC;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC/D,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC7B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACpB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC7B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnE;EACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC3C,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACvE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7D;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACvC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;EAC9C,EAAE,CAAC,GAAG,IAAI/G,IAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvB;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACtC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE;EACrC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;EACzB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5B;EACA,EAAE,IAAI,IAAI,KAAK,CAAC;EAChB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EACzB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EAC9D,IAAI,OAAO,KAAK,CAAC;AACjB;EACA;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7B,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5B,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAClE,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE;EAC7C,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC9C,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;EACrB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACrC,EAAE,SAAS;EACX,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;EACjC,MAAM,OAAO,KAAK,CAAC;AACnB;EACA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAClB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;EAC5B,MAAM,OAAO,IAAI,CAAC;EAClB,GAAG;EACH,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC9C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,sBAAsB,CAAC;EAClC,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EAClD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EACrC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;EAC5C,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;EACpD;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAC9B,CAAC;;ECv6BD,IAAIA,IAAE,GAAG7B,UAAgB,CAAC;EAC1B,IAAIwC,UAAQ,GAAGvC,0BAAmB,CAAC;EACnC,IAAI2I,MAAI,GAAG1I,IAAiB,CAAC;AAC7B;EACA,IAAIuC,OAAK,GAAGrC,OAAmB,CAAC;AAChC;EACA,SAAS,SAAS,CAAC,IAAI,EAAE;EACzB,EAAEwI,MAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAChC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI/G,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;EAChD,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACvC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACrD,CAAC;AACDW,YAAQ,CAAC,SAAS,EAAEoG,MAAI,CAAC,CAAC;MAC1B,IAAc,GAAG,SAAS,CAAC;AAC3B;EACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE;EACxD,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;EAC9B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC7D,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AACxB;EACA,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACnC,CAAC,CAAC;AACF;EACA,SAAS1D,OAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;EAC5B,EAAE0D,MAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;EACjD,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;EAChC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;EAC7B,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI/G,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,GAAG;EACH,CAAC;AACDW,YAAQ,CAAC0C,OAAK,EAAE0D,MAAI,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE;EACnE,EAAE,OAAO,IAAI,CAAC,KAAK,CAACnG,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;EACjD,EAAE,OAAO,IAAIyC,OAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/B,CAAC,CAAC;AACF;EACA,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;EAChE,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;EACnD;EACA,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC7C,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;EAC9D,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;EAC/C,EAAE,OAAO,IAAIA,OAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;EACvD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC7C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,qBAAqB,CAAC;EACjC,EAAE,OAAO,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;EACtD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;EACnD;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EAC9B,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACrC;EACA;AACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACxB;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACrC,EAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;EACvD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE;EACpD;EACA;AACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1B;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1B;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;EACjD;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;EAClD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;EACtC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;EACf,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACvC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AACf;EACA,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;EAClD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EACvB;EACA,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B;EACA,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAClB,KAAK,MAAM;EACX;EACA,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B;EACA,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EAClB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,CAAC,CAAC;EACX,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;EAC3C,EAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;EACvD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC7C,EAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;EACvD,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,KAAK,EAAE;EACxC,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;EAC7C,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,GAAG;EACjD,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;EAC3C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC1B,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;AACAA,SAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACvC;EACA,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC1B,CAAC;;EC/KD,IAAIzC,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI6B,IAAE,GAAG5B,UAAgB,CAAC;EAC1B,IAAI,QAAQ,GAAGC,0BAAmB,CAAC;EACnC,IAAI,IAAI,GAAGE,IAAiB,CAAC;AAC7B;EACA,IAAIkC,QAAM,GAAGG,OAAK,CAAC,MAAM,CAAC;AAC1B;EACA,SAAS,YAAY,CAAC,IAAI,EAAE;EAC5B;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACpC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;EACnD,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B;EACA,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACnC;EACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIZ,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC5B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC9C,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC;EACA,EAAES,QAAM,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1D,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACjC,CAAC;EACD,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;MAC7B,OAAc,GAAG,YAAY,CAAC;AAC9B;EACA,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,GAAG,EAAE;EACnD,EAAE,IAAI,IAAI,CAAC,KAAK;EAChB,IAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;EACxB;EACA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,GAAG,EAAE;EACnD,EAAE,IAAI,IAAI,CAAC,IAAI;EACf,IAAI,OAAO,GAAG,CAAC;EACf;EACA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,CAAC,CAAC;AACF;EACA;EACA,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC5D,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAChC,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE;EAChE,EAAE,CAAC,GAAG,IAAIT,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;EACZ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;EAC9C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D;EACA,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;EACrC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;EAChD,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrC;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;EAClC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK;EACpC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE;EAChE,EAAE,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;EACZ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B;EACA;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACtB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EAC/B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC7D,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACrC;EACA,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC/B,IAAI,IAAI,GAAG;EACX,MAAM,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;EACvC;EACA,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACtC,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;EAChD,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrC;EACA,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG;EACjC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACnB;EACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE;EAC3D,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;EACxB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;AACpB;EACA,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC5B,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC5B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E;EACA,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;AACF;EACA,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAClC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;EACjD,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;EAC9C,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACrB,GAAG,MAAM;EACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAChD,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAChC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;EAC7B,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1C;EACA;EACA,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;EACxC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACrC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;EACpB,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;EACjD,KAAK;EACL,GAAG;EACH,CAAC;EACD,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC;EACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;EACnE,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,CAAC,CAAC;AACF;EACA,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC1D,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACrC,CAAC,CAAC;AACF;EACA,KAAK,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;EAC/C,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC7C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,qBAAqB,CAAC;EACjC,EAAE,OAAO,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;EAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;EACtD,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;EACnD;EACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EAC7B,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;EAC7B,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACnD,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;EAC7C;EACA;EACA;AACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1B;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1B;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACnB;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC/D;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1C,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;EAC/C;EACA;EACA;EACA;EACA;AACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EACzC;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1B;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1B;EACA,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;EAC1B;EACA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC5B;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;EACnB;EACA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EAClE;EACA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACjC;EACA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC1C,KAAK,MAAM;EACX;EACA,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1B;EACA,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EACjC;EACA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC5C;EACA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACjC;EACA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB,KAAK;EACL,GAAG,MAAM;EACT;EACA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB;EACA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;EAC1C;EACA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9B;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClD;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;EAClD;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACrB,GAAG;EACH,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACtC,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACrC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;EACzB,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;EAC1B;EACA,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;EAC3B,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,CAAC,EAAE;EAC9C;EACA;EACA;AACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACxD;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACxD;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACnD;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzC;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1C,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE;EAChD;EACA;EACA;EACA;AACA;EACA;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7B;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACrB;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7B;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7B;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC3C;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAChF,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EACnC,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,EAAE,CAAC;EACT,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;EAC1B;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3D;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACrB,GAAG,MAAM;EACT;EACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACzC;EACA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACtC,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;EACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;EACvB,IAAI,OAAO,CAAC,CAAC;EACb,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;EACpB,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;EACzB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAC3B;EACA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC5B,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;EACtC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;EACzB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EAC5C;EACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;EACxC,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;EACpD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EACtE,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;EACtD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;EACrE,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,GAAG;EACjD,EAAE,IAAI,IAAI,CAAC,IAAI;EACf,IAAI,OAAO,IAAI,CAAC;AAChB;EACA;EACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC5B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC7B,EAAE,IAAI,IAAI,CAAC,CAAC;EACZ,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EAC/B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;EAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACnB,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;EACrC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;EACzC,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;EAC/B,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACvC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;EACnB,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC1B,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;EACvC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;EACnB,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;EAC1B,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,KAAK,EAAE;EACxC,EAAE,OAAO,IAAI,KAAK,KAAK;EACvB,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;EAC5C,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;EAC7C,CAAC,CAAC;AACF;EACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE;EAC5C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClD,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;EAC1B,IAAI,OAAO,IAAI,CAAC;AAChB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;EACrB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACzC,EAAE,SAAS;EACX,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;EACjC,MAAM,OAAO,KAAK,CAAC;AACnB;EACA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAClB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;EAC5B,MAAM,OAAO,IAAI,CAAC;EAClB,GAAG;EACH,CAAC,CAAC;AACF;EACA;EACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;EAChD,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG;;;ACjb9C;GACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;EACA,CAAA,KAAK,CAAC,IAAI,GAAG7B,IAAiB,CAAC;EAC/B,CAAA,KAAK,CAAC,KAAK,GAAGC,KAAkB,CAAC;EACjC,CAAA,KAAK,CAAC,IAAI,GAAGC,IAAiB,CAAC;GAC/B,KAAK,CAAC,OAAO,GAAGE,OAAoB,CAAA;;;;;;;;;;;ECPpC,CAAA,SAAc,GAAG;EACjB,GAAE,OAAO,EAAE;OACP,IAAI,EAAE,CAAC;EACX,KAAI,MAAM,EAAE;SACN;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,gEAAgE;UACjE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;QACF;MACF;EACH,GAAE,GAAG,EAAE;OACH,GAAG,EAAE,CAAC;EACV,KAAI,MAAM,EAAE;SACN;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,gEAAgE;EACxE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,k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I,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UA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AAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB;EACA;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/B;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GA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CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..35ee8fd15751892fd1c57301faa3bf47477c94d7 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/keychain.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/crypto.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/messages.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/publisher.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/relayer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/history.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/expirer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/store.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/pairing.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/verify.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/echo.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/events.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/core.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/index.d.ts","../../../node_modules/detect-browser/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/error.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/crypto.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/format.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/routing.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/url.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/validators.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/index.d.ts","../../../node_modules/query-string/index.d.ts","../src/misc.ts","../../../node_modules/@ethersproject/hash/lib/id.d.ts","../../../node_modules/@ethersproject/hash/lib/namehash.d.ts","../../../node_modules/@ethersproject/bytes/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/message.d.ts","../../../node_modules/@ethersproject/bignumber/lib/bignumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/fixednumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/index.d.ts","../../../node_modules/@ethersproject/networks/lib/types.d.ts","../../../node_modules/@ethersproject/networks/lib/index.d.ts","../../../node_modules/@ethersproject/properties/lib/index.d.ts","../../../node_modules/@ethersproject/transactions/lib/index.d.ts","../../../node_modules/@ethersproject/web/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-provider/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-signer/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/typed-data.d.ts","../../../node_modules/@ethersproject/hash/lib/index.d.ts","../src/signatures.ts","../src/cacao.ts","../src/caip.ts","../../../node_modules/@stablelib/aead/lib/aead.d.ts","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.d.ts","../../../node_modules/@stablelib/hash/lib/hash.d.ts","../../../node_modules/@stablelib/hkdf/lib/hkdf.d.ts","../../../node_modules/@stablelib/random/lib/source/index.d.ts","../../../node_modules/@stablelib/random/lib/source/system.d.ts","../../../node_modules/@stablelib/random/lib/random.d.ts","../../../node_modules/@stablelib/sha256/lib/sha256.d.ts","../../../node_modules/@stablelib/x25519/lib/x25519.d.ts","../node_modules/uint8arrays/types/src/compare.d.ts","../node_modules/uint8arrays/types/src/concat.d.ts","../node_modules/uint8arrays/types/src/equals.d.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/uint8arrays/types/src/util/bases.d.ts","../node_modules/uint8arrays/types/src/from-string.d.ts","../node_modules/uint8arrays/types/src/to-string.d.ts","../node_modules/uint8arrays/types/src/xor.d.ts","../node_modules/uint8arrays/types/src/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@stablelib/ed25519/lib/ed25519.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/api.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/utils.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/index.d.ts","../src/crypto.ts","../src/errors.ts","../../../node_modules/@walletconnect/relay-api/dist/types/types.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/parsers.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/validators.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/index.d.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts","../src/index.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d","01b86d49aad113300499cf05f714c17ca971ffe25240124bd619e690f75a8b55","3d3202b1aecf61c574d412ed08cc43ac46dcb888c31de5b40d05168f6207cde8","dfbd08d79c0ed94d7563e818229b1f9ac27c6b29099431de81be9fb2334a1c42","4f815aba9db7da7a51661c55236f54bad4e01b682aef431e042b116f9d910470","200650e1ed5d5b2bee679e079619d1b6d162df822b31af327dbd61ff95689562","27b8ca719f38978c9321758b7cfd51873d377db44eac9f3f6e402752faa3f6a5","5b0594c3b261f6eb7e54bbf17588e679abc03e3693ec5076dea9f1cee0bbcf13","101602942b03c24915c706a82361b45cf66fe055f8627f7347fa6bbc0d4811e2","9c6b34ba69cd25457b0a5b27db15705ab7eba470af085e89c37d1d3d6e21c977","7e53626f08f85e10df73876c7517af4c3fc1c46bbca543d77b4682743ed2f163","620148e2b8632dae30a3ce69e8097c9332a6a3b3e172ee1fcd5fbf06750e81af","8f34f8fc1952d8e3987ccb39ccff1a4bc4eb0f04221e3d854529302d56e87226","85aac179d07d2a3d7b95a1e5b285c91a717d91bcc9e60a7e8b9de4008c15a542","52d2d16f42f024e057542940e191c49d10876c50e37a6abfcbdf365b813376fe","e3db3019dd47322ff80e20fd431c893db3a93c52fe9774bab69aa7534518cd82","f0fe1e6ca80532a63a6482b69a40c0ef7117f7148beee8e588c7f1528209dc71","82e9f199e29ff8a029aebec3a7f258ac2f2091a4b17d1ec20123eb9f2f7fa847","002edf832f43162f7cb70da12e2ec9e0054286872e317faec25ab15c4085804f","9d93daff82e921f6ddf56c6d207fdbf76b8f51566cd04d4fe8b34d1d72bad8ed","3d73320d9491b16adfd29d3177af35611cc98a09f4c632b39014bbec165862e2","517c54ef783149f46a5f55eecab11558bc1e33208d6bf6f0bbc134c13d9ab01d","49f5a1d46d63e66efe850b0f269e72bd85485c9458486c304c64c022eb741d50","1e4f096ec42477fa7881f58c52d9e6bf9fa7e71ba01f562d734c3bb6c6bee24d","87ed59b6a8df8efc3f0eaa35c8da0bf788f5510a128d3f62936f6af57edc7e41","15cb254c8108860af77bbc6458f764c66d081ac500e397f3cb8acb9d2b158402","1fbc0aa2bf8e019b2aae8567022e7b55f59b144714d6d1aa6c96b8acf15151a8","10fa6a67f237e9d803110d9f7b29b5edded4adb47809ea3d4355a6d3b644f978","24766e27ffabe6d258cfc54643f841782672a0e63e1d912ba23138deaf40e401","b76f79b98bd953ee71bba656b761f4ba26034ff3f8687c7c65edfc2d9604670f","d9548e5e333b64e6da237002a469401735722ea45caf86bff02db69213e96e31","66682da81646c807fbbb0999fc6d49ad41d10a32880b5803a7dea07fa251d1b9","7902c9ca40697c65549f9a41ab8cd711eab57143ac0d6202af73c18bcd63ca4c","d6536cdf16f68971c9a7f20bc2c353e0655bc3ac6ee742ec9d6da8b48cb89aa9","beea0bd57334b5d3f296eb255a99d6bb4c081faed7b09b8c5d2d7d3666ecb26c","d15bc6928c895f44e02a86f60c0e72d6d09ba7812d5ace831dc7f6c2600317d0","f3285db89f2ab44bb19e8a4e107d8542543a64ceb5a244339a348e36a3ebc938","223c35d0032d2ce91977eb3bced9e74dfbc5ff54d17ace3f471069e8e0935dfa","3f19b01b25d8152c3f023a55b958071c39f29aecc3206d8b953ce22ed1afe2a7","cc8a7843f4b9f96ac5179ec3ee1ecd428dea0caa35c455cab1b3e7a73c740306","776084ff5d871a19ffe2992bc1f7318d0187e34e5a4a7da4eeb78bdf9501e621","612e990e85f99aa8f2329d6d4d755713a44bd5c2041b02baae19c3ed1523f1de","4a259c19075fb64b9c302da22c51feb14fb8ad0775a780fccbef6a9e6c082c63","54223032d8849dd76ec6087684f361e9973c8de9c643b6a9ace67c136b13a326","0ae96d34bca21bb9118f2a8269a625ba4eee909c5d14d475a2eef33cea431552","a38c5518309b0e8f832f6fd53641ac69eeee77b66a03864a2688438e5402d3e5","d8931c54a30eea4ecc0afec72a4c81af8ddfebbec5c424b58c30bc7d5cbacd6c","6ff08c4d0269c9df488ab989923859d733cc35ba0eb65ce146d80f0487445088","2e1cd25ab4b887717e27b7013d9b5f1ee1e21406f3bc60f6db06383839e6d35a","84b504a59014d3e72dd4113089825b496620eb0647c47d2e56eeb105319f95f2","27975250d16d95779140c1c2231e2f7b9d7764f4bb716b19880c01eeea715452",{"version":"f9f9299195f26062d0947743595024ab0cafc766357f914fe2fc541968c9e079","signature":"dd551b50359abbf84b07a1aae29f84686ff2e627d04ad6abfa384896dec211a2"},"45a910666b455daf042c0a0cfa610c20ea59a0aaf702f93d3b467a05f9a27e20","5580ff53b5f6f1ecdb68ecb61327e63112f97660912c15444c1f8a08f69c19dc","1fcb8b15db812281d69a3090d488903f9e93033004aef9d8889ca3ad0753a96f","84fb7c52fc116ddcbd1b34535e387053f2a0134d11c5e39b193f4c1328fb1fb5","bdf5a95eb0a2dd1d39805bdf51b46ba012bb9b92b2ddaae16219595bba7678a5","9f794a0e8550a03baff865a3961cc22afbd85bc4ba9672bdda036971928f85f4","66a697d1e4cdbf25cdce4644a8085a8563041fa8c7731d4d9f5e8f22e66ba72c","4f1ae3f24125216cf07c5211a3f00d2bb4782d7cc76c0681603f8249f9232ff0","d3fb92a5640f83f7844d60b35317a0f95c27e3658a749d76d218c461ad091668","8bc2cad630da1033c1fd8d7df2bffb18af0da6113bd086a8bbec04a2471a1e00","d1f8bfcd91b284657ef8187c55ace7db91a3c43e642c3f14e54364154932f7e4","f54c92bfcae54f360fe79514746efce4870e4ddabc064e95d406bba291e9f672","175fd7186fa6a70f9db9b270a04a503cae23cf01cb77e3905bac115c38424cf7","c993f7ed1b8e1023c1f2ee5b262dbc3b70b27475674e40a53a58591f9972dacc","fd3cd8bf3c90ef4694195a617a5daaac561d8be52ba33c607f170c11f3c50154","6852fc2f309e330e38694bad95bde670c384d1498bf4fbe3a751761b43279934",{"version":"fc46b90ef00ea80de64313ca101e3377e82c7de5b2b8cc82ec324ef64062dfd2","signature":"51d71dbcbf7dfc9fa475d1d2db8c744fc93cb91fb8b4e6e3724377066008e745"},{"version":"5d731342b1c0fd0c367ff68e163309ae71ca2fc8b3461861be64e68296730bf7","signature":"04130e865406d542194f0ca04c131174c7b7230b4c7b1ffe6deb723b411e5122"},{"version":"f287cf1ae78dadca66f0fff910164af2e66d7e1ee1ef4aa53e8bf9ac364d086a","signature":"ca2cd04f36686a52bf72f3a75f34f09d496abefb9410c13d609c968956d23fa8"},"91bdb91e83ad82b3a68955033c35413e11158a56448534cc11dae2734cab0d8f","fc8ed8a75b39d372ea11553e253c763a75b8447f6a5a3b0c3509b21803ce4783","6562fc4b9b470ee474add192278b9ad7d863b1096f57c7aeb26e6b15a86e51a7","19109153165b1279adbddfac3f9182ef2274cacc9dd2dbadbff7983332343348","b7b4da95464f11da1b8de59ed34f6deb740d14fcdd54065fdbbe850741ae958c","64d7747acb1d36374e9c884773b6dbede826dd9684cecad3c7fb4ce7960f90d7","47e62f697f75c990750842294e175977588557f15a9731625e7e3c882b4b1d24","ef5a427017c481641f81327b63c13c810eaf49bf770986ae959de10c12242dff","c633deeb89a5a7142bce011d097bc4d354533c6f51a5b25404355a968414f29a","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","c6591dc2b834e9be50f97edb393c4673e9b66f5689c90d69a71c7da962a0563a","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","adf189301df111a1faa1bf6abd90c1323cb769e73a3757371421a47a7ad38536","7c049c1aee9019c358917750ddb137dcba8210aa70fc0f38cc74c8aa8923a500","9ec3f45588bdc21f53ff886d8ba21f7b32662dcc110addbb6209eb45779b4637","15d3978a362d47f8ed5b868a28d0f8a5dfe6337c89b2700eba2e31d5c9e85bed","5a50144562fb77383e680369d9e3a079a302a4ec0e9c688fe7b7dc927f84af08","81ee761144fa54ff76f0ded5d66430aa3d2853075c298b75421d42c513f5076b",{"version":"48b08f051eb2ec26f1849a39c89983f14f94727be08544aad9d3288dd1c8417e","signature":"993744b36c8bae23bde7b4b5f54de91ddebb944b5a4afbfcb7604b15f0d26608"},{"version":"efe026cccf176ebb4989defd182b1402ad6b432248f85efec8adfdcd1914ef7a","signature":"66fdfd3fb3a180a39b3a465a45c2682e1123505d6bda88f2cd13707806955f0e"},"890fa9b79dae2c3abe454aa7c30c41ed66509b5643d56fd2104c7f5d9febd3f4","cc703e7df0457b35086d815d6ff33cd3452317d7a8d7f152597f8dbc6459c5f9","e24b93132bafb120fa11f2454152834abfe47179a2dd96abdbbc57734ed6472b","82bd382cdf173bc58e91d1e25c7acf91ff443983e5c68978082ad5f2877f9af9","f488ac0001e44c0038e04b5134ff153e6bd666e2eba11bb884543a708be88a95",{"version":"b0cd303641a5575deb48407b2a64c83fdcaa35d4cc4965167b167f13c0564104","signature":"090ea064f7de7b504d1168af39eaf9fd59920450ab581dfd5f7458d1bf3554a0"},{"version":"a37dae9464df53f20ce5494372d098b74807208fc411ce6052001a88b11a3848","signature":"e19b4ad73442eecba082977023d1de9d6de5869d8eea5e90b77d230aa7ff9158"},{"version":"b115b8d6869fe7704e4f658b35520f7a8e20089977d6af2497c4afadc7092cbe","signature":"8738ff26cb6ed57db7a193f0d0dc9dde271aef5abc8c0d75693f230876594d43"},{"version":"429495125cb6cb7b4819c396b535e5aa057730e92ef6ab96d9f0b709f6460c2d","signature":"04eafb317a7fe2573471ce70d5955e03527d1597c120f2483aae6b5815127df9"},{"version":"6b3875e799fc477088fe196fe847e7ee1e56d535abf5ff98056e20c2ad92f939","signature":"ebb66422766f0304bd7a4d53ab79034921277fe632062c464d4227629e1f833d"},{"version":"e02e0d426e98a3c1ba7c2588d7a490afec59d602f861080ca33cfcd5c6dc0a9d","signature":"adbeb36efd0d65689eddce562811b5aaf8d46c2719be7d669e86607f56acfa74"},"45d4c0b459175dd8a78fec4c0597bbb02d7b6a708c2a1400c4575618d717da13","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,177,181,183,184,185,186],[88,177,181,184,187],[88,177],[88,177,179],[88,179,180],[88],[88,175,176,178,189],[88,188],[88,182],[88,177,181],[88,194],[88,200],[88,196],[88,198,199],[88,198],[88,95],[58,61,87,88,95,235,236,237],[88,239],[88,213],[88,242],[88,243],[58,88,95],[88,260],[88,248,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,251,252,253,254,255,256,257,258,259,260],[88,249,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,250,252,253,254,255,256,257,258,259,260],[88,248,249,250,251,253,254,255,256,257,258,259,260],[88,248,249,250,251,252,254,255,256,257,258,259,260],[88,248,249,250,251,252,253,255,256,257,258,259,260],[88,248,249,250,251,252,253,254,256,257,258,259,260],[88,248,249,250,251,252,253,254,255,257,258,259,260],[88,248,249,250,251,252,253,254,255,256,258,259,260],[88,248,249,250,251,252,253,254,255,256,257,259,260],[88,248,249,250,251,252,253,254,255,256,257,258,260],[88,248,249,250,251,252,253,254,255,256,257,258,259],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,270],[88,273],[88,275],[88,164,165],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,166],[88,113,162],[88,162],[88,161,162,163,167,168,169,170,171],[88,113],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[88,223,224,225,226],[88,223],[88,113,223],[88,215],[88,217],[88,216,217,218,219],[88,155,156],[88,151,153,154,157],[88,152],[88,149,150],[88,153],[88,97,103,108,123,124,125,129,130,131,133,134,135,136],[88,113,123,124,137],[88,123],[88,123,137],[88,97,123,137],[88,97,113,123,137],[88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[58,88,95,113,123,129,132,137],[88,97,123,129],[88,97,113,123,126,127,128,137],[88,113,123,137],[88,97,113,123,129],[88,108,123,137],[88,138,146],[88,113,138,141],[58,88,95,123,134,137,138,139,140,141,143,144],[58,88,95,113,129,133,138,139,140,141,142,143,145],[88,139,140,141,142,143,144,145],[88,113,129,139,141,145,146],[88,129,132,145],[88,129,132,139,140,145],[88,206],[61,88,95],[58,88,92,114,115],[88,208],[88,203,204,205,209,210,211],[88,206,207],[42,88,147,174,191],[42,88,147],[42,88,147,195,197,200,201,202,212,214,220],[42,88],[42,88,174,191,192,193,221,222,228,229,230,231,232,233],[42,88,108,147,148,158,159,160,172,173],[42,88,147,174,231],[42,88,174],[42,88,147,227],[42,88,147,185,190],[42,88,147,173],[42,88,113,147,174,193,222,230],[147],[147,214],[108,147,172],[147,227],[113,147]],"referencedMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,147],[193,148],[221,149],[222,150],[234,151],[233,150],[174,152],[230,153],[232,154],[228,155],[191,156],[229,157],[231,158]],"exportedModulesMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,159],[193,159],[221,160],[234,151],[174,161],[230,159],[228,162],[191,159],[229,159],[231,163]],"semanticDiagnosticsPerFile":[187,188,179,180,181,177,175,190,178,176,189,183,182,184,185,186,194,195,215,196,197,200,198,199,201,202,213,238,240,239,214,241,236,242,243,244,245,246,247,261,249,250,248,251,252,253,254,255,256,257,258,259,260,262,263,264,265,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,266,267,268,237,269,271,270,272,274,273,275,276,164,165,166,96,97,101,102,100,103,98,99,113,109,110,111,112,161,167,163,168,172,169,162,170,171,108,107,106,104,105,121,119,117,123,118,120,122,227,225,224,223,226,216,218,220,217,219,157,155,156,158,153,152,150,149,151,154,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141,159,160,148,235,207,206,114,116,173,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,203,204,205,209,212,210,208,211,192,193,221,222,234,233,174,230,232,228,191,229,231]},"version":"4.7.4"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..ab04a5d7f3663e5540876a90e72d674d42b40975 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts +@@ -0,0 +1,54 @@ ++import { AuthTypes } from "@walletconnect/types"; ++export declare const getDidAddressSegments: (iss: string) => string[]; ++export declare const getDidChainId: (iss: string) => string | undefined; ++export declare const getNamespacedDidChainId: (iss: string) => string | undefined; ++export declare const getDidAddress: (iss: string) => string | undefined; ++export declare function validateSignedCacao(params: { ++ cacao: AuthTypes.Cacao; ++ projectId?: string; ++}): Promise; ++export declare const formatMessage: (cacao: AuthTypes.FormatMessageParams, iss: string) => string; ++export declare function buildAuthObject(requestPayload: AuthTypes.PayloadParams, signature: AuthTypes.CacaoSignature, iss: string): AuthTypes.Cacao; ++declare type PopulateAuthPayloadParams = { ++ authPayload: AuthTypes.PayloadParams; ++ chains: string[]; ++ methods: string[]; ++}; ++export declare function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams; ++export declare function getDecodedRecapFromResources(resources?: string[]): RecapType | undefined; ++export declare function recapHasResource(recap: any, resource: string): any; ++export declare function getRecapResource(recap: any, resource: string): any[]; ++export declare function getRecapAbilitiesFromResource(actions: any[]): string[][]; ++export declare function getReCapActions(abilities: any[]): any[]; ++export declare function base64Encode(input: unknown): string; ++export declare function base64Decode(encodedString: string): string; ++export declare function isValidRecap(recap: any): void; ++export declare function createRecap(resource: string, ability: string, actions: string[], limits?: {}): { ++ att: { ++ [x: string]: any; ++ }; ++}; ++declare type RecapType = { ++ att: { ++ [key: string]: Record; ++ }; ++}; ++export declare function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]): { ++ att: {}; ++}; ++export declare function assignAbilityToActions(ability: string, actions: string[], limits?: {}): any; ++export declare function encodeRecap(recap: any): string; ++export declare function decodeRecap(recap: any): RecapType; ++export declare function createEncodedRecap(resource: string, ability: string, actions: string[]): string; ++export declare function isRecap(resource: string): boolean | ""; ++export declare function mergeEncodedRecaps(recap1: string, recap2: string): string; ++export declare function mergeRecaps(recap1: RecapType, recap2: RecapType): { ++ att: {}; ++}; ++export declare function formatStatementFromRecap(statement: string | undefined, recap: RecapType): string; ++export declare function getMethodsFromRecap(recap: string): any[]; ++export declare function getChainsFromRecap(recap: string): string[]; ++export declare function buildRecapStatement(statement: string, recap: unknown): string; ++export declare function getRecapFromResources(resources?: string[]): string | undefined; ++export {}; ++//# sourceMappingURL=cacao.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a47cbed6a7b072608b9c10819eb05c4fb9a9e0c2 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"cacao.d.ts","sourceRoot":"","sources":["../../src/cacao.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts b/node_modules/@walletconnect/utils/dist/types/caip.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..020b018efce1c2463156e9e38bb4845a58d75732 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts +@@ -0,0 +1,24 @@ ++import { SessionTypes, ProposalTypes } from "@walletconnect/types"; ++interface ChainIdParams { ++ namespace: string; ++ reference: string; ++} ++interface AccountIdParams extends ChainIdParams { ++ address: string; ++} ++export declare function parseChainId(chain: string): ChainIdParams; ++export declare function formatChainId(params: ChainIdParams): string; ++export declare function parseAccountId(account: string): AccountIdParams; ++export declare function formatAccountId(params: AccountIdParams): string; ++export declare function getUniqueValues(array: string[], parser: (str: string) => string): string[]; ++export declare function getAddressFromAccount(account: string): string; ++export declare function getChainFromAccount(account: string): string; ++export declare function formatAccountWithChain(address: string, chain: string): string; ++export declare function getAddressesFromAccounts(accounts: string[]): string[]; ++export declare function getChainsFromAccounts(accounts: string[]): string[]; ++export declare function getAccountsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; ++export declare function getChainsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; ++export declare function getChainsFromRequiredNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, keys?: string[]): string[]; ++export declare function getChainsFromNamespace(namespace: string, namespaceProps: ProposalTypes.BaseRequiredNamespace): string[]; ++export {}; ++//# sourceMappingURL=caip.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..1de8c0941403193ef11f9ac955095552c2a32335 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"caip.d.ts","sourceRoot":"","sources":["../../src/caip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAGzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAG/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAG/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAO1F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,UAGpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAIlD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAIpE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAEvD;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,+BAA+B,CAC7C,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,EACpD,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,aAAa,CAAC,qBAAqB,YAIpD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dad378ddeb1330e69062e57bb0e9efc48cb7f20f +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts +@@ -0,0 +1,38 @@ ++import { CryptoTypes } from "@walletconnect/types"; ++import { ec as EC } from "elliptic"; ++export declare const BASE10 = "base10"; ++export declare const BASE16 = "base16"; ++export declare const BASE64 = "base64pad"; ++export declare const BASE64URL = "base64url"; ++export declare const UTF8 = "utf8"; ++export declare const TYPE_0 = 0; ++export declare const TYPE_1 = 1; ++export declare const TYPE_2 = 2; ++export declare type P256KeyDataType = { ++ crv: "P-256"; ++ ext: true; ++ key_ops: ["verify"]; ++ kty: string; ++ x: string; ++ y: string; ++}; ++export declare function generateKeyPair(): CryptoTypes.KeyPair; ++export declare function generateRandomBytes32(): string; ++export declare function deriveSymKey(privateKeyA: string, publicKeyB: string): string; ++export declare function hashKey(key: string): string; ++export declare function hashMessage(message: string): string; ++export declare function encodeTypeByte(type: number): Uint8Array; ++export declare function decodeTypeByte(byte: Uint8Array): number; ++export declare function encrypt(params: CryptoTypes.EncryptParams): string; ++export declare function encodeTypeTwoEnvelope(message: string, encoding?: CryptoTypes.EncodingType): string; ++export declare function decrypt(params: CryptoTypes.DecryptParams): string; ++export declare function decodeTypeTwoEnvelope(encoded: string, encoding?: CryptoTypes.EncodingType): string; ++export declare function serialize(params: CryptoTypes.EncodingParams): string; ++export declare function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams; ++export declare function validateDecoding(encoded: string, opts?: CryptoTypes.DecodeOptions): CryptoTypes.EncodingValidation; ++export declare function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation; ++export declare function isTypeOneEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; ++export declare function isTypeTwoEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; ++export declare function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair; ++export declare function verifyP256Jwt(token: string, keyData: P256KeyDataType): T; ++//# sourceMappingURL=crypto.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..03a08090de1867936f207319b4d5015f1fe4cc91 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,oBAAY,eAAe,GAAG;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAOF,wBAAgB,eAAe,IAAI,WAAW,CAAC,OAAO,CAMrD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAejE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAMR;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAMjE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAGR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,MAAM,CAiBpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAwB1F;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAC/B,WAAW,CAAC,kBAAkB,CAUhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAejG;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAMrC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAErC;AACD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,EAAE,CAAC,OAAO,CAU5E;AAeD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAkCvE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts b/node_modules/@walletconnect/utils/dist/types/errors.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..b77dd19f68a077bd9c0783ef9444802a6ca23402 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts +@@ -0,0 +1,135 @@ ++export declare type SdkErrorKey = keyof typeof SDK_ERRORS; ++export declare type InternalErrorKey = keyof typeof INTERNAL_ERRORS; ++export declare const SDK_ERRORS: { ++ INVALID_METHOD: { ++ message: string; ++ code: number; ++ }; ++ INVALID_EVENT: { ++ message: string; ++ code: number; ++ }; ++ INVALID_UPDATE_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ INVALID_EXTEND_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ INVALID_SESSION_SETTLE_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_METHOD: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_EVENT: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_UPDATE_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ UNAUTHORIZED_EXTEND_REQUEST: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED_CHAINS: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED_METHODS: { ++ message: string; ++ code: number; ++ }; ++ USER_REJECTED_EVENTS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_CHAINS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_METHODS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_EVENTS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_ACCOUNTS: { ++ message: string; ++ code: number; ++ }; ++ UNSUPPORTED_NAMESPACE_KEY: { ++ message: string; ++ code: number; ++ }; ++ USER_DISCONNECTED: { ++ message: string; ++ code: number; ++ }; ++ SESSION_SETTLEMENT_FAILED: { ++ message: string; ++ code: number; ++ }; ++ WC_METHOD_UNSUPPORTED: { ++ message: string; ++ code: number; ++ }; ++}; ++export declare const INTERNAL_ERRORS: { ++ NOT_INITIALIZED: { ++ message: string; ++ code: number; ++ }; ++ NO_MATCHING_KEY: { ++ message: string; ++ code: number; ++ }; ++ RESTORE_WILL_OVERRIDE: { ++ message: string; ++ code: number; ++ }; ++ RESUBSCRIBED: { ++ message: string; ++ code: number; ++ }; ++ MISSING_OR_INVALID: { ++ message: string; ++ code: number; ++ }; ++ EXPIRED: { ++ message: string; ++ code: number; ++ }; ++ UNKNOWN_TYPE: { ++ message: string; ++ code: number; ++ }; ++ MISMATCHED_TOPIC: { ++ message: string; ++ code: number; ++ }; ++ NON_CONFORMING_NAMESPACES: { ++ message: string; ++ code: number; ++ }; ++}; ++export declare function getInternalError(key: InternalErrorKey, context?: string | number): { ++ message: string; ++ code: number; ++}; ++export declare function getSdkError(key: SdkErrorKey, context?: string | number): { ++ message: string; ++ code: number; ++}; ++//# sourceMappingURL=errors.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..826749688352cccdb9fe646511dc4633d0543b0e +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAGA,oBAAY,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC;AAClD,oBAAY,gBAAgB,GAAG,MAAM,OAAO,eAAe,CAAC;AAK5D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FtB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAKF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMtE"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts b/node_modules/@walletconnect/utils/dist/types/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71f241ede545bf66a276874b8027cf27af296ad9 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts +@@ -0,0 +1,13 @@ ++export * from "./caip"; ++export * from "./cacao"; ++export * from "./crypto"; ++export * from "./misc"; ++export * from "./relay"; ++export * from "./uri"; ++export * from "./validators"; ++export * from "./errors"; ++export * from "./namespaces"; ++export * from "./network"; ++export * from "./memoryStore"; ++export * from "./signatures"; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts.map b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7d73f3c9a71413a0bfa21e447a06c805bd825d5f +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..36ee51297824debf446acb9d8e41b2accecf7388 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts +@@ -0,0 +1,6 @@ ++export declare abstract class MemoryStore { ++ static get(key: string): T | undefined; ++ static set(key: string, value: unknown): void; ++ static delete(key: string): void; ++} ++//# sourceMappingURL=memoryStore.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..0d3a3807db1e281609960d4356d347f404d4470f +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"AAEA,8BAAsB,WAAW;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM;IAInC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAItC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;CAG1B"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts b/node_modules/@walletconnect/utils/dist/types/misc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..3176d31702f84596039647ec194136fc0b22cb06 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts +@@ -0,0 +1,69 @@ ++import { SignClientTypes, RelayerClientMetadata, EngineTypes, RelayerTypes } from "@walletconnect/types"; ++import { ErrorResponse } from "@walletconnect/jsonrpc-utils"; ++import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; ++export declare const REACT_NATIVE_PRODUCT = "ReactNative"; ++export declare const ENV_MAP: { ++ reactNative: string; ++ node: string; ++ browser: string; ++ unknown: string; ++}; ++export declare const EMPTY_SPACE = " "; ++export declare const COLON = ":"; ++export declare const SLASH = "/"; ++export declare const DEFAULT_DEPTH = 2; ++export declare const ONE_THOUSAND = 1000; ++export declare const SDK_TYPE = "js"; ++export declare function isNode(): boolean; ++export declare function isReactNative(): boolean; ++export declare function isBrowser(): boolean; ++export declare function getEnvironment(): string; ++export declare function getBundleId(): string | undefined; ++export declare function appendToQueryString(queryString: string, newQueryParams: any): string; ++export declare function getAppMetadata(): SignClientTypes.Metadata; ++export declare function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata; ++export declare function getJavascriptOS(): string; ++export declare function getJavascriptID(): string; ++export declare function formatUA(protocol: string, version: number, sdkVersion: string): string; ++export declare function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }: RelayerTypes.RpcUrlParams): string; ++export declare function getHttpUrl(url: string): string; ++export declare function assertType(obj: any, key: string, type: string): void; ++export declare function parseContextNames(context: string, depth?: number): any[]; ++export declare function formatMessageContext(context: string): string; ++export declare function hasOverlap(a: any[], b: any[]): boolean; ++export declare function getLastItems(arr: any[], depth?: number): any[]; ++export declare function mapToObj(map: Map): Record; ++export declare function objToMap(obj: Record): Map; ++export declare function mapEntries(obj: Record, cb: (x: A) => B): Record; ++export declare const enumify: (x: T) => T; ++export declare function capitalizeWord(word: string): string; ++export declare function capitalize(str: string): string; ++export declare function createDelayedPromise(expiry?: number, expireErrorMessage?: string): { ++ resolve: (value?: T) => void; ++ reject: (value?: ErrorResponse) => void; ++ done: () => Promise; ++}; ++export declare function createExpiringPromise(promise: Promise, expiry: number, expireErrorMessage?: string): Promise; ++export declare function formatExpirerTarget(type: "topic" | "id", value: string | number): string; ++export declare function formatTopicTarget(topic: string): string; ++export declare function formatIdTarget(id: number): string; ++export declare function parseExpirerTarget(target: string): { ++ id?: number | undefined; ++ topic?: string | undefined; ++}; ++export declare function calcExpiry(ttl: number, now?: number): number; ++export declare function isExpired(expiry: number): boolean; ++export declare function engineEvent(event: EngineTypes.Event, id?: number | string | undefined): string; ++export declare function mergeArrays(a?: T[], b?: T[]): T[]; ++export declare function handleDeeplinkRedirect({ id, topic, wcDeepLink, }: { ++ id: number; ++ topic: string; ++ wcDeepLink: string; ++}): Promise; ++export declare function getDeepLink(store: IKeyValueStorage, key: string): Promise; ++export declare function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[]; ++export declare function getSearchParamFromURL(url: string, param: any): string | null; ++export declare function uuidv4(): string; ++//# sourceMappingURL=misc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5ef0f4f8b9d72b0c75dcc8470704dbf54e730772 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/misc.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,eAAO,MAAM,KAAK,MAAM,CAAC;AAEzB,eAAO,MAAM,KAAK,MAAM,CAAC;AAEzB,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAI7B,wBAAgB,MAAM,IAAI,OAAO,CAMhC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAahD;AAID,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,MAAM,CAQpF;AAID,wBAAgB,cAAc,IAAI,eAAe,CAAC,QAAQ,CASzD;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAQ/F;AAID,wBAAgB,eAAe,WAmB9B;AAED,wBAAgB,eAAe,WAG9B;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAI7E;AAGD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,YAAY,CAAC,YAAY,UAY3B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAOrC;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAI7D;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAgB,SAEvE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAGtD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,SAAgB,GAAG,GAAG,EAAE,CAErE;AAID,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAExE;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAExE;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GACd,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAMnB;AAKD,eAAO,MAAM,OAAO;;+BAAqE,CAAC;AAI1F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,UAE1C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAKrC;AAGD,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,GAAE,MAAqB,EAC7B,kBAAkB,CAAC,EAAE,MAAM;sBAeF,CAAC;qBAMF,aAAa;;EAYtC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,oBAY5B;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAYxF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;EAYhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,WAEvC;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,UAErF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC,EAAO,EAAE,CAAC,GAAE,CAAC,EAAO,GAAG,CAAC,EAAE,CAE5D;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,EAAE,EACF,KAAK,EACL,UAAU,GACX,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,iBAqCA;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,gBAYrE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAO5D;AAED,wBAAgB,MAAM,WAWrB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71ffdcebcfe16506e7d7195f20309a37095b95cc +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts +@@ -0,0 +1,22 @@ ++import { ProposalTypes, SessionTypes } from "@walletconnect/types"; ++export declare function getAccountsChains(accounts: SessionTypes.Namespace["accounts"]): string[]; ++export declare function getNamespacesChains(namespaces: SessionTypes.Namespaces): string[]; ++export declare function getNamespacesMethodsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; ++export declare function getNamespacesEventsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; ++export declare function getRequiredNamespacesFromNamespaces(namespaces: SessionTypes.Namespaces, caller: string): ProposalTypes.RequiredNamespaces; ++export declare type BuildApprovedNamespacesParams = { ++ proposal: ProposalTypes.Struct; ++ supportedNamespaces: Record; ++}; ++export declare function buildApprovedNamespaces(params: BuildApprovedNamespacesParams): SessionTypes.Namespaces; ++export declare function isCaipNamespace(namespace: string): boolean; ++export declare function parseNamespaceKey(namespace: string): string; ++export declare function normalizeNamespaces(namespaces: ProposalTypes.RequiredNamespaces): ProposalTypes.RequiredNamespaces; ++export declare function getNamespacesFromAccounts(accounts: string[]): {}; ++export declare function buildNamespacesFromAuth(methods: string[], accounts: string[]): {}; ++//# sourceMappingURL=namespaces.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..d7dff41be61e83834f25426f938598a46cbd2356 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/namespaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAInE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,YAQ7E;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,YAOtE;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,kBAAkB,CAalC;AAED,oBAAY,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CACzB,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAC9E,CAAC;CACH,CAAC;AASF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,6BAA6B,GACpC,YAAY,CAAC,UAAU,CAmGzB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,UAElD;AAoBD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,aAAa,CAAC,kBAAkB,GAC3C,aAAa,CAAC,kBAAkB,CAgBlC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAgB3D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAc5E"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts b/node_modules/@walletconnect/utils/dist/types/network.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..2b51101ec76eebaeca03c4a171d7f781f43b975c +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts +@@ -0,0 +1,8 @@ ++export declare function isOnline(): Promise; ++export declare function getBrowserOnlineStatus(): boolean; ++export declare function getReactNativeOnlineStatus(): Promise; ++export declare function getNodeOnlineStatus(): boolean; ++export declare function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void): void; ++export declare function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void): void; ++export declare function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void): void; ++//# sourceMappingURL=network.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts.map b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a882e728142d052ff8608548af8377e52f3c7ac0 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAiB3C;AAED,wBAAgB,sBAAsB,YAErC;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED,wBAAgB,mBAAmB,YAKlC;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAerF;AAED,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAK5F;AAGD,wBAAgB,mCAAmC,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAIhG"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts b/node_modules/@walletconnect/utils/dist/types/relay.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..3c2ce6681e2f566cd26619258b0f60c792ebb0a0 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts +@@ -0,0 +1,5 @@ ++import { RelayerTypes } from "@walletconnect/types"; ++export declare const RELAYER_DEFAULT_PROTOCOL = "irn"; ++export declare function getRelayProtocolName(opts?: RelayerTypes.RequestOptions): RelayerTypes.ProtocolOptions; ++export declare function getRelayProtocolApi(protocol: string): import("@walletconnect/relay-api").RelayJsonRpc.Methods; ++//# sourceMappingURL=relay.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..dd8bfc4629378861268f0c87c79b5aa0629b2d5c +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,YAAY,CAAC,eAAe,CAE9B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,2DAMnD"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..654326c5bff4655eb71eabce9ea056294423a86b +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts +@@ -0,0 +1,5 @@ ++import { AuthTypes } from "@walletconnect/types"; ++export declare function verifySignature(address: string, reconstructedMessage: string, cacaoSignature: AuthTypes.CacaoSignature, chainId: string, projectId: string, baseRpcUrl?: string): Promise; ++export declare function isValidEip191Signature(address: string, message: string, signature: string): boolean; ++export declare function isValidEip1271Signature(address: string, reconstructedMessage: string, signature: string, chainId: string, projectId: string, baseRpcUrl?: string): Promise; ++//# sourceMappingURL=signatures.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8159f880bf99865282817e01e70b0fcfaff5a026 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../src/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,SAAS,CAAC,cAAc,EACxC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,oBAsCpB"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts b/node_modules/@walletconnect/utils/dist/types/uri.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..f58153abd67f0e8345c2371f3282c6288dc8ab29 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts +@@ -0,0 +1,8 @@ ++import { EngineTypes, RelayerTypes } from "@walletconnect/types"; ++export declare function parseRelayParams(params: any, delimiter?: string): RelayerTypes.ProtocolOptions; ++export declare function parseUri(str: string): EngineTypes.UriParameters; ++export declare function parseTopic(topic: string): string; ++export declare function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter?: string): any; ++export declare function formatUri(params: EngineTypes.UriParameters): string; ++export declare function getLinkModeURL(universalLink: string, topic: string, encodedEnvelope: string): string; ++//# sourceMappingURL=uri.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..8063f3e6f356d4b63405f0e6648eb5ecc6fc5597 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,SAAM,GAAG,YAAY,CAAC,eAAe,CAW3F;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,aAAa,CA0B/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,eAAe,EAAE,SAAS,SAAM,OAUrF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAUnE;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,MAAM,CAER"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts b/node_modules/@walletconnect/utils/dist/types/validators.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..f17fe4d5550861873cecb5ac1c28c9b62934d993 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts +@@ -0,0 +1,44 @@ ++import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from "@walletconnect/types"; ++import { ErrorResponse } from "@walletconnect/jsonrpc-types"; ++export declare type ErrorObject = { ++ message: string; ++ code: number; ++} | null; ++export declare function isValidArray(arr: any, itemCondition?: (item: any) => boolean): boolean; ++export declare function isValidObject(obj: any): number | false; ++export declare function isUndefined(input: any): input is undefined; ++export declare function isValidString(input: any, optional: boolean): input is string; ++export declare function isValidNumber(input: any, optional: boolean): boolean; ++export declare function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams): boolean; ++export declare function isValidChainId(value: any): boolean; ++export declare function isValidAccountId(value: any): boolean; ++export declare function isValidUrl(value: any): boolean; ++export declare function isProposalStruct(input: any): input is ProposalTypes.Struct; ++export declare function isSessionStruct(input: any): input is SessionTypes.Struct; ++export declare function isValidController(input: any, method: string): ErrorObject; ++export declare function isValidNamespaceMethodsOrEvents(input: any): input is string; ++export declare function isValidChains(key: string, chains: any, context: string): ErrorObject; ++export declare function isValidNamespaceChains(namespaces: any, method: string, type: string): null; ++export declare function isValidAccounts(accounts: any, context: string): ErrorObject; ++export declare function isValidNamespaceAccounts(input: any, method: string): null; ++export declare function isValidActions(namespace: any, context: string): ErrorObject; ++export declare function isValidNamespaceActions(input: any, method: string): null; ++export declare function isValidRequiredNamespaces(input: any, method: string, type: string): ErrorObject; ++export declare function isValidNamespaces(input: any, method: string): ErrorObject; ++export declare function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions; ++export declare function isValidRelays(input: any, optional: boolean): input is RelayerTypes.ProtocolOptions[]; ++export declare function isValidId(input: any): boolean; ++export declare function isValidParams(input: any): boolean; ++export declare function isValidErrorReason(input: any): input is ErrorResponse; ++export declare function isValidRequest(request: any): boolean; ++export declare function isValidResponse(response: any): boolean; ++export declare function isValidEvent(event: any): boolean; ++export declare function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string): boolean; ++export declare function isValidNamespacesRequest(namespaces: SessionTypes.Namespaces, chainId: string, method: string): boolean; ++export declare function isValidNamespacesEvent(namespaces: SessionTypes.Namespaces, chainId: string, eventName: string): boolean; ++export declare function isConformingNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, namespaces: SessionTypes.Namespaces, context: string): ErrorObject; ++export declare function isValidRequestExpiry(expiry: number, boundaries: { ++ min: number; ++ max: number; ++}): boolean; ++//# sourceMappingURL=validators.d.ts.map +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..840230079b7372007858eec63312513a8e37bf83 +--- /dev/null ++++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@walletconnect/utils/package.json b/node_modules/@walletconnect/utils/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..a09f22037d5042cd95e3b8d6094717780a1bbedf +--- /dev/null ++++ b/node_modules/@walletconnect/utils/package.json +@@ -0,0 +1,85 @@ ++{ ++ "name": "@walletconnect/utils", ++ "description": "Utilities for WalletConnect Protocol", ++ "version": "2.16.1", ++ "author": "WalletConnect, Inc. ", ++ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", ++ "license": "Apache-2.0", ++ "main": "dist/index.cjs.js", ++ "module": "dist/index.es.js", ++ "unpkg": "dist/index.umd.js", ++ "types": "dist/types/index.d.ts", ++ "sideEffects": false, ++ "files": [ ++ "dist" ++ ], ++ "keywords": [ ++ "wallet", ++ "walletconnect" ++ ], ++ "scripts": { ++ "clean": "rm -rf dist", ++ "build:pre": "npm run clean", ++ "build:types": "tsc", ++ "build:source": "rollup --config rollup.config.js", ++ "build": "npm run build:pre; npm run build:source; npm run build:types", ++ "test:pre": "rm -rf ./test/test.db", ++ "test:run": "vitest run --dir test", ++ "test": "npm run test:pre; npm run test:run", ++ "test:ignoreUnhandled": "npm run test:pre; npm run test:run -- --dangerouslyIgnoreUnhandledErrors", ++ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", ++ "prettier": "prettier --check '{src,test}/**/*.{js,ts,jsx,tsx}'" ++ }, ++ "dependencies": { ++ "@stablelib/chacha20poly1305": "1.0.1", ++ "@stablelib/hkdf": "1.0.1", ++ "@stablelib/random": "1.0.2", ++ "@stablelib/sha256": "1.0.1", ++ "@stablelib/x25519": "1.0.3", ++ "@walletconnect/relay-api": "1.0.11", ++ "@walletconnect/relay-auth": "1.0.4", ++ "@walletconnect/safe-json": "1.0.2", ++ "@walletconnect/time": "1.0.2", ++ "@walletconnect/types": "2.16.1", ++ "@walletconnect/window-getters": "1.0.1", ++ "@walletconnect/window-metadata": "1.0.1", ++ "detect-browser": "5.3.0", ++ "elliptic": "^6.5.7", ++ "query-string": "7.1.3", ++ "uint8arrays": "3.1.0" ++ }, ++ "devDependencies": { ++ "@types/elliptic": "^6.4.18", ++ "@types/lodash.isequal": "4.5.6" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/README.md b/node_modules/uint8arrays/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..4bc4398f9f4f87fd5a3a190fa7ff61dd7b88b080 +--- /dev/null ++++ b/node_modules/uint8arrays/README.md +@@ -0,0 +1,158 @@ ++# Uint8Arrays ++ ++Some utility functions to make dealing with `Uint8Array`s more pleasant. ++ ++- [API](#api) ++ - [alloc(size)](#allocsize) ++ - [Example](#example) ++ - [allocUnsafe(size)](#allocunsafesize) ++ - [Example](#example-1) ++ - [compare(a, b)](#comparea-b) ++ - [Example](#example-2) ++ - [concat(arrays, [length])](#concatarrays-length) ++ - [Example](#example-3) ++ - [equals(a, b)](#equalsa-b) ++ - [Example](#example-4) ++ - [fromString(string, encoding = 'utf8')](#fromstringstring-encoding--utf8) ++ - [Example](#example-5) ++ - [toString(array, encoding = 'utf8')](#tostringarray-encoding--utf8) ++ - [Example](#example-6) ++ - [xor(a, b)](#xora-b) ++ - [Example](#example-7) ++ ++## API ++ ++### alloc(size) ++ ++Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. ++ ++#### Example ++ ++```js ++import { alloc } from 'uint8arrays/alloc` ++ ++const buf = alloc(100) ++``` ++ ++### allocUnsafe(size) ++ ++Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. ++ ++On platforms that support it, memory referenced by the returned `Uint8Array` will not be initialized. ++ ++#### Example ++ ++```js ++import { allocUnsafe } from 'uint8arrays/alloc` ++ ++const buf = allocUnsafe(100) ++``` ++ ++### compare(a, b) ++ ++Compare two `Uint8Arrays` ++ ++#### Example ++ ++```js ++import { compare } from 'uint8arrays/compare' ++ ++const arrays = [ ++ Uint8Array.from([3, 4, 5]), ++ Uint8Array.from([0, 1, 2]) ++] ++ ++const sorted = arrays.sort(compare) ++ ++console.info(sorted) ++// [ ++// Uint8Array[0, 1, 2] ++// Uint8Array[3, 4, 5] ++// ] ++``` ++ ++### concat(arrays, [length]) ++ ++Concatenate one or more array-likes and return a `Uint8Array` with their contents. ++ ++If you know the length of the arrays, pass it as a second parameter, otherwise it will be calculated by traversing the list of arrays. ++ ++#### Example ++ ++```js ++import { concat } from 'uint8arrays/concat' ++ ++const arrays = [ ++ Uint8Array.from([0, 1, 2]), ++ Uint8Array.from([3, 4, 5]) ++] ++ ++const all = concat(arrays, 6) ++ ++console.info(all) ++// Uint8Array[0, 1, 2, 3, 4, 5] ++``` ++ ++### equals(a, b) ++ ++Returns true if the two arrays are the same array or if they have the same length and contents. ++ ++#### Example ++ ++```js ++import { equals } from 'uint8arrays/equals' ++ ++const a = Uint8Array.from([0, 1, 2]) ++const b = Uint8Array.from([3, 4, 5]) ++const c = Uint8Array.from([0, 1, 2]) ++ ++console.info(equals(a, b)) // false ++console.info(equals(a, c)) // true ++console.info(equals(a, a)) // true ++``` ++ ++### fromString(string, encoding = 'utf8') ++ ++Returns a new `Uint8Array` created from the passed string and interpreted as the passed encoding. ++ ++Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). ++ ++#### Example ++ ++```js ++import { fromString } from 'uint8arrays/from-string' ++ ++console.info(fromString('hello world')) // Uint8Array[104, 101 ... ++console.info(fromString('00010203aabbcc', 'base16')) // Uint8Array[0, 1 ... ++console.info(fromString('AAECA6q7zA', 'base64')) // Uint8Array[0, 1 ... ++console.info(fromString('01234', 'ascii')) // Uint8Array[48, 49 ... ++``` ++ ++### toString(array, encoding = 'utf8') ++ ++Returns a string created from the passed `Uint8Array` in the passed encoding. ++ ++Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). ++ ++#### Example ++ ++```js ++import { toString } from 'uint8arrays/to-string' ++ ++console.info(toString(Uint8Array.from([104, 101...]))) // 'hello world' ++console.info(toString(Uint8Array.from([0, 1, 2...]), 'base16')) // '00010203aabbcc' ++console.info(toString(Uint8Array.from([0, 1, 2...]), 'base64')) // 'AAECA6q7zA' ++console.info(toString(Uint8Array.from([48, 49, 50...]), 'ascii')) // '01234' ++``` ++ ++### xor(a, b) ++ ++Returns a `Uint8Array` containing `a` and `b` xored together. ++ ++#### Example ++ ++```js ++import { xor } from 'uint8arrays/xor' ++ ++console.info(xor(Uint8Array.from([1, 0]), Uint8Array.from([0, 1]))) // Uint8Array[1, 1] ++``` +diff --git a/node_modules/uint8arrays/alloc b/node_modules/uint8arrays/alloc +new file mode 100644 +index 0000000000000000000000000000000000000000..96adbd1c30cc40c637803b469fa5c6491c509843 +--- /dev/null ++++ b/node_modules/uint8arrays/alloc +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/alloc.js') +diff --git a/node_modules/uint8arrays/cjs/src/alloc.js b/node_modules/uint8arrays/cjs/src/alloc.js +new file mode 100644 +index 0000000000000000000000000000000000000000..62f337da370082d906ed5fedd6cc052601b367a3 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/alloc.js +@@ -0,0 +1,19 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function alloc(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { ++ return globalThis.Buffer.alloc(size); ++ } ++ return new Uint8Array(size); ++} ++function allocUnsafe(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { ++ return globalThis.Buffer.allocUnsafe(size); ++ } ++ return new Uint8Array(size); ++} ++ ++exports.alloc = alloc; ++exports.allocUnsafe = allocUnsafe; +diff --git a/node_modules/uint8arrays/cjs/src/compare.js b/node_modules/uint8arrays/cjs/src/compare.js +new file mode 100644 +index 0000000000000000000000000000000000000000..f76a876da6b87c8218d0efda7366189c7d7d46a4 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/compare.js +@@ -0,0 +1,23 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function compare(a, b) { ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] < b[i]) { ++ return -1; ++ } ++ if (a[i] > b[i]) { ++ return 1; ++ } ++ } ++ if (a.byteLength > b.byteLength) { ++ return 1; ++ } ++ if (a.byteLength < b.byteLength) { ++ return -1; ++ } ++ return 0; ++} ++ ++exports.compare = compare; +diff --git a/node_modules/uint8arrays/cjs/src/concat.js b/node_modules/uint8arrays/cjs/src/concat.js +new file mode 100644 +index 0000000000000000000000000000000000000000..b5f6039223c16c8432bf34b601897a0e963e1dd0 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/concat.js +@@ -0,0 +1,20 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var alloc = require('./alloc.js'); ++ ++function concat(arrays, length) { ++ if (!length) { ++ length = arrays.reduce((acc, curr) => acc + curr.length, 0); ++ } ++ const output = alloc.allocUnsafe(length); ++ let offset = 0; ++ for (const arr of arrays) { ++ output.set(arr, offset); ++ offset += arr.length; ++ } ++ return output; ++} ++ ++exports.concat = concat; +diff --git a/node_modules/uint8arrays/cjs/src/equals.js b/node_modules/uint8arrays/cjs/src/equals.js +new file mode 100644 +index 0000000000000000000000000000000000000000..073c46ba1f52e921f55f98d82106a67d542a4321 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/equals.js +@@ -0,0 +1,20 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function equals(a, b) { ++ if (a === b) { ++ return true; ++ } ++ if (a.byteLength !== b.byteLength) { ++ return false; ++ } ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] !== b[i]) { ++ return false; ++ } ++ } ++ return true; ++} ++ ++exports.equals = equals; +diff --git a/node_modules/uint8arrays/cjs/src/from-string.js b/node_modules/uint8arrays/cjs/src/from-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..d4899669d3d3a69ae33b1d6a5de6ed4facab9702 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/from-string.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var bases = require('./util/bases.js'); ++ ++function fromString(string, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(string, 'utf8'); ++ } ++ return base.decoder.decode(`${ base.prefix }${ string }`); ++} ++ ++exports.fromString = fromString; +diff --git a/node_modules/uint8arrays/cjs/src/index.js b/node_modules/uint8arrays/cjs/src/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e04d18c1e8b50930f11469e29d36e3624800ee3e +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/index.js +@@ -0,0 +1,19 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var compare = require('./compare.js'); ++var concat = require('./concat.js'); ++var equals = require('./equals.js'); ++var fromString = require('./from-string.js'); ++var toString = require('./to-string.js'); ++var xor = require('./xor.js'); ++ ++ ++ ++exports.compare = compare.compare; ++exports.concat = concat.concat; ++exports.equals = equals.equals; ++exports.fromString = fromString.fromString; ++exports.toString = toString.toString; ++exports.xor = xor.xor; +diff --git a/node_modules/uint8arrays/cjs/src/to-string.js b/node_modules/uint8arrays/cjs/src/to-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..60041ca99380e4e96896d2e3d314bfedf291abd4 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/to-string.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var bases = require('./util/bases.js'); ++ ++function toString(array, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); ++ } ++ return base.encoder.encode(array).substring(1); ++} ++ ++exports.toString = toString; +diff --git a/node_modules/uint8arrays/cjs/src/util/bases.js b/node_modules/uint8arrays/cjs/src/util/bases.js +new file mode 100644 +index 0000000000000000000000000000000000000000..889ba8ca4f4590ad982343e2e557a86345dbba6e +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/util/bases.js +@@ -0,0 +1,49 @@ ++'use strict'; ++ ++var basics = require('multiformats/basics'); ++var alloc = require('../alloc.js'); ++ ++function createCodec(name, prefix, encode, decode) { ++ return { ++ name, ++ prefix, ++ encoder: { ++ name, ++ prefix, ++ encode ++ }, ++ decoder: { decode } ++ }; ++} ++const string = createCodec('utf8', 'u', buf => { ++ const decoder = new TextDecoder('utf8'); ++ return 'u' + decoder.decode(buf); ++}, str => { ++ const encoder = new TextEncoder(); ++ return encoder.encode(str.substring(1)); ++}); ++const ascii = createCodec('ascii', 'a', buf => { ++ let string = 'a'; ++ for (let i = 0; i < buf.length; i++) { ++ string += String.fromCharCode(buf[i]); ++ } ++ return string; ++}, str => { ++ str = str.substring(1); ++ const buf = alloc.allocUnsafe(str.length); ++ for (let i = 0; i < str.length; i++) { ++ buf[i] = str.charCodeAt(i); ++ } ++ return buf; ++}); ++const BASES = { ++ utf8: string, ++ 'utf-8': string, ++ hex: basics.bases.base16, ++ latin1: ascii, ++ ascii: ascii, ++ binary: ascii, ++ ...basics.bases ++}; ++ ++module.exports = BASES; +diff --git a/node_modules/uint8arrays/cjs/src/xor.js b/node_modules/uint8arrays/cjs/src/xor.js +new file mode 100644 +index 0000000000000000000000000000000000000000..3b7f04d6ad8ca2ac0c75d9527f8abf75c3a32d2b +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/xor.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var alloc = require('./alloc.js'); ++ ++function xor(a, b) { ++ if (a.length !== b.length) { ++ throw new Error('Inputs should have the same length'); ++ } ++ const result = alloc.allocUnsafe(a.length); ++ for (let i = 0; i < a.length; i++) { ++ result[i] = a[i] ^ b[i]; ++ } ++ return result; ++} ++ ++exports.xor = xor; +diff --git a/node_modules/uint8arrays/compare b/node_modules/uint8arrays/compare +new file mode 100644 +index 0000000000000000000000000000000000000000..e5012fd8b14ddd8ae03b8cf34b0803cbb153f54d +--- /dev/null ++++ b/node_modules/uint8arrays/compare +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/compare.js') +diff --git a/node_modules/uint8arrays/concat b/node_modules/uint8arrays/concat +new file mode 100644 +index 0000000000000000000000000000000000000000..77d4c7ff6075cef2ccf07978629ebe9c0b5676c1 +--- /dev/null ++++ b/node_modules/uint8arrays/concat +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/concat.js') +diff --git a/node_modules/uint8arrays/equals b/node_modules/uint8arrays/equals +new file mode 100644 +index 0000000000000000000000000000000000000000..fb9b155afd3f89970606e5bce212653a9edda8a5 +--- /dev/null ++++ b/node_modules/uint8arrays/equals +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/equals.js') +diff --git a/node_modules/uint8arrays/esm/package.json b/node_modules/uint8arrays/esm/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..b0f779bef674eb02c1185e55c0ffd20179a078f9 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/package.json +@@ -0,0 +1,33 @@ ++{ ++ "type": "module", ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/esm/src/alloc.js b/node_modules/uint8arrays/esm/src/alloc.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e9326afa4af656b8f97576f79177e94ab9d12372 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/alloc.js +@@ -0,0 +1,12 @@ ++export function alloc(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { ++ return globalThis.Buffer.alloc(size); ++ } ++ return new Uint8Array(size); ++} ++export function allocUnsafe(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { ++ return globalThis.Buffer.allocUnsafe(size); ++ } ++ return new Uint8Array(size); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/compare.js b/node_modules/uint8arrays/esm/src/compare.js +new file mode 100644 +index 0000000000000000000000000000000000000000..251ba99326ef616a7259ae690a195c55eb69e3c4 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/compare.js +@@ -0,0 +1,17 @@ ++export function compare(a, b) { ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] < b[i]) { ++ return -1; ++ } ++ if (a[i] > b[i]) { ++ return 1; ++ } ++ } ++ if (a.byteLength > b.byteLength) { ++ return 1; ++ } ++ if (a.byteLength < b.byteLength) { ++ return -1; ++ } ++ return 0; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/concat.js b/node_modules/uint8arrays/esm/src/concat.js +new file mode 100644 +index 0000000000000000000000000000000000000000..1becaa52d193e7c41af30fcfb6de675dd5520730 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/concat.js +@@ -0,0 +1,13 @@ ++import { allocUnsafe } from './alloc.js'; ++export function concat(arrays, length) { ++ if (!length) { ++ length = arrays.reduce((acc, curr) => acc + curr.length, 0); ++ } ++ const output = allocUnsafe(length); ++ let offset = 0; ++ for (const arr of arrays) { ++ output.set(arr, offset); ++ offset += arr.length; ++ } ++ return output; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/equals.js b/node_modules/uint8arrays/esm/src/equals.js +new file mode 100644 +index 0000000000000000000000000000000000000000..fbedbe071a446722515778a030724b4d2ab87030 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/equals.js +@@ -0,0 +1,14 @@ ++export function equals(a, b) { ++ if (a === b) { ++ return true; ++ } ++ if (a.byteLength !== b.byteLength) { ++ return false; ++ } ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] !== b[i]) { ++ return false; ++ } ++ } ++ return true; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/from-string.js b/node_modules/uint8arrays/esm/src/from-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..0a98afd2708b0f7f182f92f4b98244655b6c85cb +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/from-string.js +@@ -0,0 +1,11 @@ ++import bases from './util/bases.js'; ++export function fromString(string, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(string, 'utf8'); ++ } ++ return base.decoder.decode(`${ base.prefix }${ string }`); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/index.js b/node_modules/uint8arrays/esm/src/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..2ec817cb7bfaa10be4baf9dfdeae279230041130 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/index.js +@@ -0,0 +1,14 @@ ++import { compare } from './compare.js'; ++import { concat } from './concat.js'; ++import { equals } from './equals.js'; ++import { fromString } from './from-string.js'; ++import { toString } from './to-string.js'; ++import { xor } from './xor.js'; ++export { ++ compare, ++ concat, ++ equals, ++ fromString, ++ toString, ++ xor ++}; +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/to-string.js b/node_modules/uint8arrays/esm/src/to-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..f1fdd01972c3f7ba0abf5d4b5f3539fd60a25ef4 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/to-string.js +@@ -0,0 +1,11 @@ ++import bases from './util/bases.js'; ++export function toString(array, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); ++ } ++ return base.encoder.encode(array).substring(1); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/util/bases.js b/node_modules/uint8arrays/esm/src/util/bases.js +new file mode 100644 +index 0000000000000000000000000000000000000000..ec42186bf5433036f1c4485bed9cf67c4ff66595 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/util/bases.js +@@ -0,0 +1,45 @@ ++import { bases } from 'multiformats/basics'; ++import { allocUnsafe } from '../alloc.js'; ++function createCodec(name, prefix, encode, decode) { ++ return { ++ name, ++ prefix, ++ encoder: { ++ name, ++ prefix, ++ encode ++ }, ++ decoder: { decode } ++ }; ++} ++const string = createCodec('utf8', 'u', buf => { ++ const decoder = new TextDecoder('utf8'); ++ return 'u' + decoder.decode(buf); ++}, str => { ++ const encoder = new TextEncoder(); ++ return encoder.encode(str.substring(1)); ++}); ++const ascii = createCodec('ascii', 'a', buf => { ++ let string = 'a'; ++ for (let i = 0; i < buf.length; i++) { ++ string += String.fromCharCode(buf[i]); ++ } ++ return string; ++}, str => { ++ str = str.substring(1); ++ const buf = allocUnsafe(str.length); ++ for (let i = 0; i < str.length; i++) { ++ buf[i] = str.charCodeAt(i); ++ } ++ return buf; ++}); ++const BASES = { ++ utf8: string, ++ 'utf-8': string, ++ hex: bases.base16, ++ latin1: ascii, ++ ascii: ascii, ++ binary: ascii, ++ ...bases ++}; ++export default BASES; +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/xor.js b/node_modules/uint8arrays/esm/src/xor.js +new file mode 100644 +index 0000000000000000000000000000000000000000..d569ed64b70fb1627a6d8f82b4662f7538f6e694 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/xor.js +@@ -0,0 +1,11 @@ ++import { allocUnsafe } from './alloc.js'; ++export function xor(a, b) { ++ if (a.length !== b.length) { ++ throw new Error('Inputs should have the same length'); ++ } ++ const result = allocUnsafe(a.length); ++ for (let i = 0; i < a.length; i++) { ++ result[i] = a[i] ^ b[i]; ++ } ++ return result; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/from-string b/node_modules/uint8arrays/from-string +new file mode 100644 +index 0000000000000000000000000000000000000000..2cc705ce49836283622c3f82290e910712107007 +--- /dev/null ++++ b/node_modules/uint8arrays/from-string +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/from-string.js') +diff --git a/node_modules/uint8arrays/index.js b/node_modules/uint8arrays/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..580d8d99288b7b972da6c5c480503710e62d4b15 +--- /dev/null ++++ b/node_modules/uint8arrays/index.js +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/index.js') +diff --git a/node_modules/uint8arrays/index.min.js b/node_modules/uint8arrays/index.min.js +new file mode 100644 +index 0000000000000000000000000000000000000000..bcf42aca46b3ca48a137a3a93fe37cd8b17d6eb9 +--- /dev/null ++++ b/node_modules/uint8arrays/index.min.js +@@ -0,0 +1,17 @@ ++(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Uint8arrays = factory()}(typeof self !== 'undefined' ? self : this, function () { ++var Uint8arrays=(()=>{var ue=Object.defineProperty;var $e=r=>ue(r,"__esModule",{value:!0});var h=(r,e)=>{$e(r);for(var t in e)ue(r,t,{get:e[t],enumerable:!0})};var Yt={};h(Yt,{compare:()=>De,concat:()=>ie,equals:()=>ae,fromString:()=>Me,toString:()=>Ve,xor:()=>Pe});function De(r,e){for(let t=0;te[t])return 1}return r.byteLength>e.byteLength?1:r.byteLengths+n.length,0));let t=U(e),o=0;for(let s of r)t.set(s,o),o+=s.length;return t}function ae(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;tKe});function qe(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o>>0,l=new Uint8Array(E);b!==C;){for(var g=u[b],v=0,m=E-1;(g!==0||v>>0,l[m]=g%a>>>0,g=g/a>>>0;if(g!==0)throw new Error("Non-zero carry");j=v,b++}for(var x=E-j;x!==E&&l[x]===0;)x++;for(var k=f.repeat(d);x>>0,E=new Uint8Array(C);u[d];){var l=t[u.charCodeAt(d)];if(l===255)return;for(var g=0,v=C-1;(l!==0||g>>0,E[v]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");b=g,d++}if(u[d]!==" "){for(var m=C-b;m!==C&&E[m]===0;)m++;for(var x=new Uint8Array(j+(C-m)),k=j;m!==C;)x[k++]=E[m++];return x}}}function ke(u){var d=P(u);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:S,decodeUnsafe:P,decode:ke}}var Re=qe,Je=Re,ce=Je;var ur=new Uint8Array(0);var fe=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var de=r=>new TextEncoder().encode(r),he=r=>new TextDecoder().decode(r);var le=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},be=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ce(this,e)}},me=class{constructor(e){this.decoders=e}or(e){return Ce(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ce=(r,e)=>new me({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Ee=class{constructor(e,t,o,s){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=s,this.encoder=new le(e,t,o),this.decoder=new be(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new Ee(r,e,t,o),A=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:s}=ce(t,e);return T({prefix:r,name:e,encode:o,decode:n=>y(s(n))})},Xe=(r,e,t,o)=>{let s={};for(let p=0;p=8&&(a-=8,D[B++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return D},Ge=(r,e,t)=>{let o=e[e.length-1]==="=",s=(1<t;)D-=t,n+=e[s&a>>D];if(D&&(n+=e[s&a<T({prefix:e,name:r,encode(s){return Ge(s,o,t)},decode(s){return Xe(s,o,t,r)}});var Ke=T({prefix:"\0",name:"identity",encode:r=>he(r),decode:r=>de(r)});var X={};h(X,{base2:()=>Qe});var Qe=i({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var G={};h(G,{base8:()=>He});var He=i({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var K={};h(K,{base10:()=>We});var We=A({prefix:"9",name:"base10",alphabet:"0123456789"});var Q={};h(Q,{base16:()=>Ze,base16upper:()=>Ye});var Ze=i({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ye=i({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var H={};h(H,{base32:()=>z,base32hex:()=>rt,base32hexpad:()=>st,base32hexpadupper:()=>nt,base32hexupper:()=>ot,base32pad:()=>et,base32padupper:()=>tt,base32upper:()=>_e,base32z:()=>ut});var z=i({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_e=i({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),et=i({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tt=i({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rt=i({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ot=i({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),st=i({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nt=i({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ut=i({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var W={};h(W,{base36:()=>Dt,base36upper:()=>it});var Dt=A({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),it=A({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z={};h(Z,{base58btc:()=>w,base58flickr:()=>at});var w=A({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),at=A({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Y={};h(Y,{base64:()=>ct,base64pad:()=>ft,base64url:()=>dt,base64urlpad:()=>ht});var ct=i({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ft=i({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),dt=i({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ht=i({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var _={};h(_,{base256emoji:()=>Ct});var ge=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),pt=ge.reduce((r,e,t)=>(r[t]=e,r),[]),lt=ge.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function bt(r){return r.reduce((e,t)=>(e+=pt[t],e),"")}function mt(r){let e=[];for(let t of r){let o=lt[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Ct=T({prefix:"\u{1F680}",name:"base256emoji",encode:bt,decode:mt});var re={};h(re,{sha256:()=>Mt,sha512:()=>Vt});var Et=xe,we=128,gt=127,wt=~gt,xt=Math.pow(2,31);function xe(r,e,t){e=e||[],t=t||0;for(var o=t;r>=xt;)e[t++]=r&255|we,r/=128;for(;r&wt;)e[t++]=r&255|we,r>>>=7;return e[t]=r|0,xe.bytes=t-o+1,e}var yt=ee,vt=128,ye=127;function ee(r,e){var t=0,e=e||0,o=0,s=e,n,D=r.length;do{if(s>=D)throw ee.bytes=0,new RangeError("Could not decode varint");n=r[s++],t+=o<28?(n&ye)<=vt);return ee.bytes=s-e,t}var At=Math.pow(2,7),jt=Math.pow(2,14),Ft=Math.pow(2,21),Bt=Math.pow(2,28),St=Math.pow(2,35),Ut=Math.pow(2,42),Tt=Math.pow(2,49),zt=Math.pow(2,56),It=Math.pow(2,63),Lt=function(r){return r[N.decode(r),N.decode.bytes],I=(r,e,t=0)=>(N.encode(r,e,t),e),L=r=>N.encodingLength(r);var F=(r,e)=>{let t=e.byteLength,o=L(r),s=o+L(t),n=new Uint8Array(s+t);return I(r,n,0),I(t,n,o),n.set(e,s),new M(r,t,e,n)},Ae=r=>{let e=y(r),[t,o]=O(e),[s,n]=O(e.subarray(o)),D=e.subarray(o+n);if(D.byteLength!==s)throw new Error("Incorrect length");return new M(t,s,D,e)},je=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&fe(r.bytes,e.bytes),M=class{constructor(e,t,o,s){this.code=e,this.size=t,this.digest=o,this.bytes=s}};var te=({name:r,code:e,encode:t})=>new Be(r,e,t),Be=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?F(this.code,t):t.then(o=>F(this.code,o))}else throw Error("Unknown type, must be binary type")}};var Ue=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Mt=te({name:"sha2-256",code:18,encode:Ue("SHA-256")}),Vt=te({name:"sha2-512",code:19,encode:Ue("SHA-512")});var oe={};h(oe,{identity:()=>$t});var Te=0,Pt="identity",ze=y,kt=r=>F(Te,ze(r)),$t={code:Te,name:Pt,encode:ze,digest:kt};var Ur=new TextEncoder,Tr=new TextDecoder;var c=class{constructor(e,t,o,s){this.code=t,this.version=e,this.multihash=o,this.bytes=s,this.byteOffset=s.byteOffset,this.byteLength=s.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:q,byteLength:q,code:$,version:$,multihash:$,bytes:$,_baseCache:q,asCID:q})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==V)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kt)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return c.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=F(e,t);return c.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&je(this.multihash,e.multihash)}toString(e){let{bytes:t,version:o,_baseCache:s}=this;switch(o){case 0:return Xt(t,s,e||w.encoder);default:return Gt(t,s,e||z.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return Ht(/^0\.0/,Wt),!!(e&&(e[Le]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof c)return e;if(e!=null&&e.asCID===e){let{version:t,code:o,multihash:s,bytes:n}=e;return new c(t,o,s,n||Ie(t,o,s.bytes))}else if(e!=null&&e[Le]===!0){let{version:t,multihash:o,code:s}=e,n=Ae(o);return c.create(t,s,n)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==V)throw new Error(`Version 0 CID must use dag-pb (code: ${V}) block encoding`);return new c(e,t,o,o.bytes)}case 1:{let s=Ie(e,t,o.bytes);return new c(e,t,o,s)}default:throw new Error("Invalid version")}}static createV0(e){return c.create(0,V,e)}static createV1(e,t){return c.create(1,e,t)}static decode(e){let[t,o]=c.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=c.inspectBytes(e),o=t.size-t.multihashSize,s=y(e.subarray(o,o+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let n=s.subarray(t.multihashSize-t.digestSize),D=new M(t.multihashCode,t.digestSize,n,s);return[t.version===0?c.createV0(D):c.createV1(t.codec,D),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[S,P]=O(e.subarray(t));return t+=P,S},s=o(),n=V;if(s===18?(s=0,t=0):s===1&&(n=o()),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let D=t,a=o(),f=o(),B=t+f,p=B-D;return{version:s,codec:n,multihashCode:a,digestSize:f,multihashSize:p,size:B}}static parse(e,t){let[o,s]=Jt(e,t),n=c.decode(s);return n._baseCache.set(o,e),n}},Jt=(r,e)=>{switch(r[0]){case"Q":{let t=e||w;return[w.prefix,t.decode(`${w.prefix}${r}`)]}case w.prefix:{let t=e||w;return[w.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Xt=(r,e,t)=>{let{prefix:o}=t;if(o!==w.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(o);if(s==null){let n=t.encode(r).slice(1);return e.set(o,n),n}else return s},Gt=(r,e,t)=>{let{prefix:o}=t,s=e.get(o);if(s==null){let n=t.encode(r);return e.set(o,n),n}else return s},V=112,Kt=18,Ie=(r,e,t)=>{let o=L(r),s=o+L(e),n=new Uint8Array(s+t.byteLength);return I(r,n,0),I(e,n,o),n.set(t,s),n},Le=Symbol.for("@ipld/js-cid/CID"),$={writable:!1,configurable:!1,enumerable:!0},q={writable:!1,enumerable:!1,configurable:!1},Qt="0.0.0-dev",Ht=(r,e)=>{if(r.test(Qt))console.warn(e);else throw new Error(e)},Wt=`CID.isCID(v) is deprecated and will be removed in the next major release. ++Following code pattern: ++ ++if (CID.isCID(value)) { ++ doSomethingWithCID(value) ++} ++ ++Is replaced with: ++ ++const cid = CID.asCID(value) ++if (cid) { ++ // Make sure to use cid instead of value ++ doSomethingWithCID(cid) ++} ++`;var se={...J,...X,...G,...K,...Q,...H,...W,...Z,...Y,..._},$r={...re,...oe};function Ne(r,e,t,o){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:o}}}var Oe=Ne("utf8","u",r=>{let e=new TextDecoder("utf8");return"u"+e.decode(r)},r=>new TextEncoder().encode(r.substring(1))),ne=Ne("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);let e=U(r.length);for(let t=0;t", ++ "homepage": "https://github.com/achingbrain/uint8arrays", ++ "bugs": "https://github.com/achingbrain/uint8arrays/issues", ++ "types": "types/src/index.d.ts", ++ "repository": { ++ "type": "git", ++ "url": "https://github.com/achingbrain/uint8arrays.git" ++ }, ++ "scripts": { ++ "test": "aegir test", ++ "lint": "aegir ts -p check && aegir lint", ++ "release": "aegir release", ++ "release-minor": "aegir release --type minor", ++ "release-major": "aegir release --type major", ++ "build": "aegir build" ++ }, ++ "license": "MIT", ++ "dependencies": { ++ "multiformats": "^9.4.2" ++ }, ++ "devDependencies": { ++ "@types/benchmark": "^2.1.1", ++ "aegir": "^35.0.0", ++ "benchmark": "^2.1.4", ++ "util": "^0.12.4" ++ }, ++ "eslintConfig": { ++ "extends": "ipfs", ++ "parserOptions": { ++ "sourceType": "module" ++ }, ++ "ignorePatterns": [ ++ "!.aegir.js" ++ ] ++ }, ++ "typesVersions": { ++ "*": { ++ "*": [ ++ "types/src", ++ "types/src/*" ++ ] ++ } ++ }, ++ "exports": { ++ ".": { ++ "browser": "./esm/src/index.js", ++ "require": "./cjs/src/index.js", ++ "import": "./esm/src/index.js" ++ }, ++ "./alloc": { ++ "browser": "./esm/src/alloc.js", ++ "require": "./cjs/src/alloc.js", ++ "import": "./esm/src/alloc.js" ++ }, ++ "./compare": { ++ "browser": "./esm/src/compare.js", ++ "require": "./cjs/src/compare.js", ++ "import": "./esm/src/compare.js" ++ }, ++ "./concat": { ++ "browser": "./esm/src/concat.js", ++ "require": "./cjs/src/concat.js", ++ "import": "./esm/src/concat.js" ++ }, ++ "./equals": { ++ "browser": "./esm/src/equals.js", ++ "require": "./cjs/src/equals.js", ++ "import": "./esm/src/equals.js" ++ }, ++ "./from-string": { ++ "browser": "./esm/src/from-string.js", ++ "require": "./cjs/src/from-string.js", ++ "import": "./esm/src/from-string.js" ++ }, ++ "./to-string": { ++ "browser": "./esm/src/to-string.js", ++ "require": "./cjs/src/to-string.js", ++ "import": "./esm/src/to-string.js" ++ }, ++ "./xor": { ++ "browser": "./esm/src/xor.js", ++ "require": "./cjs/src/xor.js", ++ "import": "./esm/src/xor.js" ++ } ++ }, ++ "contributors": [ ++ "achingbrain ", ++ "Irakli Gozalishvili ", ++ "Cayman ", ++ "Hugo Dias ", ++ "Mircea Nistor ", ++ "Rafael Ramalho ", ++ "Vasco Santos " ++ ], ++ "browser": { ++ ".": "./cjs/src/index.js", ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify", ++ "./alloc.js": "./cjs/src/alloc.js", ++ "./compare.js": "./cjs/src/compare.js", ++ "./concat.js": "./cjs/src/concat.js", ++ "./equals.js": "./cjs/src/equals.js", ++ "./from-string.js": "./cjs/src/from-string.js", ++ "./to-string.js": "./cjs/src/to-string.js", ++ "./xor.js": "./cjs/src/xor.js" ++ }, ++ "react-native": { ++ ".": "./cjs/src/index.js", ++ "./alloc": "./cjs/src/alloc.js", ++ "./compare": "./cjs/src/compare.js", ++ "./concat": "./cjs/src/concat.js", ++ "./equals": "./cjs/src/equals.js", ++ "./from-string": "./cjs/src/from-string.js", ++ "./to-string": "./cjs/src/to-string.js", ++ "./xor": "./cjs/src/xor.js", ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/to-string b/node_modules/uint8arrays/to-string +new file mode 100644 +index 0000000000000000000000000000000000000000..2708e31dca8063775318af642874a080d638e1fe +--- /dev/null ++++ b/node_modules/uint8arrays/to-string +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/to-string.js') +diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts b/node_modules/uint8arrays/types/src/alloc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71086104a021fa42346cd5d46a72b6da8bb79f1e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/alloc.d.ts +@@ -0,0 +1,18 @@ ++/** ++ * Returns a `Uint8Array` of the requested size. Referenced memory will ++ * be initialized to 0. ++ * ++ * @param {number} [size] ++ * @returns {Uint8Array} ++ */ ++export function alloc(size?: number | undefined): Uint8Array; ++/** ++ * Where possible returns a Uint8Array of the requested size that references ++ * uninitialized memory. Only use if you are certain you will immediately ++ * overwrite every value in the returned `Uint8Array`. ++ * ++ * @param {number} [size] ++ * @returns {Uint8Array} ++ */ ++export function allocUnsafe(size?: number | undefined): Uint8Array; ++//# sourceMappingURL=alloc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts.map b/node_modules/uint8arrays/types/src/alloc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ded98e850419b7387b1b5248b08666f357f0b060 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/alloc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"alloc.d.ts","sourceRoot":"","sources":["../../src/alloc.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kDAFa,UAAU,CAQtB;AAED;;;;;;;GAOG;AACH,wDAFa,UAAU,CAQtB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/compare.d.ts b/node_modules/uint8arrays/types/src/compare.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dd23039272fd0eb5375622e34c718fa3cb1eec04 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/compare.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Can be used with Array.sort to sort and array with Uint8Array entries ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function compare(a: Uint8Array, b: Uint8Array): 0 | 1 | -1; ++//# sourceMappingURL=compare.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/compare.d.ts.map b/node_modules/uint8arrays/types/src/compare.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..e8238ebc28b6d4ebe38f6535d6180e5a99f76194 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/compare.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2BAHW,UAAU,KACV,UAAU,cAsBpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/concat.d.ts b/node_modules/uint8arrays/types/src/concat.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..960ca199e3a7586f586c8766e60aaa542916a851 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/concat.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns a new Uint8Array created by concatenating the passed ArrayLikes ++ * ++ * @param {Array>} arrays ++ * @param {number} [length] ++ */ ++export function concat(arrays: Array>, length?: number | undefined): Uint8Array; ++//# sourceMappingURL=concat.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/concat.d.ts.map b/node_modules/uint8arrays/types/src/concat.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a74679fba41402c50244f031fef3465a11cb81b7 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/concat.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../src/concat.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAHW,MAAM,UAAU,MAAM,CAAC,CAAC,2CAiBlC"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/equals.d.ts b/node_modules/uint8arrays/types/src/equals.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..4c4df17c62640f71f638699722bf9cd68e65cc3e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/equals.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns true if the two passed Uint8Arrays have the same content ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function equals(a: Uint8Array, b: Uint8Array): boolean; ++//# sourceMappingURL=equals.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/equals.d.ts.map b/node_modules/uint8arrays/types/src/equals.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..f4b4fb784dcfa264e6f45b5fbcd779ab77b2e5c5 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/equals.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/equals.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAHW,UAAU,KACV,UAAU,WAkBpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts b/node_modules/uint8arrays/types/src/from-string.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..a2a48d58229830ecc2f00b630e265d71e99d4055 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/from-string.d.ts +@@ -0,0 +1,17 @@ ++/** ++ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings ++ */ ++/** ++ * Create a `Uint8Array` from the passed string ++ * ++ * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module. ++ * ++ * Also `ascii` which is similar to node's 'binary' encoding. ++ * ++ * @param {string} string ++ * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc ++ * @returns {Uint8Array} ++ */ ++export function fromString(string: string, encoding?: import("./util/bases.js").SupportedEncodings | undefined): Uint8Array; ++export type SupportedEncodings = import('./util/bases').SupportedEncodings; ++//# sourceMappingURL=from-string.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts.map b/node_modules/uint8arrays/types/src/from-string.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5f31eb6c8816c3da59a6ebf016cfca7f0f55fa5e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/from-string.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"from-string.d.ts","sourceRoot":"","sources":["../../src/from-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,mCAJW,MAAM,wEAEJ,UAAU,CAetB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/index.d.ts b/node_modules/uint8arrays/types/src/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..7a4a255ddc3b1c194a7907ed2ae972b28fdcecc4 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/index.d.ts +@@ -0,0 +1,8 @@ ++import { compare } from "./compare.js"; ++import { concat } from "./concat.js"; ++import { equals } from "./equals.js"; ++import { fromString } from "./from-string.js"; ++import { toString } from "./to-string.js"; ++import { xor } from "./xor.js"; ++export { compare, concat, equals, fromString, toString, xor }; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/index.d.ts.map b/node_modules/uint8arrays/types/src/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..4b136e26cf4d54488bfbbaf749a89197c074cd91 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":""} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts b/node_modules/uint8arrays/types/src/to-string.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..bf72c50427b41a8c4be85347e966feb710e18aa0 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/to-string.d.ts +@@ -0,0 +1,17 @@ ++/** ++ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings ++ */ ++/** ++ * Turns a `Uint8Array` into a string. ++ * ++ * Supports `utf8`, `utf-8` and any encoding supported by the multibase module. ++ * ++ * Also `ascii` which is similar to node's 'binary' encoding. ++ * ++ * @param {Uint8Array} array - The array to turn into a string ++ * @param {SupportedEncodings} [encoding=utf8] - The encoding to use ++ * @returns {string} ++ */ ++export function toString(array: Uint8Array, encoding?: import("./util/bases.js").SupportedEncodings | undefined): string; ++export type SupportedEncodings = import('./util/bases').SupportedEncodings; ++//# sourceMappingURL=to-string.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts.map b/node_modules/uint8arrays/types/src/to-string.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7290dc82e7b1c782b76b2ff96b2ccd49612db22d +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/to-string.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"to-string.d.ts","sourceRoot":"","sources":["../../src/to-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,gCAJW,UAAU,wEAER,MAAM,CAelB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..7b01d6f35e3821e5d695535d345d3684453d439f +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts +@@ -0,0 +1,10 @@ ++/** ++ * Create a Uint8Array of the specified length - uses ++ * the more performant `Buffer.allocUnsafe` if it is ++ * available or `new Uint8Array` if it is not. ++ * ++ * @param {number} length ++ * @returns {Uint8Array} ++ */ ++export function allocUnsafe(length: number): Uint8Array; ++//# sourceMappingURL=alloc-unsafe.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..78b2cfb583f5830da40a1286bd1dac3b5b977ada +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"alloc-unsafe.d.ts","sourceRoot":"","sources":["../../../src/util/alloc-unsafe.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAHW,MAAM,GACJ,UAAU,CAQtB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts b/node_modules/uint8arrays/types/src/util/bases.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c0dae33bc527a38464924c863af85fbc77667e93 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/bases.d.ts +@@ -0,0 +1,36 @@ ++export default BASES; ++export type MultibaseCodec = import('multiformats/bases/interface').MultibaseCodec; ++export type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof { ++ base256emoji: import("multiformats/bases/base").Codec<"base256emoji", "🚀">; ++ base64: import("multiformats/bases/base").Codec<"base64", "m">; ++ base64pad: import("multiformats/bases/base").Codec<"base64pad", "M">; ++ base64url: import("multiformats/bases/base").Codec<"base64url", "u">; ++ base64urlpad: import("multiformats/bases/base").Codec<"base64urlpad", "U">; ++ base58btc: import("multiformats/bases/base").Codec<"base58btc", "z">; ++ base58flickr: import("multiformats/bases/base").Codec<"base58flickr", "Z">; ++ base36: import("multiformats/bases/base").Codec<"base36", "k">; ++ base36upper: import("multiformats/bases/base").Codec<"base36upper", "K">; ++ base32: import("multiformats/bases/base").Codec<"base32", "b">; ++ base32upper: import("multiformats/bases/base").Codec<"base32upper", "B">; ++ base32pad: import("multiformats/bases/base").Codec<"base32pad", "c">; ++ base32padupper: import("multiformats/bases/base").Codec<"base32padupper", "C">; ++ base32hex: import("multiformats/bases/base").Codec<"base32hex", "v">; ++ base32hexupper: import("multiformats/bases/base").Codec<"base32hexupper", "V">; ++ base32hexpad: import("multiformats/bases/base").Codec<"base32hexpad", "t">; ++ base32hexpadupper: import("multiformats/bases/base").Codec<"base32hexpadupper", "T">; ++ base32z: import("multiformats/bases/base").Codec<"base32z", "h">; ++ base16: import("multiformats/bases/base").Codec<"base16", "f">; ++ base16upper: import("multiformats/bases/base").Codec<"base16upper", "F">; ++ base10: import("multiformats/bases/base").Codec<"base10", "9">; ++ base8: import("multiformats/bases/base").Codec<"base8", "7">; ++ base2: import("multiformats/bases/base").Codec<"base2", "0">; ++ identity: import("multiformats/bases/base").Codec<"identity", "\0">; ++}; ++/** ++ * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings ++ */ ++/** ++ * @type {Record} ++ */ ++declare const BASES: Record>; ++//# sourceMappingURL=bases.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts.map b/node_modules/uint8arrays/types/src/util/bases.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..6956f5335bf63870aa45350f2af1d66b881b6a09 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/bases.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../../src/util/bases.js"],"names":[],"mappings":";6BAIa,OAAO,8BAA8B,EAAE,cAAc,CAAC,GAAG,CAAC;iCAoD1D,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAAW;AADnF;;GAEG;AAEH;;GAEG;AACH,qBAFU,OAAO,kBAAkB,6DAAiB,CAWnD"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/xor.d.ts b/node_modules/uint8arrays/types/src/xor.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..deef5bb965a9e26283eab13a5cc6053bc59ef9ba +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/xor.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns the xor distance between two arrays ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function xor(a: Uint8Array, b: Uint8Array): Uint8Array; ++//# sourceMappingURL=xor.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/xor.d.ts.map b/node_modules/uint8arrays/types/src/xor.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..31db299b05a25b8439726a3e2fed3db618adad83 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/xor.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../src/xor.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,uBAHW,UAAU,KACV,UAAU,cAcpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..94b8c183d597efe32717777259261e28fc9c7853 +--- /dev/null ++++ b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/chai-parentheses/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/chai-bytes/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/aegir/dist/utils/chai.d.ts","../test/alloc.spec.js","../test/compare.spec.js","../test/concat.spec.js","../test/equals.spec.js","../test/from-string.spec.js","../test/to-string.spec.js","../test/xor.spec.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts","../src/concat.ts","../src/util/alloc-unsafe.js","../src/xor.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"c1f79c6d85cd84518fd7349588b3c61bdc189f58e3866f925cbf4631c81e31f9","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},{"version":"c6950fb69844190789c747a2ee2d49f34bd84273d692176d2c54d18d95fa3387","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},"33f12bdfbbb9a552db999b771a6e831fd0c94b321f958a1473def67b2b3e473f",{"version":"51a9c988758740ae2c6c44a76ef2438803df230b415b497293dfa5990508ab5a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b7210f350109bf3192235ed6e6ec55a0f5a19a4616daf84dc4196c052fa7cd18",{"version":"2cd140717148f456597ad7cd68b231e7ca6e5e92c60885b269e59880dae6019f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9368bbbf2a1dd5e9293b1a9ef06b4d0f02cbb18d5bde3b7f8fb134d7f0be4a93",{"version":"731062ffe7b99522b302e5615932f0956d50bcf2439cd6e38dc80af51982c1d7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"860a70e5ee208c81bfacb0bb46148ca0ff1566c65d29ccd8cd0d33963ad8bd40","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"58eb84f5c5f506c9dddeb6912d862fe15a523790d2aaf16dbb11d8dd203a79ca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[127],[63,127],[84,127],[87,127],[88,93,127],[89,99,100,107,116,126,127],[89,90,99,107,127],[91,127],[92,93,100,108,127],[93,116,123,127],[94,96,99,107,127],[95,127],[96,97,127],[98,99,127],[99,127],[99,100,101,116,126,127],[99,100,101,116,127],[102,107,116,126,127],[99,100,102,103,107,116,123,126,127],[102,104,116,123,126,127],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[99,105,127],[106,126,127],[96,99,107,116,127],[108,127],[109,127],[87,110,127],[111,125,127,131],[112,127],[113,127],[99,114,127],[114,115,127,129],[99,116,117,118,127],[116,118,127],[116,117,127],[119,127],[120,127],[99,121,122,127],[121,122,127],[93,107,123,127],[124,127],[107,125,127],[88,102,113,126,127],[93,127],[116,127,128],[127,129],[127,130],[88,93,99,101,110,116,126,127,129,131],[116,127,132],[127,138],[127,140],[99,116,127,134],[63,64,65,66,67,68,127],[63,64,127],[45,127],[52,54,55,56,127],[45,46,127],[53,127],[46,127],[46,48,127],[47,48,49,50,51,127],[41,127],[58,127],[42,43,44,59,60,61,127],[41,45,57,127],[41,69,127],[42,69,127],[43,69,127],[44,69,127],[58,59,60,69,127],[60,69,127],[61,69,127],[58],[45,56]],"referencedMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,62],[44,1],[59,63],[62,64],[60,63],[58,65],[61,62],[70,66],[71,67],[72,68],[73,69],[74,70],[75,71],[76,72]],"exportedModulesMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,73],[60,73],[58,74],[71,67],[73,69]],"semanticDiagnosticsPerFile":[77,64,68,66,63,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,86,133,102,103,104,134,105,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,139,138,140,141,142,69,67,65,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61,70,71,72,73,74,75,76],"affectedFilesPendingEmit":[[77,1],[64,1],[68,1],[66,1],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[86,1],[133,1],[102,1],[103,1],[104,1],[134,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[115,1],[116,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[132,1],[135,1],[136,1],[137,1],[139,1],[138,1],[140,1],[141,1],[142,1],[69,1],[67,1],[65,1],[56,1],[45,1],[57,1],[51,1],[47,1],[53,1],[55,1],[54,1],[48,1],[49,1],[46,1],[52,1],[50,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[41,1],[42,1],[43,1],[143,1],[44,1],[59,1],[62,1],[60,1],[144,1],[58,1],[61,1],[145,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1]]},"version":"4.3.5"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..140901c820b9d415726b42863170d121b6b1c25e +--- /dev/null ++++ b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e",{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[117],[64,117],[74,117],[77,117],[78,83,117],[79,89,90,97,106,116,117],[79,80,89,97,117],[81,117],[82,83,90,98,117],[83,106,113,117],[84,86,89,97,117],[85,117],[86,87,117],[88,89,117],[89,117],[89,90,91,106,116,117],[89,90,91,106,117],[92,97,106,116,117],[89,90,92,93,97,106,113,116,117],[92,94,106,113,116,117],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],[89,95,117],[96,116,117],[86,89,97,106,117],[98,117],[99,117],[77,100,117],[101,115,117,121],[102,117],[103,117],[89,104,117],[104,105,117,119],[89,106,107,108,117],[106,108,117],[106,107,117],[109,117],[110,117],[89,111,112,117],[111,112,117],[83,97,113,117],[114,117],[97,115,117],[78,92,103,116,117],[83,117],[106,117,118],[117,119],[117,120],[78,83,89,91,100,106,116,117,119,121],[106,117,122],[117,128],[117,130],[89,106,117,124],[45,117],[52,54,55,56,117],[45,46,117],[53,117],[46,117],[46,48,117],[47,48,49,50,51,117],[41,117],[58,117],[42,43,44,59,60,61,117],[41,45,57,117],[58],[45,56]],"referencedMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,60],[44,1],[59,61],[62,62],[60,61],[58,63],[61,60]],"exportedModulesMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,64],[60,64],[58,65]],"semanticDiagnosticsPerFile":[63,65,66,67,64,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,123,92,93,94,124,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,125,126,127,129,128,130,131,132,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61]},"version":"4.3.5"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/xor b/node_modules/uint8arrays/xor +new file mode 100644 +index 0000000000000000000000000000000000000000..53e53af9d8ad1a2b2a539e12c490e290d815d919 +--- /dev/null ++++ b/node_modules/uint8arrays/xor +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/xor.js') +diff --git a/package.json b/package.json +index e203182cf9b033d8553f0c52f1f9f73c4c7badc6..cdf6d136d1b078516ff2d1eccbe9879fc7b6bcb1 100644 +--- a/package.json ++++ b/package.json +@@ -53,5 +53,35 @@ + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-ws-connection": "1.0.14", + "@walletconnect/relay-api": "1.0.11" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" + } + } diff --git a/.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch b/.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch new file mode 100644 index 0000000000..64316244c9 --- /dev/null +++ b/.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch @@ -0,0 +1,9375 @@ +diff --git a/dist/index.cjs.js b/dist/index.cjs.js +index 1a1a79f1e7d7347b2891f2035abf0e164e35c75d..82054f6b8644e459d956d792bb31914d2ba544b3 100644 +--- a/dist/index.cjs.js ++++ b/dist/index.cjs.js +@@ -1,10 +1,32 @@ +-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Zt=require("detect-browser"),U=require("@walletconnect/time"),P=require("@walletconnect/window-getters"),Xt=require("@walletconnect/window-metadata"),en=require("query-string"),Te=require("@ethersproject/hash"),tn=require("@ethersproject/transactions"),Ae=require("@stablelib/chacha20poly1305"),nn=require("@stablelib/hkdf"),B=require("@stablelib/random"),H=require("@stablelib/sha256"),rn=require("@stablelib/x25519"),p=require("uint8arrays"),on=require("elliptic"),sn=require("@walletconnect/relay-auth"),an=require("@walletconnect/relay-api");function Ie(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!=="default"){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var J=Ie(en),Pe=Ie(rn);const W=":";function ne(e){const[t,n]=e.split(W);return{namespace:t,reference:n}}function Ce(e){const{namespace:t,reference:n}=e;return[t,n].join(W)}function re(e){const[t,n,r]=e.split(W);return{namespace:t,reference:n,address:r}}function $e(e){const{namespace:t,reference:n,address:r}=e;return[t,n,r].join(W)}function oe(e,t){const n=[];return e.forEach(r=>{const o=t(r);n.includes(o)||n.push(o)}),n}function je(e){const{address:t}=re(e);return t}function _e(e){const{namespace:t,reference:n}=re(e);return Ce({namespace:t,reference:n})}function cn(e,t){const{namespace:n,reference:r}=ne(t);return $e({namespace:n,reference:r,address:e})}function un(e){return oe(e,je)}function Ue(e){return oe(e,_e)}function ln(e,t=[]){const n=[];return Object.keys(e).forEach(r=>{if(t.length&&!t.includes(r))return;const o=e[r];n.push(...o.accounts)}),n}function dn(e,t=[]){const n=[];return Object.keys(e).forEach(r=>{if(t.length&&!t.includes(r))return;const o=e[r];n.push(...Ue(o.accounts))}),n}function pn(e,t=[]){const n=[];return Object.keys(e).forEach(r=>{if(t.length&&!t.includes(r))return;const o=e[r];n.push(...z(r,o))}),n}function z(e,t){return e.includes(":")?[e]:t.chains||[]}var fn=Object.defineProperty,De=Object.getOwnPropertySymbols,mn=Object.prototype.hasOwnProperty,gn=Object.prototype.propertyIsEnumerable,Ve=(e,t,n)=>t in e?fn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ke=(e,t)=>{for(var n in t||(t={}))mn.call(t,n)&&Ve(e,n,t[n]);if(De)for(var n of De(t))gn.call(t,n)&&Ve(e,n,t[n]);return e};const xe="ReactNative",y={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Y=" ",hn=":",Me="/",se=2,yn=1e3,Fe="js";function ie(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function D(){return!P.getDocument()&&!!P.getNavigator()&&navigator.product===xe}function M(){return!ie()&&!!P.getNavigator()&&!!P.getDocument()}function C(){return D()?y.reactNative:ie()?y.node:M()?y.browser:y.unknown}function vn(){var e;try{return D()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Le(e,t){let n=J.parse(e);return n=ke(ke({},n),t),e=J.stringify(n),e}function En(){return Xt.getWindowMetadata()||{name:"",description:"",url:"",icons:[""]}}function bn(e,t){var n;const r=C(),o={protocol:e,version:t,env:r};return r==="browser"&&(o.host=((n=P.getLocation())==null?void 0:n.host)||"unknown"),o}function Ke(){if(C()===y.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:n,Version:r}=global.Platform;return[n,r].join("-")}const e=Zt.detect();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function qe(){var e;const t=C();return t===y.browser?[t,((e=P.getLocation())==null?void 0:e.host)||"unknown"].join(":"):t}function Be(e,t,n){const r=Ke(),o=qe();return[[e,t].join("-"),[Fe,n].join("-"),r,o].join("/")}function Nn({protocol:e,version:t,relayUrl:n,sdkVersion:r,auth:o,projectId:s,useOnCloseEvent:i,bundleId:u}){const l=n.split("?"),a=Be(e,t,r),d={auth:o,ua:a,projectId:s,useOnCloseEvent:i||void 0,origin:u||void 0},c=Le(l[1]||"",d);return l[0]+"?"+c}function On(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const n=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,n].join("://")}function Sn(e,t,n){if(!e[t]||typeof e[t]!==n)throw new Error(`Missing or invalid "${t}" param`)}function He(e,t=se){return Je(e.split(Me),t)}function wn(e){return He(e).join(Y)}function w(e,t){return e.filter(n=>t.includes(n)).length===e.length}function Je(e,t=se){return e.slice(Math.max(e.length-t,0))}function Rn(e){return Object.fromEntries(e.entries())}function Tn(e){return new Map(Object.entries(e))}function An(e,t){const n={};return Object.keys(e).forEach(r=>{n[r]=t(e[r])}),n}const In=e=>e;function We(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function Pn(e){return e.split(Y).map(t=>We(t)).join(Y)}function Cn(e=U.FIVE_MINUTES,t){const n=U.toMiliseconds(e||U.FIVE_MINUTES);let r,o,s;return{resolve:i=>{s&&r&&(clearTimeout(s),r(i))},reject:i=>{s&&o&&(clearTimeout(s),o(i))},done:()=>new Promise((i,u)=>{s=setTimeout(()=>{u(new Error(t))},n),r=i,o=u})}}function $n(e,t,n){return new Promise(async(r,o)=>{const s=setTimeout(()=>o(new Error(n)),t);try{const i=await e;r(i)}catch(i){o(i)}clearTimeout(s)})}function ae(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function jn(e){return ae("topic",e)}function _n(e){return ae("id",e)}function Un(e){const[t,n]=e.split(":"),r={id:void 0,topic:void 0};if(t==="topic"&&typeof n=="string")r.topic=n;else if(t==="id"&&Number.isInteger(Number(n)))r.id=Number(n);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`);return r}function Dn(e,t){return U.fromMiliseconds((t||Date.now())+U.toMiliseconds(e))}function Vn(e){return Date.now()>=U.toMiliseconds(e)}function kn(e,t){return`${e}${t?`:${t}`:""}`}function O(e=[],t=[]){return[...new Set([...e,...t])]}async function xn({id:e,topic:t,wcDeepLink:n}){var r;try{if(!n)return;const o=typeof n=="string"?JSON.parse(n):n,s=o?.href;if(typeof s!="string")return;const i=ze(s,e,t),u=C();if(u===y.browser){if(!((r=P.getDocument())!=null&&r.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}i.startsWith("https://")||i.startsWith("http://")?window.open(i,"_blank","noreferrer noopener"):window.open(i,Ye()?"_blank":"_self","noreferrer noopener")}else u===y.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(i)}catch(o){console.error(o)}}function ze(e,t,n){const r=`requestId=${t}&sessionTopic=${n}`;e.endsWith("/")&&(e=e.slice(0,-1));let o=`${e}`;if(e.startsWith("https://t.me")){const s=e.includes("?")?"&startapp=":"?startapp=";o=`${o}${s}${Ge(r,!0)}`}else o=`${o}/wc?${r}`;return o}async function Mn(e,t){let n="";try{if(M()&&(n=localStorage.getItem(t),n))return n;n=await e.getItem(t)}catch(r){console.error(r)}return n}function ce(e,t){return e.filter(n=>t.includes(n))}function Fn(e,t){if(!e.includes(t))return null;const n=e.split(/([&,?,=])/),r=n.indexOf(t);return n[r+2]}function Ln(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function Kn(){return typeof process<"u"&&process.env.IS_VITEST==="true"}function Ye(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}function Ge(e,t=!1){const n=Buffer.from(e).toString("base64");return t?n.replace(/[=]/g,""):n}function ue(e){return Buffer.from(e,"base64").toString("utf-8")}const qn="https://rpc.walletconnect.org/v1";async function Qe(e,t,n,r,o,s){switch(n.t){case"eip191":return Ze(e,t,n.s);case"eip1271":return await Xe(e,t,n.s,r,o,s);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`)}}function Ze(e,t,n){return tn.recoverAddress(Te.hashMessage(t),n).toLowerCase()===e.toLowerCase()}async function Xe(e,t,n,r,o,s){const i=ne(r);if(!i.namespace||!i.reference)throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`);try{const u="0x1626ba7e",l="0000000000000000000000000000000000000000000000000000000000000040",a="0000000000000000000000000000000000000000000000000000000000000041",d=n.substring(2),c=Te.hashMessage(t).substring(2),f=u+c+l+a+d,h=await fetch(`${s||qn}/?chainId=${r}&projectId=${o}`,{method:"POST",body:JSON.stringify({id:Bn(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:f},"latest"]})}),{result:m}=await h.json();return m?m.slice(0,u.length).toLowerCase()===u.toLowerCase():!1}catch(u){return console.error("isValidEip1271Signature: ",u),!1}}function Bn(){return Date.now()+Math.floor(Math.random()*1e3)}var Hn=Object.defineProperty,Jn=Object.defineProperties,Wn=Object.getOwnPropertyDescriptors,et=Object.getOwnPropertySymbols,zn=Object.prototype.hasOwnProperty,Yn=Object.prototype.propertyIsEnumerable,tt=(e,t,n)=>t in e?Hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,le=(e,t)=>{for(var n in t||(t={}))zn.call(t,n)&&tt(e,n,t[n]);if(et)for(var n of et(t))Yn.call(t,n)&&tt(e,n,t[n]);return e},nt=(e,t)=>Jn(e,Wn(t));const Gn="did:pkh:",G=e=>e?.split(":"),rt=e=>{const t=e&&G(e);if(t)return e.includes(Gn)?t[3]:t[1]},ot=e=>{const t=e&&G(e);if(t)return t[2]+":"+t[3]},de=e=>{const t=e&&G(e);if(t)return t.pop()};async function Qn(e){const{cacao:t,projectId:n}=e,{s:r,p:o}=t,s=st(o,o.iss),i=de(o.iss);return await Qe(i,s,r,ot(o.iss),n)}const st=(e,t)=>{const n=`${e.domain} wants you to sign in with your Ethereum account:`,r=de(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let o=e.statement||void 0;const s=`URI: ${e.aud||e.uri}`,i=`Version: ${e.version}`,u=`Chain ID: ${rt(t)}`,l=`Nonce: ${e.nonce}`,a=`Issued At: ${e.iat}`,d=e.exp?`Expiration Time: ${e.exp}`:void 0,c=e.nbf?`Not Before: ${e.nbf}`:void 0,f=e.requestId?`Request ID: ${e.requestId}`:void 0,h=e.resources?`Resources:${e.resources.map(g=>` +-- ${g}`).join("")}`:void 0,m=Z(e.resources);if(m){const g=R(m);o=me(o,g)}return[n,r,"",o,"",s,i,u,l,a,d,c,f,h].filter(g=>g!=null).join(` +-`)};function Zn(e,t,n){return n.includes("did:pkh:")||(n=`did:pkh:${n}`),{h:{t:"caip122"},p:{iss:n,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function Xn(e){var t;const{authPayload:n,chains:r,methods:o}=e,s=n.statement||"";if(!(r!=null&&r.length))return n;const i=n.chains,u=ce(i,r);if(!(u!=null&&u.length))throw new Error("No supported chains");const l=it(n.resources);if(!l)return n;N(l);const a=at(l,"eip155");let d=n?.resources||[];if(a!=null&&a.length){const c=ct(a),f=ce(c,o);if(!(f!=null&&f.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`);const h=pe("request",f,{chains:u}),m=pt(l,"eip155",h);d=((t=n?.resources)==null?void 0:t.slice(0,-1))||[],d.push(Q(m))}return nt(le({},n),{statement:mt(s,Z(d)),chains:u,resources:n!=null&&n.resources||d.length>0?d:void 0})}function it(e){const t=Z(e);if(t&&fe(t))return R(t)}function er(e,t){var n;return(n=e?.att)==null?void 0:n.hasOwnProperty(t)}function at(e,t){var n,r;return(n=e?.att)!=null&&n[t]?Object.keys((r=e?.att)==null?void 0:r[t]):[]}function tr(e){return e?.map(t=>Object.keys(t))||[]}function ct(e){return e?.map(t=>{var n;return(n=t.split("/"))==null?void 0:n[1]})||[]}function ut(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function lt(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function N(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(n=>{const r=e.att[n];if(Array.isArray(r))throw new Error(`Resource must be an object: ${n}`);if(typeof r!="object")throw new Error(`Resource must be an object: ${n}`);if(!Object.keys(r).length)throw new Error(`Resource object is empty: ${n}`);Object.keys(r).forEach(o=>{const s=r[o];if(!Array.isArray(s))throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`);if(!s.length)throw new Error(`Value of ${o} is empty array, must be an array with objects`);s.forEach(i=>{if(typeof i!="object")throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`)})})})}function dt(e,t,n,r={}){return n?.sort((o,s)=>o.localeCompare(s)),{att:{[e]:pe(t,n,r)}}}function pt(e,t,n){var r;return e.att[t]=le({},n),((r=Object.keys(e.att))==null?void 0:r.sort((o,s)=>o.localeCompare(s))).reduce((o,s)=>(o.att[s]=e.att[s],o),{att:{}})}function pe(e,t,n={}){t=t?.sort((o,s)=>o.localeCompare(s));const r=t.map(o=>({[`${e}/${o}`]:[n]}));return Object.assign({},...r)}function Q(e){return N(e),`urn:recap:${ut(e).replace(/=/g,"")}`}function R(e){const t=lt(e.replace("urn:recap:",""));return N(t),t}function nr(e,t,n){const r=dt(e,t,n);return Q(r)}function fe(e){return e&&e.includes("urn:recap:")}function rr(e,t){const n=R(e),r=R(t),o=ft(n,r);return Q(o)}function ft(e,t){N(e),N(t);const n=Object.keys(e.att).concat(Object.keys(t.att)).sort((o,s)=>o.localeCompare(s)),r={att:{}};return n.forEach(o=>{var s,i;Object.keys(((s=e.att)==null?void 0:s[o])||{}).concat(Object.keys(((i=t.att)==null?void 0:i[o])||{})).sort((u,l)=>u.localeCompare(l)).forEach(u=>{var l,a;r.att[o]=nt(le({},r.att[o]),{[u]:((l=e.att[o])==null?void 0:l[u])||((a=t.att[o])==null?void 0:a[u])})})}),r}function me(e="",t){N(t);const n="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(n))return e;const r=[];let o=0;Object.keys(t.att).forEach(u=>{const l=Object.keys(t.att[u]).map(c=>({ability:c.split("/")[0],action:c.split("/")[1]}));l.sort((c,f)=>c.action.localeCompare(f.action));const a={};l.forEach(c=>{a[c.ability]||(a[c.ability]=[]),a[c.ability].push(c.action)});const d=Object.keys(a).map(c=>(o++,`(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`));r.push(d.join(", ").replace(".,","."))});const s=r.join(" "),i=`${n}${s}`;return`${e?e+" ":""}${i}`}function or(e){var t;const n=R(e);N(n);const r=(t=n.att)==null?void 0:t.eip155;return r?Object.keys(r).map(o=>o.split("/")[1]):[]}function sr(e){const t=R(e);N(t);const n=[];return Object.values(t.att).forEach(r=>{Object.values(r).forEach(o=>{var s;(s=o?.[0])!=null&&s.chains&&n.push(o[0].chains)})}),[...new Set(n.flat())]}function mt(e,t){if(!t)return e;const n=R(t);return N(n),me(e,n)}function Z(e){if(!e)return;const t=e?.[e.length-1];return fe(t)?t:void 0}const ge="base10",v="base16",he="base64pad",ir="base64url",V="utf8",ye=0,k=1,F=2,ar=0,gt=1,L=12,ve=32;function cr(){const e=Pe.generateKeyPair();return{privateKey:p.toString(e.secretKey,v),publicKey:p.toString(e.publicKey,v)}}function ur(){const e=B.randomBytes(ve);return p.toString(e,v)}function lr(e,t){const n=Pe.sharedKey(p.fromString(e,v),p.fromString(t,v),!0),r=new nn.HKDF(H.SHA256,n).expand(ve);return p.toString(r,v)}function dr(e){const t=H.hash(p.fromString(e,v));return p.toString(t,v)}function pr(e){const t=H.hash(p.fromString(e,V));return p.toString(t,v)}function Ee(e){return p.fromString(`${e}`,ge)}function $(e){return Number(p.toString(e,ge))}function fr(e){const t=Ee(typeof e.type<"u"?e.type:ye);if($(t)===k&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const n=typeof e.senderPublicKey<"u"?p.fromString(e.senderPublicKey,v):void 0,r=typeof e.iv<"u"?p.fromString(e.iv,v):B.randomBytes(L),o=new Ae.ChaCha20Poly1305(p.fromString(e.symKey,v)).seal(r,p.fromString(e.message,V));return be({type:t,sealed:o,iv:r,senderPublicKey:n,encoding:e.encoding})}function mr(e,t){const n=Ee(F),r=B.randomBytes(L),o=p.fromString(e,V);return be({type:n,sealed:o,iv:r,encoding:t})}function gr(e){const t=new Ae.ChaCha20Poly1305(p.fromString(e.symKey,v)),{sealed:n,iv:r}=X({encoded:e.encoded,encoding:e?.encoding}),o=t.open(r,n);if(o===null)throw new Error("Failed to decrypt");return p.toString(o,V)}function hr(e,t){const{sealed:n}=X({encoded:e,encoding:t});return p.toString(n,V)}function be(e){const{encoding:t=he}=e;if($(e.type)===F)return p.toString(p.concat([e.type,e.sealed]),t);if($(e.type)===k){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return p.toString(p.concat([e.type,e.senderPublicKey,e.iv,e.sealed]),t)}return p.toString(p.concat([e.type,e.iv,e.sealed]),t)}function X(e){const{encoded:t,encoding:n=he}=e,r=p.fromString(t,n),o=r.slice(ar,gt),s=gt;if($(o)===k){const a=s+ve,d=a+L,c=r.slice(s,a),f=r.slice(a,d),h=r.slice(d);return{type:o,sealed:h,iv:f,senderPublicKey:c}}if($(o)===F){const a=r.slice(s),d=B.randomBytes(L);return{type:o,sealed:a,iv:d}}const i=s+L,u=r.slice(s,i),l=r.slice(i);return{type:o,sealed:l,iv:u}}function yr(e,t){const n=X({encoded:e,encoding:t?.encoding});return ht({type:$(n.type),senderPublicKey:typeof n.senderPublicKey<"u"?p.toString(n.senderPublicKey,v):void 0,receiverPublicKey:t?.receiverPublicKey})}function ht(e){const t=e?.type||ye;if(t===k){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function vr(e){return e.type===k&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}function Er(e){return e.type===F}function yt(e){return new on.ec("p256").keyFromPublic({x:Buffer.from(e.x,"base64").toString("hex"),y:Buffer.from(e.y,"base64").toString("hex")},"hex")}function br(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");const n=t.length%4;return n>0&&(t+="=".repeat(4-n)),t}function Nr(e){return Buffer.from(br(e),"base64")}function Or(e,t){const[n,r,o]=e.split("."),s=Nr(o);if(s.length!==64)throw new Error("Invalid signature length");const i=s.slice(0,32).toString("hex"),u=s.slice(32,64).toString("hex"),l=`${n}.${r}`,a=new H.SHA256().update(Buffer.from(l)).digest(),d=yt(t),c=Buffer.from(a).toString("hex");if(!d.verify(c,{r:i,s:u}))throw new Error("Invalid signature");return sn.decodeJWT(e).payload}const vt="irn";function Sr(e){return e?.relay||{protocol:vt}}function wr(e){const t=an.RELAY_JSONRPC[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Rr=Object.defineProperty,Tr=Object.defineProperties,Ar=Object.getOwnPropertyDescriptors,Et=Object.getOwnPropertySymbols,Ir=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable,bt=(e,t,n)=>t in e?Rr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Nt=(e,t)=>{for(var n in t||(t={}))Ir.call(t,n)&&bt(e,n,t[n]);if(Et)for(var n of Et(t))Pr.call(t,n)&&bt(e,n,t[n]);return e},Cr=(e,t)=>Tr(e,Ar(t));function Ot(e,t="-"){const n={},r="relay"+t;return Object.keys(e).forEach(o=>{if(o.startsWith(r)){const s=o.replace(r,""),i=e[o];n[s]=i}}),n}function $r(e){if(!e.includes("wc:")){const l=ue(e);l!=null&&l.includes("wc:")&&(e=l)}e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),n=e.indexOf("?")!==-1?e.indexOf("?"):void 0,r=e.substring(0,t),o=e.substring(t+1,n).split("@"),s=typeof n<"u"?e.substring(n):"",i=J.parse(s),u=typeof i.methods=="string"?i.methods.split(","):void 0;return{protocol:r,topic:St(o[0]),version:parseInt(o[1],10),symKey:i.symKey,relay:Ot(i),methods:u,expiryTimestamp:i.expiryTimestamp?parseInt(i.expiryTimestamp,10):void 0}}function St(e){return e.startsWith("//")?e.substring(2):e}function wt(e,t="-"){const n="relay",r={};return Object.keys(e).forEach(o=>{const s=n+t+o;e[o]&&(r[s]=e[o])}),r}function jr(e){return`${e.protocol}:${e.topic}@${e.version}?`+J.stringify(Nt(Cr(Nt({symKey:e.symKey},wt(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}function _r(e,t,n){return`${e}?wc_ev=${n}&topic=${t}`}var Ur=Object.defineProperty,Dr=Object.defineProperties,Vr=Object.getOwnPropertyDescriptors,Rt=Object.getOwnPropertySymbols,kr=Object.prototype.hasOwnProperty,xr=Object.prototype.propertyIsEnumerable,Tt=(e,t,n)=>t in e?Ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mr=(e,t)=>{for(var n in t||(t={}))kr.call(t,n)&&Tt(e,n,t[n]);if(Rt)for(var n of Rt(t))xr.call(t,n)&&Tt(e,n,t[n]);return e},Fr=(e,t)=>Dr(e,Vr(t));function j(e){const t=[];return e.forEach(n=>{const[r,o]=n.split(":");t.push(`${r}:${o}`)}),t}function At(e){const t=[];return Object.values(e).forEach(n=>{t.push(...j(n.accounts))}),t}function It(e,t){const n=[];return Object.values(e).forEach(r=>{j(r.accounts).includes(t)&&n.push(...r.methods)}),n}function Pt(e,t){const n=[];return Object.values(e).forEach(r=>{j(r.accounts).includes(t)&&n.push(...r.events)}),n}function Lr(e,t){const n=Ft(e,t);if(n)throw new Error(n.message);const r={};for(const[o,s]of Object.entries(e))r[o]={methods:s.methods,events:s.events,chains:s.accounts.map(i=>`${i.split(":")[0]}:${i.split(":")[1]}`)};return r}function Kr(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:n={}},supportedNamespaces:r}=e,o=Oe(t),s=Oe(n),i={};Object.keys(r).forEach(a=>{const d=r[a].chains,c=r[a].methods,f=r[a].events,h=r[a].accounts;d.forEach(m=>{if(!h.some(g=>g.includes(m)))throw new Error(`No accounts provided for chain ${m} in namespace ${a}`)}),i[a]={chains:d,methods:c,events:f,accounts:h}});const u=Kt(t,i,"approve()");if(u)throw new Error(u.message);const l={};return!Object.keys(t).length&&!Object.keys(n).length?i:(Object.keys(o).forEach(a=>{const d=r[a].chains.filter(m=>{var g,b;return(b=(g=o[a])==null?void 0:g.chains)==null?void 0:b.includes(m)}),c=r[a].methods.filter(m=>{var g,b;return(b=(g=o[a])==null?void 0:g.methods)==null?void 0:b.includes(m)}),f=r[a].events.filter(m=>{var g,b;return(b=(g=o[a])==null?void 0:g.events)==null?void 0:b.includes(m)}),h=d.map(m=>r[a].accounts.filter(g=>g.includes(`${m}:`))).flat();l[a]={chains:d,methods:c,events:f,accounts:h}}),Object.keys(s).forEach(a=>{var d,c,f,h,m,g;if(!r[a])return;const b=(c=(d=s[a])==null?void 0:d.chains)==null?void 0:c.filter(A=>r[a].chains.includes(A)),Yt=r[a].methods.filter(A=>{var I,x;return(x=(I=s[a])==null?void 0:I.methods)==null?void 0:x.includes(A)}),Gt=r[a].events.filter(A=>{var I,x;return(x=(I=s[a])==null?void 0:I.events)==null?void 0:x.includes(A)}),Qt=b?.map(A=>r[a].accounts.filter(I=>I.includes(`${A}:`))).flat();l[a]={chains:O((f=l[a])==null?void 0:f.chains,b),methods:O((h=l[a])==null?void 0:h.methods,Yt),events:O((m=l[a])==null?void 0:m.events,Gt),accounts:O((g=l[a])==null?void 0:g.accounts,Qt)}}),l)}function Ne(e){return e.includes(":")}function Ct(e){return Ne(e)?e.split(":")[0]:e}function Oe(e){var t,n,r;const o={};if(!ee(e))return o;for(const[s,i]of Object.entries(e)){const u=Ne(s)?[s]:i.chains,l=i.methods||[],a=i.events||[],d=Ct(s);o[d]=Fr(Mr({},o[d]),{chains:O(u,(t=o[d])==null?void 0:t.chains),methods:O(l,(n=o[d])==null?void 0:n.methods),events:O(a,(r=o[d])==null?void 0:r.events)})}return o}function $t(e){const t={};return e?.forEach(n=>{const[r,o]=n.split(":");t[r]||(t[r]={accounts:[],chains:[],events:[]}),t[r].accounts.push(n),t[r].chains.push(`${r}:${o}`)}),t}function qr(e,t){t=t.map(r=>r.replace("did:pkh:",""));const n=$t(t);for(const[r,o]of Object.entries(n))o.methods?o.methods=O(o.methods,e):o.methods=e,o.events=["chainChanged","accountsChanged"];return n}const jt={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},_t={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function S(e,t){const{message:n,code:r}=_t[e];return{message:t?`${n} ${t}`:n,code:r}}function _(e,t){const{message:n,code:r}=jt[e];return{message:t?`${n} ${t}`:n,code:r}}function K(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function ee(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function T(e){return typeof e>"u"}function E(e,t){return t&&T(e)?!0:typeof e=="string"&&!!e.trim().length}function te(e,t){return t&&T(e)?!0:typeof e=="number"&&!isNaN(e)}function Br(e,t){const{requiredNamespaces:n}=t,r=Object.keys(e.namespaces),o=Object.keys(n);let s=!0;return w(o,r)?(r.forEach(i=>{const{accounts:u,methods:l,events:a}=e.namespaces[i],d=j(u),c=n[i];(!w(z(i,c),d)||!w(c.methods,l)||!w(c.events,a))&&(s=!1)}),s):!1}function q(e){return E(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function Ut(e){if(E(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const n=t[0]+":"+t[1];return!!t[2]&&q(n)}}return!1}function Hr(e){function t(n){try{return typeof new URL(n)<"u"}catch{return!1}}try{if(E(e,!1)){if(t(e))return!0;const n=ue(e);return t(n)}}catch{}return!1}function Jr(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function Wr(e){return e?.topic}function zr(e,t){let n=null;return E(e?.publicKey,!1)||(n=S("MISSING_OR_INVALID",`${t} controller public key should be a string`)),n}function Se(e){let t=!0;return K(e)?e.length&&(t=e.every(n=>E(n,!1))):t=!1,t}function Dt(e,t,n){let r=null;return K(t)&&t.length?t.forEach(o=>{r||q(o)||(r=_("UNSUPPORTED_CHAINS",`${n}, chain ${o} should be a string and conform to "namespace:chainId" format`))}):q(e)||(r=_("UNSUPPORTED_CHAINS",`${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),r}function Vt(e,t,n){let r=null;return Object.entries(e).forEach(([o,s])=>{if(r)return;const i=Dt(o,z(o,s),`${t} ${n}`);i&&(r=i)}),r}function kt(e,t){let n=null;return K(e)?e.forEach(r=>{n||Ut(r)||(n=_("UNSUPPORTED_ACCOUNTS",`${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`))}):n=_("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),n}function xt(e,t){let n=null;return Object.values(e).forEach(r=>{if(n)return;const o=kt(r?.accounts,`${t} namespace`);o&&(n=o)}),n}function Mt(e,t){let n=null;return Se(e?.methods)?Se(e?.events)||(n=_("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):n=_("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),n}function we(e,t){let n=null;return Object.values(e).forEach(r=>{if(n)return;const o=Mt(r,`${t}, namespace`);o&&(n=o)}),n}function Yr(e,t,n){let r=null;if(e&&ee(e)){const o=we(e,t);o&&(r=o);const s=Vt(e,t,n);s&&(r=s)}else r=S("MISSING_OR_INVALID",`${t}, ${n} should be an object with data`);return r}function Ft(e,t){let n=null;if(e&&ee(e)){const r=we(e,t);r&&(n=r);const o=xt(e,t);o&&(n=o)}else n=S("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return n}function Lt(e){return E(e.protocol,!0)}function Gr(e,t){let n=!1;return t&&!e?n=!0:e&&K(e)&&e.length&&e.forEach(r=>{n=Lt(r)}),n}function Qr(e){return typeof e=="number"}function Zr(e){return typeof e<"u"&&typeof e!==null}function Xr(e){return!(!e||typeof e!="object"||!e.code||!te(e.code,!1)||!e.message||!E(e.message,!1))}function eo(e){return!(T(e)||!E(e.method,!1))}function to(e){return!(T(e)||T(e.result)&&T(e.error)||!te(e.id,!1)||!E(e.jsonrpc,!1))}function no(e){return!(T(e)||!E(e.name,!1))}function ro(e,t){return!(!q(t)||!At(e).includes(t))}function oo(e,t,n){return E(n,!1)?It(e,t).includes(n):!1}function so(e,t,n){return E(n,!1)?Pt(e,t).includes(n):!1}function Kt(e,t,n){let r=null;const o=io(e),s=ao(t),i=Object.keys(o),u=Object.keys(s),l=qt(Object.keys(e)),a=qt(Object.keys(t)),d=l.filter(c=>!a.includes(c));return d.length&&(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces keys don't satisfy requiredNamespaces. ++ ++function uniq(arr) { ++ const seen = Object.create(null); ++ const out = []; ++ for (let i = 0, len = arr.length; i < len; i++) { ++ const val = arr[i]; ++ // key must be string — handles numbers, strings, booleans fine ++ const key = typeof val + val; ++ if (seen[key] === undefined) { ++ seen[key] = true; ++ out.push(val); ++ } ++ } ++ return out; ++} ++ ++"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var Zt = require("detect-browser"), U = require("@walletconnect/time"), P = require("@walletconnect/window-getters"), Xt = require("@walletconnect/window-metadata"), en = require("query-string"), Te = require("@ethersproject/hash"), tn = require("@ethersproject/transactions"), Ae = require("@stablelib/chacha20poly1305"), nn = require("@stablelib/hkdf"), B = require("@stablelib/random"), H = require("@stablelib/sha256"), rn = require("@stablelib/x25519"), p = require("uint8arrays"), on = require("elliptic"), sn = require("@walletconnect/relay-auth"), an = require("@walletconnect/relay-api"); function Ie(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach(function (n) { if (n !== "default") { var r = Object.getOwnPropertyDescriptor(e, n); Object.defineProperty(t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] } }) } }), t.default = e, Object.freeze(t) } var J = Ie(en), Pe = Ie(rn); const W = ":"; function ne(e) { const [t, n] = e.split(W); return { namespace: t, reference: n } } function Ce(e) { const { namespace: t, reference: n } = e; return [t, n].join(W) } function re(e) { const [t, n, r] = e.split(W); return { namespace: t, reference: n, address: r } } function $e(e) { const { namespace: t, reference: n, address: r } = e; return [t, n, r].join(W) } function oe(e, t) { const n = []; return e.forEach(r => { const o = t(r); n.includes(o) || n.push(o) }), n } function je(e) { const { address: t } = re(e); return t } function _e(e) { const { namespace: t, reference: n } = re(e); return Ce({ namespace: t, reference: n }) } function cn(e, t) { const { namespace: n, reference: r } = ne(t); return $e({ namespace: n, reference: r, address: e }) } function un(e) { return oe(e, je) } function Ue(e) { return oe(e, _e) } function ln(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...o.accounts) }), n } function dn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...Ue(o.accounts)) }), n } function pn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...z(r, o)) }), n } function z(e, t) { return e.includes(":") ? [e] : t.chains || [] } var fn = Object.defineProperty, De = Object.getOwnPropertySymbols, mn = Object.prototype.hasOwnProperty, gn = Object.prototype.propertyIsEnumerable, Ve = (e, t, n) => t in e ? fn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, ke = (e, t) => { for (var n in t || (t = {})) mn.call(t, n) && Ve(e, n, t[n]); if (De) for (var n of De(t)) gn.call(t, n) && Ve(e, n, t[n]); return e }; const xe = "ReactNative", y = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Y = " ", hn = ":", Me = "/", se = 2, yn = 1e3, Fe = "js"; function ie() { return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u" } function D() { return !P.getDocument() && !!P.getNavigator() && navigator.product === xe } function M() { return !ie() && !!P.getNavigator() && !!P.getDocument() } function C() { return D() ? y.reactNative : ie() ? y.node : M() ? y.browser : y.unknown } function vn() { var e; try { return D() && typeof global < "u" && typeof (global == null ? void 0 : global.Application) < "u" ? (e = global.Application) == null ? void 0 : e.applicationId : void 0 } catch { return } } function Le(e, t) { let n = J.parse(e); return n = ke(ke({}, n), t), e = J.stringify(n), e } function En() { return Xt.getWindowMetadata() || { name: "", description: "", url: "", icons: [""] } } function bn(e, t) { var n; const r = C(), o = { protocol: e, version: t, env: r }; return r === "browser" && (o.host = ((n = P.getLocation()) == null ? void 0 : n.host) || "unknown"), o } function Ke() { if (C() === y.reactNative && typeof global < "u" && typeof (global == null ? void 0 : global.Platform) < "u") { const { OS: n, Version: r } = global.Platform; return [n, r].join("-") } const e = Zt.detect(); if (e === null) return "unknown"; const t = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown"; return e.type === "browser" ? [t, e.name, e.version].join("-") : [t, e.version].join("-") } function qe() { var e; const t = C(); return t === y.browser ? [t, ((e = P.getLocation()) == null ? void 0 : e.host) || "unknown"].join(":") : t } function Be(e, t, n) { const r = Ke(), o = qe(); return [[e, t].join("-"), [Fe, n].join("-"), r, o].join("/") } function Nn({ protocol: e, version: t, relayUrl: n, sdkVersion: r, auth: o, projectId: s, useOnCloseEvent: i, bundleId: u }) { const l = n.split("?"), a = Be(e, t, r), d = { auth: o, ua: a, projectId: s, useOnCloseEvent: i || void 0, origin: u || void 0 }, c = Le(l[1] || "", d); return l[0] + "?" + c } function On(e) { let t = (e.match(/^[^:]+(?=:\/\/)/gi) || [])[0]; const n = typeof t < "u" ? e.split("://")[1] : e; return t = t === "wss" ? "https" : "http", [t, n].join("://") } function Sn(e, t, n) { if (!e[t] || typeof e[t] !== n) throw new Error(`Missing or invalid "${t}" param`) } function He(e, t = se) { return Je(e.split(Me), t) } function wn(e) { return He(e).join(Y) } function w(e, t) { return e.filter(n => t.includes(n)).length === e.length } function Je(e, t = se) { return e.slice(Math.max(e.length - t, 0)) } function Rn(e) { return Object.fromEntries(e.entries()) } function Tn(e) { return new Map(Object.entries(e)) } function An(e, t) { const n = {}; return Object.keys(e).forEach(r => { n[r] = t(e[r]) }), n } const In = e => e; function We(e) { return e.trim().replace(/^\w/, t => t.toUpperCase()) } function Pn(e) { return e.split(Y).map(t => We(t)).join(Y) } function Cn(e = U.FIVE_MINUTES, t) { const n = U.toMiliseconds(e || U.FIVE_MINUTES); let r, o, s; return { resolve: i => { s && r && (clearTimeout(s), r(i)) }, reject: i => { s && o && (clearTimeout(s), o(i)) }, done: () => new Promise((i, u) => { s = setTimeout(() => { u(new Error(t)) }, n), r = i, o = u }) } } function $n(e, t, n) { return new Promise(async (r, o) => { const s = setTimeout(() => o(new Error(n)), t); try { const i = await e; r(i) } catch (i) { o(i) } clearTimeout(s) }) } function ae(e, t) { if (typeof t == "string" && t.startsWith(`${e}:`)) return t; if (e.toLowerCase() === "topic") { if (typeof t != "string") throw new Error('Value must be "string" for expirer target type: topic'); return `topic:${t}` } else if (e.toLowerCase() === "id") { if (typeof t != "number") throw new Error('Value must be "number" for expirer target type: id'); return `id:${t}` } throw new Error(`Unknown expirer target type: ${e}`) } function jn(e) { return ae("topic", e) } function _n(e) { return ae("id", e) } function Un(e) { const [t, n] = e.split(":"), r = { id: void 0, topic: void 0 }; if (t === "topic" && typeof n == "string") r.topic = n; else if (t === "id" && Number.isInteger(Number(n))) r.id = Number(n); else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`); return r } function Dn(e, t) { return U.fromMiliseconds((t || Date.now()) + U.toMiliseconds(e)) } function Vn(e) { return Date.now() >= U.toMiliseconds(e) } function kn(e, t) { return `${e}${t ? `:${t}` : ""}` } function O(e = [], t = []) { return [...uniq([...e, ...t])] } async function xn({ id: e, topic: t, wcDeepLink: n }) { var r; try { if (!n) return; const o = typeof n == "string" ? JSON.parse(n) : n, s = o?.href; if (typeof s != "string") return; const i = ze(s, e, t), u = C(); if (u === y.browser) { if (!((r = P.getDocument()) != null && r.hasFocus())) { console.warn("Document does not have focus, skipping deeplink."); return } i.startsWith("https://") || i.startsWith("http://") ? window.open(i, "_blank", "noreferrer noopener") : window.open(i, Ye() ? "_blank" : "_self", "noreferrer noopener") } else u === y.reactNative && typeof (global == null ? void 0 : global.Linking) < "u" && await global.Linking.openURL(i) } catch (o) { console.error(o) } } function ze(e, t, n) { const r = `requestId=${t}&sessionTopic=${n}`; e.endsWith("/") && (e = e.slice(0, -1)); let o = `${e}`; if (e.startsWith("https://t.me")) { const s = e.includes("?") ? "&startapp=" : "?startapp="; o = `${o}${s}${Ge(r, !0)}` } else o = `${o}/wc?${r}`; return o } async function Mn(e, t) { let n = ""; try { if (M() && (n = localStorage.getItem(t), n)) return n; n = await e.getItem(t) } catch (r) { console.error(r) } return n } function ce(e, t) { return e.filter(n => t.includes(n)) } function Fn(e, t) { if (!e.includes(t)) return null; const n = e.split(/([&,?,=])/), r = n.indexOf(t); return n[r + 2] } function Ln() { return typeof crypto < "u" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu, e => { const t = Math.random() * 16 | 0; return (e === "x" ? t : t & 3 | 8).toString(16) }) } function Kn() { return typeof process < "u" && process.env.IS_VITEST === "true" } function Ye() { return typeof window < "u" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto) } function Ge(e, t = !1) { const n = Buffer.from(e).toString("base64"); return t ? n.replace(/[=]/g, "") : n } function ue(e) { return Buffer.from(e, "base64").toString("utf-8") } const qn = "https://rpc.walletconnect.org/v1"; async function Qe(e, t, n, r, o, s) { switch (n.t) { case "eip191": return Ze(e, t, n.s); case "eip1271": return await Xe(e, t, n.s, r, o, s); default: throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`) } } function Ze(e, t, n) { return tn.recoverAddress(Te.hashMessage(t), n).toLowerCase() === e.toLowerCase() } async function Xe(e, t, n, r, o, s) { const i = ne(r); if (!i.namespace || !i.reference) throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`); try { const u = "0x1626ba7e", l = "0000000000000000000000000000000000000000000000000000000000000040", a = "0000000000000000000000000000000000000000000000000000000000000041", d = n.substring(2), c = Te.hashMessage(t).substring(2), f = u + c + l + a + d, h = await fetch(`${s || qn}/?chainId=${r}&projectId=${o}`, { method: "POST", body: JSON.stringify({ id: Bn(), jsonrpc: "2.0", method: "eth_call", params: [{ to: e, data: f }, "latest"] }) }), { result: m } = await h.json(); return m ? m.slice(0, u.length).toLowerCase() === u.toLowerCase() : !1 } catch (u) { return console.error("isValidEip1271Signature: ", u), !1 } } function Bn() { return Date.now() + Math.floor(Math.random() * 1e3) } var Hn = Object.defineProperty, Jn = Object.defineProperties, Wn = Object.getOwnPropertyDescriptors, et = Object.getOwnPropertySymbols, zn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, tt = (e, t, n) => t in e ? Hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, le = (e, t) => { for (var n in t || (t = {})) zn.call(t, n) && tt(e, n, t[n]); if (et) for (var n of et(t)) Yn.call(t, n) && tt(e, n, t[n]); return e }, nt = (e, t) => Jn(e, Wn(t)); const Gn = "did:pkh:", G = e => e?.split(":"), rt = e => { const t = e && G(e); if (t) return e.includes(Gn) ? t[3] : t[1] }, ot = e => { const t = e && G(e); if (t) return t[2] + ":" + t[3] }, de = e => { const t = e && G(e); if (t) return t.pop() }; async function Qn(e) { const { cacao: t, projectId: n } = e, { s: r, p: o } = t, s = st(o, o.iss), i = de(o.iss); return await Qe(i, s, r, ot(o.iss), n) } const st = (e, t) => { ++ const n = `${e.domain} wants you to sign in with your Ethereum account:`, r = de(t); if (!e.aud && !e.uri) throw new Error("Either `aud` or `uri` is required to construct the message"); let o = e.statement || void 0; const s = `URI: ${e.aud || e.uri}`, i = `Version: ${e.version}`, u = `Chain ID: ${rt(t)}`, l = `Nonce: ${e.nonce}`, a = `Issued At: ${e.iat}`, d = e.exp ? `Expiration Time: ${e.exp}` : void 0, c = e.nbf ? `Not Before: ${e.nbf}` : void 0, f = e.requestId ? `Request ID: ${e.requestId}` : void 0, h = e.resources ? `Resources:${e.resources.map(g => ` ++- ${g}`).join("")}` : void 0, m = Z(e.resources); if (m) { const g = R(m); o = me(o, g) } return [n, r, "", o, "", s, i, u, l, a, d, c, f, h].filter(g => g != null).join(` ++`) ++}; function Zn(e, t, n) { return n.includes("did:pkh:") || (n = `did:pkh:${n}`), { h: { t: "caip122" }, p: { iss: n, domain: e.domain, aud: e.aud, version: e.version, nonce: e.nonce, iat: e.iat, statement: e.statement, requestId: e.requestId, resources: e.resources, nbf: e.nbf, exp: e.exp }, s: t } } function Xn(e) { var t; const { authPayload: n, chains: r, methods: o } = e, s = n.statement || ""; if (!(r != null && r.length)) return n; const i = n.chains, u = ce(i, r); if (!(u != null && u.length)) throw new Error("No supported chains"); const l = it(n.resources); if (!l) return n; N(l); const a = at(l, "eip155"); let d = n?.resources || []; if (a != null && a.length) { const c = ct(a), f = ce(c, o); if (!(f != null && f.length)) throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`); const h = pe("request", f, { chains: u }), m = pt(l, "eip155", h); d = ((t = n?.resources) == null ? void 0 : t.slice(0, -1)) || [], d.push(Q(m)) } return nt(le({}, n), { statement: mt(s, Z(d)), chains: u, resources: n != null && n.resources || d.length > 0 ? d : void 0 }) } function it(e) { const t = Z(e); if (t && fe(t)) return R(t) } function er(e, t) { var n; return (n = e?.att) == null ? void 0 : n.hasOwnProperty(t) } function at(e, t) { var n, r; return (n = e?.att) != null && n[t] ? Object.keys((r = e?.att) == null ? void 0 : r[t]) : [] } function tr(e) { return e?.map(t => Object.keys(t)) || [] } function ct(e) { return e?.map(t => { var n; return (n = t.split("/")) == null ? void 0 : n[1] }) || [] } function ut(e) { return Buffer.from(JSON.stringify(e)).toString("base64") } function lt(e) { return JSON.parse(Buffer.from(e, "base64").toString("utf-8")) } function N(e) { if (!e) throw new Error("No recap provided, value is undefined"); if (!e.att) throw new Error("No `att` property found"); const t = Object.keys(e.att); if (!(t != null && t.length)) throw new Error("No resources found in `att` property"); t.forEach(n => { const r = e.att[n]; if (Array.isArray(r)) throw new Error(`Resource must be an object: ${n}`); if (typeof r != "object") throw new Error(`Resource must be an object: ${n}`); if (!Object.keys(r).length) throw new Error(`Resource object is empty: ${n}`); Object.keys(r).forEach(o => { const s = r[o]; if (!Array.isArray(s)) throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`); if (!s.length) throw new Error(`Value of ${o} is empty array, must be an array with objects`); s.forEach(i => { if (typeof i != "object") throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`) }) }) }) } function dt(e, t, n, r = {}) { return n?.sort((o, s) => o.localeCompare(s)), { att: { [e]: pe(t, n, r) } } } function pt(e, t, n) { var r; return e.att[t] = le({}, n), ((r = Object.keys(e.att)) == null ? void 0 : r.sort((o, s) => o.localeCompare(s))).reduce((o, s) => (o.att[s] = e.att[s], o), { att: {} }) } function pe(e, t, n = {}) { t = t?.sort((o, s) => o.localeCompare(s)); const r = t.map(o => ({ [`${e}/${o}`]: [n] })); return Object.assign({}, ...r) } function Q(e) { return N(e), `urn:recap:${ut(e).replace(/=/g, "")}` } function R(e) { const t = lt(e.replace("urn:recap:", "")); return N(t), t } function nr(e, t, n) { const r = dt(e, t, n); return Q(r) } function fe(e) { return e && e.includes("urn:recap:") } function rr(e, t) { const n = R(e), r = R(t), o = ft(n, r); return Q(o) } function ft(e, t) { N(e), N(t); const n = Object.keys(e.att).concat(Object.keys(t.att)).sort((o, s) => o.localeCompare(s)), r = { att: {} }; return n.forEach(o => { var s, i; Object.keys(((s = e.att) == null ? void 0 : s[o]) || {}).concat(Object.keys(((i = t.att) == null ? void 0 : i[o]) || {})).sort((u, l) => u.localeCompare(l)).forEach(u => { var l, a; r.att[o] = nt(le({}, r.att[o]), { [u]: ((l = e.att[o]) == null ? void 0 : l[u]) || ((a = t.att[o]) == null ? void 0 : a[u]) }) }) }), r } function me(e = "", t) { N(t); const n = "I further authorize the stated URI to perform the following actions on my behalf: "; if (e.includes(n)) return e; const r = []; let o = 0; Object.keys(t.att).forEach(u => { const l = Object.keys(t.att[u]).map(c => ({ ability: c.split("/")[0], action: c.split("/")[1] })); l.sort((c, f) => c.action.localeCompare(f.action)); const a = {}; l.forEach(c => { a[c.ability] || (a[c.ability] = []), a[c.ability].push(c.action) }); const d = Object.keys(a).map(c => (o++, `(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`)); r.push(d.join(", ").replace(".,", ".")) }); const s = r.join(" "), i = `${n}${s}`; return `${e ? e + " " : ""}${i}` } function or(e) { var t; const n = R(e); N(n); const r = (t = n.att) == null ? void 0 : t.eip155; return r ? Object.keys(r).map(o => o.split("/")[1]) : [] } function sr(e) { const t = R(e); N(t); const n = []; return Object.values(t.att).forEach(r => { Object.values(r).forEach(o => { var s; (s = o?.[0]) != null && s.chains && n.push(o[0].chains) }) }), [...uniq(n.flat())] } function mt(e, t) { if (!t) return e; const n = R(t); return N(n), me(e, n) } function Z(e) { if (!e) return; const t = e?.[e.length - 1]; return fe(t) ? t : void 0 } const ge = "base10", v = "base16", he = "base64pad", ir = "base64url", V = "utf8", ye = 0, k = 1, F = 2, ar = 0, gt = 1, L = 12, ve = 32; function cr() { const e = Pe.generateKeyPair(); return { privateKey: p.toString(e.secretKey, v), publicKey: p.toString(e.publicKey, v) } } function ur() { const e = B.randomBytes(ve); return p.toString(e, v) } function lr(e, t) { const n = Pe.sharedKey(p.fromString(e, v), p.fromString(t, v), !0), r = new nn.HKDF(H.SHA256, n).expand(ve); return p.toString(r, v) } function dr(e) { const t = H.hash(p.fromString(e, v)); return p.toString(t, v) } function pr(e) { const t = H.hash(p.fromString(e, V)); return p.toString(t, v) } function Ee(e) { return p.fromString(`${e}`, ge) } function $(e) { return Number(p.toString(e, ge)) } function fr(e) { const t = Ee(typeof e.type < "u" ? e.type : ye); if ($(t) === k && typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); const n = typeof e.senderPublicKey < "u" ? p.fromString(e.senderPublicKey, v) : void 0, r = typeof e.iv < "u" ? p.fromString(e.iv, v) : B.randomBytes(L), o = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)).seal(r, p.fromString(e.message, V)); return be({ type: t, sealed: o, iv: r, senderPublicKey: n, encoding: e.encoding }) } function mr(e, t) { const n = Ee(F), r = B.randomBytes(L), o = p.fromString(e, V); return be({ type: n, sealed: o, iv: r, encoding: t }) } function gr(e) { const t = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)), { sealed: n, iv: r } = X({ encoded: e.encoded, encoding: e?.encoding }), o = t.open(r, n); if (o === null) throw new Error("Failed to decrypt"); return p.toString(o, V) } function hr(e, t) { const { sealed: n } = X({ encoded: e, encoding: t }); return p.toString(n, V) } function be(e) { const { encoding: t = he } = e; if ($(e.type) === F) return p.toString(p.concat([e.type, e.sealed]), t); if ($(e.type) === k) { if (typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); return p.toString(p.concat([e.type, e.senderPublicKey, e.iv, e.sealed]), t) } return p.toString(p.concat([e.type, e.iv, e.sealed]), t) } function X(e) { const { encoded: t, encoding: n = he } = e, r = p.fromString(t, n), o = r.slice(ar, gt), s = gt; if ($(o) === k) { const a = s + ve, d = a + L, c = r.slice(s, a), f = r.slice(a, d), h = r.slice(d); return { type: o, sealed: h, iv: f, senderPublicKey: c } } if ($(o) === F) { const a = r.slice(s), d = B.randomBytes(L); return { type: o, sealed: a, iv: d } } const i = s + L, u = r.slice(s, i), l = r.slice(i); return { type: o, sealed: l, iv: u } } function yr(e, t) { const n = X({ encoded: e, encoding: t?.encoding }); return ht({ type: $(n.type), senderPublicKey: typeof n.senderPublicKey < "u" ? p.toString(n.senderPublicKey, v) : void 0, receiverPublicKey: t?.receiverPublicKey }) } function ht(e) { const t = e?.type || ye; if (t === k) { if (typeof e?.senderPublicKey > "u") throw new Error("missing sender public key"); if (typeof e?.receiverPublicKey > "u") throw new Error("missing receiver public key") } return { type: t, senderPublicKey: e?.senderPublicKey, receiverPublicKey: e?.receiverPublicKey } } function vr(e) { return e.type === k && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string" } function Er(e) { return e.type === F } function yt(e) { return new on.ec("p256").keyFromPublic({ x: Buffer.from(e.x, "base64").toString("hex"), y: Buffer.from(e.y, "base64").toString("hex") }, "hex") } function br(e) { let t = e.replace(/-/g, "+").replace(/_/g, "/"); const n = t.length % 4; return n > 0 && (t += "=".repeat(4 - n)), t } function Nr(e) { return Buffer.from(br(e), "base64") } function Or(e, t) { const [n, r, o] = e.split("."), s = Nr(o); if (s.length !== 64) throw new Error("Invalid signature length"); const i = s.slice(0, 32).toString("hex"), u = s.slice(32, 64).toString("hex"), l = `${n}.${r}`, a = new H.SHA256().update(Buffer.from(l)).digest(), d = yt(t), c = Buffer.from(a).toString("hex"); if (!d.verify(c, { r: i, s: u })) throw new Error("Invalid signature"); return sn.decodeJWT(e).payload } const vt = "irn"; function Sr(e) { return e?.relay || { protocol: vt } } function wr(e) { const t = an.RELAY_JSONRPC[e]; if (typeof t > "u") throw new Error(`Relay Protocol not supported: ${e}`); return t } var Rr = Object.defineProperty, Tr = Object.defineProperties, Ar = Object.getOwnPropertyDescriptors, Et = Object.getOwnPropertySymbols, Ir = Object.prototype.hasOwnProperty, Pr = Object.prototype.propertyIsEnumerable, bt = (e, t, n) => t in e ? Rr(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Nt = (e, t) => { for (var n in t || (t = {})) Ir.call(t, n) && bt(e, n, t[n]); if (Et) for (var n of Et(t)) Pr.call(t, n) && bt(e, n, t[n]); return e }, Cr = (e, t) => Tr(e, Ar(t)); function Ot(e, t = "-") { const n = {}, r = "relay" + t; return Object.keys(e).forEach(o => { if (o.startsWith(r)) { const s = o.replace(r, ""), i = e[o]; n[s] = i } }), n } function $r(e) { if (!e.includes("wc:")) { const l = ue(e); l != null && l.includes("wc:") && (e = l) } e = e.includes("wc://") ? e.replace("wc://", "") : e, e = e.includes("wc:") ? e.replace("wc:", "") : e; const t = e.indexOf(":"), n = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r = e.substring(0, t), o = e.substring(t + 1, n).split("@"), s = typeof n < "u" ? e.substring(n) : "", i = J.parse(s), u = typeof i.methods == "string" ? i.methods.split(",") : void 0; return { protocol: r, topic: St(o[0]), version: parseInt(o[1], 10), symKey: i.symKey, relay: Ot(i), methods: u, expiryTimestamp: i.expiryTimestamp ? parseInt(i.expiryTimestamp, 10) : void 0 } } function St(e) { return e.startsWith("//") ? e.substring(2) : e } function wt(e, t = "-") { const n = "relay", r = {}; return Object.keys(e).forEach(o => { const s = n + t + o; e[o] && (r[s] = e[o]) }), r } function jr(e) { return `${e.protocol}:${e.topic}@${e.version}?` + J.stringify(Nt(Cr(Nt({ symKey: e.symKey }, wt(e.relay)), { expiryTimestamp: e.expiryTimestamp }), e.methods ? { methods: e.methods.join(",") } : {})) } function _r(e, t, n) { return `${e}?wc_ev=${n}&topic=${t}` } var Ur = Object.defineProperty, Dr = Object.defineProperties, Vr = Object.getOwnPropertyDescriptors, Rt = Object.getOwnPropertySymbols, kr = Object.prototype.hasOwnProperty, xr = Object.prototype.propertyIsEnumerable, Tt = (e, t, n) => t in e ? Ur(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Mr = (e, t) => { for (var n in t || (t = {})) kr.call(t, n) && Tt(e, n, t[n]); if (Rt) for (var n of Rt(t)) xr.call(t, n) && Tt(e, n, t[n]); return e }, Fr = (e, t) => Dr(e, Vr(t)); function j(e) { const t = []; return e.forEach(n => { const [r, o] = n.split(":"); t.push(`${r}:${o}`) }), t } function At(e) { const t = []; return Object.values(e).forEach(n => { t.push(...j(n.accounts)) }), t } function It(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.methods) }), n } function Pt(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.events) }), n } function Lr(e, t) { const n = Ft(e, t); if (n) throw new Error(n.message); const r = {}; for (const [o, s] of Object.entries(e)) r[o] = { methods: s.methods, events: s.events, chains: s.accounts.map(i => `${i.split(":")[0]}:${i.split(":")[1]}`) }; return r } function Kr(e) { const { proposal: { requiredNamespaces: t, optionalNamespaces: n = {} }, supportedNamespaces: r } = e, o = Oe(t), s = Oe(n), i = {}; Object.keys(r).forEach(a => { const d = r[a].chains, c = r[a].methods, f = r[a].events, h = r[a].accounts; d.forEach(m => { if (!h.some(g => g.includes(m))) throw new Error(`No accounts provided for chain ${m} in namespace ${a}`) }), i[a] = { chains: d, methods: c, events: f, accounts: h } }); const u = Kt(t, i, "approve()"); if (u) throw new Error(u.message); const l = {}; return !Object.keys(t).length && !Object.keys(n).length ? i : (Object.keys(o).forEach(a => { const d = r[a].chains.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.chains) == null ? void 0 : b.includes(m) }), c = r[a].methods.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.methods) == null ? void 0 : b.includes(m) }), f = r[a].events.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.events) == null ? void 0 : b.includes(m) }), h = d.map(m => r[a].accounts.filter(g => g.includes(`${m}:`))).flat(); l[a] = { chains: d, methods: c, events: f, accounts: h } }), Object.keys(s).forEach(a => { var d, c, f, h, m, g; if (!r[a]) return; const b = (c = (d = s[a]) == null ? void 0 : d.chains) == null ? void 0 : c.filter(A => r[a].chains.includes(A)), Yt = r[a].methods.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.methods) == null ? void 0 : x.includes(A) }), Gt = r[a].events.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.events) == null ? void 0 : x.includes(A) }), Qt = b?.map(A => r[a].accounts.filter(I => I.includes(`${A}:`))).flat(); l[a] = { chains: O((f = l[a]) == null ? void 0 : f.chains, b), methods: O((h = l[a]) == null ? void 0 : h.methods, Yt), events: O((m = l[a]) == null ? void 0 : m.events, Gt), accounts: O((g = l[a]) == null ? void 0 : g.accounts, Qt) } }), l) } function Ne(e) { return e.includes(":") } function Ct(e) { return Ne(e) ? e.split(":")[0] : e } function Oe(e) { var t, n, r; const o = {}; if (!ee(e)) return o; for (const [s, i] of Object.entries(e)) { const u = Ne(s) ? [s] : i.chains, l = i.methods || [], a = i.events || [], d = Ct(s); o[d] = Fr(Mr({}, o[d]), { chains: O(u, (t = o[d]) == null ? void 0 : t.chains), methods: O(l, (n = o[d]) == null ? void 0 : n.methods), events: O(a, (r = o[d]) == null ? void 0 : r.events) }) } return o } function $t(e) { const t = {}; return e?.forEach(n => { const [r, o] = n.split(":"); t[r] || (t[r] = { accounts: [], chains: [], events: [] }), t[r].accounts.push(n), t[r].chains.push(`${r}:${o}`) }), t } function qr(e, t) { t = t.map(r => r.replace("did:pkh:", "")); const n = $t(t); for (const [r, o] of Object.entries(n)) o.methods ? o.methods = O(o.methods, e) : o.methods = e, o.events = ["chainChanged", "accountsChanged"]; return n } const jt = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, _t = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } }; function S(e, t) { const { message: n, code: r } = _t[e]; return { message: t ? `${n} ${t}` : n, code: r } } function _(e, t) { const { message: n, code: r } = jt[e]; return { message: t ? `${n} ${t}` : n, code: r } } function K(e, t) { return Array.isArray(e) ? typeof t < "u" && e.length ? e.every(t) : !0 : !1 } function ee(e) { return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length } function T(e) { return typeof e > "u" } function E(e, t) { return t && T(e) ? !0 : typeof e == "string" && !!e.trim().length } function te(e, t) { return t && T(e) ? !0 : typeof e == "number" && !isNaN(e) } function Br(e, t) { const { requiredNamespaces: n } = t, r = Object.keys(e.namespaces), o = Object.keys(n); let s = !0; return w(o, r) ? (r.forEach(i => { const { accounts: u, methods: l, events: a } = e.namespaces[i], d = j(u), c = n[i]; (!w(z(i, c), d) || !w(c.methods, l) || !w(c.events, a)) && (s = !1) }), s) : !1 } function q(e) { return E(e, !1) && e.includes(":") ? e.split(":").length === 2 : !1 } function Ut(e) { if (E(e, !1) && e.includes(":")) { const t = e.split(":"); if (t.length === 3) { const n = t[0] + ":" + t[1]; return !!t[2] && q(n) } } return !1 } function Hr(e) { function t(n) { try { return typeof new URL(n) < "u" } catch { return !1 } } try { if (E(e, !1)) { if (t(e)) return !0; const n = ue(e); return t(n) } } catch { } return !1 } function Jr(e) { var t; return (t = e?.proposer) == null ? void 0 : t.publicKey } function Wr(e) { return e?.topic } function zr(e, t) { let n = null; return E(e?.publicKey, !1) || (n = S("MISSING_OR_INVALID", `${t} controller public key should be a string`)), n } function Se(e) { let t = !0; return K(e) ? e.length && (t = e.every(n => E(n, !1))) : t = !1, t } function Dt(e, t, n) { let r = null; return K(t) && t.length ? t.forEach(o => { r || q(o) || (r = _("UNSUPPORTED_CHAINS", `${n}, chain ${o} should be a string and conform to "namespace:chainId" format`)) }) : q(e) || (r = _("UNSUPPORTED_CHAINS", `${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)), r } function Vt(e, t, n) { let r = null; return Object.entries(e).forEach(([o, s]) => { if (r) return; const i = Dt(o, z(o, s), `${t} ${n}`); i && (r = i) }), r } function kt(e, t) { let n = null; return K(e) ? e.forEach(r => { n || Ut(r) || (n = _("UNSUPPORTED_ACCOUNTS", `${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`)) }) : n = _("UNSUPPORTED_ACCOUNTS", `${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), n } function xt(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = kt(r?.accounts, `${t} namespace`); o && (n = o) }), n } function Mt(e, t) { let n = null; return Se(e?.methods) ? Se(e?.events) || (n = _("UNSUPPORTED_EVENTS", `${t}, events should be an array of strings or empty array for no events`)) : n = _("UNSUPPORTED_METHODS", `${t}, methods should be an array of strings or empty array for no methods`), n } function we(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = Mt(r, `${t}, namespace`); o && (n = o) }), n } function Yr(e, t, n) { let r = null; if (e && ee(e)) { const o = we(e, t); o && (r = o); const s = Vt(e, t, n); s && (r = s) } else r = S("MISSING_OR_INVALID", `${t}, ${n} should be an object with data`); return r } function Ft(e, t) { let n = null; if (e && ee(e)) { const r = we(e, t); r && (n = r); const o = xt(e, t); o && (n = o) } else n = S("MISSING_OR_INVALID", `${t}, namespaces should be an object with data`); return n } function Lt(e) { return E(e.protocol, !0) } function Gr(e, t) { let n = !1; return t && !e ? n = !0 : e && K(e) && e.length && e.forEach(r => { n = Lt(r) }), n } function Qr(e) { return typeof e == "number" } function Zr(e) { return typeof e < "u" && typeof e !== null } function Xr(e) { return !(!e || typeof e != "object" || !e.code || !te(e.code, !1) || !e.message || !E(e.message, !1)) } function eo(e) { return !(T(e) || !E(e.method, !1)) } function to(e) { return !(T(e) || T(e.result) && T(e.error) || !te(e.id, !1) || !E(e.jsonrpc, !1)) } function no(e) { return !(T(e) || !E(e.name, !1)) } function ro(e, t) { return !(!q(t) || !At(e).includes(t)) } function oo(e, t, n) { return E(n, !1) ? It(e, t).includes(n) : !1 } function so(e, t, n) { return E(n, !1) ? Pt(e, t).includes(n) : !1 } function Kt(e, t, n) { ++ let r = null; const o = io(e), s = ao(t), i = Object.keys(o), u = Object.keys(s), l = qt(Object.keys(e)), a = qt(Object.keys(t)), d = l.filter(c => !a.includes(c)); return d.length && (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces keys don't satisfy requiredNamespaces. + Required: ${d.toString()} +- Received: ${Object.keys(t).toString()}`)),w(i,u)||(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces chains don't satisfy required namespaces. ++ Received: ${Object.keys(t).toString()}`)), w(i, u) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces chains don't satisfy required namespaces. + Required: ${i.toString()} +- Approved: ${u.toString()}`)),Object.keys(t).forEach(c=>{if(!c.includes(":")||r)return;const f=j(t[c].accounts);f.includes(c)||(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces accounts don't satisfy namespace accounts for ${c} ++ Approved: ${u.toString()}`)), Object.keys(t).forEach(c => { ++ if (!c.includes(":") || r) return; const f = j(t[c].accounts); f.includes(c) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces accounts don't satisfy namespace accounts for ${c} + Required: ${c} +- Approved: ${f.toString()}`))}),i.forEach(c=>{r||(w(o[c].methods,s[c].methods)?w(o[c].events,s[c].events)||(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces events don't satisfy namespace events for ${c}`)):r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces methods don't satisfy namespace methods for ${c}`))}),r}function io(e){const t={};return Object.keys(e).forEach(n=>{var r;n.includes(":")?t[n]=e[n]:(r=e[n].chains)==null||r.forEach(o=>{t[o]={methods:e[n].methods,events:e[n].events}})}),t}function qt(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function ao(e){const t={};return Object.keys(e).forEach(n=>{if(n.includes(":"))t[n]=e[n];else{const r=j(e[n].accounts);r?.forEach(o=>{t[o]={accounts:e[n].accounts.filter(s=>s.includes(`${o}:`)),methods:e[n].methods,events:e[n].events}})}}),t}function co(e,t){return te(e,!1)&&e<=t.max&&e>=t.min}function uo(){const e=C();return new Promise(t=>{switch(e){case y.browser:t(Bt());break;case y.reactNative:t(Ht());break;case y.node:t(Jt());break;default:t(!0)}})}function Bt(){return M()&&navigator?.onLine}async function Ht(){if(D()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Jt(){return!0}function lo(e){switch(C()){case y.browser:Wt(e);break;case y.reactNative:zt(e);break;case y.node:break}}function Wt(e){!D()&&M()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function zt(e){D()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const Re={};class po{static get(t){return Re[t]}static set(t,n){Re[t]=n}static delete(t){delete Re[t]}}exports.BASE10=ge,exports.BASE16=v,exports.BASE64=he,exports.BASE64URL=ir,exports.COLON=hn,exports.DEFAULT_DEPTH=se,exports.EMPTY_SPACE=Y,exports.ENV_MAP=y,exports.INTERNAL_ERRORS=_t,exports.MemoryStore=po,exports.ONE_THOUSAND=yn,exports.REACT_NATIVE_PRODUCT=xe,exports.RELAYER_DEFAULT_PROTOCOL=vt,exports.SDK_ERRORS=jt,exports.SDK_TYPE=Fe,exports.SLASH=Me,exports.TYPE_0=ye,exports.TYPE_1=k,exports.TYPE_2=F,exports.UTF8=V,exports.addResourceToRecap=pt,exports.appendToQueryString=Le,exports.assertType=Sn,exports.assignAbilityToActions=pe,exports.base64Decode=lt,exports.base64Encode=ut,exports.buildApprovedNamespaces=Kr,exports.buildAuthObject=Zn,exports.buildNamespacesFromAuth=qr,exports.buildRecapStatement=mt,exports.calcExpiry=Dn,exports.capitalize=Pn,exports.capitalizeWord=We,exports.createDelayedPromise=Cn,exports.createEncodedRecap=nr,exports.createExpiringPromise=$n,exports.createRecap=dt,exports.decodeRecap=R,exports.decodeTypeByte=$,exports.decodeTypeTwoEnvelope=hr,exports.decrypt=gr,exports.deriveSymKey=lr,exports.deserialize=X,exports.encodeRecap=Q,exports.encodeTypeByte=Ee,exports.encodeTypeTwoEnvelope=mr,exports.encrypt=fr,exports.engineEvent=kn,exports.enumify=In,exports.formatAccountId=$e,exports.formatAccountWithChain=cn,exports.formatChainId=Ce,exports.formatDeeplinkUrl=ze,exports.formatExpirerTarget=ae,exports.formatIdTarget=_n,exports.formatMessage=st,exports.formatMessageContext=wn,exports.formatRelayParams=wt,exports.formatRelayRpcUrl=Nn,exports.formatStatementFromRecap=me,exports.formatTopicTarget=jn,exports.formatUA=Be,exports.formatUri=jr,exports.fromBase64=ue,exports.generateKeyPair=cr,exports.generateRandomBytes32=ur,exports.getAccountsChains=j,exports.getAccountsFromNamespaces=ln,exports.getAddressFromAccount=je,exports.getAddressesFromAccounts=un,exports.getAppMetadata=En,exports.getBrowserOnlineStatus=Bt,exports.getBundleId=vn,exports.getChainFromAccount=_e,exports.getChainsFromAccounts=Ue,exports.getChainsFromNamespace=z,exports.getChainsFromNamespaces=dn,exports.getChainsFromRecap=sr,exports.getChainsFromRequiredNamespaces=pn,exports.getCommonValuesInArrays=ce,exports.getCryptoKeyFromKeyData=yt,exports.getDecodedRecapFromResources=it,exports.getDeepLink=Mn,exports.getDidAddress=de,exports.getDidAddressSegments=G,exports.getDidChainId=rt,exports.getEnvironment=C,exports.getHttpUrl=On,exports.getInternalError=S,exports.getJavascriptID=qe,exports.getJavascriptOS=Ke,exports.getLastItems=Je,exports.getLinkModeURL=_r,exports.getMethodsFromRecap=or,exports.getNamespacedDidChainId=ot,exports.getNamespacesChains=At,exports.getNamespacesEventsForChainId=Pt,exports.getNamespacesFromAccounts=$t,exports.getNamespacesMethodsForChainId=It,exports.getNodeOnlineStatus=Jt,exports.getReCapActions=ct,exports.getReactNativeOnlineStatus=Ht,exports.getRecapAbilitiesFromResource=tr,exports.getRecapFromResources=Z,exports.getRecapResource=at,exports.getRelayClientMetadata=bn,exports.getRelayProtocolApi=wr,exports.getRelayProtocolName=Sr,exports.getRequiredNamespacesFromNamespaces=Lr,exports.getSdkError=_,exports.getSearchParamFromURL=Fn,exports.getUniqueValues=oe,exports.handleDeeplinkRedirect=xn,exports.hasOverlap=w,exports.hashKey=dr,exports.hashMessage=pr,exports.isBrowser=M,exports.isCaipNamespace=Ne,exports.isConformingNamespaces=Kt,exports.isExpired=Vn,exports.isNode=ie,exports.isOnline=uo,exports.isProposalStruct=Jr,exports.isReactNative=D,exports.isRecap=fe,exports.isSessionCompatible=Br,exports.isSessionStruct=Wr,exports.isTelegram=Ye,exports.isTestRun=Kn,exports.isTypeOneEnvelope=vr,exports.isTypeTwoEnvelope=Er,exports.isUndefined=T,exports.isValidAccountId=Ut,exports.isValidAccounts=kt,exports.isValidActions=Mt,exports.isValidArray=K,exports.isValidChainId=q,exports.isValidChains=Dt,exports.isValidController=zr,exports.isValidEip1271Signature=Xe,exports.isValidEip191Signature=Ze,exports.isValidErrorReason=Xr,exports.isValidEvent=no,exports.isValidId=Qr,exports.isValidNamespaceAccounts=xt,exports.isValidNamespaceActions=we,exports.isValidNamespaceChains=Vt,exports.isValidNamespaceMethodsOrEvents=Se,exports.isValidNamespaces=Ft,exports.isValidNamespacesChainId=ro,exports.isValidNamespacesEvent=so,exports.isValidNamespacesRequest=oo,exports.isValidNumber=te,exports.isValidObject=ee,exports.isValidParams=Zr,exports.isValidRecap=N,exports.isValidRelay=Lt,exports.isValidRelays=Gr,exports.isValidRequest=eo,exports.isValidRequestExpiry=co,exports.isValidRequiredNamespaces=Yr,exports.isValidResponse=to,exports.isValidString=E,exports.isValidUrl=Hr,exports.mapEntries=An,exports.mapToObj=Rn,exports.mergeArrays=O,exports.mergeEncodedRecaps=rr,exports.mergeRecaps=ft,exports.normalizeNamespaces=Oe,exports.objToMap=Tn,exports.parseAccountId=re,exports.parseChainId=ne,exports.parseContextNames=He,exports.parseExpirerTarget=Un,exports.parseNamespaceKey=Ct,exports.parseRelayParams=Ot,exports.parseTopic=St,exports.parseUri=$r,exports.populateAuthPayload=Xn,exports.recapHasResource=er,exports.serialize=be,exports.subscribeToBrowserNetworkChange=Wt,exports.subscribeToNetworkChange=lo,exports.subscribeToReactNativeNetworkChange=zt,exports.toBase64=Ge,exports.uuidv4=Ln,exports.validateDecoding=yr,exports.validateEncoding=ht,exports.validateSignedCacao=Qn,exports.verifyP256Jwt=Or,exports.verifySignature=Qe; ++ Approved: ${f.toString()}`)) ++ }), i.forEach(c => { r || (w(o[c].methods, s[c].methods) ? w(o[c].events, s[c].events) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces events don't satisfy namespace events for ${c}`)) : r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces methods don't satisfy namespace methods for ${c}`)) }), r ++} function io(e) { const t = {}; return Object.keys(e).forEach(n => { var r; n.includes(":") ? t[n] = e[n] : (r = e[n].chains) == null || r.forEach(o => { t[o] = { methods: e[n].methods, events: e[n].events } }) }), t } function qt(e) { return [...uniq(e.map(t => t.includes(":") ? t.split(":")[0] : t))] } function ao(e) { const t = {}; return Object.keys(e).forEach(n => { if (n.includes(":")) t[n] = e[n]; else { const r = j(e[n].accounts); r?.forEach(o => { t[o] = { accounts: e[n].accounts.filter(s => s.includes(`${o}:`)), methods: e[n].methods, events: e[n].events } }) } }), t } function co(e, t) { return te(e, !1) && e <= t.max && e >= t.min } function uo() { const e = C(); return new Promise(t => { switch (e) { case y.browser: t(Bt()); break; case y.reactNative: t(Ht()); break; case y.node: t(Jt()); break; default: t(!0) } }) } function Bt() { return M() && navigator?.onLine } async function Ht() { if (D() && typeof global < "u" && global != null && global.NetInfo) { const e = await (global == null ? void 0 : global.NetInfo.fetch()); return e?.isConnected } return !0 } function Jt() { return !0 } function lo(e) { switch (C()) { case y.browser: Wt(e); break; case y.reactNative: zt(e); break; case y.node: break } } function Wt(e) { !D() && M() && (window.addEventListener("online", () => e(!0)), window.addEventListener("offline", () => e(!1))) } function zt(e) { D() && typeof global < "u" && global != null && global.NetInfo && global?.NetInfo.addEventListener(t => e(t?.isConnected)) } const Re = {}; class po { static get(t) { return Re[t] } static set(t, n) { Re[t] = n } static delete(t) { delete Re[t] } } exports.BASE10 = ge, exports.BASE16 = v, exports.BASE64 = he, exports.BASE64URL = ir, exports.COLON = hn, exports.DEFAULT_DEPTH = se, exports.EMPTY_SPACE = Y, exports.ENV_MAP = y, exports.INTERNAL_ERRORS = _t, exports.MemoryStore = po, exports.ONE_THOUSAND = yn, exports.REACT_NATIVE_PRODUCT = xe, exports.RELAYER_DEFAULT_PROTOCOL = vt, exports.SDK_ERRORS = jt, exports.SDK_TYPE = Fe, exports.SLASH = Me, exports.TYPE_0 = ye, exports.TYPE_1 = k, exports.TYPE_2 = F, exports.UTF8 = V, exports.addResourceToRecap = pt, exports.appendToQueryString = Le, exports.assertType = Sn, exports.assignAbilityToActions = pe, exports.base64Decode = lt, exports.base64Encode = ut, exports.buildApprovedNamespaces = Kr, exports.buildAuthObject = Zn, exports.buildNamespacesFromAuth = qr, exports.buildRecapStatement = mt, exports.calcExpiry = Dn, exports.capitalize = Pn, exports.capitalizeWord = We, exports.createDelayedPromise = Cn, exports.createEncodedRecap = nr, exports.createExpiringPromise = $n, exports.createRecap = dt, exports.decodeRecap = R, exports.decodeTypeByte = $, exports.decodeTypeTwoEnvelope = hr, exports.decrypt = gr, exports.deriveSymKey = lr, exports.deserialize = X, exports.encodeRecap = Q, exports.encodeTypeByte = Ee, exports.encodeTypeTwoEnvelope = mr, exports.encrypt = fr, exports.engineEvent = kn, exports.enumify = In, exports.formatAccountId = $e, exports.formatAccountWithChain = cn, exports.formatChainId = Ce, exports.formatDeeplinkUrl = ze, exports.formatExpirerTarget = ae, exports.formatIdTarget = _n, exports.formatMessage = st, exports.formatMessageContext = wn, exports.formatRelayParams = wt, exports.formatRelayRpcUrl = Nn, exports.formatStatementFromRecap = me, exports.formatTopicTarget = jn, exports.formatUA = Be, exports.formatUri = jr, exports.fromBase64 = ue, exports.generateKeyPair = cr, exports.generateRandomBytes32 = ur, exports.getAccountsChains = j, exports.getAccountsFromNamespaces = ln, exports.getAddressFromAccount = je, exports.getAddressesFromAccounts = un, exports.getAppMetadata = En, exports.getBrowserOnlineStatus = Bt, exports.getBundleId = vn, exports.getChainFromAccount = _e, exports.getChainsFromAccounts = Ue, exports.getChainsFromNamespace = z, exports.getChainsFromNamespaces = dn, exports.getChainsFromRecap = sr, exports.getChainsFromRequiredNamespaces = pn, exports.getCommonValuesInArrays = ce, exports.getCryptoKeyFromKeyData = yt, exports.getDecodedRecapFromResources = it, exports.getDeepLink = Mn, exports.getDidAddress = de, exports.getDidAddressSegments = G, exports.getDidChainId = rt, exports.getEnvironment = C, exports.getHttpUrl = On, exports.getInternalError = S, exports.getJavascriptID = qe, exports.getJavascriptOS = Ke, exports.getLastItems = Je, exports.getLinkModeURL = _r, exports.getMethodsFromRecap = or, exports.getNamespacedDidChainId = ot, exports.getNamespacesChains = At, exports.getNamespacesEventsForChainId = Pt, exports.getNamespacesFromAccounts = $t, exports.getNamespacesMethodsForChainId = It, exports.getNodeOnlineStatus = Jt, exports.getReCapActions = ct, exports.getReactNativeOnlineStatus = Ht, exports.getRecapAbilitiesFromResource = tr, exports.getRecapFromResources = Z, exports.getRecapResource = at, exports.getRelayClientMetadata = bn, exports.getRelayProtocolApi = wr, exports.getRelayProtocolName = Sr, exports.getRequiredNamespacesFromNamespaces = Lr, exports.getSdkError = _, exports.getSearchParamFromURL = Fn, exports.getUniqueValues = oe, exports.handleDeeplinkRedirect = xn, exports.hasOverlap = w, exports.hashKey = dr, exports.hashMessage = pr, exports.isBrowser = M, exports.isCaipNamespace = Ne, exports.isConformingNamespaces = Kt, exports.isExpired = Vn, exports.isNode = ie, exports.isOnline = uo, exports.isProposalStruct = Jr, exports.isReactNative = D, exports.isRecap = fe, exports.isSessionCompatible = Br, exports.isSessionStruct = Wr, exports.isTelegram = Ye, exports.isTestRun = Kn, exports.isTypeOneEnvelope = vr, exports.isTypeTwoEnvelope = Er, exports.isUndefined = T, exports.isValidAccountId = Ut, exports.isValidAccounts = kt, exports.isValidActions = Mt, exports.isValidArray = K, exports.isValidChainId = q, exports.isValidChains = Dt, exports.isValidController = zr, exports.isValidEip1271Signature = Xe, exports.isValidEip191Signature = Ze, exports.isValidErrorReason = Xr, exports.isValidEvent = no, exports.isValidId = Qr, exports.isValidNamespaceAccounts = xt, exports.isValidNamespaceActions = we, exports.isValidNamespaceChains = Vt, exports.isValidNamespaceMethodsOrEvents = Se, exports.isValidNamespaces = Ft, exports.isValidNamespacesChainId = ro, exports.isValidNamespacesEvent = so, exports.isValidNamespacesRequest = oo, exports.isValidNumber = te, exports.isValidObject = ee, exports.isValidParams = Zr, exports.isValidRecap = N, exports.isValidRelay = Lt, exports.isValidRelays = Gr, exports.isValidRequest = eo, exports.isValidRequestExpiry = co, exports.isValidRequiredNamespaces = Yr, exports.isValidResponse = to, exports.isValidString = E, exports.isValidUrl = Hr, exports.mapEntries = An, exports.mapToObj = Rn, exports.mergeArrays = O, exports.mergeEncodedRecaps = rr, exports.mergeRecaps = ft, exports.normalizeNamespaces = Oe, exports.objToMap = Tn, exports.parseAccountId = re, exports.parseChainId = ne, exports.parseContextNames = He, exports.parseExpirerTarget = Un, exports.parseNamespaceKey = Ct, exports.parseRelayParams = Ot, exports.parseTopic = St, exports.parseUri = $r, exports.populateAuthPayload = Xn, exports.recapHasResource = er, exports.serialize = be, exports.subscribeToBrowserNetworkChange = Wt, exports.subscribeToNetworkChange = lo, exports.subscribeToReactNativeNetworkChange = zt, exports.toBase64 = Ge, exports.uuidv4 = Ln, exports.validateDecoding = yr, exports.validateEncoding = ht, exports.validateSignedCacao = Qn, exports.verifyP256Jwt = Or, exports.verifySignature = Qe; + //# sourceMappingURL=index.cjs.js.map +diff --git a/node_modules/bn.js/LICENSE b/node_modules/bn.js/LICENSE +new file mode 100644 +index 0000000000000000000000000000000000000000..c328f0401e39c6ead737353c80d7356b86108e83 +--- /dev/null ++++ b/node_modules/bn.js/LICENSE +@@ -0,0 +1,19 @@ ++Copyright Fedor Indutny, 2015. ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software, and to permit persons to whom the Software is ++furnished to do so, subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in all ++copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++SOFTWARE. +diff --git a/node_modules/bn.js/README.md b/node_modules/bn.js/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..aecc3ba0fd0e27aac66909d0fb6eb714819535ed +--- /dev/null ++++ b/node_modules/bn.js/README.md +@@ -0,0 +1,200 @@ ++# bn.js ++ ++> BigNum in pure javascript ++ ++[![Build Status](https://secure.travis-ci.org/indutny/bn.js.png)](http://travis-ci.org/indutny/bn.js) ++ ++## Install ++`npm install --save bn.js` ++ ++## Usage ++ ++```js ++const BN = require('bn.js'); ++ ++var a = new BN('dead', 16); ++var b = new BN('101010', 2); ++ ++var res = a.add(b); ++console.log(res.toString(10)); // 57047 ++``` ++ ++**Note**: decimals are not supported in this library. ++ ++## Notation ++ ++### Prefixes ++ ++There are several prefixes to instructions that affect the way the work. Here ++is the list of them in the order of appearance in the function name: ++ ++* `i` - perform operation in-place, storing the result in the host object (on ++ which the method was invoked). Might be used to avoid number allocation costs ++* `u` - unsigned, ignore the sign of operands when performing operation, or ++ always return positive value. Second case applies to reduction operations ++ like `mod()`. In such cases if the result will be negative - modulo will be ++ added to the result to make it positive ++ ++### Postfixes ++ ++The only available postfix at the moment is: ++ ++* `n` - which means that the argument of the function must be a plain JavaScript ++ Number. Decimals are not supported. ++ ++### Examples ++ ++* `a.iadd(b)` - perform addition on `a` and `b`, storing the result in `a` ++* `a.umod(b)` - reduce `a` modulo `b`, returning positive value ++* `a.iushln(13)` - shift bits of `a` left by 13 ++ ++## Instructions ++ ++Prefixes/postfixes are put in parens at the of the line. `endian` - could be ++either `le` (little-endian) or `be` (big-endian). ++ ++### Utilities ++ ++* `a.clone()` - clone number ++* `a.toString(base, length)` - convert to base-string and pad with zeroes ++* `a.toNumber()` - convert to Javascript Number (limited to 53 bits) ++* `a.toJSON()` - convert to JSON compatible hex string (alias of `toString(16)`) ++* `a.toArray(endian, length)` - convert to byte `Array`, and optionally zero ++ pad to length, throwing if already exceeding ++* `a.toArrayLike(type, endian, length)` - convert to an instance of `type`, ++ which must behave like an `Array` ++* `a.toBuffer(endian, length)` - convert to Node.js Buffer (if available). For ++ compatibility with browserify and similar tools, use this instead: ++ `a.toArrayLike(Buffer, endian, length)` ++* `a.bitLength()` - get number of bits occupied ++* `a.zeroBits()` - return number of less-significant consequent zero bits ++ (example: `1010000` has 4 zero bits) ++* `a.byteLength()` - return number of bytes occupied ++* `a.isNeg()` - true if the number is negative ++* `a.isEven()` - no comments ++* `a.isOdd()` - no comments ++* `a.isZero()` - no comments ++* `a.cmp(b)` - compare numbers and return `-1` (a `<` b), `0` (a `==` b), or `1` (a `>` b) ++ depending on the comparison result (`ucmp`, `cmpn`) ++* `a.lt(b)` - `a` less than `b` (`n`) ++* `a.lte(b)` - `a` less than or equals `b` (`n`) ++* `a.gt(b)` - `a` greater than `b` (`n`) ++* `a.gte(b)` - `a` greater than or equals `b` (`n`) ++* `a.eq(b)` - `a` equals `b` (`n`) ++* `a.toTwos(width)` - convert to two's complement representation, where `width` is bit width ++* `a.fromTwos(width)` - convert from two's complement representation, where `width` is the bit width ++* `BN.isBN(object)` - returns true if the supplied `object` is a BN.js instance ++ ++### Arithmetics ++ ++* `a.neg()` - negate sign (`i`) ++* `a.abs()` - absolute value (`i`) ++* `a.add(b)` - addition (`i`, `n`, `in`) ++* `a.sub(b)` - subtraction (`i`, `n`, `in`) ++* `a.mul(b)` - multiply (`i`, `n`, `in`) ++* `a.sqr()` - square (`i`) ++* `a.pow(b)` - raise `a` to the power of `b` ++* `a.div(b)` - divide (`divn`, `idivn`) ++* `a.mod(b)` - reduct (`u`, `n`) (but no `umodn`) ++* `a.divRound(b)` - rounded division ++ ++### Bit operations ++ ++* `a.or(b)` - or (`i`, `u`, `iu`) ++* `a.and(b)` - and (`i`, `u`, `iu`, `andln`) (NOTE: `andln` is going to be replaced ++ with `andn` in future) ++* `a.xor(b)` - xor (`i`, `u`, `iu`) ++* `a.setn(b)` - set specified bit to `1` ++* `a.shln(b)` - shift left (`i`, `u`, `iu`) ++* `a.shrn(b)` - shift right (`i`, `u`, `iu`) ++* `a.testn(b)` - test if specified bit is set ++* `a.maskn(b)` - clear bits with indexes higher or equal to `b` (`i`) ++* `a.bincn(b)` - add `1 << b` to the number ++* `a.notn(w)` - not (for the width specified by `w`) (`i`) ++ ++### Reduction ++ ++* `a.gcd(b)` - GCD ++* `a.egcd(b)` - Extended GCD results (`{ a: ..., b: ..., gcd: ... }`) ++* `a.invm(b)` - inverse `a` modulo `b` ++ ++## Fast reduction ++ ++When doing lots of reductions using the same modulo, it might be beneficial to ++use some tricks: like [Montgomery multiplication][0], or using special algorithm ++for [Mersenne Prime][1]. ++ ++### Reduction context ++ ++To enable this tricks one should create a reduction context: ++ ++```js ++var red = BN.red(num); ++``` ++where `num` is just a BN instance. ++ ++Or: ++ ++```js ++var red = BN.red(primeName); ++``` ++ ++Where `primeName` is either of these [Mersenne Primes][1]: ++ ++* `'k256'` ++* `'p224'` ++* `'p192'` ++* `'p25519'` ++ ++Or: ++ ++```js ++var red = BN.mont(num); ++``` ++ ++To reduce numbers with [Montgomery trick][0]. `.mont()` is generally faster than ++`.red(num)`, but slower than `BN.red(primeName)`. ++ ++### Converting numbers ++ ++Before performing anything in reduction context - numbers should be converted ++to it. Usually, this means that one should: ++ ++* Convert inputs to reducted ones ++* Operate on them in reduction context ++* Convert outputs back from the reduction context ++ ++Here is how one may convert numbers to `red`: ++ ++```js ++var redA = a.toRed(red); ++``` ++Where `red` is a reduction context created using instructions above ++ ++Here is how to convert them back: ++ ++```js ++var a = redA.fromRed(); ++``` ++ ++### Red instructions ++ ++Most of the instructions from the very start of this readme have their ++counterparts in red context: ++ ++* `a.redAdd(b)`, `a.redIAdd(b)` ++* `a.redSub(b)`, `a.redISub(b)` ++* `a.redShl(num)` ++* `a.redMul(b)`, `a.redIMul(b)` ++* `a.redSqr()`, `a.redISqr()` ++* `a.redSqrt()` - square root modulo reduction context's prime ++* `a.redInvm()` - modular inverse of the number ++* `a.redNeg()` ++* `a.redPow(b)` - modular exponentiation ++ ++## LICENSE ++ ++This software is licensed under the MIT License. ++ ++[0]: https://en.wikipedia.org/wiki/Montgomery_modular_multiplication ++[1]: https://en.wikipedia.org/wiki/Mersenne_prime +diff --git a/node_modules/bn.js/lib/bn.js b/node_modules/bn.js/lib/bn.js +new file mode 100644 +index 0000000000000000000000000000000000000000..3a4371ea29688d216480d68af653c52b8b7beb10 +--- /dev/null ++++ b/node_modules/bn.js/lib/bn.js +@@ -0,0 +1,3446 @@ ++(function (module, exports) { ++ 'use strict'; ++ ++ // Utils ++ function assert (val, msg) { ++ if (!val) throw new Error(msg || 'Assertion failed'); ++ } ++ ++ // Could use `inherits` module, but don't want to move from single file ++ // architecture yet. ++ function inherits (ctor, superCtor) { ++ ctor.super_ = superCtor; ++ var TempCtor = function () {}; ++ TempCtor.prototype = superCtor.prototype; ++ ctor.prototype = new TempCtor(); ++ ctor.prototype.constructor = ctor; ++ } ++ ++ // BN ++ ++ function BN (number, base, endian) { ++ if (BN.isBN(number)) { ++ return number; ++ } ++ ++ this.negative = 0; ++ this.words = null; ++ this.length = 0; ++ ++ // Reduction context ++ this.red = null; ++ ++ if (number !== null) { ++ if (base === 'le' || base === 'be') { ++ endian = base; ++ base = 10; ++ } ++ ++ this._init(number || 0, base || 10, endian || 'be'); ++ } ++ } ++ if (typeof module === 'object') { ++ module.exports = BN; ++ } else { ++ exports.BN = BN; ++ } ++ ++ BN.BN = BN; ++ BN.wordSize = 26; ++ ++ var Buffer; ++ try { ++ if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') { ++ Buffer = window.Buffer; ++ } else { ++ Buffer = require('buffer').Buffer; ++ } ++ } catch (e) { ++ } ++ ++ BN.isBN = function isBN (num) { ++ if (num instanceof BN) { ++ return true; ++ } ++ ++ return num !== null && typeof num === 'object' && ++ num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); ++ }; ++ ++ BN.max = function max (left, right) { ++ if (left.cmp(right) > 0) return left; ++ return right; ++ }; ++ ++ BN.min = function min (left, right) { ++ if (left.cmp(right) < 0) return left; ++ return right; ++ }; ++ ++ BN.prototype._init = function init (number, base, endian) { ++ if (typeof number === 'number') { ++ return this._initNumber(number, base, endian); ++ } ++ ++ if (typeof number === 'object') { ++ return this._initArray(number, base, endian); ++ } ++ ++ if (base === 'hex') { ++ base = 16; ++ } ++ assert(base === (base | 0) && base >= 2 && base <= 36); ++ ++ number = number.toString().replace(/\s+/g, ''); ++ var start = 0; ++ if (number[0] === '-') { ++ start++; ++ this.negative = 1; ++ } ++ ++ if (start < number.length) { ++ if (base === 16) { ++ this._parseHex(number, start, endian); ++ } else { ++ this._parseBase(number, base, start); ++ if (endian === 'le') { ++ this._initArray(this.toArray(), base, endian); ++ } ++ } ++ } ++ }; ++ ++ BN.prototype._initNumber = function _initNumber (number, base, endian) { ++ if (number < 0) { ++ this.negative = 1; ++ number = -number; ++ } ++ if (number < 0x4000000) { ++ this.words = [ number & 0x3ffffff ]; ++ this.length = 1; ++ } else if (number < 0x10000000000000) { ++ this.words = [ ++ number & 0x3ffffff, ++ (number / 0x4000000) & 0x3ffffff ++ ]; ++ this.length = 2; ++ } else { ++ assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) ++ this.words = [ ++ number & 0x3ffffff, ++ (number / 0x4000000) & 0x3ffffff, ++ 1 ++ ]; ++ this.length = 3; ++ } ++ ++ if (endian !== 'le') return; ++ ++ // Reverse the bytes ++ this._initArray(this.toArray(), base, endian); ++ }; ++ ++ BN.prototype._initArray = function _initArray (number, base, endian) { ++ // Perhaps a Uint8Array ++ assert(typeof number.length === 'number'); ++ if (number.length <= 0) { ++ this.words = [ 0 ]; ++ this.length = 1; ++ return this; ++ } ++ ++ this.length = Math.ceil(number.length / 3); ++ this.words = new Array(this.length); ++ for (var i = 0; i < this.length; i++) { ++ this.words[i] = 0; ++ } ++ ++ var j, w; ++ var off = 0; ++ if (endian === 'be') { ++ for (i = number.length - 1, j = 0; i >= 0; i -= 3) { ++ w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); ++ this.words[j] |= (w << off) & 0x3ffffff; ++ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; ++ off += 24; ++ if (off >= 26) { ++ off -= 26; ++ j++; ++ } ++ } ++ } else if (endian === 'le') { ++ for (i = 0, j = 0; i < number.length; i += 3) { ++ w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); ++ this.words[j] |= (w << off) & 0x3ffffff; ++ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; ++ off += 24; ++ if (off >= 26) { ++ off -= 26; ++ j++; ++ } ++ } ++ } ++ return this.strip(); ++ }; ++ ++ function parseHex4Bits (string, index) { ++ var c = string.charCodeAt(index); ++ // 'A' - 'F' ++ if (c >= 65 && c <= 70) { ++ return c - 55; ++ // 'a' - 'f' ++ } else if (c >= 97 && c <= 102) { ++ return c - 87; ++ // '0' - '9' ++ } else { ++ return (c - 48) & 0xf; ++ } ++ } ++ ++ function parseHexByte (string, lowerBound, index) { ++ var r = parseHex4Bits(string, index); ++ if (index - 1 >= lowerBound) { ++ r |= parseHex4Bits(string, index - 1) << 4; ++ } ++ return r; ++ } ++ ++ BN.prototype._parseHex = function _parseHex (number, start, endian) { ++ // Create possibly bigger array to ensure that it fits the number ++ this.length = Math.ceil((number.length - start) / 6); ++ this.words = new Array(this.length); ++ for (var i = 0; i < this.length; i++) { ++ this.words[i] = 0; ++ } ++ ++ // 24-bits chunks ++ var off = 0; ++ var j = 0; ++ ++ var w; ++ if (endian === 'be') { ++ for (i = number.length - 1; i >= start; i -= 2) { ++ w = parseHexByte(number, start, i) << off; ++ this.words[j] |= w & 0x3ffffff; ++ if (off >= 18) { ++ off -= 18; ++ j += 1; ++ this.words[j] |= w >>> 26; ++ } else { ++ off += 8; ++ } ++ } ++ } else { ++ var parseLength = number.length - start; ++ for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { ++ w = parseHexByte(number, start, i) << off; ++ this.words[j] |= w & 0x3ffffff; ++ if (off >= 18) { ++ off -= 18; ++ j += 1; ++ this.words[j] |= w >>> 26; ++ } else { ++ off += 8; ++ } ++ } ++ } ++ ++ this.strip(); ++ }; ++ ++ function parseBase (str, start, end, mul) { ++ var r = 0; ++ var len = Math.min(str.length, end); ++ for (var i = start; i < len; i++) { ++ var c = str.charCodeAt(i) - 48; ++ ++ r *= mul; ++ ++ // 'a' ++ if (c >= 49) { ++ r += c - 49 + 0xa; ++ ++ // 'A' ++ } else if (c >= 17) { ++ r += c - 17 + 0xa; ++ ++ // '0' - '9' ++ } else { ++ r += c; ++ } ++ } ++ return r; ++ } ++ ++ BN.prototype._parseBase = function _parseBase (number, base, start) { ++ // Initialize as zero ++ this.words = [ 0 ]; ++ this.length = 1; ++ ++ // Find length of limb in base ++ for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { ++ limbLen++; ++ } ++ limbLen--; ++ limbPow = (limbPow / base) | 0; ++ ++ var total = number.length - start; ++ var mod = total % limbLen; ++ var end = Math.min(total, total - mod) + start; ++ ++ var word = 0; ++ for (var i = start; i < end; i += limbLen) { ++ word = parseBase(number, i, i + limbLen, base); ++ ++ this.imuln(limbPow); ++ if (this.words[0] + word < 0x4000000) { ++ this.words[0] += word; ++ } else { ++ this._iaddn(word); ++ } ++ } ++ ++ if (mod !== 0) { ++ var pow = 1; ++ word = parseBase(number, i, number.length, base); ++ ++ for (i = 0; i < mod; i++) { ++ pow *= base; ++ } ++ ++ this.imuln(pow); ++ if (this.words[0] + word < 0x4000000) { ++ this.words[0] += word; ++ } else { ++ this._iaddn(word); ++ } ++ } ++ ++ this.strip(); ++ }; ++ ++ BN.prototype.copy = function copy (dest) { ++ dest.words = new Array(this.length); ++ for (var i = 0; i < this.length; i++) { ++ dest.words[i] = this.words[i]; ++ } ++ dest.length = this.length; ++ dest.negative = this.negative; ++ dest.red = this.red; ++ }; ++ ++ BN.prototype.clone = function clone () { ++ var r = new BN(null); ++ this.copy(r); ++ return r; ++ }; ++ ++ BN.prototype._expand = function _expand (size) { ++ while (this.length < size) { ++ this.words[this.length++] = 0; ++ } ++ return this; ++ }; ++ ++ // Remove leading `0` from `this` ++ BN.prototype.strip = function strip () { ++ while (this.length > 1 && this.words[this.length - 1] === 0) { ++ this.length--; ++ } ++ return this._normSign(); ++ }; ++ ++ BN.prototype._normSign = function _normSign () { ++ // -0 = 0 ++ if (this.length === 1 && this.words[0] === 0) { ++ this.negative = 0; ++ } ++ return this; ++ }; ++ ++ BN.prototype.inspect = function inspect () { ++ return (this.red ? ''; ++ }; ++ ++ /* ++ ++ var zeros = []; ++ var groupSizes = []; ++ var groupBases = []; ++ ++ var s = ''; ++ var i = -1; ++ while (++i < BN.wordSize) { ++ zeros[i] = s; ++ s += '0'; ++ } ++ groupSizes[0] = 0; ++ groupSizes[1] = 0; ++ groupBases[0] = 0; ++ groupBases[1] = 0; ++ var base = 2 - 1; ++ while (++base < 36 + 1) { ++ var groupSize = 0; ++ var groupBase = 1; ++ while (groupBase < (1 << BN.wordSize) / base) { ++ groupBase *= base; ++ groupSize += 1; ++ } ++ groupSizes[base] = groupSize; ++ groupBases[base] = groupBase; ++ } ++ ++ */ ++ ++ var zeros = [ ++ '', ++ '0', ++ '00', ++ '000', ++ '0000', ++ '00000', ++ '000000', ++ '0000000', ++ '00000000', ++ '000000000', ++ '0000000000', ++ '00000000000', ++ '000000000000', ++ '0000000000000', ++ '00000000000000', ++ '000000000000000', ++ '0000000000000000', ++ '00000000000000000', ++ '000000000000000000', ++ '0000000000000000000', ++ '00000000000000000000', ++ '000000000000000000000', ++ '0000000000000000000000', ++ '00000000000000000000000', ++ '000000000000000000000000', ++ '0000000000000000000000000' ++ ]; ++ ++ var groupSizes = [ ++ 0, 0, ++ 25, 16, 12, 11, 10, 9, 8, ++ 8, 7, 7, 7, 7, 6, 6, ++ 6, 6, 6, 6, 6, 5, 5, ++ 5, 5, 5, 5, 5, 5, 5, ++ 5, 5, 5, 5, 5, 5, 5 ++ ]; ++ ++ var groupBases = [ ++ 0, 0, ++ 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, ++ 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, ++ 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, ++ 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, ++ 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 ++ ]; ++ ++ BN.prototype.toString = function toString (base, padding) { ++ base = base || 10; ++ padding = padding | 0 || 1; ++ ++ var out; ++ if (base === 16 || base === 'hex') { ++ out = ''; ++ var off = 0; ++ var carry = 0; ++ for (var i = 0; i < this.length; i++) { ++ var w = this.words[i]; ++ var word = (((w << off) | carry) & 0xffffff).toString(16); ++ carry = (w >>> (24 - off)) & 0xffffff; ++ if (carry !== 0 || i !== this.length - 1) { ++ out = zeros[6 - word.length] + word + out; ++ } else { ++ out = word + out; ++ } ++ off += 2; ++ if (off >= 26) { ++ off -= 26; ++ i--; ++ } ++ } ++ if (carry !== 0) { ++ out = carry.toString(16) + out; ++ } ++ while (out.length % padding !== 0) { ++ out = '0' + out; ++ } ++ if (this.negative !== 0) { ++ out = '-' + out; ++ } ++ return out; ++ } ++ ++ if (base === (base | 0) && base >= 2 && base <= 36) { ++ // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); ++ var groupSize = groupSizes[base]; ++ // var groupBase = Math.pow(base, groupSize); ++ var groupBase = groupBases[base]; ++ out = ''; ++ var c = this.clone(); ++ c.negative = 0; ++ while (!c.isZero()) { ++ var r = c.modn(groupBase).toString(base); ++ c = c.idivn(groupBase); ++ ++ if (!c.isZero()) { ++ out = zeros[groupSize - r.length] + r + out; ++ } else { ++ out = r + out; ++ } ++ } ++ if (this.isZero()) { ++ out = '0' + out; ++ } ++ while (out.length % padding !== 0) { ++ out = '0' + out; ++ } ++ if (this.negative !== 0) { ++ out = '-' + out; ++ } ++ return out; ++ } ++ ++ assert(false, 'Base should be between 2 and 36'); ++ }; ++ ++ BN.prototype.toNumber = function toNumber () { ++ var ret = this.words[0]; ++ if (this.length === 2) { ++ ret += this.words[1] * 0x4000000; ++ } else if (this.length === 3 && this.words[2] === 0x01) { ++ // NOTE: at this stage it is known that the top bit is set ++ ret += 0x10000000000000 + (this.words[1] * 0x4000000); ++ } else if (this.length > 2) { ++ assert(false, 'Number can only safely store up to 53 bits'); ++ } ++ return (this.negative !== 0) ? -ret : ret; ++ }; ++ ++ BN.prototype.toJSON = function toJSON () { ++ return this.toString(16); ++ }; ++ ++ BN.prototype.toBuffer = function toBuffer (endian, length) { ++ assert(typeof Buffer !== 'undefined'); ++ return this.toArrayLike(Buffer, endian, length); ++ }; ++ ++ BN.prototype.toArray = function toArray (endian, length) { ++ return this.toArrayLike(Array, endian, length); ++ }; ++ ++ BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { ++ var byteLength = this.byteLength(); ++ var reqLength = length || Math.max(1, byteLength); ++ assert(byteLength <= reqLength, 'byte array longer than desired length'); ++ assert(reqLength > 0, 'Requested array length <= 0'); ++ ++ this.strip(); ++ var littleEndian = endian === 'le'; ++ var res = new ArrayType(reqLength); ++ ++ var b, i; ++ var q = this.clone(); ++ if (!littleEndian) { ++ // Assume big-endian ++ for (i = 0; i < reqLength - byteLength; i++) { ++ res[i] = 0; ++ } ++ ++ for (i = 0; !q.isZero(); i++) { ++ b = q.andln(0xff); ++ q.iushrn(8); ++ ++ res[reqLength - i - 1] = b; ++ } ++ } else { ++ for (i = 0; !q.isZero(); i++) { ++ b = q.andln(0xff); ++ q.iushrn(8); ++ ++ res[i] = b; ++ } ++ ++ for (; i < reqLength; i++) { ++ res[i] = 0; ++ } ++ } ++ ++ return res; ++ }; ++ ++ if (Math.clz32) { ++ BN.prototype._countBits = function _countBits (w) { ++ return 32 - Math.clz32(w); ++ }; ++ } else { ++ BN.prototype._countBits = function _countBits (w) { ++ var t = w; ++ var r = 0; ++ if (t >= 0x1000) { ++ r += 13; ++ t >>>= 13; ++ } ++ if (t >= 0x40) { ++ r += 7; ++ t >>>= 7; ++ } ++ if (t >= 0x8) { ++ r += 4; ++ t >>>= 4; ++ } ++ if (t >= 0x02) { ++ r += 2; ++ t >>>= 2; ++ } ++ return r + t; ++ }; ++ } ++ ++ BN.prototype._zeroBits = function _zeroBits (w) { ++ // Short-cut ++ if (w === 0) return 26; ++ ++ var t = w; ++ var r = 0; ++ if ((t & 0x1fff) === 0) { ++ r += 13; ++ t >>>= 13; ++ } ++ if ((t & 0x7f) === 0) { ++ r += 7; ++ t >>>= 7; ++ } ++ if ((t & 0xf) === 0) { ++ r += 4; ++ t >>>= 4; ++ } ++ if ((t & 0x3) === 0) { ++ r += 2; ++ t >>>= 2; ++ } ++ if ((t & 0x1) === 0) { ++ r++; ++ } ++ return r; ++ }; ++ ++ // Return number of used bits in a BN ++ BN.prototype.bitLength = function bitLength () { ++ var w = this.words[this.length - 1]; ++ var hi = this._countBits(w); ++ return (this.length - 1) * 26 + hi; ++ }; ++ ++ function toBitArray (num) { ++ var w = new Array(num.bitLength()); ++ ++ for (var bit = 0; bit < w.length; bit++) { ++ var off = (bit / 26) | 0; ++ var wbit = bit % 26; ++ ++ w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; ++ } ++ ++ return w; ++ } ++ ++ // Number of trailing zero bits ++ BN.prototype.zeroBits = function zeroBits () { ++ if (this.isZero()) return 0; ++ ++ var r = 0; ++ for (var i = 0; i < this.length; i++) { ++ var b = this._zeroBits(this.words[i]); ++ r += b; ++ if (b !== 26) break; ++ } ++ return r; ++ }; ++ ++ BN.prototype.byteLength = function byteLength () { ++ return Math.ceil(this.bitLength() / 8); ++ }; ++ ++ BN.prototype.toTwos = function toTwos (width) { ++ if (this.negative !== 0) { ++ return this.abs().inotn(width).iaddn(1); ++ } ++ return this.clone(); ++ }; ++ ++ BN.prototype.fromTwos = function fromTwos (width) { ++ if (this.testn(width - 1)) { ++ return this.notn(width).iaddn(1).ineg(); ++ } ++ return this.clone(); ++ }; ++ ++ BN.prototype.isNeg = function isNeg () { ++ return this.negative !== 0; ++ }; ++ ++ // Return negative clone of `this` ++ BN.prototype.neg = function neg () { ++ return this.clone().ineg(); ++ }; ++ ++ BN.prototype.ineg = function ineg () { ++ if (!this.isZero()) { ++ this.negative ^= 1; ++ } ++ ++ return this; ++ }; ++ ++ // Or `num` with `this` in-place ++ BN.prototype.iuor = function iuor (num) { ++ while (this.length < num.length) { ++ this.words[this.length++] = 0; ++ } ++ ++ for (var i = 0; i < num.length; i++) { ++ this.words[i] = this.words[i] | num.words[i]; ++ } ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.ior = function ior (num) { ++ assert((this.negative | num.negative) === 0); ++ return this.iuor(num); ++ }; ++ ++ // Or `num` with `this` ++ BN.prototype.or = function or (num) { ++ if (this.length > num.length) return this.clone().ior(num); ++ return num.clone().ior(this); ++ }; ++ ++ BN.prototype.uor = function uor (num) { ++ if (this.length > num.length) return this.clone().iuor(num); ++ return num.clone().iuor(this); ++ }; ++ ++ // And `num` with `this` in-place ++ BN.prototype.iuand = function iuand (num) { ++ // b = min-length(num, this) ++ var b; ++ if (this.length > num.length) { ++ b = num; ++ } else { ++ b = this; ++ } ++ ++ for (var i = 0; i < b.length; i++) { ++ this.words[i] = this.words[i] & num.words[i]; ++ } ++ ++ this.length = b.length; ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.iand = function iand (num) { ++ assert((this.negative | num.negative) === 0); ++ return this.iuand(num); ++ }; ++ ++ // And `num` with `this` ++ BN.prototype.and = function and (num) { ++ if (this.length > num.length) return this.clone().iand(num); ++ return num.clone().iand(this); ++ }; ++ ++ BN.prototype.uand = function uand (num) { ++ if (this.length > num.length) return this.clone().iuand(num); ++ return num.clone().iuand(this); ++ }; ++ ++ // Xor `num` with `this` in-place ++ BN.prototype.iuxor = function iuxor (num) { ++ // a.length > b.length ++ var a; ++ var b; ++ if (this.length > num.length) { ++ a = this; ++ b = num; ++ } else { ++ a = num; ++ b = this; ++ } ++ ++ for (var i = 0; i < b.length; i++) { ++ this.words[i] = a.words[i] ^ b.words[i]; ++ } ++ ++ if (this !== a) { ++ for (; i < a.length; i++) { ++ this.words[i] = a.words[i]; ++ } ++ } ++ ++ this.length = a.length; ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.ixor = function ixor (num) { ++ assert((this.negative | num.negative) === 0); ++ return this.iuxor(num); ++ }; ++ ++ // Xor `num` with `this` ++ BN.prototype.xor = function xor (num) { ++ if (this.length > num.length) return this.clone().ixor(num); ++ return num.clone().ixor(this); ++ }; ++ ++ BN.prototype.uxor = function uxor (num) { ++ if (this.length > num.length) return this.clone().iuxor(num); ++ return num.clone().iuxor(this); ++ }; ++ ++ // Not ``this`` with ``width`` bitwidth ++ BN.prototype.inotn = function inotn (width) { ++ assert(typeof width === 'number' && width >= 0); ++ ++ var bytesNeeded = Math.ceil(width / 26) | 0; ++ var bitsLeft = width % 26; ++ ++ // Extend the buffer with leading zeroes ++ this._expand(bytesNeeded); ++ ++ if (bitsLeft > 0) { ++ bytesNeeded--; ++ } ++ ++ // Handle complete words ++ for (var i = 0; i < bytesNeeded; i++) { ++ this.words[i] = ~this.words[i] & 0x3ffffff; ++ } ++ ++ // Handle the residue ++ if (bitsLeft > 0) { ++ this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); ++ } ++ ++ // And remove leading zeroes ++ return this.strip(); ++ }; ++ ++ BN.prototype.notn = function notn (width) { ++ return this.clone().inotn(width); ++ }; ++ ++ // Set `bit` of `this` ++ BN.prototype.setn = function setn (bit, val) { ++ assert(typeof bit === 'number' && bit >= 0); ++ ++ var off = (bit / 26) | 0; ++ var wbit = bit % 26; ++ ++ this._expand(off + 1); ++ ++ if (val) { ++ this.words[off] = this.words[off] | (1 << wbit); ++ } else { ++ this.words[off] = this.words[off] & ~(1 << wbit); ++ } ++ ++ return this.strip(); ++ }; ++ ++ // Add `num` to `this` in-place ++ BN.prototype.iadd = function iadd (num) { ++ var r; ++ ++ // negative + positive ++ if (this.negative !== 0 && num.negative === 0) { ++ this.negative = 0; ++ r = this.isub(num); ++ this.negative ^= 1; ++ return this._normSign(); ++ ++ // positive + negative ++ } else if (this.negative === 0 && num.negative !== 0) { ++ num.negative = 0; ++ r = this.isub(num); ++ num.negative = 1; ++ return r._normSign(); ++ } ++ ++ // a.length > b.length ++ var a, b; ++ if (this.length > num.length) { ++ a = this; ++ b = num; ++ } else { ++ a = num; ++ b = this; ++ } ++ ++ var carry = 0; ++ for (var i = 0; i < b.length; i++) { ++ r = (a.words[i] | 0) + (b.words[i] | 0) + carry; ++ this.words[i] = r & 0x3ffffff; ++ carry = r >>> 26; ++ } ++ for (; carry !== 0 && i < a.length; i++) { ++ r = (a.words[i] | 0) + carry; ++ this.words[i] = r & 0x3ffffff; ++ carry = r >>> 26; ++ } ++ ++ this.length = a.length; ++ if (carry !== 0) { ++ this.words[this.length] = carry; ++ this.length++; ++ // Copy the rest of the words ++ } else if (a !== this) { ++ for (; i < a.length; i++) { ++ this.words[i] = a.words[i]; ++ } ++ } ++ ++ return this; ++ }; ++ ++ // Add `num` to `this` ++ BN.prototype.add = function add (num) { ++ var res; ++ if (num.negative !== 0 && this.negative === 0) { ++ num.negative = 0; ++ res = this.sub(num); ++ num.negative ^= 1; ++ return res; ++ } else if (num.negative === 0 && this.negative !== 0) { ++ this.negative = 0; ++ res = num.sub(this); ++ this.negative = 1; ++ return res; ++ } ++ ++ if (this.length > num.length) return this.clone().iadd(num); ++ ++ return num.clone().iadd(this); ++ }; ++ ++ // Subtract `num` from `this` in-place ++ BN.prototype.isub = function isub (num) { ++ // this - (-num) = this + num ++ if (num.negative !== 0) { ++ num.negative = 0; ++ var r = this.iadd(num); ++ num.negative = 1; ++ return r._normSign(); ++ ++ // -this - num = -(this + num) ++ } else if (this.negative !== 0) { ++ this.negative = 0; ++ this.iadd(num); ++ this.negative = 1; ++ return this._normSign(); ++ } ++ ++ // At this point both numbers are positive ++ var cmp = this.cmp(num); ++ ++ // Optimization - zeroify ++ if (cmp === 0) { ++ this.negative = 0; ++ this.length = 1; ++ this.words[0] = 0; ++ return this; ++ } ++ ++ // a > b ++ var a, b; ++ if (cmp > 0) { ++ a = this; ++ b = num; ++ } else { ++ a = num; ++ b = this; ++ } ++ ++ var carry = 0; ++ for (var i = 0; i < b.length; i++) { ++ r = (a.words[i] | 0) - (b.words[i] | 0) + carry; ++ carry = r >> 26; ++ this.words[i] = r & 0x3ffffff; ++ } ++ for (; carry !== 0 && i < a.length; i++) { ++ r = (a.words[i] | 0) + carry; ++ carry = r >> 26; ++ this.words[i] = r & 0x3ffffff; ++ } ++ ++ // Copy rest of the words ++ if (carry === 0 && i < a.length && a !== this) { ++ for (; i < a.length; i++) { ++ this.words[i] = a.words[i]; ++ } ++ } ++ ++ this.length = Math.max(this.length, i); ++ ++ if (a !== this) { ++ this.negative = 1; ++ } ++ ++ return this.strip(); ++ }; ++ ++ // Subtract `num` from `this` ++ BN.prototype.sub = function sub (num) { ++ return this.clone().isub(num); ++ }; ++ ++ function smallMulTo (self, num, out) { ++ out.negative = num.negative ^ self.negative; ++ var len = (self.length + num.length) | 0; ++ out.length = len; ++ len = (len - 1) | 0; ++ ++ // Peel one iteration (compiler can't do it, because of code complexity) ++ var a = self.words[0] | 0; ++ var b = num.words[0] | 0; ++ var r = a * b; ++ ++ var lo = r & 0x3ffffff; ++ var carry = (r / 0x4000000) | 0; ++ out.words[0] = lo; ++ ++ for (var k = 1; k < len; k++) { ++ // Sum all words with the same `i + j = k` and accumulate `ncarry`, ++ // note that ncarry could be >= 0x3ffffff ++ var ncarry = carry >>> 26; ++ var rword = carry & 0x3ffffff; ++ var maxJ = Math.min(k, num.length - 1); ++ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { ++ var i = (k - j) | 0; ++ a = self.words[i] | 0; ++ b = num.words[j] | 0; ++ r = a * b + rword; ++ ncarry += (r / 0x4000000) | 0; ++ rword = r & 0x3ffffff; ++ } ++ out.words[k] = rword | 0; ++ carry = ncarry | 0; ++ } ++ if (carry !== 0) { ++ out.words[k] = carry | 0; ++ } else { ++ out.length--; ++ } ++ ++ return out.strip(); ++ } ++ ++ // TODO(indutny): it may be reasonable to omit it for users who don't need ++ // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit ++ // multiplication (like elliptic secp256k1). ++ var comb10MulTo = function comb10MulTo (self, num, out) { ++ var a = self.words; ++ var b = num.words; ++ var o = out.words; ++ var c = 0; ++ var lo; ++ var mid; ++ var hi; ++ var a0 = a[0] | 0; ++ var al0 = a0 & 0x1fff; ++ var ah0 = a0 >>> 13; ++ var a1 = a[1] | 0; ++ var al1 = a1 & 0x1fff; ++ var ah1 = a1 >>> 13; ++ var a2 = a[2] | 0; ++ var al2 = a2 & 0x1fff; ++ var ah2 = a2 >>> 13; ++ var a3 = a[3] | 0; ++ var al3 = a3 & 0x1fff; ++ var ah3 = a3 >>> 13; ++ var a4 = a[4] | 0; ++ var al4 = a4 & 0x1fff; ++ var ah4 = a4 >>> 13; ++ var a5 = a[5] | 0; ++ var al5 = a5 & 0x1fff; ++ var ah5 = a5 >>> 13; ++ var a6 = a[6] | 0; ++ var al6 = a6 & 0x1fff; ++ var ah6 = a6 >>> 13; ++ var a7 = a[7] | 0; ++ var al7 = a7 & 0x1fff; ++ var ah7 = a7 >>> 13; ++ var a8 = a[8] | 0; ++ var al8 = a8 & 0x1fff; ++ var ah8 = a8 >>> 13; ++ var a9 = a[9] | 0; ++ var al9 = a9 & 0x1fff; ++ var ah9 = a9 >>> 13; ++ var b0 = b[0] | 0; ++ var bl0 = b0 & 0x1fff; ++ var bh0 = b0 >>> 13; ++ var b1 = b[1] | 0; ++ var bl1 = b1 & 0x1fff; ++ var bh1 = b1 >>> 13; ++ var b2 = b[2] | 0; ++ var bl2 = b2 & 0x1fff; ++ var bh2 = b2 >>> 13; ++ var b3 = b[3] | 0; ++ var bl3 = b3 & 0x1fff; ++ var bh3 = b3 >>> 13; ++ var b4 = b[4] | 0; ++ var bl4 = b4 & 0x1fff; ++ var bh4 = b4 >>> 13; ++ var b5 = b[5] | 0; ++ var bl5 = b5 & 0x1fff; ++ var bh5 = b5 >>> 13; ++ var b6 = b[6] | 0; ++ var bl6 = b6 & 0x1fff; ++ var bh6 = b6 >>> 13; ++ var b7 = b[7] | 0; ++ var bl7 = b7 & 0x1fff; ++ var bh7 = b7 >>> 13; ++ var b8 = b[8] | 0; ++ var bl8 = b8 & 0x1fff; ++ var bh8 = b8 >>> 13; ++ var b9 = b[9] | 0; ++ var bl9 = b9 & 0x1fff; ++ var bh9 = b9 >>> 13; ++ ++ out.negative = self.negative ^ num.negative; ++ out.length = 19; ++ /* k = 0 */ ++ lo = Math.imul(al0, bl0); ++ mid = Math.imul(al0, bh0); ++ mid = (mid + Math.imul(ah0, bl0)) | 0; ++ hi = Math.imul(ah0, bh0); ++ var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; ++ w0 &= 0x3ffffff; ++ /* k = 1 */ ++ lo = Math.imul(al1, bl0); ++ mid = Math.imul(al1, bh0); ++ mid = (mid + Math.imul(ah1, bl0)) | 0; ++ hi = Math.imul(ah1, bh0); ++ lo = (lo + Math.imul(al0, bl1)) | 0; ++ mid = (mid + Math.imul(al0, bh1)) | 0; ++ mid = (mid + Math.imul(ah0, bl1)) | 0; ++ hi = (hi + Math.imul(ah0, bh1)) | 0; ++ var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; ++ w1 &= 0x3ffffff; ++ /* k = 2 */ ++ lo = Math.imul(al2, bl0); ++ mid = Math.imul(al2, bh0); ++ mid = (mid + Math.imul(ah2, bl0)) | 0; ++ hi = Math.imul(ah2, bh0); ++ lo = (lo + Math.imul(al1, bl1)) | 0; ++ mid = (mid + Math.imul(al1, bh1)) | 0; ++ mid = (mid + Math.imul(ah1, bl1)) | 0; ++ hi = (hi + Math.imul(ah1, bh1)) | 0; ++ lo = (lo + Math.imul(al0, bl2)) | 0; ++ mid = (mid + Math.imul(al0, bh2)) | 0; ++ mid = (mid + Math.imul(ah0, bl2)) | 0; ++ hi = (hi + Math.imul(ah0, bh2)) | 0; ++ var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; ++ w2 &= 0x3ffffff; ++ /* k = 3 */ ++ lo = Math.imul(al3, bl0); ++ mid = Math.imul(al3, bh0); ++ mid = (mid + Math.imul(ah3, bl0)) | 0; ++ hi = Math.imul(ah3, bh0); ++ lo = (lo + Math.imul(al2, bl1)) | 0; ++ mid = (mid + Math.imul(al2, bh1)) | 0; ++ mid = (mid + Math.imul(ah2, bl1)) | 0; ++ hi = (hi + Math.imul(ah2, bh1)) | 0; ++ lo = (lo + Math.imul(al1, bl2)) | 0; ++ mid = (mid + Math.imul(al1, bh2)) | 0; ++ mid = (mid + Math.imul(ah1, bl2)) | 0; ++ hi = (hi + Math.imul(ah1, bh2)) | 0; ++ lo = (lo + Math.imul(al0, bl3)) | 0; ++ mid = (mid + Math.imul(al0, bh3)) | 0; ++ mid = (mid + Math.imul(ah0, bl3)) | 0; ++ hi = (hi + Math.imul(ah0, bh3)) | 0; ++ var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; ++ w3 &= 0x3ffffff; ++ /* k = 4 */ ++ lo = Math.imul(al4, bl0); ++ mid = Math.imul(al4, bh0); ++ mid = (mid + Math.imul(ah4, bl0)) | 0; ++ hi = Math.imul(ah4, bh0); ++ lo = (lo + Math.imul(al3, bl1)) | 0; ++ mid = (mid + Math.imul(al3, bh1)) | 0; ++ mid = (mid + Math.imul(ah3, bl1)) | 0; ++ hi = (hi + Math.imul(ah3, bh1)) | 0; ++ lo = (lo + Math.imul(al2, bl2)) | 0; ++ mid = (mid + Math.imul(al2, bh2)) | 0; ++ mid = (mid + Math.imul(ah2, bl2)) | 0; ++ hi = (hi + Math.imul(ah2, bh2)) | 0; ++ lo = (lo + Math.imul(al1, bl3)) | 0; ++ mid = (mid + Math.imul(al1, bh3)) | 0; ++ mid = (mid + Math.imul(ah1, bl3)) | 0; ++ hi = (hi + Math.imul(ah1, bh3)) | 0; ++ lo = (lo + Math.imul(al0, bl4)) | 0; ++ mid = (mid + Math.imul(al0, bh4)) | 0; ++ mid = (mid + Math.imul(ah0, bl4)) | 0; ++ hi = (hi + Math.imul(ah0, bh4)) | 0; ++ var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; ++ w4 &= 0x3ffffff; ++ /* k = 5 */ ++ lo = Math.imul(al5, bl0); ++ mid = Math.imul(al5, bh0); ++ mid = (mid + Math.imul(ah5, bl0)) | 0; ++ hi = Math.imul(ah5, bh0); ++ lo = (lo + Math.imul(al4, bl1)) | 0; ++ mid = (mid + Math.imul(al4, bh1)) | 0; ++ mid = (mid + Math.imul(ah4, bl1)) | 0; ++ hi = (hi + Math.imul(ah4, bh1)) | 0; ++ lo = (lo + Math.imul(al3, bl2)) | 0; ++ mid = (mid + Math.imul(al3, bh2)) | 0; ++ mid = (mid + Math.imul(ah3, bl2)) | 0; ++ hi = (hi + Math.imul(ah3, bh2)) | 0; ++ lo = (lo + Math.imul(al2, bl3)) | 0; ++ mid = (mid + Math.imul(al2, bh3)) | 0; ++ mid = (mid + Math.imul(ah2, bl3)) | 0; ++ hi = (hi + Math.imul(ah2, bh3)) | 0; ++ lo = (lo + Math.imul(al1, bl4)) | 0; ++ mid = (mid + Math.imul(al1, bh4)) | 0; ++ mid = (mid + Math.imul(ah1, bl4)) | 0; ++ hi = (hi + Math.imul(ah1, bh4)) | 0; ++ lo = (lo + Math.imul(al0, bl5)) | 0; ++ mid = (mid + Math.imul(al0, bh5)) | 0; ++ mid = (mid + Math.imul(ah0, bl5)) | 0; ++ hi = (hi + Math.imul(ah0, bh5)) | 0; ++ var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; ++ w5 &= 0x3ffffff; ++ /* k = 6 */ ++ lo = Math.imul(al6, bl0); ++ mid = Math.imul(al6, bh0); ++ mid = (mid + Math.imul(ah6, bl0)) | 0; ++ hi = Math.imul(ah6, bh0); ++ lo = (lo + Math.imul(al5, bl1)) | 0; ++ mid = (mid + Math.imul(al5, bh1)) | 0; ++ mid = (mid + Math.imul(ah5, bl1)) | 0; ++ hi = (hi + Math.imul(ah5, bh1)) | 0; ++ lo = (lo + Math.imul(al4, bl2)) | 0; ++ mid = (mid + Math.imul(al4, bh2)) | 0; ++ mid = (mid + Math.imul(ah4, bl2)) | 0; ++ hi = (hi + Math.imul(ah4, bh2)) | 0; ++ lo = (lo + Math.imul(al3, bl3)) | 0; ++ mid = (mid + Math.imul(al3, bh3)) | 0; ++ mid = (mid + Math.imul(ah3, bl3)) | 0; ++ hi = (hi + Math.imul(ah3, bh3)) | 0; ++ lo = (lo + Math.imul(al2, bl4)) | 0; ++ mid = (mid + Math.imul(al2, bh4)) | 0; ++ mid = (mid + Math.imul(ah2, bl4)) | 0; ++ hi = (hi + Math.imul(ah2, bh4)) | 0; ++ lo = (lo + Math.imul(al1, bl5)) | 0; ++ mid = (mid + Math.imul(al1, bh5)) | 0; ++ mid = (mid + Math.imul(ah1, bl5)) | 0; ++ hi = (hi + Math.imul(ah1, bh5)) | 0; ++ lo = (lo + Math.imul(al0, bl6)) | 0; ++ mid = (mid + Math.imul(al0, bh6)) | 0; ++ mid = (mid + Math.imul(ah0, bl6)) | 0; ++ hi = (hi + Math.imul(ah0, bh6)) | 0; ++ var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; ++ w6 &= 0x3ffffff; ++ /* k = 7 */ ++ lo = Math.imul(al7, bl0); ++ mid = Math.imul(al7, bh0); ++ mid = (mid + Math.imul(ah7, bl0)) | 0; ++ hi = Math.imul(ah7, bh0); ++ lo = (lo + Math.imul(al6, bl1)) | 0; ++ mid = (mid + Math.imul(al6, bh1)) | 0; ++ mid = (mid + Math.imul(ah6, bl1)) | 0; ++ hi = (hi + Math.imul(ah6, bh1)) | 0; ++ lo = (lo + Math.imul(al5, bl2)) | 0; ++ mid = (mid + Math.imul(al5, bh2)) | 0; ++ mid = (mid + Math.imul(ah5, bl2)) | 0; ++ hi = (hi + Math.imul(ah5, bh2)) | 0; ++ lo = (lo + Math.imul(al4, bl3)) | 0; ++ mid = (mid + Math.imul(al4, bh3)) | 0; ++ mid = (mid + Math.imul(ah4, bl3)) | 0; ++ hi = (hi + Math.imul(ah4, bh3)) | 0; ++ lo = (lo + Math.imul(al3, bl4)) | 0; ++ mid = (mid + Math.imul(al3, bh4)) | 0; ++ mid = (mid + Math.imul(ah3, bl4)) | 0; ++ hi = (hi + Math.imul(ah3, bh4)) | 0; ++ lo = (lo + Math.imul(al2, bl5)) | 0; ++ mid = (mid + Math.imul(al2, bh5)) | 0; ++ mid = (mid + Math.imul(ah2, bl5)) | 0; ++ hi = (hi + Math.imul(ah2, bh5)) | 0; ++ lo = (lo + Math.imul(al1, bl6)) | 0; ++ mid = (mid + Math.imul(al1, bh6)) | 0; ++ mid = (mid + Math.imul(ah1, bl6)) | 0; ++ hi = (hi + Math.imul(ah1, bh6)) | 0; ++ lo = (lo + Math.imul(al0, bl7)) | 0; ++ mid = (mid + Math.imul(al0, bh7)) | 0; ++ mid = (mid + Math.imul(ah0, bl7)) | 0; ++ hi = (hi + Math.imul(ah0, bh7)) | 0; ++ var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; ++ w7 &= 0x3ffffff; ++ /* k = 8 */ ++ lo = Math.imul(al8, bl0); ++ mid = Math.imul(al8, bh0); ++ mid = (mid + Math.imul(ah8, bl0)) | 0; ++ hi = Math.imul(ah8, bh0); ++ lo = (lo + Math.imul(al7, bl1)) | 0; ++ mid = (mid + Math.imul(al7, bh1)) | 0; ++ mid = (mid + Math.imul(ah7, bl1)) | 0; ++ hi = (hi + Math.imul(ah7, bh1)) | 0; ++ lo = (lo + Math.imul(al6, bl2)) | 0; ++ mid = (mid + Math.imul(al6, bh2)) | 0; ++ mid = (mid + Math.imul(ah6, bl2)) | 0; ++ hi = (hi + Math.imul(ah6, bh2)) | 0; ++ lo = (lo + Math.imul(al5, bl3)) | 0; ++ mid = (mid + Math.imul(al5, bh3)) | 0; ++ mid = (mid + Math.imul(ah5, bl3)) | 0; ++ hi = (hi + Math.imul(ah5, bh3)) | 0; ++ lo = (lo + Math.imul(al4, bl4)) | 0; ++ mid = (mid + Math.imul(al4, bh4)) | 0; ++ mid = (mid + Math.imul(ah4, bl4)) | 0; ++ hi = (hi + Math.imul(ah4, bh4)) | 0; ++ lo = (lo + Math.imul(al3, bl5)) | 0; ++ mid = (mid + Math.imul(al3, bh5)) | 0; ++ mid = (mid + Math.imul(ah3, bl5)) | 0; ++ hi = (hi + Math.imul(ah3, bh5)) | 0; ++ lo = (lo + Math.imul(al2, bl6)) | 0; ++ mid = (mid + Math.imul(al2, bh6)) | 0; ++ mid = (mid + Math.imul(ah2, bl6)) | 0; ++ hi = (hi + Math.imul(ah2, bh6)) | 0; ++ lo = (lo + Math.imul(al1, bl7)) | 0; ++ mid = (mid + Math.imul(al1, bh7)) | 0; ++ mid = (mid + Math.imul(ah1, bl7)) | 0; ++ hi = (hi + Math.imul(ah1, bh7)) | 0; ++ lo = (lo + Math.imul(al0, bl8)) | 0; ++ mid = (mid + Math.imul(al0, bh8)) | 0; ++ mid = (mid + Math.imul(ah0, bl8)) | 0; ++ hi = (hi + Math.imul(ah0, bh8)) | 0; ++ var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; ++ w8 &= 0x3ffffff; ++ /* k = 9 */ ++ lo = Math.imul(al9, bl0); ++ mid = Math.imul(al9, bh0); ++ mid = (mid + Math.imul(ah9, bl0)) | 0; ++ hi = Math.imul(ah9, bh0); ++ lo = (lo + Math.imul(al8, bl1)) | 0; ++ mid = (mid + Math.imul(al8, bh1)) | 0; ++ mid = (mid + Math.imul(ah8, bl1)) | 0; ++ hi = (hi + Math.imul(ah8, bh1)) | 0; ++ lo = (lo + Math.imul(al7, bl2)) | 0; ++ mid = (mid + Math.imul(al7, bh2)) | 0; ++ mid = (mid + Math.imul(ah7, bl2)) | 0; ++ hi = (hi + Math.imul(ah7, bh2)) | 0; ++ lo = (lo + Math.imul(al6, bl3)) | 0; ++ mid = (mid + Math.imul(al6, bh3)) | 0; ++ mid = (mid + Math.imul(ah6, bl3)) | 0; ++ hi = (hi + Math.imul(ah6, bh3)) | 0; ++ lo = (lo + Math.imul(al5, bl4)) | 0; ++ mid = (mid + Math.imul(al5, bh4)) | 0; ++ mid = (mid + Math.imul(ah5, bl4)) | 0; ++ hi = (hi + Math.imul(ah5, bh4)) | 0; ++ lo = (lo + Math.imul(al4, bl5)) | 0; ++ mid = (mid + Math.imul(al4, bh5)) | 0; ++ mid = (mid + Math.imul(ah4, bl5)) | 0; ++ hi = (hi + Math.imul(ah4, bh5)) | 0; ++ lo = (lo + Math.imul(al3, bl6)) | 0; ++ mid = (mid + Math.imul(al3, bh6)) | 0; ++ mid = (mid + Math.imul(ah3, bl6)) | 0; ++ hi = (hi + Math.imul(ah3, bh6)) | 0; ++ lo = (lo + Math.imul(al2, bl7)) | 0; ++ mid = (mid + Math.imul(al2, bh7)) | 0; ++ mid = (mid + Math.imul(ah2, bl7)) | 0; ++ hi = (hi + Math.imul(ah2, bh7)) | 0; ++ lo = (lo + Math.imul(al1, bl8)) | 0; ++ mid = (mid + Math.imul(al1, bh8)) | 0; ++ mid = (mid + Math.imul(ah1, bl8)) | 0; ++ hi = (hi + Math.imul(ah1, bh8)) | 0; ++ lo = (lo + Math.imul(al0, bl9)) | 0; ++ mid = (mid + Math.imul(al0, bh9)) | 0; ++ mid = (mid + Math.imul(ah0, bl9)) | 0; ++ hi = (hi + Math.imul(ah0, bh9)) | 0; ++ var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; ++ w9 &= 0x3ffffff; ++ /* k = 10 */ ++ lo = Math.imul(al9, bl1); ++ mid = Math.imul(al9, bh1); ++ mid = (mid + Math.imul(ah9, bl1)) | 0; ++ hi = Math.imul(ah9, bh1); ++ lo = (lo + Math.imul(al8, bl2)) | 0; ++ mid = (mid + Math.imul(al8, bh2)) | 0; ++ mid = (mid + Math.imul(ah8, bl2)) | 0; ++ hi = (hi + Math.imul(ah8, bh2)) | 0; ++ lo = (lo + Math.imul(al7, bl3)) | 0; ++ mid = (mid + Math.imul(al7, bh3)) | 0; ++ mid = (mid + Math.imul(ah7, bl3)) | 0; ++ hi = (hi + Math.imul(ah7, bh3)) | 0; ++ lo = (lo + Math.imul(al6, bl4)) | 0; ++ mid = (mid + Math.imul(al6, bh4)) | 0; ++ mid = (mid + Math.imul(ah6, bl4)) | 0; ++ hi = (hi + Math.imul(ah6, bh4)) | 0; ++ lo = (lo + Math.imul(al5, bl5)) | 0; ++ mid = (mid + Math.imul(al5, bh5)) | 0; ++ mid = (mid + Math.imul(ah5, bl5)) | 0; ++ hi = (hi + Math.imul(ah5, bh5)) | 0; ++ lo = (lo + Math.imul(al4, bl6)) | 0; ++ mid = (mid + Math.imul(al4, bh6)) | 0; ++ mid = (mid + Math.imul(ah4, bl6)) | 0; ++ hi = (hi + Math.imul(ah4, bh6)) | 0; ++ lo = (lo + Math.imul(al3, bl7)) | 0; ++ mid = (mid + Math.imul(al3, bh7)) | 0; ++ mid = (mid + Math.imul(ah3, bl7)) | 0; ++ hi = (hi + Math.imul(ah3, bh7)) | 0; ++ lo = (lo + Math.imul(al2, bl8)) | 0; ++ mid = (mid + Math.imul(al2, bh8)) | 0; ++ mid = (mid + Math.imul(ah2, bl8)) | 0; ++ hi = (hi + Math.imul(ah2, bh8)) | 0; ++ lo = (lo + Math.imul(al1, bl9)) | 0; ++ mid = (mid + Math.imul(al1, bh9)) | 0; ++ mid = (mid + Math.imul(ah1, bl9)) | 0; ++ hi = (hi + Math.imul(ah1, bh9)) | 0; ++ var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; ++ w10 &= 0x3ffffff; ++ /* k = 11 */ ++ lo = Math.imul(al9, bl2); ++ mid = Math.imul(al9, bh2); ++ mid = (mid + Math.imul(ah9, bl2)) | 0; ++ hi = Math.imul(ah9, bh2); ++ lo = (lo + Math.imul(al8, bl3)) | 0; ++ mid = (mid + Math.imul(al8, bh3)) | 0; ++ mid = (mid + Math.imul(ah8, bl3)) | 0; ++ hi = (hi + Math.imul(ah8, bh3)) | 0; ++ lo = (lo + Math.imul(al7, bl4)) | 0; ++ mid = (mid + Math.imul(al7, bh4)) | 0; ++ mid = (mid + Math.imul(ah7, bl4)) | 0; ++ hi = (hi + Math.imul(ah7, bh4)) | 0; ++ lo = (lo + Math.imul(al6, bl5)) | 0; ++ mid = (mid + Math.imul(al6, bh5)) | 0; ++ mid = (mid + Math.imul(ah6, bl5)) | 0; ++ hi = (hi + Math.imul(ah6, bh5)) | 0; ++ lo = (lo + Math.imul(al5, bl6)) | 0; ++ mid = (mid + Math.imul(al5, bh6)) | 0; ++ mid = (mid + Math.imul(ah5, bl6)) | 0; ++ hi = (hi + Math.imul(ah5, bh6)) | 0; ++ lo = (lo + Math.imul(al4, bl7)) | 0; ++ mid = (mid + Math.imul(al4, bh7)) | 0; ++ mid = (mid + Math.imul(ah4, bl7)) | 0; ++ hi = (hi + Math.imul(ah4, bh7)) | 0; ++ lo = (lo + Math.imul(al3, bl8)) | 0; ++ mid = (mid + Math.imul(al3, bh8)) | 0; ++ mid = (mid + Math.imul(ah3, bl8)) | 0; ++ hi = (hi + Math.imul(ah3, bh8)) | 0; ++ lo = (lo + Math.imul(al2, bl9)) | 0; ++ mid = (mid + Math.imul(al2, bh9)) | 0; ++ mid = (mid + Math.imul(ah2, bl9)) | 0; ++ hi = (hi + Math.imul(ah2, bh9)) | 0; ++ var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; ++ w11 &= 0x3ffffff; ++ /* k = 12 */ ++ lo = Math.imul(al9, bl3); ++ mid = Math.imul(al9, bh3); ++ mid = (mid + Math.imul(ah9, bl3)) | 0; ++ hi = Math.imul(ah9, bh3); ++ lo = (lo + Math.imul(al8, bl4)) | 0; ++ mid = (mid + Math.imul(al8, bh4)) | 0; ++ mid = (mid + Math.imul(ah8, bl4)) | 0; ++ hi = (hi + Math.imul(ah8, bh4)) | 0; ++ lo = (lo + Math.imul(al7, bl5)) | 0; ++ mid = (mid + Math.imul(al7, bh5)) | 0; ++ mid = (mid + Math.imul(ah7, bl5)) | 0; ++ hi = (hi + Math.imul(ah7, bh5)) | 0; ++ lo = (lo + Math.imul(al6, bl6)) | 0; ++ mid = (mid + Math.imul(al6, bh6)) | 0; ++ mid = (mid + Math.imul(ah6, bl6)) | 0; ++ hi = (hi + Math.imul(ah6, bh6)) | 0; ++ lo = (lo + Math.imul(al5, bl7)) | 0; ++ mid = (mid + Math.imul(al5, bh7)) | 0; ++ mid = (mid + Math.imul(ah5, bl7)) | 0; ++ hi = (hi + Math.imul(ah5, bh7)) | 0; ++ lo = (lo + Math.imul(al4, bl8)) | 0; ++ mid = (mid + Math.imul(al4, bh8)) | 0; ++ mid = (mid + Math.imul(ah4, bl8)) | 0; ++ hi = (hi + Math.imul(ah4, bh8)) | 0; ++ lo = (lo + Math.imul(al3, bl9)) | 0; ++ mid = (mid + Math.imul(al3, bh9)) | 0; ++ mid = (mid + Math.imul(ah3, bl9)) | 0; ++ hi = (hi + Math.imul(ah3, bh9)) | 0; ++ var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; ++ w12 &= 0x3ffffff; ++ /* k = 13 */ ++ lo = Math.imul(al9, bl4); ++ mid = Math.imul(al9, bh4); ++ mid = (mid + Math.imul(ah9, bl4)) | 0; ++ hi = Math.imul(ah9, bh4); ++ lo = (lo + Math.imul(al8, bl5)) | 0; ++ mid = (mid + Math.imul(al8, bh5)) | 0; ++ mid = (mid + Math.imul(ah8, bl5)) | 0; ++ hi = (hi + Math.imul(ah8, bh5)) | 0; ++ lo = (lo + Math.imul(al7, bl6)) | 0; ++ mid = (mid + Math.imul(al7, bh6)) | 0; ++ mid = (mid + Math.imul(ah7, bl6)) | 0; ++ hi = (hi + Math.imul(ah7, bh6)) | 0; ++ lo = (lo + Math.imul(al6, bl7)) | 0; ++ mid = (mid + Math.imul(al6, bh7)) | 0; ++ mid = (mid + Math.imul(ah6, bl7)) | 0; ++ hi = (hi + Math.imul(ah6, bh7)) | 0; ++ lo = (lo + Math.imul(al5, bl8)) | 0; ++ mid = (mid + Math.imul(al5, bh8)) | 0; ++ mid = (mid + Math.imul(ah5, bl8)) | 0; ++ hi = (hi + Math.imul(ah5, bh8)) | 0; ++ lo = (lo + Math.imul(al4, bl9)) | 0; ++ mid = (mid + Math.imul(al4, bh9)) | 0; ++ mid = (mid + Math.imul(ah4, bl9)) | 0; ++ hi = (hi + Math.imul(ah4, bh9)) | 0; ++ var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; ++ w13 &= 0x3ffffff; ++ /* k = 14 */ ++ lo = Math.imul(al9, bl5); ++ mid = Math.imul(al9, bh5); ++ mid = (mid + Math.imul(ah9, bl5)) | 0; ++ hi = Math.imul(ah9, bh5); ++ lo = (lo + Math.imul(al8, bl6)) | 0; ++ mid = (mid + Math.imul(al8, bh6)) | 0; ++ mid = (mid + Math.imul(ah8, bl6)) | 0; ++ hi = (hi + Math.imul(ah8, bh6)) | 0; ++ lo = (lo + Math.imul(al7, bl7)) | 0; ++ mid = (mid + Math.imul(al7, bh7)) | 0; ++ mid = (mid + Math.imul(ah7, bl7)) | 0; ++ hi = (hi + Math.imul(ah7, bh7)) | 0; ++ lo = (lo + Math.imul(al6, bl8)) | 0; ++ mid = (mid + Math.imul(al6, bh8)) | 0; ++ mid = (mid + Math.imul(ah6, bl8)) | 0; ++ hi = (hi + Math.imul(ah6, bh8)) | 0; ++ lo = (lo + Math.imul(al5, bl9)) | 0; ++ mid = (mid + Math.imul(al5, bh9)) | 0; ++ mid = (mid + Math.imul(ah5, bl9)) | 0; ++ hi = (hi + Math.imul(ah5, bh9)) | 0; ++ var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; ++ w14 &= 0x3ffffff; ++ /* k = 15 */ ++ lo = Math.imul(al9, bl6); ++ mid = Math.imul(al9, bh6); ++ mid = (mid + Math.imul(ah9, bl6)) | 0; ++ hi = Math.imul(ah9, bh6); ++ lo = (lo + Math.imul(al8, bl7)) | 0; ++ mid = (mid + Math.imul(al8, bh7)) | 0; ++ mid = (mid + Math.imul(ah8, bl7)) | 0; ++ hi = (hi + Math.imul(ah8, bh7)) | 0; ++ lo = (lo + Math.imul(al7, bl8)) | 0; ++ mid = (mid + Math.imul(al7, bh8)) | 0; ++ mid = (mid + Math.imul(ah7, bl8)) | 0; ++ hi = (hi + Math.imul(ah7, bh8)) | 0; ++ lo = (lo + Math.imul(al6, bl9)) | 0; ++ mid = (mid + Math.imul(al6, bh9)) | 0; ++ mid = (mid + Math.imul(ah6, bl9)) | 0; ++ hi = (hi + Math.imul(ah6, bh9)) | 0; ++ var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; ++ w15 &= 0x3ffffff; ++ /* k = 16 */ ++ lo = Math.imul(al9, bl7); ++ mid = Math.imul(al9, bh7); ++ mid = (mid + Math.imul(ah9, bl7)) | 0; ++ hi = Math.imul(ah9, bh7); ++ lo = (lo + Math.imul(al8, bl8)) | 0; ++ mid = (mid + Math.imul(al8, bh8)) | 0; ++ mid = (mid + Math.imul(ah8, bl8)) | 0; ++ hi = (hi + Math.imul(ah8, bh8)) | 0; ++ lo = (lo + Math.imul(al7, bl9)) | 0; ++ mid = (mid + Math.imul(al7, bh9)) | 0; ++ mid = (mid + Math.imul(ah7, bl9)) | 0; ++ hi = (hi + Math.imul(ah7, bh9)) | 0; ++ var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; ++ w16 &= 0x3ffffff; ++ /* k = 17 */ ++ lo = Math.imul(al9, bl8); ++ mid = Math.imul(al9, bh8); ++ mid = (mid + Math.imul(ah9, bl8)) | 0; ++ hi = Math.imul(ah9, bh8); ++ lo = (lo + Math.imul(al8, bl9)) | 0; ++ mid = (mid + Math.imul(al8, bh9)) | 0; ++ mid = (mid + Math.imul(ah8, bl9)) | 0; ++ hi = (hi + Math.imul(ah8, bh9)) | 0; ++ var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; ++ w17 &= 0x3ffffff; ++ /* k = 18 */ ++ lo = Math.imul(al9, bl9); ++ mid = Math.imul(al9, bh9); ++ mid = (mid + Math.imul(ah9, bl9)) | 0; ++ hi = Math.imul(ah9, bh9); ++ var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; ++ c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; ++ w18 &= 0x3ffffff; ++ o[0] = w0; ++ o[1] = w1; ++ o[2] = w2; ++ o[3] = w3; ++ o[4] = w4; ++ o[5] = w5; ++ o[6] = w6; ++ o[7] = w7; ++ o[8] = w8; ++ o[9] = w9; ++ o[10] = w10; ++ o[11] = w11; ++ o[12] = w12; ++ o[13] = w13; ++ o[14] = w14; ++ o[15] = w15; ++ o[16] = w16; ++ o[17] = w17; ++ o[18] = w18; ++ if (c !== 0) { ++ o[19] = c; ++ out.length++; ++ } ++ return out; ++ }; ++ ++ // Polyfill comb ++ if (!Math.imul) { ++ comb10MulTo = smallMulTo; ++ } ++ ++ function bigMulTo (self, num, out) { ++ out.negative = num.negative ^ self.negative; ++ out.length = self.length + num.length; ++ ++ var carry = 0; ++ var hncarry = 0; ++ for (var k = 0; k < out.length - 1; k++) { ++ // Sum all words with the same `i + j = k` and accumulate `ncarry`, ++ // note that ncarry could be >= 0x3ffffff ++ var ncarry = hncarry; ++ hncarry = 0; ++ var rword = carry & 0x3ffffff; ++ var maxJ = Math.min(k, num.length - 1); ++ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { ++ var i = k - j; ++ var a = self.words[i] | 0; ++ var b = num.words[j] | 0; ++ var r = a * b; ++ ++ var lo = r & 0x3ffffff; ++ ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; ++ lo = (lo + rword) | 0; ++ rword = lo & 0x3ffffff; ++ ncarry = (ncarry + (lo >>> 26)) | 0; ++ ++ hncarry += ncarry >>> 26; ++ ncarry &= 0x3ffffff; ++ } ++ out.words[k] = rword; ++ carry = ncarry; ++ ncarry = hncarry; ++ } ++ if (carry !== 0) { ++ out.words[k] = carry; ++ } else { ++ out.length--; ++ } ++ ++ return out.strip(); ++ } ++ ++ function jumboMulTo (self, num, out) { ++ var fftm = new FFTM(); ++ return fftm.mulp(self, num, out); ++ } ++ ++ BN.prototype.mulTo = function mulTo (num, out) { ++ var res; ++ var len = this.length + num.length; ++ if (this.length === 10 && num.length === 10) { ++ res = comb10MulTo(this, num, out); ++ } else if (len < 63) { ++ res = smallMulTo(this, num, out); ++ } else if (len < 1024) { ++ res = bigMulTo(this, num, out); ++ } else { ++ res = jumboMulTo(this, num, out); ++ } ++ ++ return res; ++ }; ++ ++ // Cooley-Tukey algorithm for FFT ++ // slightly revisited to rely on looping instead of recursion ++ ++ function FFTM (x, y) { ++ this.x = x; ++ this.y = y; ++ } ++ ++ FFTM.prototype.makeRBT = function makeRBT (N) { ++ var t = new Array(N); ++ var l = BN.prototype._countBits(N) - 1; ++ for (var i = 0; i < N; i++) { ++ t[i] = this.revBin(i, l, N); ++ } ++ ++ return t; ++ }; ++ ++ // Returns binary-reversed representation of `x` ++ FFTM.prototype.revBin = function revBin (x, l, N) { ++ if (x === 0 || x === N - 1) return x; ++ ++ var rb = 0; ++ for (var i = 0; i < l; i++) { ++ rb |= (x & 1) << (l - i - 1); ++ x >>= 1; ++ } ++ ++ return rb; ++ }; ++ ++ // Performs "tweedling" phase, therefore 'emulating' ++ // behaviour of the recursive algorithm ++ FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { ++ for (var i = 0; i < N; i++) { ++ rtws[i] = rws[rbt[i]]; ++ itws[i] = iws[rbt[i]]; ++ } ++ }; ++ ++ FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { ++ this.permute(rbt, rws, iws, rtws, itws, N); ++ ++ for (var s = 1; s < N; s <<= 1) { ++ var l = s << 1; ++ ++ var rtwdf = Math.cos(2 * Math.PI / l); ++ var itwdf = Math.sin(2 * Math.PI / l); ++ ++ for (var p = 0; p < N; p += l) { ++ var rtwdf_ = rtwdf; ++ var itwdf_ = itwdf; ++ ++ for (var j = 0; j < s; j++) { ++ var re = rtws[p + j]; ++ var ie = itws[p + j]; ++ ++ var ro = rtws[p + j + s]; ++ var io = itws[p + j + s]; ++ ++ var rx = rtwdf_ * ro - itwdf_ * io; ++ ++ io = rtwdf_ * io + itwdf_ * ro; ++ ro = rx; ++ ++ rtws[p + j] = re + ro; ++ itws[p + j] = ie + io; ++ ++ rtws[p + j + s] = re - ro; ++ itws[p + j + s] = ie - io; ++ ++ /* jshint maxdepth : false */ ++ if (j !== l) { ++ rx = rtwdf * rtwdf_ - itwdf * itwdf_; ++ ++ itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; ++ rtwdf_ = rx; ++ } ++ } ++ } ++ } ++ }; ++ ++ FFTM.prototype.guessLen13b = function guessLen13b (n, m) { ++ var N = Math.max(m, n) | 1; ++ var odd = N & 1; ++ var i = 0; ++ for (N = N / 2 | 0; N; N = N >>> 1) { ++ i++; ++ } ++ ++ return 1 << i + 1 + odd; ++ }; ++ ++ FFTM.prototype.conjugate = function conjugate (rws, iws, N) { ++ if (N <= 1) return; ++ ++ for (var i = 0; i < N / 2; i++) { ++ var t = rws[i]; ++ ++ rws[i] = rws[N - i - 1]; ++ rws[N - i - 1] = t; ++ ++ t = iws[i]; ++ ++ iws[i] = -iws[N - i - 1]; ++ iws[N - i - 1] = -t; ++ } ++ }; ++ ++ FFTM.prototype.normalize13b = function normalize13b (ws, N) { ++ var carry = 0; ++ for (var i = 0; i < N / 2; i++) { ++ var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + ++ Math.round(ws[2 * i] / N) + ++ carry; ++ ++ ws[i] = w & 0x3ffffff; ++ ++ if (w < 0x4000000) { ++ carry = 0; ++ } else { ++ carry = w / 0x4000000 | 0; ++ } ++ } ++ ++ return ws; ++ }; ++ ++ FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { ++ var carry = 0; ++ for (var i = 0; i < len; i++) { ++ carry = carry + (ws[i] | 0); ++ ++ rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; ++ rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; ++ } ++ ++ // Pad with zeroes ++ for (i = 2 * len; i < N; ++i) { ++ rws[i] = 0; ++ } ++ ++ assert(carry === 0); ++ assert((carry & ~0x1fff) === 0); ++ }; ++ ++ FFTM.prototype.stub = function stub (N) { ++ var ph = new Array(N); ++ for (var i = 0; i < N; i++) { ++ ph[i] = 0; ++ } ++ ++ return ph; ++ }; ++ ++ FFTM.prototype.mulp = function mulp (x, y, out) { ++ var N = 2 * this.guessLen13b(x.length, y.length); ++ ++ var rbt = this.makeRBT(N); ++ ++ var _ = this.stub(N); ++ ++ var rws = new Array(N); ++ var rwst = new Array(N); ++ var iwst = new Array(N); ++ ++ var nrws = new Array(N); ++ var nrwst = new Array(N); ++ var niwst = new Array(N); ++ ++ var rmws = out.words; ++ rmws.length = N; ++ ++ this.convert13b(x.words, x.length, rws, N); ++ this.convert13b(y.words, y.length, nrws, N); ++ ++ this.transform(rws, _, rwst, iwst, N, rbt); ++ this.transform(nrws, _, nrwst, niwst, N, rbt); ++ ++ for (var i = 0; i < N; i++) { ++ var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; ++ iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; ++ rwst[i] = rx; ++ } ++ ++ this.conjugate(rwst, iwst, N); ++ this.transform(rwst, iwst, rmws, _, N, rbt); ++ this.conjugate(rmws, _, N); ++ this.normalize13b(rmws, N); ++ ++ out.negative = x.negative ^ y.negative; ++ out.length = x.length + y.length; ++ return out.strip(); ++ }; ++ ++ // Multiply `this` by `num` ++ BN.prototype.mul = function mul (num) { ++ var out = new BN(null); ++ out.words = new Array(this.length + num.length); ++ return this.mulTo(num, out); ++ }; ++ ++ // Multiply employing FFT ++ BN.prototype.mulf = function mulf (num) { ++ var out = new BN(null); ++ out.words = new Array(this.length + num.length); ++ return jumboMulTo(this, num, out); ++ }; ++ ++ // In-place Multiplication ++ BN.prototype.imul = function imul (num) { ++ return this.clone().mulTo(num, this); ++ }; ++ ++ BN.prototype.imuln = function imuln (num) { ++ assert(typeof num === 'number'); ++ assert(num < 0x4000000); ++ ++ // Carry ++ var carry = 0; ++ for (var i = 0; i < this.length; i++) { ++ var w = (this.words[i] | 0) * num; ++ var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); ++ carry >>= 26; ++ carry += (w / 0x4000000) | 0; ++ // NOTE: lo is 27bit maximum ++ carry += lo >>> 26; ++ this.words[i] = lo & 0x3ffffff; ++ } ++ ++ if (carry !== 0) { ++ this.words[i] = carry; ++ this.length++; ++ } ++ ++ return this; ++ }; ++ ++ BN.prototype.muln = function muln (num) { ++ return this.clone().imuln(num); ++ }; ++ ++ // `this` * `this` ++ BN.prototype.sqr = function sqr () { ++ return this.mul(this); ++ }; ++ ++ // `this` * `this` in-place ++ BN.prototype.isqr = function isqr () { ++ return this.imul(this.clone()); ++ }; ++ ++ // Math.pow(`this`, `num`) ++ BN.prototype.pow = function pow (num) { ++ var w = toBitArray(num); ++ if (w.length === 0) return new BN(1); ++ ++ // Skip leading zeroes ++ var res = this; ++ for (var i = 0; i < w.length; i++, res = res.sqr()) { ++ if (w[i] !== 0) break; ++ } ++ ++ if (++i < w.length) { ++ for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { ++ if (w[i] === 0) continue; ++ ++ res = res.mul(q); ++ } ++ } ++ ++ return res; ++ }; ++ ++ // Shift-left in-place ++ BN.prototype.iushln = function iushln (bits) { ++ assert(typeof bits === 'number' && bits >= 0); ++ var r = bits % 26; ++ var s = (bits - r) / 26; ++ var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); ++ var i; ++ ++ if (r !== 0) { ++ var carry = 0; ++ ++ for (i = 0; i < this.length; i++) { ++ var newCarry = this.words[i] & carryMask; ++ var c = ((this.words[i] | 0) - newCarry) << r; ++ this.words[i] = c | carry; ++ carry = newCarry >>> (26 - r); ++ } ++ ++ if (carry) { ++ this.words[i] = carry; ++ this.length++; ++ } ++ } ++ ++ if (s !== 0) { ++ for (i = this.length - 1; i >= 0; i--) { ++ this.words[i + s] = this.words[i]; ++ } ++ ++ for (i = 0; i < s; i++) { ++ this.words[i] = 0; ++ } ++ ++ this.length += s; ++ } ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.ishln = function ishln (bits) { ++ // TODO(indutny): implement me ++ assert(this.negative === 0); ++ return this.iushln(bits); ++ }; ++ ++ // Shift-right in-place ++ // NOTE: `hint` is a lowest bit before trailing zeroes ++ // NOTE: if `extended` is present - it will be filled with destroyed bits ++ BN.prototype.iushrn = function iushrn (bits, hint, extended) { ++ assert(typeof bits === 'number' && bits >= 0); ++ var h; ++ if (hint) { ++ h = (hint - (hint % 26)) / 26; ++ } else { ++ h = 0; ++ } ++ ++ var r = bits % 26; ++ var s = Math.min((bits - r) / 26, this.length); ++ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); ++ var maskedWords = extended; ++ ++ h -= s; ++ h = Math.max(0, h); ++ ++ // Extended mode, copy masked part ++ if (maskedWords) { ++ for (var i = 0; i < s; i++) { ++ maskedWords.words[i] = this.words[i]; ++ } ++ maskedWords.length = s; ++ } ++ ++ if (s === 0) { ++ // No-op, we should not move anything at all ++ } else if (this.length > s) { ++ this.length -= s; ++ for (i = 0; i < this.length; i++) { ++ this.words[i] = this.words[i + s]; ++ } ++ } else { ++ this.words[0] = 0; ++ this.length = 1; ++ } ++ ++ var carry = 0; ++ for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { ++ var word = this.words[i] | 0; ++ this.words[i] = (carry << (26 - r)) | (word >>> r); ++ carry = word & mask; ++ } ++ ++ // Push carried bits as a mask ++ if (maskedWords && carry !== 0) { ++ maskedWords.words[maskedWords.length++] = carry; ++ } ++ ++ if (this.length === 0) { ++ this.words[0] = 0; ++ this.length = 1; ++ } ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.ishrn = function ishrn (bits, hint, extended) { ++ // TODO(indutny): implement me ++ assert(this.negative === 0); ++ return this.iushrn(bits, hint, extended); ++ }; ++ ++ // Shift-left ++ BN.prototype.shln = function shln (bits) { ++ return this.clone().ishln(bits); ++ }; ++ ++ BN.prototype.ushln = function ushln (bits) { ++ return this.clone().iushln(bits); ++ }; ++ ++ // Shift-right ++ BN.prototype.shrn = function shrn (bits) { ++ return this.clone().ishrn(bits); ++ }; ++ ++ BN.prototype.ushrn = function ushrn (bits) { ++ return this.clone().iushrn(bits); ++ }; ++ ++ // Test if n bit is set ++ BN.prototype.testn = function testn (bit) { ++ assert(typeof bit === 'number' && bit >= 0); ++ var r = bit % 26; ++ var s = (bit - r) / 26; ++ var q = 1 << r; ++ ++ // Fast case: bit is much higher than all existing words ++ if (this.length <= s) return false; ++ ++ // Check bit and return ++ var w = this.words[s]; ++ ++ return !!(w & q); ++ }; ++ ++ // Return only lowers bits of number (in-place) ++ BN.prototype.imaskn = function imaskn (bits) { ++ assert(typeof bits === 'number' && bits >= 0); ++ var r = bits % 26; ++ var s = (bits - r) / 26; ++ ++ assert(this.negative === 0, 'imaskn works only with positive numbers'); ++ ++ if (this.length <= s) { ++ return this; ++ } ++ ++ if (r !== 0) { ++ s++; ++ } ++ this.length = Math.min(s, this.length); ++ ++ if (r !== 0) { ++ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); ++ this.words[this.length - 1] &= mask; ++ } ++ ++ return this.strip(); ++ }; ++ ++ // Return only lowers bits of number ++ BN.prototype.maskn = function maskn (bits) { ++ return this.clone().imaskn(bits); ++ }; ++ ++ // Add plain number `num` to `this` ++ BN.prototype.iaddn = function iaddn (num) { ++ assert(typeof num === 'number'); ++ assert(num < 0x4000000); ++ if (num < 0) return this.isubn(-num); ++ ++ // Possible sign change ++ if (this.negative !== 0) { ++ if (this.length === 1 && (this.words[0] | 0) < num) { ++ this.words[0] = num - (this.words[0] | 0); ++ this.negative = 0; ++ return this; ++ } ++ ++ this.negative = 0; ++ this.isubn(num); ++ this.negative = 1; ++ return this; ++ } ++ ++ // Add without checks ++ return this._iaddn(num); ++ }; ++ ++ BN.prototype._iaddn = function _iaddn (num) { ++ this.words[0] += num; ++ ++ // Carry ++ for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { ++ this.words[i] -= 0x4000000; ++ if (i === this.length - 1) { ++ this.words[i + 1] = 1; ++ } else { ++ this.words[i + 1]++; ++ } ++ } ++ this.length = Math.max(this.length, i + 1); ++ ++ return this; ++ }; ++ ++ // Subtract plain number `num` from `this` ++ BN.prototype.isubn = function isubn (num) { ++ assert(typeof num === 'number'); ++ assert(num < 0x4000000); ++ if (num < 0) return this.iaddn(-num); ++ ++ if (this.negative !== 0) { ++ this.negative = 0; ++ this.iaddn(num); ++ this.negative = 1; ++ return this; ++ } ++ ++ this.words[0] -= num; ++ ++ if (this.length === 1 && this.words[0] < 0) { ++ this.words[0] = -this.words[0]; ++ this.negative = 1; ++ } else { ++ // Carry ++ for (var i = 0; i < this.length && this.words[i] < 0; i++) { ++ this.words[i] += 0x4000000; ++ this.words[i + 1] -= 1; ++ } ++ } ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.addn = function addn (num) { ++ return this.clone().iaddn(num); ++ }; ++ ++ BN.prototype.subn = function subn (num) { ++ return this.clone().isubn(num); ++ }; ++ ++ BN.prototype.iabs = function iabs () { ++ this.negative = 0; ++ ++ return this; ++ }; ++ ++ BN.prototype.abs = function abs () { ++ return this.clone().iabs(); ++ }; ++ ++ BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { ++ var len = num.length + shift; ++ var i; ++ ++ this._expand(len); ++ ++ var w; ++ var carry = 0; ++ for (i = 0; i < num.length; i++) { ++ w = (this.words[i + shift] | 0) + carry; ++ var right = (num.words[i] | 0) * mul; ++ w -= right & 0x3ffffff; ++ carry = (w >> 26) - ((right / 0x4000000) | 0); ++ this.words[i + shift] = w & 0x3ffffff; ++ } ++ for (; i < this.length - shift; i++) { ++ w = (this.words[i + shift] | 0) + carry; ++ carry = w >> 26; ++ this.words[i + shift] = w & 0x3ffffff; ++ } ++ ++ if (carry === 0) return this.strip(); ++ ++ // Subtraction overflow ++ assert(carry === -1); ++ carry = 0; ++ for (i = 0; i < this.length; i++) { ++ w = -(this.words[i] | 0) + carry; ++ carry = w >> 26; ++ this.words[i] = w & 0x3ffffff; ++ } ++ this.negative = 1; ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype._wordDiv = function _wordDiv (num, mode) { ++ var shift = this.length - num.length; ++ ++ var a = this.clone(); ++ var b = num; ++ ++ // Normalize ++ var bhi = b.words[b.length - 1] | 0; ++ var bhiBits = this._countBits(bhi); ++ shift = 26 - bhiBits; ++ if (shift !== 0) { ++ b = b.ushln(shift); ++ a.iushln(shift); ++ bhi = b.words[b.length - 1] | 0; ++ } ++ ++ // Initialize quotient ++ var m = a.length - b.length; ++ var q; ++ ++ if (mode !== 'mod') { ++ q = new BN(null); ++ q.length = m + 1; ++ q.words = new Array(q.length); ++ for (var i = 0; i < q.length; i++) { ++ q.words[i] = 0; ++ } ++ } ++ ++ var diff = a.clone()._ishlnsubmul(b, 1, m); ++ if (diff.negative === 0) { ++ a = diff; ++ if (q) { ++ q.words[m] = 1; ++ } ++ } ++ ++ for (var j = m - 1; j >= 0; j--) { ++ var qj = (a.words[b.length + j] | 0) * 0x4000000 + ++ (a.words[b.length + j - 1] | 0); ++ ++ // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max ++ // (0x7ffffff) ++ qj = Math.min((qj / bhi) | 0, 0x3ffffff); ++ ++ a._ishlnsubmul(b, qj, j); ++ while (a.negative !== 0) { ++ qj--; ++ a.negative = 0; ++ a._ishlnsubmul(b, 1, j); ++ if (!a.isZero()) { ++ a.negative ^= 1; ++ } ++ } ++ if (q) { ++ q.words[j] = qj; ++ } ++ } ++ if (q) { ++ q.strip(); ++ } ++ a.strip(); ++ ++ // Denormalize ++ if (mode !== 'div' && shift !== 0) { ++ a.iushrn(shift); ++ } ++ ++ return { ++ div: q || null, ++ mod: a ++ }; ++ }; ++ ++ // NOTE: 1) `mode` can be set to `mod` to request mod only, ++ // to `div` to request div only, or be absent to ++ // request both div & mod ++ // 2) `positive` is true if unsigned mod is requested ++ BN.prototype.divmod = function divmod (num, mode, positive) { ++ assert(!num.isZero()); ++ ++ if (this.isZero()) { ++ return { ++ div: new BN(0), ++ mod: new BN(0) ++ }; ++ } ++ ++ var div, mod, res; ++ if (this.negative !== 0 && num.negative === 0) { ++ res = this.neg().divmod(num, mode); ++ ++ if (mode !== 'mod') { ++ div = res.div.neg(); ++ } ++ ++ if (mode !== 'div') { ++ mod = res.mod.neg(); ++ if (positive && mod.negative !== 0) { ++ mod.iadd(num); ++ } ++ } ++ ++ return { ++ div: div, ++ mod: mod ++ }; ++ } ++ ++ if (this.negative === 0 && num.negative !== 0) { ++ res = this.divmod(num.neg(), mode); ++ ++ if (mode !== 'mod') { ++ div = res.div.neg(); ++ } ++ ++ return { ++ div: div, ++ mod: res.mod ++ }; ++ } ++ ++ if ((this.negative & num.negative) !== 0) { ++ res = this.neg().divmod(num.neg(), mode); ++ ++ if (mode !== 'div') { ++ mod = res.mod.neg(); ++ if (positive && mod.negative !== 0) { ++ mod.isub(num); ++ } ++ } ++ ++ return { ++ div: res.div, ++ mod: mod ++ }; ++ } ++ ++ // Both numbers are positive at this point ++ ++ // Strip both numbers to approximate shift value ++ if (num.length > this.length || this.cmp(num) < 0) { ++ return { ++ div: new BN(0), ++ mod: this ++ }; ++ } ++ ++ // Very short reduction ++ if (num.length === 1) { ++ if (mode === 'div') { ++ return { ++ div: this.divn(num.words[0]), ++ mod: null ++ }; ++ } ++ ++ if (mode === 'mod') { ++ return { ++ div: null, ++ mod: new BN(this.modn(num.words[0])) ++ }; ++ } ++ ++ return { ++ div: this.divn(num.words[0]), ++ mod: new BN(this.modn(num.words[0])) ++ }; ++ } ++ ++ return this._wordDiv(num, mode); ++ }; ++ ++ // Find `this` / `num` ++ BN.prototype.div = function div (num) { ++ return this.divmod(num, 'div', false).div; ++ }; ++ ++ // Find `this` % `num` ++ BN.prototype.mod = function mod (num) { ++ return this.divmod(num, 'mod', false).mod; ++ }; ++ ++ BN.prototype.umod = function umod (num) { ++ return this.divmod(num, 'mod', true).mod; ++ }; ++ ++ // Find Round(`this` / `num`) ++ BN.prototype.divRound = function divRound (num) { ++ var dm = this.divmod(num); ++ ++ // Fast case - exact division ++ if (dm.mod.isZero()) return dm.div; ++ ++ var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; ++ ++ var half = num.ushrn(1); ++ var r2 = num.andln(1); ++ var cmp = mod.cmp(half); ++ ++ // Round down ++ if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; ++ ++ // Round up ++ return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); ++ }; ++ ++ BN.prototype.modn = function modn (num) { ++ assert(num <= 0x3ffffff); ++ var p = (1 << 26) % num; ++ ++ var acc = 0; ++ for (var i = this.length - 1; i >= 0; i--) { ++ acc = (p * acc + (this.words[i] | 0)) % num; ++ } ++ ++ return acc; ++ }; ++ ++ // In-place division by number ++ BN.prototype.idivn = function idivn (num) { ++ assert(num <= 0x3ffffff); ++ ++ var carry = 0; ++ for (var i = this.length - 1; i >= 0; i--) { ++ var w = (this.words[i] | 0) + carry * 0x4000000; ++ this.words[i] = (w / num) | 0; ++ carry = w % num; ++ } ++ ++ return this.strip(); ++ }; ++ ++ BN.prototype.divn = function divn (num) { ++ return this.clone().idivn(num); ++ }; ++ ++ BN.prototype.egcd = function egcd (p) { ++ assert(p.negative === 0); ++ assert(!p.isZero()); ++ ++ var x = this; ++ var y = p.clone(); ++ ++ if (x.negative !== 0) { ++ x = x.umod(p); ++ } else { ++ x = x.clone(); ++ } ++ ++ // A * x + B * y = x ++ var A = new BN(1); ++ var B = new BN(0); ++ ++ // C * x + D * y = y ++ var C = new BN(0); ++ var D = new BN(1); ++ ++ var g = 0; ++ ++ while (x.isEven() && y.isEven()) { ++ x.iushrn(1); ++ y.iushrn(1); ++ ++g; ++ } ++ ++ var yp = y.clone(); ++ var xp = x.clone(); ++ ++ while (!x.isZero()) { ++ for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); ++ if (i > 0) { ++ x.iushrn(i); ++ while (i-- > 0) { ++ if (A.isOdd() || B.isOdd()) { ++ A.iadd(yp); ++ B.isub(xp); ++ } ++ ++ A.iushrn(1); ++ B.iushrn(1); ++ } ++ } ++ ++ for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); ++ if (j > 0) { ++ y.iushrn(j); ++ while (j-- > 0) { ++ if (C.isOdd() || D.isOdd()) { ++ C.iadd(yp); ++ D.isub(xp); ++ } ++ ++ C.iushrn(1); ++ D.iushrn(1); ++ } ++ } ++ ++ if (x.cmp(y) >= 0) { ++ x.isub(y); ++ A.isub(C); ++ B.isub(D); ++ } else { ++ y.isub(x); ++ C.isub(A); ++ D.isub(B); ++ } ++ } ++ ++ return { ++ a: C, ++ b: D, ++ gcd: y.iushln(g) ++ }; ++ }; ++ ++ // This is reduced incarnation of the binary EEA ++ // above, designated to invert members of the ++ // _prime_ fields F(p) at a maximal speed ++ BN.prototype._invmp = function _invmp (p) { ++ assert(p.negative === 0); ++ assert(!p.isZero()); ++ ++ var a = this; ++ var b = p.clone(); ++ ++ if (a.negative !== 0) { ++ a = a.umod(p); ++ } else { ++ a = a.clone(); ++ } ++ ++ var x1 = new BN(1); ++ var x2 = new BN(0); ++ ++ var delta = b.clone(); ++ ++ while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { ++ for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); ++ if (i > 0) { ++ a.iushrn(i); ++ while (i-- > 0) { ++ if (x1.isOdd()) { ++ x1.iadd(delta); ++ } ++ ++ x1.iushrn(1); ++ } ++ } ++ ++ for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); ++ if (j > 0) { ++ b.iushrn(j); ++ while (j-- > 0) { ++ if (x2.isOdd()) { ++ x2.iadd(delta); ++ } ++ ++ x2.iushrn(1); ++ } ++ } ++ ++ if (a.cmp(b) >= 0) { ++ a.isub(b); ++ x1.isub(x2); ++ } else { ++ b.isub(a); ++ x2.isub(x1); ++ } ++ } ++ ++ var res; ++ if (a.cmpn(1) === 0) { ++ res = x1; ++ } else { ++ res = x2; ++ } ++ ++ if (res.cmpn(0) < 0) { ++ res.iadd(p); ++ } ++ ++ return res; ++ }; ++ ++ BN.prototype.gcd = function gcd (num) { ++ if (this.isZero()) return num.abs(); ++ if (num.isZero()) return this.abs(); ++ ++ var a = this.clone(); ++ var b = num.clone(); ++ a.negative = 0; ++ b.negative = 0; ++ ++ // Remove common factor of two ++ for (var shift = 0; a.isEven() && b.isEven(); shift++) { ++ a.iushrn(1); ++ b.iushrn(1); ++ } ++ ++ do { ++ while (a.isEven()) { ++ a.iushrn(1); ++ } ++ while (b.isEven()) { ++ b.iushrn(1); ++ } ++ ++ var r = a.cmp(b); ++ if (r < 0) { ++ // Swap `a` and `b` to make `a` always bigger than `b` ++ var t = a; ++ a = b; ++ b = t; ++ } else if (r === 0 || b.cmpn(1) === 0) { ++ break; ++ } ++ ++ a.isub(b); ++ } while (true); ++ ++ return b.iushln(shift); ++ }; ++ ++ // Invert number in the field F(num) ++ BN.prototype.invm = function invm (num) { ++ return this.egcd(num).a.umod(num); ++ }; ++ ++ BN.prototype.isEven = function isEven () { ++ return (this.words[0] & 1) === 0; ++ }; ++ ++ BN.prototype.isOdd = function isOdd () { ++ return (this.words[0] & 1) === 1; ++ }; ++ ++ // And first word and num ++ BN.prototype.andln = function andln (num) { ++ return this.words[0] & num; ++ }; ++ ++ // Increment at the bit position in-line ++ BN.prototype.bincn = function bincn (bit) { ++ assert(typeof bit === 'number'); ++ var r = bit % 26; ++ var s = (bit - r) / 26; ++ var q = 1 << r; ++ ++ // Fast case: bit is much higher than all existing words ++ if (this.length <= s) { ++ this._expand(s + 1); ++ this.words[s] |= q; ++ return this; ++ } ++ ++ // Add bit and propagate, if needed ++ var carry = q; ++ for (var i = s; carry !== 0 && i < this.length; i++) { ++ var w = this.words[i] | 0; ++ w += carry; ++ carry = w >>> 26; ++ w &= 0x3ffffff; ++ this.words[i] = w; ++ } ++ if (carry !== 0) { ++ this.words[i] = carry; ++ this.length++; ++ } ++ return this; ++ }; ++ ++ BN.prototype.isZero = function isZero () { ++ return this.length === 1 && this.words[0] === 0; ++ }; ++ ++ BN.prototype.cmpn = function cmpn (num) { ++ var negative = num < 0; ++ ++ if (this.negative !== 0 && !negative) return -1; ++ if (this.negative === 0 && negative) return 1; ++ ++ this.strip(); ++ ++ var res; ++ if (this.length > 1) { ++ res = 1; ++ } else { ++ if (negative) { ++ num = -num; ++ } ++ ++ assert(num <= 0x3ffffff, 'Number is too big'); ++ ++ var w = this.words[0] | 0; ++ res = w === num ? 0 : w < num ? -1 : 1; ++ } ++ if (this.negative !== 0) return -res | 0; ++ return res; ++ }; ++ ++ // Compare two numbers and return: ++ // 1 - if `this` > `num` ++ // 0 - if `this` == `num` ++ // -1 - if `this` < `num` ++ BN.prototype.cmp = function cmp (num) { ++ if (this.negative !== 0 && num.negative === 0) return -1; ++ if (this.negative === 0 && num.negative !== 0) return 1; ++ ++ var res = this.ucmp(num); ++ if (this.negative !== 0) return -res | 0; ++ return res; ++ }; ++ ++ // Unsigned comparison ++ BN.prototype.ucmp = function ucmp (num) { ++ // At this point both numbers have the same sign ++ if (this.length > num.length) return 1; ++ if (this.length < num.length) return -1; ++ ++ var res = 0; ++ for (var i = this.length - 1; i >= 0; i--) { ++ var a = this.words[i] | 0; ++ var b = num.words[i] | 0; ++ ++ if (a === b) continue; ++ if (a < b) { ++ res = -1; ++ } else if (a > b) { ++ res = 1; ++ } ++ break; ++ } ++ return res; ++ }; ++ ++ BN.prototype.gtn = function gtn (num) { ++ return this.cmpn(num) === 1; ++ }; ++ ++ BN.prototype.gt = function gt (num) { ++ return this.cmp(num) === 1; ++ }; ++ ++ BN.prototype.gten = function gten (num) { ++ return this.cmpn(num) >= 0; ++ }; ++ ++ BN.prototype.gte = function gte (num) { ++ return this.cmp(num) >= 0; ++ }; ++ ++ BN.prototype.ltn = function ltn (num) { ++ return this.cmpn(num) === -1; ++ }; ++ ++ BN.prototype.lt = function lt (num) { ++ return this.cmp(num) === -1; ++ }; ++ ++ BN.prototype.lten = function lten (num) { ++ return this.cmpn(num) <= 0; ++ }; ++ ++ BN.prototype.lte = function lte (num) { ++ return this.cmp(num) <= 0; ++ }; ++ ++ BN.prototype.eqn = function eqn (num) { ++ return this.cmpn(num) === 0; ++ }; ++ ++ BN.prototype.eq = function eq (num) { ++ return this.cmp(num) === 0; ++ }; ++ ++ // ++ // A reduce context, could be using montgomery or something better, depending ++ // on the `m` itself. ++ // ++ BN.red = function red (num) { ++ return new Red(num); ++ }; ++ ++ BN.prototype.toRed = function toRed (ctx) { ++ assert(!this.red, 'Already a number in reduction context'); ++ assert(this.negative === 0, 'red works only with positives'); ++ return ctx.convertTo(this)._forceRed(ctx); ++ }; ++ ++ BN.prototype.fromRed = function fromRed () { ++ assert(this.red, 'fromRed works only with numbers in reduction context'); ++ return this.red.convertFrom(this); ++ }; ++ ++ BN.prototype._forceRed = function _forceRed (ctx) { ++ this.red = ctx; ++ return this; ++ }; ++ ++ BN.prototype.forceRed = function forceRed (ctx) { ++ assert(!this.red, 'Already a number in reduction context'); ++ return this._forceRed(ctx); ++ }; ++ ++ BN.prototype.redAdd = function redAdd (num) { ++ assert(this.red, 'redAdd works only with red numbers'); ++ return this.red.add(this, num); ++ }; ++ ++ BN.prototype.redIAdd = function redIAdd (num) { ++ assert(this.red, 'redIAdd works only with red numbers'); ++ return this.red.iadd(this, num); ++ }; ++ ++ BN.prototype.redSub = function redSub (num) { ++ assert(this.red, 'redSub works only with red numbers'); ++ return this.red.sub(this, num); ++ }; ++ ++ BN.prototype.redISub = function redISub (num) { ++ assert(this.red, 'redISub works only with red numbers'); ++ return this.red.isub(this, num); ++ }; ++ ++ BN.prototype.redShl = function redShl (num) { ++ assert(this.red, 'redShl works only with red numbers'); ++ return this.red.shl(this, num); ++ }; ++ ++ BN.prototype.redMul = function redMul (num) { ++ assert(this.red, 'redMul works only with red numbers'); ++ this.red._verify2(this, num); ++ return this.red.mul(this, num); ++ }; ++ ++ BN.prototype.redIMul = function redIMul (num) { ++ assert(this.red, 'redMul works only with red numbers'); ++ this.red._verify2(this, num); ++ return this.red.imul(this, num); ++ }; ++ ++ BN.prototype.redSqr = function redSqr () { ++ assert(this.red, 'redSqr works only with red numbers'); ++ this.red._verify1(this); ++ return this.red.sqr(this); ++ }; ++ ++ BN.prototype.redISqr = function redISqr () { ++ assert(this.red, 'redISqr works only with red numbers'); ++ this.red._verify1(this); ++ return this.red.isqr(this); ++ }; ++ ++ // Square root over p ++ BN.prototype.redSqrt = function redSqrt () { ++ assert(this.red, 'redSqrt works only with red numbers'); ++ this.red._verify1(this); ++ return this.red.sqrt(this); ++ }; ++ ++ BN.prototype.redInvm = function redInvm () { ++ assert(this.red, 'redInvm works only with red numbers'); ++ this.red._verify1(this); ++ return this.red.invm(this); ++ }; ++ ++ // Return negative clone of `this` % `red modulo` ++ BN.prototype.redNeg = function redNeg () { ++ assert(this.red, 'redNeg works only with red numbers'); ++ this.red._verify1(this); ++ return this.red.neg(this); ++ }; ++ ++ BN.prototype.redPow = function redPow (num) { ++ assert(this.red && !num.red, 'redPow(normalNum)'); ++ this.red._verify1(this); ++ return this.red.pow(this, num); ++ }; ++ ++ // Prime numbers with efficient reduction ++ var primes = { ++ k256: null, ++ p224: null, ++ p192: null, ++ p25519: null ++ }; ++ ++ // Pseudo-Mersenne prime ++ function MPrime (name, p) { ++ // P = 2 ^ N - K ++ this.name = name; ++ this.p = new BN(p, 16); ++ this.n = this.p.bitLength(); ++ this.k = new BN(1).iushln(this.n).isub(this.p); ++ ++ this.tmp = this._tmp(); ++ } ++ ++ MPrime.prototype._tmp = function _tmp () { ++ var tmp = new BN(null); ++ tmp.words = new Array(Math.ceil(this.n / 13)); ++ return tmp; ++ }; ++ ++ MPrime.prototype.ireduce = function ireduce (num) { ++ // Assumes that `num` is less than `P^2` ++ // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) ++ var r = num; ++ var rlen; ++ ++ do { ++ this.split(r, this.tmp); ++ r = this.imulK(r); ++ r = r.iadd(this.tmp); ++ rlen = r.bitLength(); ++ } while (rlen > this.n); ++ ++ var cmp = rlen < this.n ? -1 : r.ucmp(this.p); ++ if (cmp === 0) { ++ r.words[0] = 0; ++ r.length = 1; ++ } else if (cmp > 0) { ++ r.isub(this.p); ++ } else { ++ if (r.strip !== undefined) { ++ // r is BN v4 instance ++ r.strip(); ++ } else { ++ // r is BN v5 instance ++ r._strip(); ++ } ++ } ++ ++ return r; ++ }; ++ ++ MPrime.prototype.split = function split (input, out) { ++ input.iushrn(this.n, 0, out); ++ }; ++ ++ MPrime.prototype.imulK = function imulK (num) { ++ return num.imul(this.k); ++ }; ++ ++ function K256 () { ++ MPrime.call( ++ this, ++ 'k256', ++ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); ++ } ++ inherits(K256, MPrime); ++ ++ K256.prototype.split = function split (input, output) { ++ // 256 = 9 * 26 + 22 ++ var mask = 0x3fffff; ++ ++ var outLen = Math.min(input.length, 9); ++ for (var i = 0; i < outLen; i++) { ++ output.words[i] = input.words[i]; ++ } ++ output.length = outLen; ++ ++ if (input.length <= 9) { ++ input.words[0] = 0; ++ input.length = 1; ++ return; ++ } ++ ++ // Shift by 9 limbs ++ var prev = input.words[9]; ++ output.words[output.length++] = prev & mask; ++ ++ for (i = 10; i < input.length; i++) { ++ var next = input.words[i] | 0; ++ input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); ++ prev = next; ++ } ++ prev >>>= 22; ++ input.words[i - 10] = prev; ++ if (prev === 0 && input.length > 10) { ++ input.length -= 10; ++ } else { ++ input.length -= 9; ++ } ++ }; ++ ++ K256.prototype.imulK = function imulK (num) { ++ // K = 0x1000003d1 = [ 0x40, 0x3d1 ] ++ num.words[num.length] = 0; ++ num.words[num.length + 1] = 0; ++ num.length += 2; ++ ++ // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 ++ var lo = 0; ++ for (var i = 0; i < num.length; i++) { ++ var w = num.words[i] | 0; ++ lo += w * 0x3d1; ++ num.words[i] = lo & 0x3ffffff; ++ lo = w * 0x40 + ((lo / 0x4000000) | 0); ++ } ++ ++ // Fast length reduction ++ if (num.words[num.length - 1] === 0) { ++ num.length--; ++ if (num.words[num.length - 1] === 0) { ++ num.length--; ++ } ++ } ++ return num; ++ }; ++ ++ function P224 () { ++ MPrime.call( ++ this, ++ 'p224', ++ 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); ++ } ++ inherits(P224, MPrime); ++ ++ function P192 () { ++ MPrime.call( ++ this, ++ 'p192', ++ 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); ++ } ++ inherits(P192, MPrime); ++ ++ function P25519 () { ++ // 2 ^ 255 - 19 ++ MPrime.call( ++ this, ++ '25519', ++ '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); ++ } ++ inherits(P25519, MPrime); ++ ++ P25519.prototype.imulK = function imulK (num) { ++ // K = 0x13 ++ var carry = 0; ++ for (var i = 0; i < num.length; i++) { ++ var hi = (num.words[i] | 0) * 0x13 + carry; ++ var lo = hi & 0x3ffffff; ++ hi >>>= 26; ++ ++ num.words[i] = lo; ++ carry = hi; ++ } ++ if (carry !== 0) { ++ num.words[num.length++] = carry; ++ } ++ return num; ++ }; ++ ++ // Exported mostly for testing purposes, use plain name instead ++ BN._prime = function prime (name) { ++ // Cached version of prime ++ if (primes[name]) return primes[name]; ++ ++ var prime; ++ if (name === 'k256') { ++ prime = new K256(); ++ } else if (name === 'p224') { ++ prime = new P224(); ++ } else if (name === 'p192') { ++ prime = new P192(); ++ } else if (name === 'p25519') { ++ prime = new P25519(); ++ } else { ++ throw new Error('Unknown prime ' + name); ++ } ++ primes[name] = prime; ++ ++ return prime; ++ }; ++ ++ // ++ // Base reduction engine ++ // ++ function Red (m) { ++ if (typeof m === 'string') { ++ var prime = BN._prime(m); ++ this.m = prime.p; ++ this.prime = prime; ++ } else { ++ assert(m.gtn(1), 'modulus must be greater than 1'); ++ this.m = m; ++ this.prime = null; ++ } ++ } ++ ++ Red.prototype._verify1 = function _verify1 (a) { ++ assert(a.negative === 0, 'red works only with positives'); ++ assert(a.red, 'red works only with red numbers'); ++ }; ++ ++ Red.prototype._verify2 = function _verify2 (a, b) { ++ assert((a.negative | b.negative) === 0, 'red works only with positives'); ++ assert(a.red && a.red === b.red, ++ 'red works only with red numbers'); ++ }; ++ ++ Red.prototype.imod = function imod (a) { ++ if (this.prime) return this.prime.ireduce(a)._forceRed(this); ++ return a.umod(this.m)._forceRed(this); ++ }; ++ ++ Red.prototype.neg = function neg (a) { ++ if (a.isZero()) { ++ return a.clone(); ++ } ++ ++ return this.m.sub(a)._forceRed(this); ++ }; ++ ++ Red.prototype.add = function add (a, b) { ++ this._verify2(a, b); ++ ++ var res = a.add(b); ++ if (res.cmp(this.m) >= 0) { ++ res.isub(this.m); ++ } ++ return res._forceRed(this); ++ }; ++ ++ Red.prototype.iadd = function iadd (a, b) { ++ this._verify2(a, b); ++ ++ var res = a.iadd(b); ++ if (res.cmp(this.m) >= 0) { ++ res.isub(this.m); ++ } ++ return res; ++ }; ++ ++ Red.prototype.sub = function sub (a, b) { ++ this._verify2(a, b); ++ ++ var res = a.sub(b); ++ if (res.cmpn(0) < 0) { ++ res.iadd(this.m); ++ } ++ return res._forceRed(this); ++ }; ++ ++ Red.prototype.isub = function isub (a, b) { ++ this._verify2(a, b); ++ ++ var res = a.isub(b); ++ if (res.cmpn(0) < 0) { ++ res.iadd(this.m); ++ } ++ return res; ++ }; ++ ++ Red.prototype.shl = function shl (a, num) { ++ this._verify1(a); ++ return this.imod(a.ushln(num)); ++ }; ++ ++ Red.prototype.imul = function imul (a, b) { ++ this._verify2(a, b); ++ return this.imod(a.imul(b)); ++ }; ++ ++ Red.prototype.mul = function mul (a, b) { ++ this._verify2(a, b); ++ return this.imod(a.mul(b)); ++ }; ++ ++ Red.prototype.isqr = function isqr (a) { ++ return this.imul(a, a.clone()); ++ }; ++ ++ Red.prototype.sqr = function sqr (a) { ++ return this.mul(a, a); ++ }; ++ ++ Red.prototype.sqrt = function sqrt (a) { ++ if (a.isZero()) return a.clone(); ++ ++ var mod3 = this.m.andln(3); ++ assert(mod3 % 2 === 1); ++ ++ // Fast case ++ if (mod3 === 3) { ++ var pow = this.m.add(new BN(1)).iushrn(2); ++ return this.pow(a, pow); ++ } ++ ++ // Tonelli-Shanks algorithm (Totally unoptimized and slow) ++ // ++ // Find Q and S, that Q * 2 ^ S = (P - 1) ++ var q = this.m.subn(1); ++ var s = 0; ++ while (!q.isZero() && q.andln(1) === 0) { ++ s++; ++ q.iushrn(1); ++ } ++ assert(!q.isZero()); ++ ++ var one = new BN(1).toRed(this); ++ var nOne = one.redNeg(); ++ ++ // Find quadratic non-residue ++ // NOTE: Max is such because of generalized Riemann hypothesis. ++ var lpow = this.m.subn(1).iushrn(1); ++ var z = this.m.bitLength(); ++ z = new BN(2 * z * z).toRed(this); ++ ++ while (this.pow(z, lpow).cmp(nOne) !== 0) { ++ z.redIAdd(nOne); ++ } ++ ++ var c = this.pow(z, q); ++ var r = this.pow(a, q.addn(1).iushrn(1)); ++ var t = this.pow(a, q); ++ var m = s; ++ while (t.cmp(one) !== 0) { ++ var tmp = t; ++ for (var i = 0; tmp.cmp(one) !== 0; i++) { ++ tmp = tmp.redSqr(); ++ } ++ assert(i < m); ++ var b = this.pow(c, new BN(1).iushln(m - i - 1)); ++ ++ r = r.redMul(b); ++ c = b.redSqr(); ++ t = t.redMul(c); ++ m = i; ++ } ++ ++ return r; ++ }; ++ ++ Red.prototype.invm = function invm (a) { ++ var inv = a._invmp(this.m); ++ if (inv.negative !== 0) { ++ inv.negative = 0; ++ return this.imod(inv).redNeg(); ++ } else { ++ return this.imod(inv); ++ } ++ }; ++ ++ Red.prototype.pow = function pow (a, num) { ++ if (num.isZero()) return new BN(1).toRed(this); ++ if (num.cmpn(1) === 0) return a.clone(); ++ ++ var windowSize = 4; ++ var wnd = new Array(1 << windowSize); ++ wnd[0] = new BN(1).toRed(this); ++ wnd[1] = a; ++ for (var i = 2; i < wnd.length; i++) { ++ wnd[i] = this.mul(wnd[i - 1], a); ++ } ++ ++ var res = wnd[0]; ++ var current = 0; ++ var currentLen = 0; ++ var start = num.bitLength() % 26; ++ if (start === 0) { ++ start = 26; ++ } ++ ++ for (i = num.length - 1; i >= 0; i--) { ++ var word = num.words[i]; ++ for (var j = start - 1; j >= 0; j--) { ++ var bit = (word >> j) & 1; ++ if (res !== wnd[0]) { ++ res = this.sqr(res); ++ } ++ ++ if (bit === 0 && current === 0) { ++ currentLen = 0; ++ continue; ++ } ++ ++ current <<= 1; ++ current |= bit; ++ currentLen++; ++ if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; ++ ++ res = this.mul(res, wnd[current]); ++ currentLen = 0; ++ current = 0; ++ } ++ start = 26; ++ } ++ ++ return res; ++ }; ++ ++ Red.prototype.convertTo = function convertTo (num) { ++ var r = num.umod(this.m); ++ ++ return r === num ? r.clone() : r; ++ }; ++ ++ Red.prototype.convertFrom = function convertFrom (num) { ++ var res = num.clone(); ++ res.red = null; ++ return res; ++ }; ++ ++ // ++ // Montgomery method engine ++ // ++ ++ BN.mont = function mont (num) { ++ return new Mont(num); ++ }; ++ ++ function Mont (m) { ++ Red.call(this, m); ++ ++ this.shift = this.m.bitLength(); ++ if (this.shift % 26 !== 0) { ++ this.shift += 26 - (this.shift % 26); ++ } ++ ++ this.r = new BN(1).iushln(this.shift); ++ this.r2 = this.imod(this.r.sqr()); ++ this.rinv = this.r._invmp(this.m); ++ ++ this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); ++ this.minv = this.minv.umod(this.r); ++ this.minv = this.r.sub(this.minv); ++ } ++ inherits(Mont, Red); ++ ++ Mont.prototype.convertTo = function convertTo (num) { ++ return this.imod(num.ushln(this.shift)); ++ }; ++ ++ Mont.prototype.convertFrom = function convertFrom (num) { ++ var r = this.imod(num.mul(this.rinv)); ++ r.red = null; ++ return r; ++ }; ++ ++ Mont.prototype.imul = function imul (a, b) { ++ if (a.isZero() || b.isZero()) { ++ a.words[0] = 0; ++ a.length = 1; ++ return a; ++ } ++ ++ var t = a.imul(b); ++ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); ++ var u = t.isub(c).iushrn(this.shift); ++ var res = u; ++ ++ if (u.cmp(this.m) >= 0) { ++ res = u.isub(this.m); ++ } else if (u.cmpn(0) < 0) { ++ res = u.iadd(this.m); ++ } ++ ++ return res._forceRed(this); ++ }; ++ ++ Mont.prototype.mul = function mul (a, b) { ++ if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); ++ ++ var t = a.mul(b); ++ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); ++ var u = t.isub(c).iushrn(this.shift); ++ var res = u; ++ if (u.cmp(this.m) >= 0) { ++ res = u.isub(this.m); ++ } else if (u.cmpn(0) < 0) { ++ res = u.iadd(this.m); ++ } ++ ++ return res._forceRed(this); ++ }; ++ ++ Mont.prototype.invm = function invm (a) { ++ // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R ++ var res = this.imod(a._invmp(this.m).mul(this.r2)); ++ return res._forceRed(this); ++ }; ++})(typeof module === 'undefined' || module, this); +diff --git a/node_modules/bn.js/package.json b/node_modules/bn.js/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..d73989ac5ba39fda7f702dde644e2769a6a1d23c +--- /dev/null ++++ b/node_modules/bn.js/package.json +@@ -0,0 +1,65 @@ ++{ ++ "name": "bn.js", ++ "version": "4.12.0", ++ "description": "Big number implementation in pure javascript", ++ "main": "lib/bn.js", ++ "scripts": { ++ "lint": "semistandard", ++ "unit": "mocha --reporter=spec test/*-test.js", ++ "test": "npm run lint && npm run unit" ++ }, ++ "repository": { ++ "type": "git", ++ "url": "git@github.com:indutny/bn.js" ++ }, ++ "keywords": [ ++ "BN", ++ "BigNum", ++ "Big number", ++ "Modulo", ++ "Montgomery" ++ ], ++ "author": "Fedor Indutny ", ++ "license": "MIT", ++ "bugs": { ++ "url": "https://github.com/indutny/bn.js/issues" ++ }, ++ "homepage": "https://github.com/indutny/bn.js", ++ "browser": { ++ "buffer": false, ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "devDependencies": { ++ "istanbul": "^0.3.5", ++ "mocha": "^2.1.0", ++ "semistandard": "^7.0.4" ++ }, ++ "react-native": { ++ "buffer": false, ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/elliptic/README.md b/node_modules/elliptic/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..96219e55b0cd7a9eb1e2ecfe0eebae40af1ba08a +--- /dev/null ++++ b/node_modules/elliptic/README.md +@@ -0,0 +1,238 @@ ++# Elliptic [![Build Status](https://secure.travis-ci.org/indutny/elliptic.png)](http://travis-ci.org/indutny/elliptic) [![Coverage Status](https://coveralls.io/repos/indutny/elliptic/badge.svg?branch=master&service=github)](https://coveralls.io/github/indutny/elliptic?branch=master) [![Code Climate](https://codeclimate.com/github/indutny/elliptic/badges/gpa.svg)](https://codeclimate.com/github/indutny/elliptic) ++ ++[![Saucelabs Test Status](https://saucelabs.com/browser-matrix/gh-indutny-elliptic.svg)](https://saucelabs.com/u/gh-indutny-elliptic) ++ ++Fast elliptic-curve cryptography in a plain javascript implementation. ++ ++NOTE: Please take a look at http://safecurves.cr.yp.to/ before choosing a curve ++for your cryptography operations. ++ ++## Incentive ++ ++ECC is much slower than regular RSA cryptography, the JS implementations are ++even more slower. ++ ++## Benchmarks ++ ++```bash ++$ node benchmarks/index.js ++Benchmarking: sign ++elliptic#sign x 262 ops/sec ±0.51% (177 runs sampled) ++eccjs#sign x 55.91 ops/sec ±0.90% (144 runs sampled) ++------------------------ ++Fastest is elliptic#sign ++======================== ++Benchmarking: verify ++elliptic#verify x 113 ops/sec ±0.50% (166 runs sampled) ++eccjs#verify x 48.56 ops/sec ±0.36% (125 runs sampled) ++------------------------ ++Fastest is elliptic#verify ++======================== ++Benchmarking: gen ++elliptic#gen x 294 ops/sec ±0.43% (176 runs sampled) ++eccjs#gen x 62.25 ops/sec ±0.63% (129 runs sampled) ++------------------------ ++Fastest is elliptic#gen ++======================== ++Benchmarking: ecdh ++elliptic#ecdh x 136 ops/sec ±0.85% (156 runs sampled) ++------------------------ ++Fastest is elliptic#ecdh ++======================== ++``` ++ ++## API ++ ++### ECDSA ++ ++```javascript ++var EC = require('elliptic').ec; ++ ++// Create and initialize EC context ++// (better do it once and reuse it) ++var ec = new EC('secp256k1'); ++ ++// Generate keys ++var key = ec.genKeyPair(); ++ ++// Sign the message's hash (input must be an array, or a hex-string) ++var msgHash = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; ++var signature = key.sign(msgHash); ++ ++// Export DER encoded signature in Array ++var derSign = signature.toDER(); ++ ++// Verify signature ++console.log(key.verify(msgHash, derSign)); ++ ++// CHECK WITH NO PRIVATE KEY ++ ++var pubPoint = key.getPublic(); ++var x = pubPoint.getX(); ++var y = pubPoint.getY(); ++ ++// Public Key MUST be either: ++// 1) '04' + hex string of x + hex string of y; or ++// 2) object with two hex string properties (x and y); or ++// 3) object with two buffer properties (x and y) ++var pub = pubPoint.encode('hex'); // case 1 ++var pub = { x: x.toString('hex'), y: y.toString('hex') }; // case 2 ++var pub = { x: x.toBuffer(), y: y.toBuffer() }; // case 3 ++var pub = { x: x.toArrayLike(Buffer), y: y.toArrayLike(Buffer) }; // case 3 ++ ++// Import public key ++var key = ec.keyFromPublic(pub, 'hex'); ++ ++// Signature MUST be either: ++// 1) DER-encoded signature as hex-string; or ++// 2) DER-encoded signature as buffer; or ++// 3) object with two hex-string properties (r and s); or ++// 4) object with two buffer properties (r and s) ++ ++var signature = '3046022100...'; // case 1 ++var signature = new Buffer('...'); // case 2 ++var signature = { r: 'b1fc...', s: '9c42...' }; // case 3 ++ ++// Verify signature ++console.log(key.verify(msgHash, signature)); ++``` ++ ++### EdDSA ++ ++```javascript ++var EdDSA = require('elliptic').eddsa; ++ ++// Create and initialize EdDSA context ++// (better do it once and reuse it) ++var ec = new EdDSA('ed25519'); ++ ++// Create key pair from secret ++var key = ec.keyFromSecret('693e3c...'); // hex string, array or Buffer ++ ++// Sign the message's hash (input must be an array, or a hex-string) ++var msgHash = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; ++var signature = key.sign(msgHash).toHex(); ++ ++// Verify signature ++console.log(key.verify(msgHash, signature)); ++ ++// CHECK WITH NO PRIVATE KEY ++ ++// Import public key ++var pub = '0a1af638...'; ++var key = ec.keyFromPublic(pub, 'hex'); ++ ++// Verify signature ++var signature = '70bed1...'; ++console.log(key.verify(msgHash, signature)); ++``` ++ ++### ECDH ++ ++```javascript ++var EC = require('elliptic').ec; ++var ec = new EC('curve25519'); ++ ++// Generate keys ++var key1 = ec.genKeyPair(); ++var key2 = ec.genKeyPair(); ++ ++var shared1 = key1.derive(key2.getPublic()); ++var shared2 = key2.derive(key1.getPublic()); ++ ++console.log('Both shared secrets are BN instances'); ++console.log(shared1.toString(16)); ++console.log(shared2.toString(16)); ++``` ++ ++three and more members: ++```javascript ++var EC = require('elliptic').ec; ++var ec = new EC('curve25519'); ++ ++var A = ec.genKeyPair(); ++var B = ec.genKeyPair(); ++var C = ec.genKeyPair(); ++ ++var AB = A.getPublic().mul(B.getPrivate()) ++var BC = B.getPublic().mul(C.getPrivate()) ++var CA = C.getPublic().mul(A.getPrivate()) ++ ++var ABC = AB.mul(C.getPrivate()) ++var BCA = BC.mul(A.getPrivate()) ++var CAB = CA.mul(B.getPrivate()) ++ ++console.log(ABC.getX().toString(16)) ++console.log(BCA.getX().toString(16)) ++console.log(CAB.getX().toString(16)) ++``` ++ ++NOTE: `.derive()` returns a [BN][1] instance. ++ ++## Supported curves ++ ++Elliptic.js support following curve types: ++ ++* Short Weierstrass ++* Montgomery ++* Edwards ++* Twisted Edwards ++ ++Following curve 'presets' are embedded into the library: ++ ++* `secp256k1` ++* `p192` ++* `p224` ++* `p256` ++* `p384` ++* `p521` ++* `curve25519` ++* `ed25519` ++ ++NOTE: That `curve25519` could not be used for ECDSA, use `ed25519` instead. ++ ++### Implementation details ++ ++ECDSA is using deterministic `k` value generation as per [RFC6979][0]. Most of ++the curve operations are performed on non-affine coordinates (either projective ++or extended), various windowing techniques are used for different cases. ++ ++All operations are performed in reduction context using [bn.js][1], hashing is ++provided by [hash.js][2] ++ ++### Related projects ++ ++* [eccrypto][3]: isomorphic implementation of ECDSA, ECDH and ECIES for both ++ browserify and node (uses `elliptic` for browser and [secp256k1-node][4] for ++ node) ++ ++#### LICENSE ++ ++This software is licensed under the MIT License. ++ ++Copyright Fedor Indutny, 2014. ++ ++Permission is hereby granted, free of charge, to any person obtaining a ++copy of this software and associated documentation files (the ++"Software"), to deal in the Software without restriction, including ++without limitation the rights to use, copy, modify, merge, publish, ++distribute, sublicense, and/or sell copies of the Software, and to permit ++persons to whom the Software is furnished to do so, subject to the ++following conditions: ++ ++The above copyright notice and this permission notice shall be included ++in all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN ++NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, ++DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE ++USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++[0]: http://tools.ietf.org/html/rfc6979 ++[1]: https://github.com/indutny/bn.js ++[2]: https://github.com/indutny/hash.js ++[3]: https://github.com/bitchan/eccrypto ++[4]: https://github.com/wanderer/secp256k1-node +diff --git a/node_modules/elliptic/lib/elliptic/curve/base.js b/node_modules/elliptic/lib/elliptic/curve/base.js +new file mode 100644 +index 0000000000000000000000000000000000000000..8543fa80f6dde9ecee8846d8cfbc5bba15793d76 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/curve/base.js +@@ -0,0 +1,381 @@ ++'use strict'; ++ ++var BN = require('bn.js'); ++var utils = require('../utils'); ++var getNAF = utils.getNAF; ++var getJSF = utils.getJSF; ++var assert = utils.assert; ++ ++function BaseCurve(type, conf) { ++ this.type = type; ++ this.p = new BN(conf.p, 16); ++ ++ // Use Montgomery, when there is no fast reduction for the prime ++ this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); ++ ++ // Useful for many curves ++ this.zero = new BN(0).toRed(this.red); ++ this.one = new BN(1).toRed(this.red); ++ this.two = new BN(2).toRed(this.red); ++ ++ // Curve configuration, optional ++ this.n = conf.n && new BN(conf.n, 16); ++ this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); ++ ++ // Temporary arrays ++ this._wnafT1 = new Array(4); ++ this._wnafT2 = new Array(4); ++ this._wnafT3 = new Array(4); ++ this._wnafT4 = new Array(4); ++ ++ this._bitLength = this.n ? this.n.bitLength() : 0; ++ ++ // Generalized Greg Maxwell's trick ++ var adjustCount = this.n && this.p.div(this.n); ++ if (!adjustCount || adjustCount.cmpn(100) > 0) { ++ this.redN = null; ++ } else { ++ this._maxwellTrick = true; ++ this.redN = this.n.toRed(this.red); ++ } ++} ++module.exports = BaseCurve; ++ ++BaseCurve.prototype.point = function point() { ++ throw new Error('Not implemented'); ++}; ++ ++BaseCurve.prototype.validate = function validate() { ++ throw new Error('Not implemented'); ++}; ++ ++BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { ++ assert(p.precomputed); ++ var doubles = p._getDoubles(); ++ ++ var naf = getNAF(k, 1, this._bitLength); ++ var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); ++ I /= 3; ++ ++ // Translate into more windowed form ++ var repr = []; ++ var j; ++ var nafW; ++ for (j = 0; j < naf.length; j += doubles.step) { ++ nafW = 0; ++ for (var l = j + doubles.step - 1; l >= j; l--) ++ nafW = (nafW << 1) + naf[l]; ++ repr.push(nafW); ++ } ++ ++ var a = this.jpoint(null, null, null); ++ var b = this.jpoint(null, null, null); ++ for (var i = I; i > 0; i--) { ++ for (j = 0; j < repr.length; j++) { ++ nafW = repr[j]; ++ if (nafW === i) ++ b = b.mixedAdd(doubles.points[j]); ++ else if (nafW === -i) ++ b = b.mixedAdd(doubles.points[j].neg()); ++ } ++ a = a.add(b); ++ } ++ return a.toP(); ++}; ++ ++BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { ++ var w = 4; ++ ++ // Precompute window ++ var nafPoints = p._getNAFPoints(w); ++ w = nafPoints.wnd; ++ var wnd = nafPoints.points; ++ ++ // Get NAF form ++ var naf = getNAF(k, w, this._bitLength); ++ ++ // Add `this`*(N+1) for every w-NAF index ++ var acc = this.jpoint(null, null, null); ++ for (var i = naf.length - 1; i >= 0; i--) { ++ // Count zeroes ++ for (var l = 0; i >= 0 && naf[i] === 0; i--) ++ l++; ++ if (i >= 0) ++ l++; ++ acc = acc.dblp(l); ++ ++ if (i < 0) ++ break; ++ var z = naf[i]; ++ assert(z !== 0); ++ if (p.type === 'affine') { ++ // J +- P ++ if (z > 0) ++ acc = acc.mixedAdd(wnd[(z - 1) >> 1]); ++ else ++ acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg()); ++ } else { ++ // J +- J ++ if (z > 0) ++ acc = acc.add(wnd[(z - 1) >> 1]); ++ else ++ acc = acc.add(wnd[(-z - 1) >> 1].neg()); ++ } ++ } ++ return p.type === 'affine' ? acc.toP() : acc; ++}; ++ ++BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, ++ points, ++ coeffs, ++ len, ++ jacobianResult) { ++ var wndWidth = this._wnafT1; ++ var wnd = this._wnafT2; ++ var naf = this._wnafT3; ++ ++ // Fill all arrays ++ var max = 0; ++ var i; ++ var j; ++ var p; ++ for (i = 0; i < len; i++) { ++ p = points[i]; ++ var nafPoints = p._getNAFPoints(defW); ++ wndWidth[i] = nafPoints.wnd; ++ wnd[i] = nafPoints.points; ++ } ++ ++ // Comb small window NAFs ++ for (i = len - 1; i >= 1; i -= 2) { ++ var a = i - 1; ++ var b = i; ++ if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { ++ naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); ++ naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); ++ max = Math.max(naf[a].length, max); ++ max = Math.max(naf[b].length, max); ++ continue; ++ } ++ ++ var comb = [ ++ points[a], /* 1 */ ++ null, /* 3 */ ++ null, /* 5 */ ++ points[b], /* 7 */ ++ ]; ++ ++ // Try to avoid Projective points, if possible ++ if (points[a].y.cmp(points[b].y) === 0) { ++ comb[1] = points[a].add(points[b]); ++ comb[2] = points[a].toJ().mixedAdd(points[b].neg()); ++ } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { ++ comb[1] = points[a].toJ().mixedAdd(points[b]); ++ comb[2] = points[a].add(points[b].neg()); ++ } else { ++ comb[1] = points[a].toJ().mixedAdd(points[b]); ++ comb[2] = points[a].toJ().mixedAdd(points[b].neg()); ++ } ++ ++ var index = [ ++ -3, /* -1 -1 */ ++ -1, /* -1 0 */ ++ -5, /* -1 1 */ ++ -7, /* 0 -1 */ ++ 0, /* 0 0 */ ++ 7, /* 0 1 */ ++ 5, /* 1 -1 */ ++ 1, /* 1 0 */ ++ 3, /* 1 1 */ ++ ]; ++ ++ var jsf = getJSF(coeffs[a], coeffs[b]); ++ max = Math.max(jsf[0].length, max); ++ naf[a] = new Array(max); ++ naf[b] = new Array(max); ++ for (j = 0; j < max; j++) { ++ var ja = jsf[0][j] | 0; ++ var jb = jsf[1][j] | 0; ++ ++ naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; ++ naf[b][j] = 0; ++ wnd[a] = comb; ++ } ++ } ++ ++ var acc = this.jpoint(null, null, null); ++ var tmp = this._wnafT4; ++ for (i = max; i >= 0; i--) { ++ var k = 0; ++ ++ while (i >= 0) { ++ var zero = true; ++ for (j = 0; j < len; j++) { ++ tmp[j] = naf[j][i] | 0; ++ if (tmp[j] !== 0) ++ zero = false; ++ } ++ if (!zero) ++ break; ++ k++; ++ i--; ++ } ++ if (i >= 0) ++ k++; ++ acc = acc.dblp(k); ++ if (i < 0) ++ break; ++ ++ for (j = 0; j < len; j++) { ++ var z = tmp[j]; ++ p; ++ if (z === 0) ++ continue; ++ else if (z > 0) ++ p = wnd[j][(z - 1) >> 1]; ++ else if (z < 0) ++ p = wnd[j][(-z - 1) >> 1].neg(); ++ ++ if (p.type === 'affine') ++ acc = acc.mixedAdd(p); ++ else ++ acc = acc.add(p); ++ } ++ } ++ // Zeroify references ++ for (i = 0; i < len; i++) ++ wnd[i] = null; ++ ++ if (jacobianResult) ++ return acc; ++ else ++ return acc.toP(); ++}; ++ ++function BasePoint(curve, type) { ++ this.curve = curve; ++ this.type = type; ++ this.precomputed = null; ++} ++BaseCurve.BasePoint = BasePoint; ++ ++BasePoint.prototype.eq = function eq(/*other*/) { ++ throw new Error('Not implemented'); ++}; ++ ++BasePoint.prototype.validate = function validate() { ++ return this.curve.validate(this); ++}; ++ ++BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { ++ bytes = utils.toArray(bytes, enc); ++ ++ var len = this.p.byteLength(); ++ ++ // uncompressed, hybrid-odd, hybrid-even ++ if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && ++ bytes.length - 1 === 2 * len) { ++ if (bytes[0] === 0x06) ++ assert(bytes[bytes.length - 1] % 2 === 0); ++ else if (bytes[0] === 0x07) ++ assert(bytes[bytes.length - 1] % 2 === 1); ++ ++ var res = this.point(bytes.slice(1, 1 + len), ++ bytes.slice(1 + len, 1 + 2 * len)); ++ ++ return res; ++ } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && ++ bytes.length - 1 === len) { ++ return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); ++ } ++ throw new Error('Unknown point format'); ++}; ++ ++BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { ++ return this.encode(enc, true); ++}; ++ ++BasePoint.prototype._encode = function _encode(compact) { ++ var len = this.curve.p.byteLength(); ++ var x = this.getX().toArray('be', len); ++ ++ if (compact) ++ return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x); ++ ++ return [ 0x04 ].concat(x, this.getY().toArray('be', len)); ++}; ++ ++BasePoint.prototype.encode = function encode(enc, compact) { ++ return utils.encode(this._encode(compact), enc); ++}; ++ ++BasePoint.prototype.precompute = function precompute(power) { ++ if (this.precomputed) ++ return this; ++ ++ var precomputed = { ++ doubles: null, ++ naf: null, ++ beta: null, ++ }; ++ precomputed.naf = this._getNAFPoints(8); ++ precomputed.doubles = this._getDoubles(4, power); ++ precomputed.beta = this._getBeta(); ++ this.precomputed = precomputed; ++ ++ return this; ++}; ++ ++BasePoint.prototype._hasDoubles = function _hasDoubles(k) { ++ if (!this.precomputed) ++ return false; ++ ++ var doubles = this.precomputed.doubles; ++ if (!doubles) ++ return false; ++ ++ return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); ++}; ++ ++BasePoint.prototype._getDoubles = function _getDoubles(step, power) { ++ if (this.precomputed && this.precomputed.doubles) ++ return this.precomputed.doubles; ++ ++ var doubles = [ this ]; ++ var acc = this; ++ for (var i = 0; i < power; i += step) { ++ for (var j = 0; j < step; j++) ++ acc = acc.dbl(); ++ doubles.push(acc); ++ } ++ return { ++ step: step, ++ points: doubles, ++ }; ++}; ++ ++BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { ++ if (this.precomputed && this.precomputed.naf) ++ return this.precomputed.naf; ++ ++ var res = [ this ]; ++ var max = (1 << wnd) - 1; ++ var dbl = max === 1 ? null : this.dbl(); ++ for (var i = 1; i < max; i++) ++ res[i] = res[i - 1].add(dbl); ++ return { ++ wnd: wnd, ++ points: res, ++ }; ++}; ++ ++BasePoint.prototype._getBeta = function _getBeta() { ++ return null; ++}; ++ ++BasePoint.prototype.dblp = function dblp(k) { ++ var r = this; ++ for (var i = 0; i < k; i++) ++ r = r.dbl(); ++ return r; ++}; +diff --git a/node_modules/elliptic/lib/elliptic/curve/edwards.js b/node_modules/elliptic/lib/elliptic/curve/edwards.js +new file mode 100644 +index 0000000000000000000000000000000000000000..6e757c6dc4f904cf99f7c514c375bd35b524bce6 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/curve/edwards.js +@@ -0,0 +1,435 @@ ++'use strict'; ++ ++var utils = require('../utils'); ++var BN = require('bn.js'); ++var inherits = require('inherits'); ++var Base = require('./base'); ++ ++var assert = utils.assert; ++ ++function EdwardsCurve(conf) { ++ // NOTE: Important as we are creating point in Base.call() ++ this.twisted = (conf.a | 0) !== 1; ++ this.mOneA = this.twisted && (conf.a | 0) === -1; ++ this.extended = this.mOneA; ++ ++ Base.call(this, 'edwards', conf); ++ ++ this.a = new BN(conf.a, 16).umod(this.red.m); ++ this.a = this.a.toRed(this.red); ++ this.c = new BN(conf.c, 16).toRed(this.red); ++ this.c2 = this.c.redSqr(); ++ this.d = new BN(conf.d, 16).toRed(this.red); ++ this.dd = this.d.redAdd(this.d); ++ ++ assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); ++ this.oneC = (conf.c | 0) === 1; ++} ++inherits(EdwardsCurve, Base); ++module.exports = EdwardsCurve; ++ ++EdwardsCurve.prototype._mulA = function _mulA(num) { ++ if (this.mOneA) ++ return num.redNeg(); ++ else ++ return this.a.redMul(num); ++}; ++ ++EdwardsCurve.prototype._mulC = function _mulC(num) { ++ if (this.oneC) ++ return num; ++ else ++ return this.c.redMul(num); ++}; ++ ++// Just for compatibility with Short curve ++EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { ++ return this.point(x, y, z, t); ++}; ++ ++EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { ++ x = new BN(x, 16); ++ if (!x.red) ++ x = x.toRed(this.red); ++ ++ var x2 = x.redSqr(); ++ var rhs = this.c2.redSub(this.a.redMul(x2)); ++ var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); ++ ++ var y2 = rhs.redMul(lhs.redInvm()); ++ var y = y2.redSqrt(); ++ if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) ++ throw new Error('invalid point'); ++ ++ var isOdd = y.fromRed().isOdd(); ++ if (odd && !isOdd || !odd && isOdd) ++ y = y.redNeg(); ++ ++ return this.point(x, y); ++}; ++ ++EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { ++ y = new BN(y, 16); ++ if (!y.red) ++ y = y.toRed(this.red); ++ ++ // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) ++ var y2 = y.redSqr(); ++ var lhs = y2.redSub(this.c2); ++ var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); ++ var x2 = lhs.redMul(rhs.redInvm()); ++ ++ if (x2.cmp(this.zero) === 0) { ++ if (odd) ++ throw new Error('invalid point'); ++ else ++ return this.point(this.zero, y); ++ } ++ ++ var x = x2.redSqrt(); ++ if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) ++ throw new Error('invalid point'); ++ ++ if (x.fromRed().isOdd() !== odd) ++ x = x.redNeg(); ++ ++ return this.point(x, y); ++}; ++ ++EdwardsCurve.prototype.validate = function validate(point) { ++ if (point.isInfinity()) ++ return true; ++ ++ // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) ++ point.normalize(); ++ ++ var x2 = point.x.redSqr(); ++ var y2 = point.y.redSqr(); ++ var lhs = x2.redMul(this.a).redAdd(y2); ++ var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); ++ ++ return lhs.cmp(rhs) === 0; ++}; ++ ++function Point(curve, x, y, z, t) { ++ Base.BasePoint.call(this, curve, 'projective'); ++ if (x === null && y === null && z === null) { ++ this.x = this.curve.zero; ++ this.y = this.curve.one; ++ this.z = this.curve.one; ++ this.t = this.curve.zero; ++ this.zOne = true; ++ } else { ++ this.x = new BN(x, 16); ++ this.y = new BN(y, 16); ++ this.z = z ? new BN(z, 16) : this.curve.one; ++ this.t = t && new BN(t, 16); ++ if (!this.x.red) ++ this.x = this.x.toRed(this.curve.red); ++ if (!this.y.red) ++ this.y = this.y.toRed(this.curve.red); ++ if (!this.z.red) ++ this.z = this.z.toRed(this.curve.red); ++ if (this.t && !this.t.red) ++ this.t = this.t.toRed(this.curve.red); ++ this.zOne = this.z === this.curve.one; ++ ++ // Use extended coordinates ++ if (this.curve.extended && !this.t) { ++ this.t = this.x.redMul(this.y); ++ if (!this.zOne) ++ this.t = this.t.redMul(this.z.redInvm()); ++ } ++ } ++} ++inherits(Point, Base.BasePoint); ++ ++EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { ++ return Point.fromJSON(this, obj); ++}; ++ ++EdwardsCurve.prototype.point = function point(x, y, z, t) { ++ return new Point(this, x, y, z, t); ++}; ++ ++Point.fromJSON = function fromJSON(curve, obj) { ++ return new Point(curve, obj[0], obj[1], obj[2]); ++}; ++ ++Point.prototype.inspect = function inspect() { ++ if (this.isInfinity()) ++ return ''; ++ return ''; ++}; ++ ++Point.prototype.isInfinity = function isInfinity() { ++ // XXX This code assumes that zero is always zero in red ++ return this.x.cmpn(0) === 0 && ++ (this.y.cmp(this.z) === 0 || ++ (this.zOne && this.y.cmp(this.curve.c) === 0)); ++}; ++ ++Point.prototype._extDbl = function _extDbl() { ++ // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html ++ // #doubling-dbl-2008-hwcd ++ // 4M + 4S ++ ++ // A = X1^2 ++ var a = this.x.redSqr(); ++ // B = Y1^2 ++ var b = this.y.redSqr(); ++ // C = 2 * Z1^2 ++ var c = this.z.redSqr(); ++ c = c.redIAdd(c); ++ // D = a * A ++ var d = this.curve._mulA(a); ++ // E = (X1 + Y1)^2 - A - B ++ var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); ++ // G = D + B ++ var g = d.redAdd(b); ++ // F = G - C ++ var f = g.redSub(c); ++ // H = D - B ++ var h = d.redSub(b); ++ // X3 = E * F ++ var nx = e.redMul(f); ++ // Y3 = G * H ++ var ny = g.redMul(h); ++ // T3 = E * H ++ var nt = e.redMul(h); ++ // Z3 = F * G ++ var nz = f.redMul(g); ++ return this.curve.point(nx, ny, nz, nt); ++}; ++ ++Point.prototype._projDbl = function _projDbl() { ++ // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html ++ // #doubling-dbl-2008-bbjlp ++ // #doubling-dbl-2007-bl ++ // and others ++ // Generally 3M + 4S or 2M + 4S ++ ++ // B = (X1 + Y1)^2 ++ var b = this.x.redAdd(this.y).redSqr(); ++ // C = X1^2 ++ var c = this.x.redSqr(); ++ // D = Y1^2 ++ var d = this.y.redSqr(); ++ ++ var nx; ++ var ny; ++ var nz; ++ var e; ++ var h; ++ var j; ++ if (this.curve.twisted) { ++ // E = a * C ++ e = this.curve._mulA(c); ++ // F = E + D ++ var f = e.redAdd(d); ++ if (this.zOne) { ++ // X3 = (B - C - D) * (F - 2) ++ nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); ++ // Y3 = F * (E - D) ++ ny = f.redMul(e.redSub(d)); ++ // Z3 = F^2 - 2 * F ++ nz = f.redSqr().redSub(f).redSub(f); ++ } else { ++ // H = Z1^2 ++ h = this.z.redSqr(); ++ // J = F - 2 * H ++ j = f.redSub(h).redISub(h); ++ // X3 = (B-C-D)*J ++ nx = b.redSub(c).redISub(d).redMul(j); ++ // Y3 = F * (E - D) ++ ny = f.redMul(e.redSub(d)); ++ // Z3 = F * J ++ nz = f.redMul(j); ++ } ++ } else { ++ // E = C + D ++ e = c.redAdd(d); ++ // H = (c * Z1)^2 ++ h = this.curve._mulC(this.z).redSqr(); ++ // J = E - 2 * H ++ j = e.redSub(h).redSub(h); ++ // X3 = c * (B - E) * J ++ nx = this.curve._mulC(b.redISub(e)).redMul(j); ++ // Y3 = c * E * (C - D) ++ ny = this.curve._mulC(e).redMul(c.redISub(d)); ++ // Z3 = E * J ++ nz = e.redMul(j); ++ } ++ return this.curve.point(nx, ny, nz); ++}; ++ ++Point.prototype.dbl = function dbl() { ++ if (this.isInfinity()) ++ return this; ++ ++ // Double in extended coordinates ++ if (this.curve.extended) ++ return this._extDbl(); ++ else ++ return this._projDbl(); ++}; ++ ++Point.prototype._extAdd = function _extAdd(p) { ++ // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html ++ // #addition-add-2008-hwcd-3 ++ // 8M ++ ++ // A = (Y1 - X1) * (Y2 - X2) ++ var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); ++ // B = (Y1 + X1) * (Y2 + X2) ++ var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); ++ // C = T1 * k * T2 ++ var c = this.t.redMul(this.curve.dd).redMul(p.t); ++ // D = Z1 * 2 * Z2 ++ var d = this.z.redMul(p.z.redAdd(p.z)); ++ // E = B - A ++ var e = b.redSub(a); ++ // F = D - C ++ var f = d.redSub(c); ++ // G = D + C ++ var g = d.redAdd(c); ++ // H = B + A ++ var h = b.redAdd(a); ++ // X3 = E * F ++ var nx = e.redMul(f); ++ // Y3 = G * H ++ var ny = g.redMul(h); ++ // T3 = E * H ++ var nt = e.redMul(h); ++ // Z3 = F * G ++ var nz = f.redMul(g); ++ return this.curve.point(nx, ny, nz, nt); ++}; ++ ++Point.prototype._projAdd = function _projAdd(p) { ++ // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html ++ // #addition-add-2008-bbjlp ++ // #addition-add-2007-bl ++ // 10M + 1S ++ ++ // A = Z1 * Z2 ++ var a = this.z.redMul(p.z); ++ // B = A^2 ++ var b = a.redSqr(); ++ // C = X1 * X2 ++ var c = this.x.redMul(p.x); ++ // D = Y1 * Y2 ++ var d = this.y.redMul(p.y); ++ // E = d * C * D ++ var e = this.curve.d.redMul(c).redMul(d); ++ // F = B - E ++ var f = b.redSub(e); ++ // G = B + E ++ var g = b.redAdd(e); ++ // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) ++ var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); ++ var nx = a.redMul(f).redMul(tmp); ++ var ny; ++ var nz; ++ if (this.curve.twisted) { ++ // Y3 = A * G * (D - a * C) ++ ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); ++ // Z3 = F * G ++ nz = f.redMul(g); ++ } else { ++ // Y3 = A * G * (D - C) ++ ny = a.redMul(g).redMul(d.redSub(c)); ++ // Z3 = c * F * G ++ nz = this.curve._mulC(f).redMul(g); ++ } ++ return this.curve.point(nx, ny, nz); ++}; ++ ++Point.prototype.add = function add(p) { ++ if (this.isInfinity()) ++ return p; ++ if (p.isInfinity()) ++ return this; ++ ++ if (this.curve.extended) ++ return this._extAdd(p); ++ else ++ return this._projAdd(p); ++}; ++ ++Point.prototype.mul = function mul(k) { ++ if (this._hasDoubles(k)) ++ return this.curve._fixedNafMul(this, k); ++ else ++ return this.curve._wnafMul(this, k); ++}; ++ ++Point.prototype.mulAdd = function mulAdd(k1, p, k2) { ++ return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false); ++}; ++ ++Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { ++ return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true); ++}; ++ ++Point.prototype.normalize = function normalize() { ++ if (this.zOne) ++ return this; ++ ++ // Normalize coordinates ++ var zi = this.z.redInvm(); ++ this.x = this.x.redMul(zi); ++ this.y = this.y.redMul(zi); ++ if (this.t) ++ this.t = this.t.redMul(zi); ++ this.z = this.curve.one; ++ this.zOne = true; ++ return this; ++}; ++ ++Point.prototype.neg = function neg() { ++ return this.curve.point(this.x.redNeg(), ++ this.y, ++ this.z, ++ this.t && this.t.redNeg()); ++}; ++ ++Point.prototype.getX = function getX() { ++ this.normalize(); ++ return this.x.fromRed(); ++}; ++ ++Point.prototype.getY = function getY() { ++ this.normalize(); ++ return this.y.fromRed(); ++}; ++ ++Point.prototype.eq = function eq(other) { ++ return this === other || ++ this.getX().cmp(other.getX()) === 0 && ++ this.getY().cmp(other.getY()) === 0; ++}; ++ ++Point.prototype.eqXToP = function eqXToP(x) { ++ var rx = x.toRed(this.curve.red).redMul(this.z); ++ if (this.x.cmp(rx) === 0) ++ return true; ++ ++ var xc = x.clone(); ++ var t = this.curve.redN.redMul(this.z); ++ for (;;) { ++ xc.iadd(this.curve.n); ++ if (xc.cmp(this.curve.p) >= 0) ++ return false; ++ ++ rx.redIAdd(t); ++ if (this.x.cmp(rx) === 0) ++ return true; ++ } ++}; ++ ++// Compatibility with BaseCurve ++Point.prototype.toP = Point.prototype.normalize; ++Point.prototype.mixedAdd = Point.prototype.add; +diff --git a/node_modules/elliptic/lib/elliptic/curve/index.js b/node_modules/elliptic/lib/elliptic/curve/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..c589281df9975a0f8f1eeda818e6a24a5292e76a +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/curve/index.js +@@ -0,0 +1,8 @@ ++'use strict'; ++ ++var curve = exports; ++ ++curve.base = require('./base'); ++curve.short = require('./short'); ++curve.mont = require('./mont'); ++curve.edwards = require('./edwards'); +diff --git a/node_modules/elliptic/lib/elliptic/curve/mont.js b/node_modules/elliptic/lib/elliptic/curve/mont.js +new file mode 100644 +index 0000000000000000000000000000000000000000..4b9f80fd57e48e2a0aa751512e094a06b254b1e0 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/curve/mont.js +@@ -0,0 +1,178 @@ ++'use strict'; ++ ++var BN = require('bn.js'); ++var inherits = require('inherits'); ++var Base = require('./base'); ++ ++var utils = require('../utils'); ++ ++function MontCurve(conf) { ++ Base.call(this, 'mont', conf); ++ ++ this.a = new BN(conf.a, 16).toRed(this.red); ++ this.b = new BN(conf.b, 16).toRed(this.red); ++ this.i4 = new BN(4).toRed(this.red).redInvm(); ++ this.two = new BN(2).toRed(this.red); ++ this.a24 = this.i4.redMul(this.a.redAdd(this.two)); ++} ++inherits(MontCurve, Base); ++module.exports = MontCurve; ++ ++MontCurve.prototype.validate = function validate(point) { ++ var x = point.normalize().x; ++ var x2 = x.redSqr(); ++ var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); ++ var y = rhs.redSqrt(); ++ ++ return y.redSqr().cmp(rhs) === 0; ++}; ++ ++function Point(curve, x, z) { ++ Base.BasePoint.call(this, curve, 'projective'); ++ if (x === null && z === null) { ++ this.x = this.curve.one; ++ this.z = this.curve.zero; ++ } else { ++ this.x = new BN(x, 16); ++ this.z = new BN(z, 16); ++ if (!this.x.red) ++ this.x = this.x.toRed(this.curve.red); ++ if (!this.z.red) ++ this.z = this.z.toRed(this.curve.red); ++ } ++} ++inherits(Point, Base.BasePoint); ++ ++MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { ++ return this.point(utils.toArray(bytes, enc), 1); ++}; ++ ++MontCurve.prototype.point = function point(x, z) { ++ return new Point(this, x, z); ++}; ++ ++MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { ++ return Point.fromJSON(this, obj); ++}; ++ ++Point.prototype.precompute = function precompute() { ++ // No-op ++}; ++ ++Point.prototype._encode = function _encode() { ++ return this.getX().toArray('be', this.curve.p.byteLength()); ++}; ++ ++Point.fromJSON = function fromJSON(curve, obj) { ++ return new Point(curve, obj[0], obj[1] || curve.one); ++}; ++ ++Point.prototype.inspect = function inspect() { ++ if (this.isInfinity()) ++ return ''; ++ return ''; ++}; ++ ++Point.prototype.isInfinity = function isInfinity() { ++ // XXX This code assumes that zero is always zero in red ++ return this.z.cmpn(0) === 0; ++}; ++ ++Point.prototype.dbl = function dbl() { ++ // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 ++ // 2M + 2S + 4A ++ ++ // A = X1 + Z1 ++ var a = this.x.redAdd(this.z); ++ // AA = A^2 ++ var aa = a.redSqr(); ++ // B = X1 - Z1 ++ var b = this.x.redSub(this.z); ++ // BB = B^2 ++ var bb = b.redSqr(); ++ // C = AA - BB ++ var c = aa.redSub(bb); ++ // X3 = AA * BB ++ var nx = aa.redMul(bb); ++ // Z3 = C * (BB + A24 * C) ++ var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); ++ return this.curve.point(nx, nz); ++}; ++ ++Point.prototype.add = function add() { ++ throw new Error('Not supported on Montgomery curve'); ++}; ++ ++Point.prototype.diffAdd = function diffAdd(p, diff) { ++ // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 ++ // 4M + 2S + 6A ++ ++ // A = X2 + Z2 ++ var a = this.x.redAdd(this.z); ++ // B = X2 - Z2 ++ var b = this.x.redSub(this.z); ++ // C = X3 + Z3 ++ var c = p.x.redAdd(p.z); ++ // D = X3 - Z3 ++ var d = p.x.redSub(p.z); ++ // DA = D * A ++ var da = d.redMul(a); ++ // CB = C * B ++ var cb = c.redMul(b); ++ // X5 = Z1 * (DA + CB)^2 ++ var nx = diff.z.redMul(da.redAdd(cb).redSqr()); ++ // Z5 = X1 * (DA - CB)^2 ++ var nz = diff.x.redMul(da.redISub(cb).redSqr()); ++ return this.curve.point(nx, nz); ++}; ++ ++Point.prototype.mul = function mul(k) { ++ var t = k.clone(); ++ var a = this; // (N / 2) * Q + Q ++ var b = this.curve.point(null, null); // (N / 2) * Q ++ var c = this; // Q ++ ++ for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) ++ bits.push(t.andln(1)); ++ ++ for (var i = bits.length - 1; i >= 0; i--) { ++ if (bits[i] === 0) { ++ // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q ++ a = a.diffAdd(b, c); ++ // N * Q = 2 * ((N / 2) * Q + Q)) ++ b = b.dbl(); ++ } else { ++ // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) ++ b = a.diffAdd(b, c); ++ // N * Q + Q = 2 * ((N / 2) * Q + Q) ++ a = a.dbl(); ++ } ++ } ++ return b; ++}; ++ ++Point.prototype.mulAdd = function mulAdd() { ++ throw new Error('Not supported on Montgomery curve'); ++}; ++ ++Point.prototype.jumlAdd = function jumlAdd() { ++ throw new Error('Not supported on Montgomery curve'); ++}; ++ ++Point.prototype.eq = function eq(other) { ++ return this.getX().cmp(other.getX()) === 0; ++}; ++ ++Point.prototype.normalize = function normalize() { ++ this.x = this.x.redMul(this.z.redInvm()); ++ this.z = this.curve.one; ++ return this; ++}; ++ ++Point.prototype.getX = function getX() { ++ // Normalize coordinates ++ this.normalize(); ++ ++ return this.x.fromRed(); ++}; +diff --git a/node_modules/elliptic/lib/elliptic/curve/short.js b/node_modules/elliptic/lib/elliptic/curve/short.js +new file mode 100644 +index 0000000000000000000000000000000000000000..eec36ec52e1dde15b21435f41f03b77d74345a89 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/curve/short.js +@@ -0,0 +1,938 @@ ++'use strict'; ++ ++var utils = require('../utils'); ++var BN = require('bn.js'); ++var inherits = require('inherits'); ++var Base = require('./base'); ++ ++var assert = utils.assert; ++ ++function ShortCurve(conf) { ++ Base.call(this, 'short', conf); ++ ++ this.a = new BN(conf.a, 16).toRed(this.red); ++ this.b = new BN(conf.b, 16).toRed(this.red); ++ this.tinv = this.two.redInvm(); ++ ++ this.zeroA = this.a.fromRed().cmpn(0) === 0; ++ this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; ++ ++ // If the curve is endomorphic, precalculate beta and lambda ++ this.endo = this._getEndomorphism(conf); ++ this._endoWnafT1 = new Array(4); ++ this._endoWnafT2 = new Array(4); ++} ++inherits(ShortCurve, Base); ++module.exports = ShortCurve; ++ ++ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { ++ // No efficient endomorphism ++ if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) ++ return; ++ ++ // Compute beta and lambda, that lambda * P = (beta * Px; Py) ++ var beta; ++ var lambda; ++ if (conf.beta) { ++ beta = new BN(conf.beta, 16).toRed(this.red); ++ } else { ++ var betas = this._getEndoRoots(this.p); ++ // Choose the smallest beta ++ beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; ++ beta = beta.toRed(this.red); ++ } ++ if (conf.lambda) { ++ lambda = new BN(conf.lambda, 16); ++ } else { ++ // Choose the lambda that is matching selected beta ++ var lambdas = this._getEndoRoots(this.n); ++ if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { ++ lambda = lambdas[0]; ++ } else { ++ lambda = lambdas[1]; ++ assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); ++ } ++ } ++ ++ // Get basis vectors, used for balanced length-two representation ++ var basis; ++ if (conf.basis) { ++ basis = conf.basis.map(function(vec) { ++ return { ++ a: new BN(vec.a, 16), ++ b: new BN(vec.b, 16), ++ }; ++ }); ++ } else { ++ basis = this._getEndoBasis(lambda); ++ } ++ ++ return { ++ beta: beta, ++ lambda: lambda, ++ basis: basis, ++ }; ++}; ++ ++ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { ++ // Find roots of for x^2 + x + 1 in F ++ // Root = (-1 +- Sqrt(-3)) / 2 ++ // ++ var red = num === this.p ? this.red : BN.mont(num); ++ var tinv = new BN(2).toRed(red).redInvm(); ++ var ntinv = tinv.redNeg(); ++ ++ var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); ++ ++ var l1 = ntinv.redAdd(s).fromRed(); ++ var l2 = ntinv.redSub(s).fromRed(); ++ return [ l1, l2 ]; ++}; ++ ++ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { ++ // aprxSqrt >= sqrt(this.n) ++ var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); ++ ++ // 3.74 ++ // Run EGCD, until r(L + 1) < aprxSqrt ++ var u = lambda; ++ var v = this.n.clone(); ++ var x1 = new BN(1); ++ var y1 = new BN(0); ++ var x2 = new BN(0); ++ var y2 = new BN(1); ++ ++ // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) ++ var a0; ++ var b0; ++ // First vector ++ var a1; ++ var b1; ++ // Second vector ++ var a2; ++ var b2; ++ ++ var prevR; ++ var i = 0; ++ var r; ++ var x; ++ while (u.cmpn(0) !== 0) { ++ var q = v.div(u); ++ r = v.sub(q.mul(u)); ++ x = x2.sub(q.mul(x1)); ++ var y = y2.sub(q.mul(y1)); ++ ++ if (!a1 && r.cmp(aprxSqrt) < 0) { ++ a0 = prevR.neg(); ++ b0 = x1; ++ a1 = r.neg(); ++ b1 = x; ++ } else if (a1 && ++i === 2) { ++ break; ++ } ++ prevR = r; ++ ++ v = u; ++ u = r; ++ x2 = x1; ++ x1 = x; ++ y2 = y1; ++ y1 = y; ++ } ++ a2 = r.neg(); ++ b2 = x; ++ ++ var len1 = a1.sqr().add(b1.sqr()); ++ var len2 = a2.sqr().add(b2.sqr()); ++ if (len2.cmp(len1) >= 0) { ++ a2 = a0; ++ b2 = b0; ++ } ++ ++ // Normalize signs ++ if (a1.negative) { ++ a1 = a1.neg(); ++ b1 = b1.neg(); ++ } ++ if (a2.negative) { ++ a2 = a2.neg(); ++ b2 = b2.neg(); ++ } ++ ++ return [ ++ { a: a1, b: b1 }, ++ { a: a2, b: b2 }, ++ ]; ++}; ++ ++ShortCurve.prototype._endoSplit = function _endoSplit(k) { ++ var basis = this.endo.basis; ++ var v1 = basis[0]; ++ var v2 = basis[1]; ++ ++ var c1 = v2.b.mul(k).divRound(this.n); ++ var c2 = v1.b.neg().mul(k).divRound(this.n); ++ ++ var p1 = c1.mul(v1.a); ++ var p2 = c2.mul(v2.a); ++ var q1 = c1.mul(v1.b); ++ var q2 = c2.mul(v2.b); ++ ++ // Calculate answer ++ var k1 = k.sub(p1).sub(p2); ++ var k2 = q1.add(q2).neg(); ++ return { k1: k1, k2: k2 }; ++}; ++ ++ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { ++ x = new BN(x, 16); ++ if (!x.red) ++ x = x.toRed(this.red); ++ ++ var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); ++ var y = y2.redSqrt(); ++ if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) ++ throw new Error('invalid point'); ++ ++ // XXX Is there any way to tell if the number is odd without converting it ++ // to non-red form? ++ var isOdd = y.fromRed().isOdd(); ++ if (odd && !isOdd || !odd && isOdd) ++ y = y.redNeg(); ++ ++ return this.point(x, y); ++}; ++ ++ShortCurve.prototype.validate = function validate(point) { ++ if (point.inf) ++ return true; ++ ++ var x = point.x; ++ var y = point.y; ++ ++ var ax = this.a.redMul(x); ++ var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); ++ return y.redSqr().redISub(rhs).cmpn(0) === 0; ++}; ++ ++ShortCurve.prototype._endoWnafMulAdd = ++ function _endoWnafMulAdd(points, coeffs, jacobianResult) { ++ var npoints = this._endoWnafT1; ++ var ncoeffs = this._endoWnafT2; ++ for (var i = 0; i < points.length; i++) { ++ var split = this._endoSplit(coeffs[i]); ++ var p = points[i]; ++ var beta = p._getBeta(); ++ ++ if (split.k1.negative) { ++ split.k1.ineg(); ++ p = p.neg(true); ++ } ++ if (split.k2.negative) { ++ split.k2.ineg(); ++ beta = beta.neg(true); ++ } ++ ++ npoints[i * 2] = p; ++ npoints[i * 2 + 1] = beta; ++ ncoeffs[i * 2] = split.k1; ++ ncoeffs[i * 2 + 1] = split.k2; ++ } ++ var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); ++ ++ // Clean-up references to points and coefficients ++ for (var j = 0; j < i * 2; j++) { ++ npoints[j] = null; ++ ncoeffs[j] = null; ++ } ++ return res; ++ }; ++ ++function Point(curve, x, y, isRed) { ++ Base.BasePoint.call(this, curve, 'affine'); ++ if (x === null && y === null) { ++ this.x = null; ++ this.y = null; ++ this.inf = true; ++ } else { ++ this.x = new BN(x, 16); ++ this.y = new BN(y, 16); ++ // Force redgomery representation when loading from JSON ++ if (isRed) { ++ this.x.forceRed(this.curve.red); ++ this.y.forceRed(this.curve.red); ++ } ++ if (!this.x.red) ++ this.x = this.x.toRed(this.curve.red); ++ if (!this.y.red) ++ this.y = this.y.toRed(this.curve.red); ++ this.inf = false; ++ } ++} ++inherits(Point, Base.BasePoint); ++ ++ShortCurve.prototype.point = function point(x, y, isRed) { ++ return new Point(this, x, y, isRed); ++}; ++ ++ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { ++ return Point.fromJSON(this, obj, red); ++}; ++ ++Point.prototype._getBeta = function _getBeta() { ++ if (!this.curve.endo) ++ return; ++ ++ var pre = this.precomputed; ++ if (pre && pre.beta) ++ return pre.beta; ++ ++ var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); ++ if (pre) { ++ var curve = this.curve; ++ var endoMul = function(p) { ++ return curve.point(p.x.redMul(curve.endo.beta), p.y); ++ }; ++ pre.beta = beta; ++ beta.precomputed = { ++ beta: null, ++ naf: pre.naf && { ++ wnd: pre.naf.wnd, ++ points: pre.naf.points.map(endoMul), ++ }, ++ doubles: pre.doubles && { ++ step: pre.doubles.step, ++ points: pre.doubles.points.map(endoMul), ++ }, ++ }; ++ } ++ return beta; ++}; ++ ++Point.prototype.toJSON = function toJSON() { ++ if (!this.precomputed) ++ return [ this.x, this.y ]; ++ ++ return [ this.x, this.y, this.precomputed && { ++ doubles: this.precomputed.doubles && { ++ step: this.precomputed.doubles.step, ++ points: this.precomputed.doubles.points.slice(1), ++ }, ++ naf: this.precomputed.naf && { ++ wnd: this.precomputed.naf.wnd, ++ points: this.precomputed.naf.points.slice(1), ++ }, ++ } ]; ++}; ++ ++Point.fromJSON = function fromJSON(curve, obj, red) { ++ if (typeof obj === 'string') ++ obj = JSON.parse(obj); ++ var res = curve.point(obj[0], obj[1], red); ++ if (!obj[2]) ++ return res; ++ ++ function obj2point(obj) { ++ return curve.point(obj[0], obj[1], red); ++ } ++ ++ var pre = obj[2]; ++ res.precomputed = { ++ beta: null, ++ doubles: pre.doubles && { ++ step: pre.doubles.step, ++ points: [ res ].concat(pre.doubles.points.map(obj2point)), ++ }, ++ naf: pre.naf && { ++ wnd: pre.naf.wnd, ++ points: [ res ].concat(pre.naf.points.map(obj2point)), ++ }, ++ }; ++ return res; ++}; ++ ++Point.prototype.inspect = function inspect() { ++ if (this.isInfinity()) ++ return ''; ++ return ''; ++}; ++ ++Point.prototype.isInfinity = function isInfinity() { ++ return this.inf; ++}; ++ ++Point.prototype.add = function add(p) { ++ // O + P = P ++ if (this.inf) ++ return p; ++ ++ // P + O = P ++ if (p.inf) ++ return this; ++ ++ // P + P = 2P ++ if (this.eq(p)) ++ return this.dbl(); ++ ++ // P + (-P) = O ++ if (this.neg().eq(p)) ++ return this.curve.point(null, null); ++ ++ // P + Q = O ++ if (this.x.cmp(p.x) === 0) ++ return this.curve.point(null, null); ++ ++ var c = this.y.redSub(p.y); ++ if (c.cmpn(0) !== 0) ++ c = c.redMul(this.x.redSub(p.x).redInvm()); ++ var nx = c.redSqr().redISub(this.x).redISub(p.x); ++ var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); ++ return this.curve.point(nx, ny); ++}; ++ ++Point.prototype.dbl = function dbl() { ++ if (this.inf) ++ return this; ++ ++ // 2P = O ++ var ys1 = this.y.redAdd(this.y); ++ if (ys1.cmpn(0) === 0) ++ return this.curve.point(null, null); ++ ++ var a = this.curve.a; ++ ++ var x2 = this.x.redSqr(); ++ var dyinv = ys1.redInvm(); ++ var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); ++ ++ var nx = c.redSqr().redISub(this.x.redAdd(this.x)); ++ var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); ++ return this.curve.point(nx, ny); ++}; ++ ++Point.prototype.getX = function getX() { ++ return this.x.fromRed(); ++}; ++ ++Point.prototype.getY = function getY() { ++ return this.y.fromRed(); ++}; ++ ++Point.prototype.mul = function mul(k) { ++ k = new BN(k, 16); ++ if (this.isInfinity()) ++ return this; ++ else if (this._hasDoubles(k)) ++ return this.curve._fixedNafMul(this, k); ++ else if (this.curve.endo) ++ return this.curve._endoWnafMulAdd([ this ], [ k ]); ++ else ++ return this.curve._wnafMul(this, k); ++}; ++ ++Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { ++ var points = [ this, p2 ]; ++ var coeffs = [ k1, k2 ]; ++ if (this.curve.endo) ++ return this.curve._endoWnafMulAdd(points, coeffs); ++ else ++ return this.curve._wnafMulAdd(1, points, coeffs, 2); ++}; ++ ++Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { ++ var points = [ this, p2 ]; ++ var coeffs = [ k1, k2 ]; ++ if (this.curve.endo) ++ return this.curve._endoWnafMulAdd(points, coeffs, true); ++ else ++ return this.curve._wnafMulAdd(1, points, coeffs, 2, true); ++}; ++ ++Point.prototype.eq = function eq(p) { ++ return this === p || ++ this.inf === p.inf && ++ (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); ++}; ++ ++Point.prototype.neg = function neg(_precompute) { ++ if (this.inf) ++ return this; ++ ++ var res = this.curve.point(this.x, this.y.redNeg()); ++ if (_precompute && this.precomputed) { ++ var pre = this.precomputed; ++ var negate = function(p) { ++ return p.neg(); ++ }; ++ res.precomputed = { ++ naf: pre.naf && { ++ wnd: pre.naf.wnd, ++ points: pre.naf.points.map(negate), ++ }, ++ doubles: pre.doubles && { ++ step: pre.doubles.step, ++ points: pre.doubles.points.map(negate), ++ }, ++ }; ++ } ++ return res; ++}; ++ ++Point.prototype.toJ = function toJ() { ++ if (this.inf) ++ return this.curve.jpoint(null, null, null); ++ ++ var res = this.curve.jpoint(this.x, this.y, this.curve.one); ++ return res; ++}; ++ ++function JPoint(curve, x, y, z) { ++ Base.BasePoint.call(this, curve, 'jacobian'); ++ if (x === null && y === null && z === null) { ++ this.x = this.curve.one; ++ this.y = this.curve.one; ++ this.z = new BN(0); ++ } else { ++ this.x = new BN(x, 16); ++ this.y = new BN(y, 16); ++ this.z = new BN(z, 16); ++ } ++ if (!this.x.red) ++ this.x = this.x.toRed(this.curve.red); ++ if (!this.y.red) ++ this.y = this.y.toRed(this.curve.red); ++ if (!this.z.red) ++ this.z = this.z.toRed(this.curve.red); ++ ++ this.zOne = this.z === this.curve.one; ++} ++inherits(JPoint, Base.BasePoint); ++ ++ShortCurve.prototype.jpoint = function jpoint(x, y, z) { ++ return new JPoint(this, x, y, z); ++}; ++ ++JPoint.prototype.toP = function toP() { ++ if (this.isInfinity()) ++ return this.curve.point(null, null); ++ ++ var zinv = this.z.redInvm(); ++ var zinv2 = zinv.redSqr(); ++ var ax = this.x.redMul(zinv2); ++ var ay = this.y.redMul(zinv2).redMul(zinv); ++ ++ return this.curve.point(ax, ay); ++}; ++ ++JPoint.prototype.neg = function neg() { ++ return this.curve.jpoint(this.x, this.y.redNeg(), this.z); ++}; ++ ++JPoint.prototype.add = function add(p) { ++ // O + P = P ++ if (this.isInfinity()) ++ return p; ++ ++ // P + O = P ++ if (p.isInfinity()) ++ return this; ++ ++ // 12M + 4S + 7A ++ var pz2 = p.z.redSqr(); ++ var z2 = this.z.redSqr(); ++ var u1 = this.x.redMul(pz2); ++ var u2 = p.x.redMul(z2); ++ var s1 = this.y.redMul(pz2.redMul(p.z)); ++ var s2 = p.y.redMul(z2.redMul(this.z)); ++ ++ var h = u1.redSub(u2); ++ var r = s1.redSub(s2); ++ if (h.cmpn(0) === 0) { ++ if (r.cmpn(0) !== 0) ++ return this.curve.jpoint(null, null, null); ++ else ++ return this.dbl(); ++ } ++ ++ var h2 = h.redSqr(); ++ var h3 = h2.redMul(h); ++ var v = u1.redMul(h2); ++ ++ var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); ++ var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); ++ var nz = this.z.redMul(p.z).redMul(h); ++ ++ return this.curve.jpoint(nx, ny, nz); ++}; ++ ++JPoint.prototype.mixedAdd = function mixedAdd(p) { ++ // O + P = P ++ if (this.isInfinity()) ++ return p.toJ(); ++ ++ // P + O = P ++ if (p.isInfinity()) ++ return this; ++ ++ // 8M + 3S + 7A ++ var z2 = this.z.redSqr(); ++ var u1 = this.x; ++ var u2 = p.x.redMul(z2); ++ var s1 = this.y; ++ var s2 = p.y.redMul(z2).redMul(this.z); ++ ++ var h = u1.redSub(u2); ++ var r = s1.redSub(s2); ++ if (h.cmpn(0) === 0) { ++ if (r.cmpn(0) !== 0) ++ return this.curve.jpoint(null, null, null); ++ else ++ return this.dbl(); ++ } ++ ++ var h2 = h.redSqr(); ++ var h3 = h2.redMul(h); ++ var v = u1.redMul(h2); ++ ++ var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); ++ var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); ++ var nz = this.z.redMul(h); ++ ++ return this.curve.jpoint(nx, ny, nz); ++}; ++ ++JPoint.prototype.dblp = function dblp(pow) { ++ if (pow === 0) ++ return this; ++ if (this.isInfinity()) ++ return this; ++ if (!pow) ++ return this.dbl(); ++ ++ var i; ++ if (this.curve.zeroA || this.curve.threeA) { ++ var r = this; ++ for (i = 0; i < pow; i++) ++ r = r.dbl(); ++ return r; ++ } ++ ++ // 1M + 2S + 1A + N * (4S + 5M + 8A) ++ // N = 1 => 6M + 6S + 9A ++ var a = this.curve.a; ++ var tinv = this.curve.tinv; ++ ++ var jx = this.x; ++ var jy = this.y; ++ var jz = this.z; ++ var jz4 = jz.redSqr().redSqr(); ++ ++ // Reuse results ++ var jyd = jy.redAdd(jy); ++ for (i = 0; i < pow; i++) { ++ var jx2 = jx.redSqr(); ++ var jyd2 = jyd.redSqr(); ++ var jyd4 = jyd2.redSqr(); ++ var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); ++ ++ var t1 = jx.redMul(jyd2); ++ var nx = c.redSqr().redISub(t1.redAdd(t1)); ++ var t2 = t1.redISub(nx); ++ var dny = c.redMul(t2); ++ dny = dny.redIAdd(dny).redISub(jyd4); ++ var nz = jyd.redMul(jz); ++ if (i + 1 < pow) ++ jz4 = jz4.redMul(jyd4); ++ ++ jx = nx; ++ jz = nz; ++ jyd = dny; ++ } ++ ++ return this.curve.jpoint(jx, jyd.redMul(tinv), jz); ++}; ++ ++JPoint.prototype.dbl = function dbl() { ++ if (this.isInfinity()) ++ return this; ++ ++ if (this.curve.zeroA) ++ return this._zeroDbl(); ++ else if (this.curve.threeA) ++ return this._threeDbl(); ++ else ++ return this._dbl(); ++}; ++ ++JPoint.prototype._zeroDbl = function _zeroDbl() { ++ var nx; ++ var ny; ++ var nz; ++ // Z = 1 ++ if (this.zOne) { ++ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html ++ // #doubling-mdbl-2007-bl ++ // 1M + 5S + 14A ++ ++ // XX = X1^2 ++ var xx = this.x.redSqr(); ++ // YY = Y1^2 ++ var yy = this.y.redSqr(); ++ // YYYY = YY^2 ++ var yyyy = yy.redSqr(); ++ // S = 2 * ((X1 + YY)^2 - XX - YYYY) ++ var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); ++ s = s.redIAdd(s); ++ // M = 3 * XX + a; a = 0 ++ var m = xx.redAdd(xx).redIAdd(xx); ++ // T = M ^ 2 - 2*S ++ var t = m.redSqr().redISub(s).redISub(s); ++ ++ // 8 * YYYY ++ var yyyy8 = yyyy.redIAdd(yyyy); ++ yyyy8 = yyyy8.redIAdd(yyyy8); ++ yyyy8 = yyyy8.redIAdd(yyyy8); ++ ++ // X3 = T ++ nx = t; ++ // Y3 = M * (S - T) - 8 * YYYY ++ ny = m.redMul(s.redISub(t)).redISub(yyyy8); ++ // Z3 = 2*Y1 ++ nz = this.y.redAdd(this.y); ++ } else { ++ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html ++ // #doubling-dbl-2009-l ++ // 2M + 5S + 13A ++ ++ // A = X1^2 ++ var a = this.x.redSqr(); ++ // B = Y1^2 ++ var b = this.y.redSqr(); ++ // C = B^2 ++ var c = b.redSqr(); ++ // D = 2 * ((X1 + B)^2 - A - C) ++ var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); ++ d = d.redIAdd(d); ++ // E = 3 * A ++ var e = a.redAdd(a).redIAdd(a); ++ // F = E^2 ++ var f = e.redSqr(); ++ ++ // 8 * C ++ var c8 = c.redIAdd(c); ++ c8 = c8.redIAdd(c8); ++ c8 = c8.redIAdd(c8); ++ ++ // X3 = F - 2 * D ++ nx = f.redISub(d).redISub(d); ++ // Y3 = E * (D - X3) - 8 * C ++ ny = e.redMul(d.redISub(nx)).redISub(c8); ++ // Z3 = 2 * Y1 * Z1 ++ nz = this.y.redMul(this.z); ++ nz = nz.redIAdd(nz); ++ } ++ ++ return this.curve.jpoint(nx, ny, nz); ++}; ++ ++JPoint.prototype._threeDbl = function _threeDbl() { ++ var nx; ++ var ny; ++ var nz; ++ // Z = 1 ++ if (this.zOne) { ++ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html ++ // #doubling-mdbl-2007-bl ++ // 1M + 5S + 15A ++ ++ // XX = X1^2 ++ var xx = this.x.redSqr(); ++ // YY = Y1^2 ++ var yy = this.y.redSqr(); ++ // YYYY = YY^2 ++ var yyyy = yy.redSqr(); ++ // S = 2 * ((X1 + YY)^2 - XX - YYYY) ++ var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); ++ s = s.redIAdd(s); ++ // M = 3 * XX + a ++ var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); ++ // T = M^2 - 2 * S ++ var t = m.redSqr().redISub(s).redISub(s); ++ // X3 = T ++ nx = t; ++ // Y3 = M * (S - T) - 8 * YYYY ++ var yyyy8 = yyyy.redIAdd(yyyy); ++ yyyy8 = yyyy8.redIAdd(yyyy8); ++ yyyy8 = yyyy8.redIAdd(yyyy8); ++ ny = m.redMul(s.redISub(t)).redISub(yyyy8); ++ // Z3 = 2 * Y1 ++ nz = this.y.redAdd(this.y); ++ } else { ++ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b ++ // 3M + 5S ++ ++ // delta = Z1^2 ++ var delta = this.z.redSqr(); ++ // gamma = Y1^2 ++ var gamma = this.y.redSqr(); ++ // beta = X1 * gamma ++ var beta = this.x.redMul(gamma); ++ // alpha = 3 * (X1 - delta) * (X1 + delta) ++ var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); ++ alpha = alpha.redAdd(alpha).redIAdd(alpha); ++ // X3 = alpha^2 - 8 * beta ++ var beta4 = beta.redIAdd(beta); ++ beta4 = beta4.redIAdd(beta4); ++ var beta8 = beta4.redAdd(beta4); ++ nx = alpha.redSqr().redISub(beta8); ++ // Z3 = (Y1 + Z1)^2 - gamma - delta ++ nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); ++ // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 ++ var ggamma8 = gamma.redSqr(); ++ ggamma8 = ggamma8.redIAdd(ggamma8); ++ ggamma8 = ggamma8.redIAdd(ggamma8); ++ ggamma8 = ggamma8.redIAdd(ggamma8); ++ ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); ++ } ++ ++ return this.curve.jpoint(nx, ny, nz); ++}; ++ ++JPoint.prototype._dbl = function _dbl() { ++ var a = this.curve.a; ++ ++ // 4M + 6S + 10A ++ var jx = this.x; ++ var jy = this.y; ++ var jz = this.z; ++ var jz4 = jz.redSqr().redSqr(); ++ ++ var jx2 = jx.redSqr(); ++ var jy2 = jy.redSqr(); ++ ++ var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); ++ ++ var jxd4 = jx.redAdd(jx); ++ jxd4 = jxd4.redIAdd(jxd4); ++ var t1 = jxd4.redMul(jy2); ++ var nx = c.redSqr().redISub(t1.redAdd(t1)); ++ var t2 = t1.redISub(nx); ++ ++ var jyd8 = jy2.redSqr(); ++ jyd8 = jyd8.redIAdd(jyd8); ++ jyd8 = jyd8.redIAdd(jyd8); ++ jyd8 = jyd8.redIAdd(jyd8); ++ var ny = c.redMul(t2).redISub(jyd8); ++ var nz = jy.redAdd(jy).redMul(jz); ++ ++ return this.curve.jpoint(nx, ny, nz); ++}; ++ ++JPoint.prototype.trpl = function trpl() { ++ if (!this.curve.zeroA) ++ return this.dbl().add(this); ++ ++ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl ++ // 5M + 10S + ... ++ ++ // XX = X1^2 ++ var xx = this.x.redSqr(); ++ // YY = Y1^2 ++ var yy = this.y.redSqr(); ++ // ZZ = Z1^2 ++ var zz = this.z.redSqr(); ++ // YYYY = YY^2 ++ var yyyy = yy.redSqr(); ++ // M = 3 * XX + a * ZZ2; a = 0 ++ var m = xx.redAdd(xx).redIAdd(xx); ++ // MM = M^2 ++ var mm = m.redSqr(); ++ // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM ++ var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); ++ e = e.redIAdd(e); ++ e = e.redAdd(e).redIAdd(e); ++ e = e.redISub(mm); ++ // EE = E^2 ++ var ee = e.redSqr(); ++ // T = 16*YYYY ++ var t = yyyy.redIAdd(yyyy); ++ t = t.redIAdd(t); ++ t = t.redIAdd(t); ++ t = t.redIAdd(t); ++ // U = (M + E)^2 - MM - EE - T ++ var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); ++ // X3 = 4 * (X1 * EE - 4 * YY * U) ++ var yyu4 = yy.redMul(u); ++ yyu4 = yyu4.redIAdd(yyu4); ++ yyu4 = yyu4.redIAdd(yyu4); ++ var nx = this.x.redMul(ee).redISub(yyu4); ++ nx = nx.redIAdd(nx); ++ nx = nx.redIAdd(nx); ++ // Y3 = 8 * Y1 * (U * (T - U) - E * EE) ++ var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); ++ ny = ny.redIAdd(ny); ++ ny = ny.redIAdd(ny); ++ ny = ny.redIAdd(ny); ++ // Z3 = (Z1 + E)^2 - ZZ - EE ++ var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); ++ ++ return this.curve.jpoint(nx, ny, nz); ++}; ++ ++JPoint.prototype.mul = function mul(k, kbase) { ++ k = new BN(k, kbase); ++ ++ return this.curve._wnafMul(this, k); ++}; ++ ++JPoint.prototype.eq = function eq(p) { ++ if (p.type === 'affine') ++ return this.eq(p.toJ()); ++ ++ if (this === p) ++ return true; ++ ++ // x1 * z2^2 == x2 * z1^2 ++ var z2 = this.z.redSqr(); ++ var pz2 = p.z.redSqr(); ++ if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) ++ return false; ++ ++ // y1 * z2^3 == y2 * z1^3 ++ var z3 = z2.redMul(this.z); ++ var pz3 = pz2.redMul(p.z); ++ return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; ++}; ++ ++JPoint.prototype.eqXToP = function eqXToP(x) { ++ var zs = this.z.redSqr(); ++ var rx = x.toRed(this.curve.red).redMul(zs); ++ if (this.x.cmp(rx) === 0) ++ return true; ++ ++ var xc = x.clone(); ++ var t = this.curve.redN.redMul(zs); ++ for (;;) { ++ xc.iadd(this.curve.n); ++ if (xc.cmp(this.curve.p) >= 0) ++ return false; ++ ++ rx.redIAdd(t); ++ if (this.x.cmp(rx) === 0) ++ return true; ++ } ++}; ++ ++JPoint.prototype.inspect = function inspect() { ++ if (this.isInfinity()) ++ return ''; ++ return ''; ++}; ++ ++JPoint.prototype.isInfinity = function isInfinity() { ++ // XXX This code assumes that zero is always zero in red ++ return this.z.cmpn(0) === 0; ++}; +diff --git a/node_modules/elliptic/lib/elliptic/curves.js b/node_modules/elliptic/lib/elliptic/curves.js +new file mode 100644 +index 0000000000000000000000000000000000000000..6c36e03750b9774539c1c72820c40d08ebfe61a2 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/curves.js +@@ -0,0 +1,206 @@ ++'use strict'; ++ ++var curves = exports; ++ ++var hash = require('hash.js'); ++var curve = require('./curve'); ++var utils = require('./utils'); ++ ++var assert = utils.assert; ++ ++function PresetCurve(options) { ++ if (options.type === 'short') ++ this.curve = new curve.short(options); ++ else if (options.type === 'edwards') ++ this.curve = new curve.edwards(options); ++ else ++ this.curve = new curve.mont(options); ++ this.g = this.curve.g; ++ this.n = this.curve.n; ++ this.hash = options.hash; ++ ++ assert(this.g.validate(), 'Invalid curve'); ++ assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); ++} ++curves.PresetCurve = PresetCurve; ++ ++function defineCurve(name, options) { ++ Object.defineProperty(curves, name, { ++ configurable: true, ++ enumerable: true, ++ get: function() { ++ var curve = new PresetCurve(options); ++ Object.defineProperty(curves, name, { ++ configurable: true, ++ enumerable: true, ++ value: curve, ++ }); ++ return curve; ++ }, ++ }); ++} ++ ++defineCurve('p192', { ++ type: 'short', ++ prime: 'p192', ++ p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', ++ a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', ++ b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', ++ n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', ++ hash: hash.sha256, ++ gRed: false, ++ g: [ ++ '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', ++ '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811', ++ ], ++}); ++ ++defineCurve('p224', { ++ type: 'short', ++ prime: 'p224', ++ p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', ++ a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', ++ b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', ++ n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', ++ hash: hash.sha256, ++ gRed: false, ++ g: [ ++ 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', ++ 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34', ++ ], ++}); ++ ++defineCurve('p256', { ++ type: 'short', ++ prime: null, ++ p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', ++ a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', ++ b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', ++ n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', ++ hash: hash.sha256, ++ gRed: false, ++ g: [ ++ '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', ++ '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5', ++ ], ++}); ++ ++defineCurve('p384', { ++ type: 'short', ++ prime: null, ++ p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'fffffffe ffffffff 00000000 00000000 ffffffff', ++ a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'fffffffe ffffffff 00000000 00000000 fffffffc', ++ b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + ++ '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', ++ n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + ++ 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', ++ hash: hash.sha384, ++ gRed: false, ++ g: [ ++ 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + ++ '5502f25d bf55296c 3a545e38 72760ab7', ++ '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + ++ '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f', ++ ], ++}); ++ ++defineCurve('p521', { ++ type: 'short', ++ prime: null, ++ p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'ffffffff ffffffff ffffffff ffffffff ffffffff', ++ a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'ffffffff ffffffff ffffffff ffffffff fffffffc', ++ b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + ++ '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + ++ '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', ++ n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + ++ 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + ++ 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', ++ hash: hash.sha512, ++ gRed: false, ++ g: [ ++ '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + ++ '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + ++ 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', ++ '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + ++ '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + ++ '3fad0761 353c7086 a272c240 88be9476 9fd16650', ++ ], ++}); ++ ++defineCurve('curve25519', { ++ type: 'mont', ++ prime: 'p25519', ++ p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', ++ a: '76d06', ++ b: '1', ++ n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', ++ hash: hash.sha256, ++ gRed: false, ++ g: [ ++ '9', ++ ], ++}); ++ ++defineCurve('ed25519', { ++ type: 'edwards', ++ prime: 'p25519', ++ p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', ++ a: '-1', ++ c: '1', ++ // -121665 * (121666^(-1)) (mod P) ++ d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', ++ n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', ++ hash: hash.sha256, ++ gRed: false, ++ g: [ ++ '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', ++ ++ // 4/5 ++ '6666666666666666666666666666666666666666666666666666666666666658', ++ ], ++}); ++ ++var pre; ++try { ++ pre = require('./precomputed/secp256k1'); ++} catch (e) { ++ pre = undefined; ++} ++ ++defineCurve('secp256k1', { ++ type: 'short', ++ prime: 'k256', ++ p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', ++ a: '0', ++ b: '7', ++ n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', ++ h: '1', ++ hash: hash.sha256, ++ ++ // Precomputed endomorphism ++ beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', ++ lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', ++ basis: [ ++ { ++ a: '3086d221a7d46bcde86c90e49284eb15', ++ b: '-e4437ed6010e88286f547fa90abfe4c3', ++ }, ++ { ++ a: '114ca50f7a8e2f3f657c1108d9d44cfd8', ++ b: '3086d221a7d46bcde86c90e49284eb15', ++ }, ++ ], ++ ++ gRed: false, ++ g: [ ++ '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', ++ '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', ++ pre, ++ ], ++}); +diff --git a/node_modules/elliptic/lib/elliptic/ec/index.js b/node_modules/elliptic/lib/elliptic/ec/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..b382b62923d34979a919b6ff857277b3c6a2d97e +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/ec/index.js +@@ -0,0 +1,265 @@ ++'use strict'; ++ ++var BN = require('bn.js'); ++var HmacDRBG = require('hmac-drbg'); ++var utils = require('../utils'); ++var curves = require('../curves'); ++var rand = require('brorand'); ++var assert = utils.assert; ++ ++var KeyPair = require('./key'); ++var Signature = require('./signature'); ++ ++function EC(options) { ++ if (!(this instanceof EC)) ++ return new EC(options); ++ ++ // Shortcut `elliptic.ec(curve-name)` ++ if (typeof options === 'string') { ++ assert(Object.prototype.hasOwnProperty.call(curves, options), ++ 'Unknown curve ' + options); ++ ++ options = curves[options]; ++ } ++ ++ // Shortcut for `elliptic.ec(elliptic.curves.curveName)` ++ if (options instanceof curves.PresetCurve) ++ options = { curve: options }; ++ ++ this.curve = options.curve.curve; ++ this.n = this.curve.n; ++ this.nh = this.n.ushrn(1); ++ this.g = this.curve.g; ++ ++ // Point on curve ++ this.g = options.curve.g; ++ this.g.precompute(options.curve.n.bitLength() + 1); ++ ++ // Hash for function for DRBG ++ this.hash = options.hash || options.curve.hash; ++} ++module.exports = EC; ++ ++EC.prototype.keyPair = function keyPair(options) { ++ return new KeyPair(this, options); ++}; ++ ++EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { ++ return KeyPair.fromPrivate(this, priv, enc); ++}; ++ ++EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { ++ return KeyPair.fromPublic(this, pub, enc); ++}; ++ ++EC.prototype.genKeyPair = function genKeyPair(options) { ++ if (!options) ++ options = {}; ++ ++ // Instantiate Hmac_DRBG ++ var drbg = new HmacDRBG({ ++ hash: this.hash, ++ pers: options.pers, ++ persEnc: options.persEnc || 'utf8', ++ entropy: options.entropy || rand(this.hash.hmacStrength), ++ entropyEnc: options.entropy && options.entropyEnc || 'utf8', ++ nonce: this.n.toArray(), ++ }); ++ ++ var bytes = this.n.byteLength(); ++ var ns2 = this.n.sub(new BN(2)); ++ for (;;) { ++ var priv = new BN(drbg.generate(bytes)); ++ if (priv.cmp(ns2) > 0) ++ continue; ++ ++ priv.iaddn(1); ++ return this.keyFromPrivate(priv); ++ } ++}; ++ ++EC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) { ++ var byteLength; ++ if (BN.isBN(msg) || typeof msg === 'number') { ++ msg = new BN(msg, 16); ++ byteLength = msg.byteLength(); ++ } else if (typeof msg === 'object') { ++ // BN assumes an array-like input and asserts length ++ byteLength = msg.length; ++ msg = new BN(msg, 16); ++ } else { ++ // BN converts the value to string ++ var str = msg.toString(); ++ // HEX encoding ++ byteLength = (str.length + 1) >>> 1; ++ msg = new BN(str, 16); ++ } ++ // Allow overriding ++ if (typeof bitLength !== 'number') { ++ bitLength = byteLength * 8; ++ } ++ var delta = bitLength - this.n.bitLength(); ++ if (delta > 0) ++ msg = msg.ushrn(delta); ++ if (!truncOnly && msg.cmp(this.n) >= 0) ++ return msg.sub(this.n); ++ else ++ return msg; ++}; ++ ++EC.prototype.sign = function sign(msg, key, enc, options) { ++ if (typeof enc === 'object') { ++ options = enc; ++ enc = null; ++ } ++ if (!options) ++ options = {}; ++ ++ key = this.keyFromPrivate(key, enc); ++ msg = this._truncateToN(msg, false, options.msgBitLength); ++ ++ // Zero-extend key to provide enough entropy ++ var bytes = this.n.byteLength(); ++ var bkey = key.getPrivate().toArray('be', bytes); ++ ++ // Zero-extend nonce to have the same byte size as N ++ var nonce = msg.toArray('be', bytes); ++ ++ // Instantiate Hmac_DRBG ++ var drbg = new HmacDRBG({ ++ hash: this.hash, ++ entropy: bkey, ++ nonce: nonce, ++ pers: options.pers, ++ persEnc: options.persEnc || 'utf8', ++ }); ++ ++ // Number of bytes to generate ++ var ns1 = this.n.sub(new BN(1)); ++ ++ for (var iter = 0; ; iter++) { ++ var k = options.k ? ++ options.k(iter) : ++ new BN(drbg.generate(this.n.byteLength())); ++ k = this._truncateToN(k, true); ++ if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) ++ continue; ++ ++ var kp = this.g.mul(k); ++ if (kp.isInfinity()) ++ continue; ++ ++ var kpX = kp.getX(); ++ var r = kpX.umod(this.n); ++ if (r.cmpn(0) === 0) ++ continue; ++ ++ var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); ++ s = s.umod(this.n); ++ if (s.cmpn(0) === 0) ++ continue; ++ ++ var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | ++ (kpX.cmp(r) !== 0 ? 2 : 0); ++ ++ // Use complement of `s`, if it is > `n / 2` ++ if (options.canonical && s.cmp(this.nh) > 0) { ++ s = this.n.sub(s); ++ recoveryParam ^= 1; ++ } ++ ++ return new Signature({ r: r, s: s, recoveryParam: recoveryParam }); ++ } ++}; ++ ++EC.prototype.verify = function verify(msg, signature, key, enc, options) { ++ if (!options) ++ options = {}; ++ ++ msg = this._truncateToN(msg, false, options.msgBitLength); ++ key = this.keyFromPublic(key, enc); ++ signature = new Signature(signature, 'hex'); ++ ++ // Perform primitive values validation ++ var r = signature.r; ++ var s = signature.s; ++ if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) ++ return false; ++ if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) ++ return false; ++ ++ // Validate signature ++ var sinv = s.invm(this.n); ++ var u1 = sinv.mul(msg).umod(this.n); ++ var u2 = sinv.mul(r).umod(this.n); ++ var p; ++ ++ if (!this.curve._maxwellTrick) { ++ p = this.g.mulAdd(u1, key.getPublic(), u2); ++ if (p.isInfinity()) ++ return false; ++ ++ return p.getX().umod(this.n).cmp(r) === 0; ++ } ++ ++ // NOTE: Greg Maxwell's trick, inspired by: ++ // https://git.io/vad3K ++ ++ p = this.g.jmulAdd(u1, key.getPublic(), u2); ++ if (p.isInfinity()) ++ return false; ++ ++ // Compare `p.x` of Jacobian point with `r`, ++ // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the ++ // inverse of `p.z^2` ++ return p.eqXToP(r); ++}; ++ ++EC.prototype.recoverPubKey = function(msg, signature, j, enc) { ++ assert((3 & j) === j, 'The recovery param is more than two bits'); ++ signature = new Signature(signature, enc); ++ ++ var n = this.n; ++ var e = new BN(msg); ++ var r = signature.r; ++ var s = signature.s; ++ ++ // A set LSB signifies that the y-coordinate is odd ++ var isYOdd = j & 1; ++ var isSecondKey = j >> 1; ++ if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) ++ throw new Error('Unable to find sencond key candinate'); ++ ++ // 1.1. Let x = r + jn. ++ if (isSecondKey) ++ r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); ++ else ++ r = this.curve.pointFromX(r, isYOdd); ++ ++ var rInv = signature.r.invm(n); ++ var s1 = n.sub(e).mul(rInv).umod(n); ++ var s2 = s.mul(rInv).umod(n); ++ ++ // 1.6.1 Compute Q = r^-1 (sR - eG) ++ // Q = r^-1 (sR + -eG) ++ return this.g.mulAdd(s1, r, s2); ++}; ++ ++EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { ++ signature = new Signature(signature, enc); ++ if (signature.recoveryParam !== null) ++ return signature.recoveryParam; ++ ++ for (var i = 0; i < 4; i++) { ++ var Qprime; ++ try { ++ Qprime = this.recoverPubKey(e, signature, i); ++ } catch (e) { ++ continue; ++ } ++ ++ if (Qprime.eq(Q)) ++ return i; ++ } ++ throw new Error('Unable to find valid recovery factor'); ++}; +diff --git a/node_modules/elliptic/lib/elliptic/ec/key.js b/node_modules/elliptic/lib/elliptic/ec/key.js +new file mode 100644 +index 0000000000000000000000000000000000000000..595cfb2f52406f9c3e1061d7440ff1f0a4054a5d +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/ec/key.js +@@ -0,0 +1,121 @@ ++'use strict'; ++ ++var BN = require('bn.js'); ++var utils = require('../utils'); ++var assert = utils.assert; ++ ++function KeyPair(ec, options) { ++ this.ec = ec; ++ this.priv = null; ++ this.pub = null; ++ ++ // KeyPair(ec, { priv: ..., pub: ... }) ++ if (options.priv) ++ this._importPrivate(options.priv, options.privEnc); ++ if (options.pub) ++ this._importPublic(options.pub, options.pubEnc); ++} ++module.exports = KeyPair; ++ ++KeyPair.fromPublic = function fromPublic(ec, pub, enc) { ++ if (pub instanceof KeyPair) ++ return pub; ++ ++ return new KeyPair(ec, { ++ pub: pub, ++ pubEnc: enc, ++ }); ++}; ++ ++KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { ++ if (priv instanceof KeyPair) ++ return priv; ++ ++ return new KeyPair(ec, { ++ priv: priv, ++ privEnc: enc, ++ }); ++}; ++ ++KeyPair.prototype.validate = function validate() { ++ var pub = this.getPublic(); ++ ++ if (pub.isInfinity()) ++ return { result: false, reason: 'Invalid public key' }; ++ if (!pub.validate()) ++ return { result: false, reason: 'Public key is not a point' }; ++ if (!pub.mul(this.ec.curve.n).isInfinity()) ++ return { result: false, reason: 'Public key * N != O' }; ++ ++ return { result: true, reason: null }; ++}; ++ ++KeyPair.prototype.getPublic = function getPublic(compact, enc) { ++ // compact is optional argument ++ if (typeof compact === 'string') { ++ enc = compact; ++ compact = null; ++ } ++ ++ if (!this.pub) ++ this.pub = this.ec.g.mul(this.priv); ++ ++ if (!enc) ++ return this.pub; ++ ++ return this.pub.encode(enc, compact); ++}; ++ ++KeyPair.prototype.getPrivate = function getPrivate(enc) { ++ if (enc === 'hex') ++ return this.priv.toString(16, 2); ++ else ++ return this.priv; ++}; ++ ++KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { ++ this.priv = new BN(key, enc || 16); ++ ++ // Ensure that the priv won't be bigger than n, otherwise we may fail ++ // in fixed multiplication method ++ this.priv = this.priv.umod(this.ec.curve.n); ++}; ++ ++KeyPair.prototype._importPublic = function _importPublic(key, enc) { ++ if (key.x || key.y) { ++ // Montgomery points only have an `x` coordinate. ++ // Weierstrass/Edwards points on the other hand have both `x` and ++ // `y` coordinates. ++ if (this.ec.curve.type === 'mont') { ++ assert(key.x, 'Need x coordinate'); ++ } else if (this.ec.curve.type === 'short' || ++ this.ec.curve.type === 'edwards') { ++ assert(key.x && key.y, 'Need both x and y coordinate'); ++ } ++ this.pub = this.ec.curve.point(key.x, key.y); ++ return; ++ } ++ this.pub = this.ec.curve.decodePoint(key, enc); ++}; ++ ++// ECDH ++KeyPair.prototype.derive = function derive(pub) { ++ if(!pub.validate()) { ++ assert(pub.validate(), 'public point not validated'); ++ } ++ return pub.mul(this.priv).getX(); ++}; ++ ++// ECDSA ++KeyPair.prototype.sign = function sign(msg, enc, options) { ++ return this.ec.sign(msg, this, enc, options); ++}; ++ ++KeyPair.prototype.verify = function verify(msg, signature, options) { ++ return this.ec.verify(msg, signature, this, undefined, options); ++}; ++ ++KeyPair.prototype.inspect = function inspect() { ++ return ''; ++}; +diff --git a/node_modules/elliptic/lib/elliptic/ec/signature.js b/node_modules/elliptic/lib/elliptic/ec/signature.js +new file mode 100644 +index 0000000000000000000000000000000000000000..48e3a26fb33f3653fa3d554864e3b1b24f66c3cc +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/ec/signature.js +@@ -0,0 +1,176 @@ ++'use strict'; ++ ++var BN = require('bn.js'); ++ ++var utils = require('../utils'); ++var assert = utils.assert; ++ ++function Signature(options, enc) { ++ if (options instanceof Signature) ++ return options; ++ ++ if (this._importDER(options, enc)) ++ return; ++ ++ assert(options.r && options.s, 'Signature without r or s'); ++ this.r = new BN(options.r, 16); ++ this.s = new BN(options.s, 16); ++ if (options.recoveryParam === undefined) ++ this.recoveryParam = null; ++ else ++ this.recoveryParam = options.recoveryParam; ++} ++module.exports = Signature; ++ ++function Position() { ++ this.place = 0; ++} ++ ++function getLength(buf, p) { ++ var initial = buf[p.place++]; ++ if (!(initial & 0x80)) { ++ return initial; ++ } ++ var octetLen = initial & 0xf; ++ ++ // Indefinite length or overflow ++ if (octetLen === 0 || octetLen > 4) { ++ return false; ++ } ++ ++ if(buf[p.place] === 0x00) { ++ return false; ++ } ++ ++ var val = 0; ++ for (var i = 0, off = p.place; i < octetLen; i++, off++) { ++ val <<= 8; ++ val |= buf[off]; ++ val >>>= 0; ++ } ++ ++ // Leading zeroes ++ if (val <= 0x7f) { ++ return false; ++ } ++ ++ p.place = off; ++ return val; ++} ++ ++function rmPadding(buf) { ++ var i = 0; ++ var len = buf.length - 1; ++ while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { ++ i++; ++ } ++ if (i === 0) { ++ return buf; ++ } ++ return buf.slice(i); ++} ++ ++Signature.prototype._importDER = function _importDER(data, enc) { ++ data = utils.toArray(data, enc); ++ var p = new Position(); ++ if (data[p.place++] !== 0x30) { ++ return false; ++ } ++ var len = getLength(data, p); ++ if (len === false) { ++ return false; ++ } ++ if ((len + p.place) !== data.length) { ++ return false; ++ } ++ if (data[p.place++] !== 0x02) { ++ return false; ++ } ++ var rlen = getLength(data, p); ++ if (rlen === false) { ++ return false; ++ } ++ if ((data[p.place] & 128) !== 0) { ++ return false; ++ } ++ var r = data.slice(p.place, rlen + p.place); ++ p.place += rlen; ++ if (data[p.place++] !== 0x02) { ++ return false; ++ } ++ var slen = getLength(data, p); ++ if (slen === false) { ++ return false; ++ } ++ if (data.length !== slen + p.place) { ++ return false; ++ } ++ if ((data[p.place] & 128) !== 0) { ++ return false; ++ } ++ var s = data.slice(p.place, slen + p.place); ++ if (r[0] === 0) { ++ if (r[1] & 0x80) { ++ r = r.slice(1); ++ } else { ++ // Leading zeroes ++ return false; ++ } ++ } ++ if (s[0] === 0) { ++ if (s[1] & 0x80) { ++ s = s.slice(1); ++ } else { ++ // Leading zeroes ++ return false; ++ } ++ } ++ ++ this.r = new BN(r); ++ this.s = new BN(s); ++ this.recoveryParam = null; ++ ++ return true; ++}; ++ ++function constructLength(arr, len) { ++ if (len < 0x80) { ++ arr.push(len); ++ return; ++ } ++ var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); ++ arr.push(octets | 0x80); ++ while (--octets) { ++ arr.push((len >>> (octets << 3)) & 0xff); ++ } ++ arr.push(len); ++} ++ ++Signature.prototype.toDER = function toDER(enc) { ++ var r = this.r.toArray(); ++ var s = this.s.toArray(); ++ ++ // Pad values ++ if (r[0] & 0x80) ++ r = [ 0 ].concat(r); ++ // Pad values ++ if (s[0] & 0x80) ++ s = [ 0 ].concat(s); ++ ++ r = rmPadding(r); ++ s = rmPadding(s); ++ ++ while (!s[0] && !(s[1] & 0x80)) { ++ s = s.slice(1); ++ } ++ var arr = [ 0x02 ]; ++ constructLength(arr, r.length); ++ arr = arr.concat(r); ++ arr.push(0x02); ++ constructLength(arr, s.length); ++ var backHalf = arr.concat(s); ++ var res = [ 0x30 ]; ++ constructLength(res, backHalf.length); ++ res = res.concat(backHalf); ++ return utils.encode(res, enc); ++}; +diff --git a/node_modules/elliptic/lib/elliptic/eddsa/index.js b/node_modules/elliptic/lib/elliptic/eddsa/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..cb703a7c71286c5e506faf4c1c32b48691f20f85 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/eddsa/index.js +@@ -0,0 +1,121 @@ ++'use strict'; ++ ++var hash = require('hash.js'); ++var curves = require('../curves'); ++var utils = require('../utils'); ++var assert = utils.assert; ++var parseBytes = utils.parseBytes; ++var KeyPair = require('./key'); ++var Signature = require('./signature'); ++ ++function EDDSA(curve) { ++ assert(curve === 'ed25519', 'only tested with ed25519 so far'); ++ ++ if (!(this instanceof EDDSA)) ++ return new EDDSA(curve); ++ ++ curve = curves[curve].curve; ++ this.curve = curve; ++ this.g = curve.g; ++ this.g.precompute(curve.n.bitLength() + 1); ++ ++ this.pointClass = curve.point().constructor; ++ this.encodingLength = Math.ceil(curve.n.bitLength() / 8); ++ this.hash = hash.sha512; ++} ++ ++module.exports = EDDSA; ++ ++/** ++* @param {Array|String} message - message bytes ++* @param {Array|String|KeyPair} secret - secret bytes or a keypair ++* @returns {Signature} - signature ++*/ ++EDDSA.prototype.sign = function sign(message, secret) { ++ message = parseBytes(message); ++ var key = this.keyFromSecret(secret); ++ var r = this.hashInt(key.messagePrefix(), message); ++ var R = this.g.mul(r); ++ var Rencoded = this.encodePoint(R); ++ var s_ = this.hashInt(Rencoded, key.pubBytes(), message) ++ .mul(key.priv()); ++ var S = r.add(s_).umod(this.curve.n); ++ return this.makeSignature({ R: R, S: S, Rencoded: Rencoded }); ++}; ++ ++/** ++* @param {Array} message - message bytes ++* @param {Array|String|Signature} sig - sig bytes ++* @param {Array|String|Point|KeyPair} pub - public key ++* @returns {Boolean} - true if public key matches sig of message ++*/ ++EDDSA.prototype.verify = function verify(message, sig, pub) { ++ message = parseBytes(message); ++ sig = this.makeSignature(sig); ++ if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) { ++ return false; ++ } ++ var key = this.keyFromPublic(pub); ++ var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); ++ var SG = this.g.mul(sig.S()); ++ var RplusAh = sig.R().add(key.pub().mul(h)); ++ return RplusAh.eq(SG); ++}; ++ ++EDDSA.prototype.hashInt = function hashInt() { ++ var hash = this.hash(); ++ for (var i = 0; i < arguments.length; i++) ++ hash.update(arguments[i]); ++ return utils.intFromLE(hash.digest()).umod(this.curve.n); ++}; ++ ++EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { ++ return KeyPair.fromPublic(this, pub); ++}; ++ ++EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { ++ return KeyPair.fromSecret(this, secret); ++}; ++ ++EDDSA.prototype.makeSignature = function makeSignature(sig) { ++ if (sig instanceof Signature) ++ return sig; ++ return new Signature(this, sig); ++}; ++ ++/** ++* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 ++* ++* EDDSA defines methods for encoding and decoding points and integers. These are ++* helper convenience methods, that pass along to utility functions implied ++* parameters. ++* ++*/ ++EDDSA.prototype.encodePoint = function encodePoint(point) { ++ var enc = point.getY().toArray('le', this.encodingLength); ++ enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; ++ return enc; ++}; ++ ++EDDSA.prototype.decodePoint = function decodePoint(bytes) { ++ bytes = utils.parseBytes(bytes); ++ ++ var lastIx = bytes.length - 1; ++ var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); ++ var xIsOdd = (bytes[lastIx] & 0x80) !== 0; ++ ++ var y = utils.intFromLE(normed); ++ return this.curve.pointFromY(y, xIsOdd); ++}; ++ ++EDDSA.prototype.encodeInt = function encodeInt(num) { ++ return num.toArray('le', this.encodingLength); ++}; ++ ++EDDSA.prototype.decodeInt = function decodeInt(bytes) { ++ return utils.intFromLE(bytes); ++}; ++ ++EDDSA.prototype.isPoint = function isPoint(val) { ++ return val instanceof this.pointClass; ++}; +diff --git a/node_modules/elliptic/lib/elliptic/eddsa/key.js b/node_modules/elliptic/lib/elliptic/eddsa/key.js +new file mode 100644 +index 0000000000000000000000000000000000000000..a00028f82691efdfcbfbb14fdd7815e2e891ec71 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/eddsa/key.js +@@ -0,0 +1,95 @@ ++'use strict'; ++ ++var utils = require('../utils'); ++var assert = utils.assert; ++var parseBytes = utils.parseBytes; ++var cachedProperty = utils.cachedProperty; ++ ++/** ++* @param {EDDSA} eddsa - instance ++* @param {Object} params - public/private key parameters ++* ++* @param {Array} [params.secret] - secret seed bytes ++* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) ++* @param {Array} [params.pub] - public key point encoded as bytes ++* ++*/ ++function KeyPair(eddsa, params) { ++ this.eddsa = eddsa; ++ this._secret = parseBytes(params.secret); ++ if (eddsa.isPoint(params.pub)) ++ this._pub = params.pub; ++ else ++ this._pubBytes = parseBytes(params.pub); ++} ++ ++KeyPair.fromPublic = function fromPublic(eddsa, pub) { ++ if (pub instanceof KeyPair) ++ return pub; ++ return new KeyPair(eddsa, { pub: pub }); ++}; ++ ++KeyPair.fromSecret = function fromSecret(eddsa, secret) { ++ if (secret instanceof KeyPair) ++ return secret; ++ return new KeyPair(eddsa, { secret: secret }); ++}; ++ ++KeyPair.prototype.secret = function secret() { ++ return this._secret; ++}; ++ ++cachedProperty(KeyPair, 'pubBytes', function pubBytes() { ++ return this.eddsa.encodePoint(this.pub()); ++}); ++ ++cachedProperty(KeyPair, 'pub', function pub() { ++ if (this._pubBytes) ++ return this.eddsa.decodePoint(this._pubBytes); ++ return this.eddsa.g.mul(this.priv()); ++}); ++ ++cachedProperty(KeyPair, 'privBytes', function privBytes() { ++ var eddsa = this.eddsa; ++ var hash = this.hash(); ++ var lastIx = eddsa.encodingLength - 1; ++ ++ var a = hash.slice(0, eddsa.encodingLength); ++ a[0] &= 248; ++ a[lastIx] &= 127; ++ a[lastIx] |= 64; ++ ++ return a; ++}); ++ ++cachedProperty(KeyPair, 'priv', function priv() { ++ return this.eddsa.decodeInt(this.privBytes()); ++}); ++ ++cachedProperty(KeyPair, 'hash', function hash() { ++ return this.eddsa.hash().update(this.secret()).digest(); ++}); ++ ++cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { ++ return this.hash().slice(this.eddsa.encodingLength); ++}); ++ ++KeyPair.prototype.sign = function sign(message) { ++ assert(this._secret, 'KeyPair can only verify'); ++ return this.eddsa.sign(message, this); ++}; ++ ++KeyPair.prototype.verify = function verify(message, sig) { ++ return this.eddsa.verify(message, sig, this); ++}; ++ ++KeyPair.prototype.getSecret = function getSecret(enc) { ++ assert(this._secret, 'KeyPair is public only'); ++ return utils.encode(this.secret(), enc); ++}; ++ ++KeyPair.prototype.getPublic = function getPublic(enc) { ++ return utils.encode(this.pubBytes(), enc); ++}; ++ ++module.exports = KeyPair; +diff --git a/node_modules/elliptic/lib/elliptic/eddsa/signature.js b/node_modules/elliptic/lib/elliptic/eddsa/signature.js +new file mode 100644 +index 0000000000000000000000000000000000000000..b224ad1c0d200b9c595d72968254049c154d8dfe +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/eddsa/signature.js +@@ -0,0 +1,66 @@ ++'use strict'; ++ ++var BN = require('bn.js'); ++var utils = require('../utils'); ++var assert = utils.assert; ++var cachedProperty = utils.cachedProperty; ++var parseBytes = utils.parseBytes; ++ ++/** ++* @param {EDDSA} eddsa - eddsa instance ++* @param {Array|Object} sig - ++* @param {Array|Point} [sig.R] - R point as Point or bytes ++* @param {Array|bn} [sig.S] - S scalar as bn or bytes ++* @param {Array} [sig.Rencoded] - R point encoded ++* @param {Array} [sig.Sencoded] - S scalar encoded ++*/ ++function Signature(eddsa, sig) { ++ this.eddsa = eddsa; ++ ++ if (typeof sig !== 'object') ++ sig = parseBytes(sig); ++ ++ if (Array.isArray(sig)) { ++ assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size'); ++ sig = { ++ R: sig.slice(0, eddsa.encodingLength), ++ S: sig.slice(eddsa.encodingLength), ++ }; ++ } ++ ++ assert(sig.R && sig.S, 'Signature without R or S'); ++ ++ if (eddsa.isPoint(sig.R)) ++ this._R = sig.R; ++ if (sig.S instanceof BN) ++ this._S = sig.S; ++ ++ this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; ++ this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; ++} ++ ++cachedProperty(Signature, 'S', function S() { ++ return this.eddsa.decodeInt(this.Sencoded()); ++}); ++ ++cachedProperty(Signature, 'R', function R() { ++ return this.eddsa.decodePoint(this.Rencoded()); ++}); ++ ++cachedProperty(Signature, 'Rencoded', function Rencoded() { ++ return this.eddsa.encodePoint(this.R()); ++}); ++ ++cachedProperty(Signature, 'Sencoded', function Sencoded() { ++ return this.eddsa.encodeInt(this.S()); ++}); ++ ++Signature.prototype.toBytes = function toBytes() { ++ return this.Rencoded().concat(this.Sencoded()); ++}; ++ ++Signature.prototype.toHex = function toHex() { ++ return utils.encode(this.toBytes(), 'hex').toUpperCase(); ++}; ++ ++module.exports = Signature; +diff --git a/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js b/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js +new file mode 100644 +index 0000000000000000000000000000000000000000..01a7c4d2c4dae384f4ae7b0d7d64bb639335e88f +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js +@@ -0,0 +1,780 @@ ++module.exports = { ++ doubles: { ++ step: 4, ++ points: [ ++ [ ++ 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', ++ 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821', ++ ], ++ [ ++ '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', ++ '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf', ++ ], ++ [ ++ '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', ++ 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695', ++ ], ++ [ ++ '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', ++ '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9', ++ ], ++ [ ++ '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', ++ '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36', ++ ], ++ [ ++ '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', ++ '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f', ++ ], ++ [ ++ 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', ++ '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999', ++ ], ++ [ ++ '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', ++ 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09', ++ ], ++ [ ++ 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', ++ '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d', ++ ], ++ [ ++ 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', ++ 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088', ++ ], ++ [ ++ 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', ++ '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d', ++ ], ++ [ ++ '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', ++ '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8', ++ ], ++ [ ++ '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', ++ '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a', ++ ], ++ [ ++ '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', ++ '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453', ++ ], ++ [ ++ '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', ++ '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160', ++ ], ++ [ ++ '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', ++ '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0', ++ ], ++ [ ++ '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', ++ '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6', ++ ], ++ [ ++ '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', ++ '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589', ++ ], ++ [ ++ '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', ++ 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17', ++ ], ++ [ ++ 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', ++ '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda', ++ ], ++ [ ++ 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', ++ '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd', ++ ], ++ [ ++ '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', ++ '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2', ++ ], ++ [ ++ '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', ++ '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6', ++ ], ++ [ ++ 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', ++ '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f', ++ ], ++ [ ++ '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', ++ 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01', ++ ], ++ [ ++ 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', ++ '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3', ++ ], ++ [ ++ 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', ++ 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f', ++ ], ++ [ ++ 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', ++ '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7', ++ ], ++ [ ++ 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', ++ 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78', ++ ], ++ [ ++ 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', ++ '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1', ++ ], ++ [ ++ '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', ++ 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150', ++ ], ++ [ ++ '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', ++ '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82', ++ ], ++ [ ++ 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', ++ '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc', ++ ], ++ [ ++ '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', ++ 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b', ++ ], ++ [ ++ 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', ++ '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51', ++ ], ++ [ ++ 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', ++ '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45', ++ ], ++ [ ++ 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', ++ 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120', ++ ], ++ [ ++ '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', ++ '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84', ++ ], ++ [ ++ '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', ++ '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d', ++ ], ++ [ ++ '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', ++ 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d', ++ ], ++ [ ++ '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', ++ '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8', ++ ], ++ [ ++ 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', ++ '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8', ++ ], ++ [ ++ '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', ++ '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac', ++ ], ++ [ ++ '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', ++ 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f', ++ ], ++ [ ++ '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', ++ '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962', ++ ], ++ [ ++ 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', ++ '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907', ++ ], ++ [ ++ '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', ++ 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec', ++ ], ++ [ ++ 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', ++ 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d', ++ ], ++ [ ++ 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', ++ '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414', ++ ], ++ [ ++ '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', ++ 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd', ++ ], ++ [ ++ '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', ++ 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0', ++ ], ++ [ ++ 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', ++ '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811', ++ ], ++ [ ++ 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', ++ '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1', ++ ], ++ [ ++ 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', ++ '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c', ++ ], ++ [ ++ '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', ++ 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73', ++ ], ++ [ ++ '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', ++ '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd', ++ ], ++ [ ++ 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', ++ 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405', ++ ], ++ [ ++ '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', ++ 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589', ++ ], ++ [ ++ '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', ++ '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e', ++ ], ++ [ ++ '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', ++ '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27', ++ ], ++ [ ++ 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', ++ 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1', ++ ], ++ [ ++ '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', ++ '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482', ++ ], ++ [ ++ '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', ++ '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945', ++ ], ++ [ ++ 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', ++ '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573', ++ ], ++ [ ++ 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', ++ 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82', ++ ], ++ ], ++ }, ++ naf: { ++ wnd: 7, ++ points: [ ++ [ ++ 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', ++ '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672', ++ ], ++ [ ++ '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', ++ 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6', ++ ], ++ [ ++ '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', ++ '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da', ++ ], ++ [ ++ 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', ++ 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37', ++ ], ++ [ ++ '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', ++ 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b', ++ ], ++ [ ++ 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', ++ 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81', ++ ], ++ [ ++ 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', ++ '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58', ++ ], ++ [ ++ 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', ++ '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77', ++ ], ++ [ ++ '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', ++ '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a', ++ ], ++ [ ++ '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', ++ '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c', ++ ], ++ [ ++ '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', ++ '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67', ++ ], ++ [ ++ '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', ++ '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402', ++ ], ++ [ ++ 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', ++ 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55', ++ ], ++ [ ++ 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', ++ '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482', ++ ], ++ [ ++ '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', ++ 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82', ++ ], ++ [ ++ '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', ++ 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396', ++ ], ++ [ ++ '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', ++ '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49', ++ ], ++ [ ++ '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', ++ '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf', ++ ], ++ [ ++ '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', ++ '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a', ++ ], ++ [ ++ '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', ++ 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7', ++ ], ++ [ ++ 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', ++ 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933', ++ ], ++ [ ++ '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', ++ '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a', ++ ], ++ [ ++ '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', ++ '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6', ++ ], ++ [ ++ 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', ++ 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37', ++ ], ++ [ ++ '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', ++ '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e', ++ ], ++ [ ++ 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', ++ 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6', ++ ], ++ [ ++ 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', ++ 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476', ++ ], ++ [ ++ '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', ++ '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40', ++ ], ++ [ ++ '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', ++ '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61', ++ ], ++ [ ++ '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', ++ '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683', ++ ], ++ [ ++ 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', ++ '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5', ++ ], ++ [ ++ '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', ++ '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b', ++ ], ++ [ ++ 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', ++ '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417', ++ ], ++ [ ++ '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', ++ 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868', ++ ], ++ [ ++ '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', ++ 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a', ++ ], ++ [ ++ 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', ++ 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6', ++ ], ++ [ ++ '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', ++ '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996', ++ ], ++ [ ++ '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', ++ 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e', ++ ], ++ [ ++ 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', ++ 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d', ++ ], ++ [ ++ '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', ++ '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2', ++ ], ++ [ ++ '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', ++ 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e', ++ ], ++ [ ++ '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', ++ '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437', ++ ], ++ [ ++ '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', ++ 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311', ++ ], ++ [ ++ 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', ++ '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4', ++ ], ++ [ ++ '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', ++ '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575', ++ ], ++ [ ++ '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', ++ 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d', ++ ], ++ [ ++ '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', ++ 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d', ++ ], ++ [ ++ 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', ++ 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629', ++ ], ++ [ ++ 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', ++ 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06', ++ ], ++ [ ++ '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', ++ '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374', ++ ], ++ [ ++ '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', ++ '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee', ++ ], ++ [ ++ 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', ++ '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1', ++ ], ++ [ ++ 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', ++ 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b', ++ ], ++ [ ++ '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', ++ '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661', ++ ], ++ [ ++ '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', ++ '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6', ++ ], ++ [ ++ 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', ++ '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e', ++ ], ++ [ ++ '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', ++ '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d', ++ ], ++ [ ++ 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', ++ 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc', ++ ], ++ [ ++ '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', ++ 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4', ++ ], ++ [ ++ '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', ++ '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c', ++ ], ++ [ ++ 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', ++ '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b', ++ ], ++ [ ++ 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', ++ '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913', ++ ], ++ [ ++ '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', ++ '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154', ++ ], ++ [ ++ '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', ++ '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865', ++ ], ++ [ ++ '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', ++ 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc', ++ ], ++ [ ++ '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', ++ 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224', ++ ], ++ [ ++ '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', ++ '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e', ++ ], ++ [ ++ '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', ++ '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6', ++ ], ++ [ ++ '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', ++ '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511', ++ ], ++ [ ++ '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', ++ 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b', ++ ], ++ [ ++ 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', ++ 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2', ++ ], ++ [ ++ '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', ++ 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c', ++ ], ++ [ ++ 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', ++ '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3', ++ ], ++ [ ++ 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', ++ '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d', ++ ], ++ [ ++ 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', ++ '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700', ++ ], ++ [ ++ 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', ++ '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4', ++ ], ++ [ ++ '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', ++ 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196', ++ ], ++ [ ++ '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', ++ '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4', ++ ], ++ [ ++ '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', ++ 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257', ++ ], ++ [ ++ 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', ++ 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13', ++ ], ++ [ ++ 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', ++ '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096', ++ ], ++ [ ++ 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', ++ 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38', ++ ], ++ [ ++ 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', ++ '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f', ++ ], ++ [ ++ '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', ++ '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448', ++ ], ++ [ ++ 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', ++ '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a', ++ ], ++ [ ++ 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', ++ '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4', ++ ], ++ [ ++ '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', ++ '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437', ++ ], ++ [ ++ '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', ++ 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7', ++ ], ++ [ ++ 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', ++ '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d', ++ ], ++ [ ++ 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', ++ '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a', ++ ], ++ [ ++ 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', ++ '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54', ++ ], ++ [ ++ '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', ++ '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77', ++ ], ++ [ ++ 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', ++ 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517', ++ ], ++ [ ++ '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', ++ 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10', ++ ], ++ [ ++ 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', ++ 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125', ++ ], ++ [ ++ 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', ++ '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e', ++ ], ++ [ ++ '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', ++ 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1', ++ ], ++ [ ++ 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', ++ '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2', ++ ], ++ [ ++ 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', ++ '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423', ++ ], ++ [ ++ 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', ++ '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8', ++ ], ++ [ ++ '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', ++ 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758', ++ ], ++ [ ++ '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', ++ 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375', ++ ], ++ [ ++ 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', ++ '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d', ++ ], ++ [ ++ '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', ++ 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec', ++ ], ++ [ ++ '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', ++ '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0', ++ ], ++ [ ++ '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', ++ 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c', ++ ], ++ [ ++ 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', ++ 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4', ++ ], ++ [ ++ '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', ++ 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f', ++ ], ++ [ ++ '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', ++ '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649', ++ ], ++ [ ++ '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', ++ 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826', ++ ], ++ [ ++ '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', ++ '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5', ++ ], ++ [ ++ 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', ++ 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87', ++ ], ++ [ ++ '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', ++ '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b', ++ ], ++ [ ++ 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', ++ '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc', ++ ], ++ [ ++ '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', ++ '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c', ++ ], ++ [ ++ 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', ++ 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f', ++ ], ++ [ ++ 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', ++ '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a', ++ ], ++ [ ++ 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', ++ 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46', ++ ], ++ [ ++ '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', ++ 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f', ++ ], ++ [ ++ '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', ++ '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03', ++ ], ++ [ ++ '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', ++ 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08', ++ ], ++ [ ++ '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', ++ '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8', ++ ], ++ [ ++ '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', ++ '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373', ++ ], ++ [ ++ '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', ++ 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3', ++ ], ++ [ ++ '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', ++ '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8', ++ ], ++ [ ++ '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', ++ '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1', ++ ], ++ [ ++ '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', ++ '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9', ++ ], ++ ], ++ }, ++}; +diff --git a/node_modules/elliptic/lib/elliptic/utils.js b/node_modules/elliptic/lib/elliptic/utils.js +new file mode 100644 +index 0000000000000000000000000000000000000000..b3ef2d2fb3f9bd7c3871cce70378771aa90c7fff +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic/utils.js +@@ -0,0 +1,122 @@ ++'use strict'; ++ ++var utils = exports; ++var BN = require('bn.js'); ++var minAssert = require('minimalistic-assert'); ++var minUtils = require('minimalistic-crypto-utils'); ++ ++utils.assert = minAssert; ++utils.toArray = minUtils.toArray; ++utils.zero2 = minUtils.zero2; ++utils.toHex = minUtils.toHex; ++utils.encode = minUtils.encode; ++ ++// Represent num in a w-NAF form ++function getNAF(num, w, bits) { ++ var naf = new Array(Math.max(num.bitLength(), bits) + 1); ++ var i; ++ for (i = 0; i < naf.length; i += 1) { ++ naf[i] = 0; ++ } ++ ++ var ws = 1 << (w + 1); ++ var k = num.clone(); ++ ++ for (i = 0; i < naf.length; i++) { ++ var z; ++ var mod = k.andln(ws - 1); ++ if (k.isOdd()) { ++ if (mod > (ws >> 1) - 1) ++ z = (ws >> 1) - mod; ++ else ++ z = mod; ++ k.isubn(z); ++ } else { ++ z = 0; ++ } ++ ++ naf[i] = z; ++ k.iushrn(1); ++ } ++ ++ return naf; ++} ++utils.getNAF = getNAF; ++ ++// Represent k1, k2 in a Joint Sparse Form ++function getJSF(k1, k2) { ++ var jsf = [ ++ [], ++ [], ++ ]; ++ ++ k1 = k1.clone(); ++ k2 = k2.clone(); ++ var d1 = 0; ++ var d2 = 0; ++ var m8; ++ while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { ++ // First phase ++ var m14 = (k1.andln(3) + d1) & 3; ++ var m24 = (k2.andln(3) + d2) & 3; ++ if (m14 === 3) ++ m14 = -1; ++ if (m24 === 3) ++ m24 = -1; ++ var u1; ++ if ((m14 & 1) === 0) { ++ u1 = 0; ++ } else { ++ m8 = (k1.andln(7) + d1) & 7; ++ if ((m8 === 3 || m8 === 5) && m24 === 2) ++ u1 = -m14; ++ else ++ u1 = m14; ++ } ++ jsf[0].push(u1); ++ ++ var u2; ++ if ((m24 & 1) === 0) { ++ u2 = 0; ++ } else { ++ m8 = (k2.andln(7) + d2) & 7; ++ if ((m8 === 3 || m8 === 5) && m14 === 2) ++ u2 = -m24; ++ else ++ u2 = m24; ++ } ++ jsf[1].push(u2); ++ ++ // Second phase ++ if (2 * d1 === u1 + 1) ++ d1 = 1 - d1; ++ if (2 * d2 === u2 + 1) ++ d2 = 1 - d2; ++ k1.iushrn(1); ++ k2.iushrn(1); ++ } ++ ++ return jsf; ++} ++utils.getJSF = getJSF; ++ ++function cachedProperty(obj, name, computer) { ++ var key = '_' + name; ++ obj.prototype[name] = function cachedProperty() { ++ return this[key] !== undefined ? this[key] : ++ this[key] = computer.call(this); ++ }; ++} ++utils.cachedProperty = cachedProperty; ++ ++function parseBytes(bytes) { ++ return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : ++ bytes; ++} ++utils.parseBytes = parseBytes; ++ ++function intFromLE(bytes) { ++ return new BN(bytes, 'hex', 'le'); ++} ++utils.intFromLE = intFromLE; ++ +diff --git a/node_modules/elliptic/lib/elliptic.js b/node_modules/elliptic/lib/elliptic.js +new file mode 100644 +index 0000000000000000000000000000000000000000..dfe2fe7d16ce4259f5d6fcda4d53cfd18ab9d802 +--- /dev/null ++++ b/node_modules/elliptic/lib/elliptic.js +@@ -0,0 +1,13 @@ ++'use strict'; ++ ++var elliptic = exports; ++ ++elliptic.version = require('../package.json').version; ++elliptic.utils = require('./elliptic/utils'); ++elliptic.rand = require('brorand'); ++elliptic.curve = require('./elliptic/curve'); ++elliptic.curves = require('./elliptic/curves'); ++ ++// Protocols ++elliptic.ec = require('./elliptic/ec'); ++elliptic.eddsa = require('./elliptic/eddsa'); +diff --git a/node_modules/elliptic/package.json b/node_modules/elliptic/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..c486d275602d6245fe2b6b5e119af9f9208728d2 +--- /dev/null ++++ b/node_modules/elliptic/package.json +@@ -0,0 +1,86 @@ ++{ ++ "name": "elliptic", ++ "version": "6.6.0", ++ "description": "EC cryptography", ++ "main": "lib/elliptic.js", ++ "files": [ ++ "lib" ++ ], ++ "scripts": { ++ "lint": "eslint lib test", ++ "lint:fix": "npm run lint -- --fix", ++ "unit": "istanbul test _mocha --reporter=spec test/index.js", ++ "test": "npm run lint && npm run unit", ++ "version": "grunt dist && git add dist/" ++ }, ++ "repository": { ++ "type": "git", ++ "url": "git@github.com:indutny/elliptic" ++ }, ++ "keywords": [ ++ "EC", ++ "Elliptic", ++ "curve", ++ "Cryptography" ++ ], ++ "author": "Fedor Indutny ", ++ "license": "MIT", ++ "bugs": { ++ "url": "https://github.com/indutny/elliptic/issues" ++ }, ++ "homepage": "https://github.com/indutny/elliptic", ++ "devDependencies": { ++ "brfs": "^2.0.2", ++ "coveralls": "^3.1.0", ++ "eslint": "^7.6.0", ++ "grunt": "^1.2.1", ++ "grunt-browserify": "^5.3.0", ++ "grunt-cli": "^1.3.2", ++ "grunt-contrib-connect": "^3.0.0", ++ "grunt-contrib-copy": "^1.0.0", ++ "grunt-contrib-uglify": "^5.0.0", ++ "grunt-mocha-istanbul": "^5.0.2", ++ "grunt-saucelabs": "^9.0.1", ++ "istanbul": "^0.4.5", ++ "mocha": "^8.0.1" ++ }, ++ "dependencies": { ++ "bn.js": "^4.11.9", ++ "brorand": "^1.1.0", ++ "hash.js": "^1.0.0", ++ "hmac-drbg": "^1.0.1", ++ "inherits": "^2.0.4", ++ "minimalistic-assert": "^1.0.1", ++ "minimalistic-crypto-utils": "^1.0.1" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/README.md b/node_modules/uint8arrays/README.md +new file mode 100644 +index 0000000000000000000000000000000000000000..4bc4398f9f4f87fd5a3a190fa7ff61dd7b88b080 +--- /dev/null ++++ b/node_modules/uint8arrays/README.md +@@ -0,0 +1,158 @@ ++# Uint8Arrays ++ ++Some utility functions to make dealing with `Uint8Array`s more pleasant. ++ ++- [API](#api) ++ - [alloc(size)](#allocsize) ++ - [Example](#example) ++ - [allocUnsafe(size)](#allocunsafesize) ++ - [Example](#example-1) ++ - [compare(a, b)](#comparea-b) ++ - [Example](#example-2) ++ - [concat(arrays, [length])](#concatarrays-length) ++ - [Example](#example-3) ++ - [equals(a, b)](#equalsa-b) ++ - [Example](#example-4) ++ - [fromString(string, encoding = 'utf8')](#fromstringstring-encoding--utf8) ++ - [Example](#example-5) ++ - [toString(array, encoding = 'utf8')](#tostringarray-encoding--utf8) ++ - [Example](#example-6) ++ - [xor(a, b)](#xora-b) ++ - [Example](#example-7) ++ ++## API ++ ++### alloc(size) ++ ++Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. ++ ++#### Example ++ ++```js ++import { alloc } from 'uint8arrays/alloc` ++ ++const buf = alloc(100) ++``` ++ ++### allocUnsafe(size) ++ ++Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. ++ ++On platforms that support it, memory referenced by the returned `Uint8Array` will not be initialized. ++ ++#### Example ++ ++```js ++import { allocUnsafe } from 'uint8arrays/alloc` ++ ++const buf = allocUnsafe(100) ++``` ++ ++### compare(a, b) ++ ++Compare two `Uint8Arrays` ++ ++#### Example ++ ++```js ++import { compare } from 'uint8arrays/compare' ++ ++const arrays = [ ++ Uint8Array.from([3, 4, 5]), ++ Uint8Array.from([0, 1, 2]) ++] ++ ++const sorted = arrays.sort(compare) ++ ++console.info(sorted) ++// [ ++// Uint8Array[0, 1, 2] ++// Uint8Array[3, 4, 5] ++// ] ++``` ++ ++### concat(arrays, [length]) ++ ++Concatenate one or more array-likes and return a `Uint8Array` with their contents. ++ ++If you know the length of the arrays, pass it as a second parameter, otherwise it will be calculated by traversing the list of arrays. ++ ++#### Example ++ ++```js ++import { concat } from 'uint8arrays/concat' ++ ++const arrays = [ ++ Uint8Array.from([0, 1, 2]), ++ Uint8Array.from([3, 4, 5]) ++] ++ ++const all = concat(arrays, 6) ++ ++console.info(all) ++// Uint8Array[0, 1, 2, 3, 4, 5] ++``` ++ ++### equals(a, b) ++ ++Returns true if the two arrays are the same array or if they have the same length and contents. ++ ++#### Example ++ ++```js ++import { equals } from 'uint8arrays/equals' ++ ++const a = Uint8Array.from([0, 1, 2]) ++const b = Uint8Array.from([3, 4, 5]) ++const c = Uint8Array.from([0, 1, 2]) ++ ++console.info(equals(a, b)) // false ++console.info(equals(a, c)) // true ++console.info(equals(a, a)) // true ++``` ++ ++### fromString(string, encoding = 'utf8') ++ ++Returns a new `Uint8Array` created from the passed string and interpreted as the passed encoding. ++ ++Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). ++ ++#### Example ++ ++```js ++import { fromString } from 'uint8arrays/from-string' ++ ++console.info(fromString('hello world')) // Uint8Array[104, 101 ... ++console.info(fromString('00010203aabbcc', 'base16')) // Uint8Array[0, 1 ... ++console.info(fromString('AAECA6q7zA', 'base64')) // Uint8Array[0, 1 ... ++console.info(fromString('01234', 'ascii')) // Uint8Array[48, 49 ... ++``` ++ ++### toString(array, encoding = 'utf8') ++ ++Returns a string created from the passed `Uint8Array` in the passed encoding. ++ ++Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). ++ ++#### Example ++ ++```js ++import { toString } from 'uint8arrays/to-string' ++ ++console.info(toString(Uint8Array.from([104, 101...]))) // 'hello world' ++console.info(toString(Uint8Array.from([0, 1, 2...]), 'base16')) // '00010203aabbcc' ++console.info(toString(Uint8Array.from([0, 1, 2...]), 'base64')) // 'AAECA6q7zA' ++console.info(toString(Uint8Array.from([48, 49, 50...]), 'ascii')) // '01234' ++``` ++ ++### xor(a, b) ++ ++Returns a `Uint8Array` containing `a` and `b` xored together. ++ ++#### Example ++ ++```js ++import { xor } from 'uint8arrays/xor' ++ ++console.info(xor(Uint8Array.from([1, 0]), Uint8Array.from([0, 1]))) // Uint8Array[1, 1] ++``` +diff --git a/node_modules/uint8arrays/alloc b/node_modules/uint8arrays/alloc +new file mode 100644 +index 0000000000000000000000000000000000000000..96adbd1c30cc40c637803b469fa5c6491c509843 +--- /dev/null ++++ b/node_modules/uint8arrays/alloc +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/alloc.js') +diff --git a/node_modules/uint8arrays/cjs/src/alloc.js b/node_modules/uint8arrays/cjs/src/alloc.js +new file mode 100644 +index 0000000000000000000000000000000000000000..62f337da370082d906ed5fedd6cc052601b367a3 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/alloc.js +@@ -0,0 +1,19 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function alloc(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { ++ return globalThis.Buffer.alloc(size); ++ } ++ return new Uint8Array(size); ++} ++function allocUnsafe(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { ++ return globalThis.Buffer.allocUnsafe(size); ++ } ++ return new Uint8Array(size); ++} ++ ++exports.alloc = alloc; ++exports.allocUnsafe = allocUnsafe; +diff --git a/node_modules/uint8arrays/cjs/src/compare.js b/node_modules/uint8arrays/cjs/src/compare.js +new file mode 100644 +index 0000000000000000000000000000000000000000..f76a876da6b87c8218d0efda7366189c7d7d46a4 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/compare.js +@@ -0,0 +1,23 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function compare(a, b) { ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] < b[i]) { ++ return -1; ++ } ++ if (a[i] > b[i]) { ++ return 1; ++ } ++ } ++ if (a.byteLength > b.byteLength) { ++ return 1; ++ } ++ if (a.byteLength < b.byteLength) { ++ return -1; ++ } ++ return 0; ++} ++ ++exports.compare = compare; +diff --git a/node_modules/uint8arrays/cjs/src/concat.js b/node_modules/uint8arrays/cjs/src/concat.js +new file mode 100644 +index 0000000000000000000000000000000000000000..b5f6039223c16c8432bf34b601897a0e963e1dd0 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/concat.js +@@ -0,0 +1,20 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var alloc = require('./alloc.js'); ++ ++function concat(arrays, length) { ++ if (!length) { ++ length = arrays.reduce((acc, curr) => acc + curr.length, 0); ++ } ++ const output = alloc.allocUnsafe(length); ++ let offset = 0; ++ for (const arr of arrays) { ++ output.set(arr, offset); ++ offset += arr.length; ++ } ++ return output; ++} ++ ++exports.concat = concat; +diff --git a/node_modules/uint8arrays/cjs/src/equals.js b/node_modules/uint8arrays/cjs/src/equals.js +new file mode 100644 +index 0000000000000000000000000000000000000000..073c46ba1f52e921f55f98d82106a67d542a4321 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/equals.js +@@ -0,0 +1,20 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++function equals(a, b) { ++ if (a === b) { ++ return true; ++ } ++ if (a.byteLength !== b.byteLength) { ++ return false; ++ } ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] !== b[i]) { ++ return false; ++ } ++ } ++ return true; ++} ++ ++exports.equals = equals; +diff --git a/node_modules/uint8arrays/cjs/src/from-string.js b/node_modules/uint8arrays/cjs/src/from-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..d4899669d3d3a69ae33b1d6a5de6ed4facab9702 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/from-string.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var bases = require('./util/bases.js'); ++ ++function fromString(string, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(string, 'utf8'); ++ } ++ return base.decoder.decode(`${ base.prefix }${ string }`); ++} ++ ++exports.fromString = fromString; +diff --git a/node_modules/uint8arrays/cjs/src/index.js b/node_modules/uint8arrays/cjs/src/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e04d18c1e8b50930f11469e29d36e3624800ee3e +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/index.js +@@ -0,0 +1,19 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var compare = require('./compare.js'); ++var concat = require('./concat.js'); ++var equals = require('./equals.js'); ++var fromString = require('./from-string.js'); ++var toString = require('./to-string.js'); ++var xor = require('./xor.js'); ++ ++ ++ ++exports.compare = compare.compare; ++exports.concat = concat.concat; ++exports.equals = equals.equals; ++exports.fromString = fromString.fromString; ++exports.toString = toString.toString; ++exports.xor = xor.xor; +diff --git a/node_modules/uint8arrays/cjs/src/to-string.js b/node_modules/uint8arrays/cjs/src/to-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..60041ca99380e4e96896d2e3d314bfedf291abd4 +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/to-string.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var bases = require('./util/bases.js'); ++ ++function toString(array, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); ++ } ++ return base.encoder.encode(array).substring(1); ++} ++ ++exports.toString = toString; +diff --git a/node_modules/uint8arrays/cjs/src/util/bases.js b/node_modules/uint8arrays/cjs/src/util/bases.js +new file mode 100644 +index 0000000000000000000000000000000000000000..889ba8ca4f4590ad982343e2e557a86345dbba6e +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/util/bases.js +@@ -0,0 +1,49 @@ ++'use strict'; ++ ++var basics = require('multiformats/basics'); ++var alloc = require('../alloc.js'); ++ ++function createCodec(name, prefix, encode, decode) { ++ return { ++ name, ++ prefix, ++ encoder: { ++ name, ++ prefix, ++ encode ++ }, ++ decoder: { decode } ++ }; ++} ++const string = createCodec('utf8', 'u', buf => { ++ const decoder = new TextDecoder('utf8'); ++ return 'u' + decoder.decode(buf); ++}, str => { ++ const encoder = new TextEncoder(); ++ return encoder.encode(str.substring(1)); ++}); ++const ascii = createCodec('ascii', 'a', buf => { ++ let string = 'a'; ++ for (let i = 0; i < buf.length; i++) { ++ string += String.fromCharCode(buf[i]); ++ } ++ return string; ++}, str => { ++ str = str.substring(1); ++ const buf = alloc.allocUnsafe(str.length); ++ for (let i = 0; i < str.length; i++) { ++ buf[i] = str.charCodeAt(i); ++ } ++ return buf; ++}); ++const BASES = { ++ utf8: string, ++ 'utf-8': string, ++ hex: basics.bases.base16, ++ latin1: ascii, ++ ascii: ascii, ++ binary: ascii, ++ ...basics.bases ++}; ++ ++module.exports = BASES; +diff --git a/node_modules/uint8arrays/cjs/src/xor.js b/node_modules/uint8arrays/cjs/src/xor.js +new file mode 100644 +index 0000000000000000000000000000000000000000..3b7f04d6ad8ca2ac0c75d9527f8abf75c3a32d2b +--- /dev/null ++++ b/node_modules/uint8arrays/cjs/src/xor.js +@@ -0,0 +1,18 @@ ++'use strict'; ++ ++Object.defineProperty(exports, '__esModule', { value: true }); ++ ++var alloc = require('./alloc.js'); ++ ++function xor(a, b) { ++ if (a.length !== b.length) { ++ throw new Error('Inputs should have the same length'); ++ } ++ const result = alloc.allocUnsafe(a.length); ++ for (let i = 0; i < a.length; i++) { ++ result[i] = a[i] ^ b[i]; ++ } ++ return result; ++} ++ ++exports.xor = xor; +diff --git a/node_modules/uint8arrays/compare b/node_modules/uint8arrays/compare +new file mode 100644 +index 0000000000000000000000000000000000000000..e5012fd8b14ddd8ae03b8cf34b0803cbb153f54d +--- /dev/null ++++ b/node_modules/uint8arrays/compare +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/compare.js') +diff --git a/node_modules/uint8arrays/concat b/node_modules/uint8arrays/concat +new file mode 100644 +index 0000000000000000000000000000000000000000..77d4c7ff6075cef2ccf07978629ebe9c0b5676c1 +--- /dev/null ++++ b/node_modules/uint8arrays/concat +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/concat.js') +diff --git a/node_modules/uint8arrays/equals b/node_modules/uint8arrays/equals +new file mode 100644 +index 0000000000000000000000000000000000000000..fb9b155afd3f89970606e5bce212653a9edda8a5 +--- /dev/null ++++ b/node_modules/uint8arrays/equals +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/equals.js') +diff --git a/node_modules/uint8arrays/esm/package.json b/node_modules/uint8arrays/esm/package.json +new file mode 100644 +index 0000000000000000000000000000000000000000..b0f779bef674eb02c1185e55c0ffd20179a078f9 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/package.json +@@ -0,0 +1,33 @@ ++{ ++ "type": "module", ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/esm/src/alloc.js b/node_modules/uint8arrays/esm/src/alloc.js +new file mode 100644 +index 0000000000000000000000000000000000000000..e9326afa4af656b8f97576f79177e94ab9d12372 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/alloc.js +@@ -0,0 +1,12 @@ ++export function alloc(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { ++ return globalThis.Buffer.alloc(size); ++ } ++ return new Uint8Array(size); ++} ++export function allocUnsafe(size = 0) { ++ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { ++ return globalThis.Buffer.allocUnsafe(size); ++ } ++ return new Uint8Array(size); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/compare.js b/node_modules/uint8arrays/esm/src/compare.js +new file mode 100644 +index 0000000000000000000000000000000000000000..251ba99326ef616a7259ae690a195c55eb69e3c4 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/compare.js +@@ -0,0 +1,17 @@ ++export function compare(a, b) { ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] < b[i]) { ++ return -1; ++ } ++ if (a[i] > b[i]) { ++ return 1; ++ } ++ } ++ if (a.byteLength > b.byteLength) { ++ return 1; ++ } ++ if (a.byteLength < b.byteLength) { ++ return -1; ++ } ++ return 0; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/concat.js b/node_modules/uint8arrays/esm/src/concat.js +new file mode 100644 +index 0000000000000000000000000000000000000000..1becaa52d193e7c41af30fcfb6de675dd5520730 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/concat.js +@@ -0,0 +1,13 @@ ++import { allocUnsafe } from './alloc.js'; ++export function concat(arrays, length) { ++ if (!length) { ++ length = arrays.reduce((acc, curr) => acc + curr.length, 0); ++ } ++ const output = allocUnsafe(length); ++ let offset = 0; ++ for (const arr of arrays) { ++ output.set(arr, offset); ++ offset += arr.length; ++ } ++ return output; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/equals.js b/node_modules/uint8arrays/esm/src/equals.js +new file mode 100644 +index 0000000000000000000000000000000000000000..fbedbe071a446722515778a030724b4d2ab87030 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/equals.js +@@ -0,0 +1,14 @@ ++export function equals(a, b) { ++ if (a === b) { ++ return true; ++ } ++ if (a.byteLength !== b.byteLength) { ++ return false; ++ } ++ for (let i = 0; i < a.byteLength; i++) { ++ if (a[i] !== b[i]) { ++ return false; ++ } ++ } ++ return true; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/from-string.js b/node_modules/uint8arrays/esm/src/from-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..0a98afd2708b0f7f182f92f4b98244655b6c85cb +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/from-string.js +@@ -0,0 +1,11 @@ ++import bases from './util/bases.js'; ++export function fromString(string, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(string, 'utf8'); ++ } ++ return base.decoder.decode(`${ base.prefix }${ string }`); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/index.js b/node_modules/uint8arrays/esm/src/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..2ec817cb7bfaa10be4baf9dfdeae279230041130 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/index.js +@@ -0,0 +1,14 @@ ++import { compare } from './compare.js'; ++import { concat } from './concat.js'; ++import { equals } from './equals.js'; ++import { fromString } from './from-string.js'; ++import { toString } from './to-string.js'; ++import { xor } from './xor.js'; ++export { ++ compare, ++ concat, ++ equals, ++ fromString, ++ toString, ++ xor ++}; +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/to-string.js b/node_modules/uint8arrays/esm/src/to-string.js +new file mode 100644 +index 0000000000000000000000000000000000000000..f1fdd01972c3f7ba0abf5d4b5f3539fd60a25ef4 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/to-string.js +@@ -0,0 +1,11 @@ ++import bases from './util/bases.js'; ++export function toString(array, encoding = 'utf8') { ++ const base = bases[encoding]; ++ if (!base) { ++ throw new Error(`Unsupported encoding "${ encoding }"`); ++ } ++ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { ++ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); ++ } ++ return base.encoder.encode(array).substring(1); ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/util/bases.js b/node_modules/uint8arrays/esm/src/util/bases.js +new file mode 100644 +index 0000000000000000000000000000000000000000..ec42186bf5433036f1c4485bed9cf67c4ff66595 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/util/bases.js +@@ -0,0 +1,45 @@ ++import { bases } from 'multiformats/basics'; ++import { allocUnsafe } from '../alloc.js'; ++function createCodec(name, prefix, encode, decode) { ++ return { ++ name, ++ prefix, ++ encoder: { ++ name, ++ prefix, ++ encode ++ }, ++ decoder: { decode } ++ }; ++} ++const string = createCodec('utf8', 'u', buf => { ++ const decoder = new TextDecoder('utf8'); ++ return 'u' + decoder.decode(buf); ++}, str => { ++ const encoder = new TextEncoder(); ++ return encoder.encode(str.substring(1)); ++}); ++const ascii = createCodec('ascii', 'a', buf => { ++ let string = 'a'; ++ for (let i = 0; i < buf.length; i++) { ++ string += String.fromCharCode(buf[i]); ++ } ++ return string; ++}, str => { ++ str = str.substring(1); ++ const buf = allocUnsafe(str.length); ++ for (let i = 0; i < str.length; i++) { ++ buf[i] = str.charCodeAt(i); ++ } ++ return buf; ++}); ++const BASES = { ++ utf8: string, ++ 'utf-8': string, ++ hex: bases.base16, ++ latin1: ascii, ++ ascii: ascii, ++ binary: ascii, ++ ...bases ++}; ++export default BASES; +\ No newline at end of file +diff --git a/node_modules/uint8arrays/esm/src/xor.js b/node_modules/uint8arrays/esm/src/xor.js +new file mode 100644 +index 0000000000000000000000000000000000000000..d569ed64b70fb1627a6d8f82b4662f7538f6e694 +--- /dev/null ++++ b/node_modules/uint8arrays/esm/src/xor.js +@@ -0,0 +1,11 @@ ++import { allocUnsafe } from './alloc.js'; ++export function xor(a, b) { ++ if (a.length !== b.length) { ++ throw new Error('Inputs should have the same length'); ++ } ++ const result = allocUnsafe(a.length); ++ for (let i = 0; i < a.length; i++) { ++ result[i] = a[i] ^ b[i]; ++ } ++ return result; ++} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/from-string b/node_modules/uint8arrays/from-string +new file mode 100644 +index 0000000000000000000000000000000000000000..2cc705ce49836283622c3f82290e910712107007 +--- /dev/null ++++ b/node_modules/uint8arrays/from-string +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/from-string.js') +diff --git a/node_modules/uint8arrays/index.js b/node_modules/uint8arrays/index.js +new file mode 100644 +index 0000000000000000000000000000000000000000..580d8d99288b7b972da6c5c480503710e62d4b15 +--- /dev/null ++++ b/node_modules/uint8arrays/index.js +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/index.js') +diff --git a/node_modules/uint8arrays/index.min.js b/node_modules/uint8arrays/index.min.js +new file mode 100644 +index 0000000000000000000000000000000000000000..bcf42aca46b3ca48a137a3a93fe37cd8b17d6eb9 +--- /dev/null ++++ b/node_modules/uint8arrays/index.min.js +@@ -0,0 +1,17 @@ ++(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Uint8arrays = factory()}(typeof self !== 'undefined' ? self : this, function () { ++var Uint8arrays=(()=>{var ue=Object.defineProperty;var $e=r=>ue(r,"__esModule",{value:!0});var h=(r,e)=>{$e(r);for(var t in e)ue(r,t,{get:e[t],enumerable:!0})};var Yt={};h(Yt,{compare:()=>De,concat:()=>ie,equals:()=>ae,fromString:()=>Me,toString:()=>Ve,xor:()=>Pe});function De(r,e){for(let t=0;te[t])return 1}return r.byteLength>e.byteLength?1:r.byteLengths+n.length,0));let t=U(e),o=0;for(let s of r)t.set(s,o),o+=s.length;return t}function ae(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;tKe});function qe(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o>>0,l=new Uint8Array(E);b!==C;){for(var g=u[b],v=0,m=E-1;(g!==0||v>>0,l[m]=g%a>>>0,g=g/a>>>0;if(g!==0)throw new Error("Non-zero carry");j=v,b++}for(var x=E-j;x!==E&&l[x]===0;)x++;for(var k=f.repeat(d);x>>0,E=new Uint8Array(C);u[d];){var l=t[u.charCodeAt(d)];if(l===255)return;for(var g=0,v=C-1;(l!==0||g>>0,E[v]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");b=g,d++}if(u[d]!==" "){for(var m=C-b;m!==C&&E[m]===0;)m++;for(var x=new Uint8Array(j+(C-m)),k=j;m!==C;)x[k++]=E[m++];return x}}}function ke(u){var d=P(u);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:S,decodeUnsafe:P,decode:ke}}var Re=qe,Je=Re,ce=Je;var ur=new Uint8Array(0);var fe=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var de=r=>new TextEncoder().encode(r),he=r=>new TextDecoder().decode(r);var le=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},be=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ce(this,e)}},me=class{constructor(e){this.decoders=e}or(e){return Ce(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ce=(r,e)=>new me({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Ee=class{constructor(e,t,o,s){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=s,this.encoder=new le(e,t,o),this.decoder=new be(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new Ee(r,e,t,o),A=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:s}=ce(t,e);return T({prefix:r,name:e,encode:o,decode:n=>y(s(n))})},Xe=(r,e,t,o)=>{let s={};for(let p=0;p=8&&(a-=8,D[B++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return D},Ge=(r,e,t)=>{let o=e[e.length-1]==="=",s=(1<t;)D-=t,n+=e[s&a>>D];if(D&&(n+=e[s&a<T({prefix:e,name:r,encode(s){return Ge(s,o,t)},decode(s){return Xe(s,o,t,r)}});var Ke=T({prefix:"\0",name:"identity",encode:r=>he(r),decode:r=>de(r)});var X={};h(X,{base2:()=>Qe});var Qe=i({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var G={};h(G,{base8:()=>He});var He=i({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var K={};h(K,{base10:()=>We});var We=A({prefix:"9",name:"base10",alphabet:"0123456789"});var Q={};h(Q,{base16:()=>Ze,base16upper:()=>Ye});var Ze=i({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ye=i({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var H={};h(H,{base32:()=>z,base32hex:()=>rt,base32hexpad:()=>st,base32hexpadupper:()=>nt,base32hexupper:()=>ot,base32pad:()=>et,base32padupper:()=>tt,base32upper:()=>_e,base32z:()=>ut});var z=i({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_e=i({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),et=i({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tt=i({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rt=i({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ot=i({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),st=i({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nt=i({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ut=i({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var W={};h(W,{base36:()=>Dt,base36upper:()=>it});var Dt=A({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),it=A({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z={};h(Z,{base58btc:()=>w,base58flickr:()=>at});var w=A({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),at=A({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Y={};h(Y,{base64:()=>ct,base64pad:()=>ft,base64url:()=>dt,base64urlpad:()=>ht});var ct=i({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ft=i({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),dt=i({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ht=i({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var _={};h(_,{base256emoji:()=>Ct});var ge=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),pt=ge.reduce((r,e,t)=>(r[t]=e,r),[]),lt=ge.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function bt(r){return r.reduce((e,t)=>(e+=pt[t],e),"")}function mt(r){let e=[];for(let t of r){let o=lt[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Ct=T({prefix:"\u{1F680}",name:"base256emoji",encode:bt,decode:mt});var re={};h(re,{sha256:()=>Mt,sha512:()=>Vt});var Et=xe,we=128,gt=127,wt=~gt,xt=Math.pow(2,31);function xe(r,e,t){e=e||[],t=t||0;for(var o=t;r>=xt;)e[t++]=r&255|we,r/=128;for(;r&wt;)e[t++]=r&255|we,r>>>=7;return e[t]=r|0,xe.bytes=t-o+1,e}var yt=ee,vt=128,ye=127;function ee(r,e){var t=0,e=e||0,o=0,s=e,n,D=r.length;do{if(s>=D)throw ee.bytes=0,new RangeError("Could not decode varint");n=r[s++],t+=o<28?(n&ye)<=vt);return ee.bytes=s-e,t}var At=Math.pow(2,7),jt=Math.pow(2,14),Ft=Math.pow(2,21),Bt=Math.pow(2,28),St=Math.pow(2,35),Ut=Math.pow(2,42),Tt=Math.pow(2,49),zt=Math.pow(2,56),It=Math.pow(2,63),Lt=function(r){return r[N.decode(r),N.decode.bytes],I=(r,e,t=0)=>(N.encode(r,e,t),e),L=r=>N.encodingLength(r);var F=(r,e)=>{let t=e.byteLength,o=L(r),s=o+L(t),n=new Uint8Array(s+t);return I(r,n,0),I(t,n,o),n.set(e,s),new M(r,t,e,n)},Ae=r=>{let e=y(r),[t,o]=O(e),[s,n]=O(e.subarray(o)),D=e.subarray(o+n);if(D.byteLength!==s)throw new Error("Incorrect length");return new M(t,s,D,e)},je=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&fe(r.bytes,e.bytes),M=class{constructor(e,t,o,s){this.code=e,this.size=t,this.digest=o,this.bytes=s}};var te=({name:r,code:e,encode:t})=>new Be(r,e,t),Be=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?F(this.code,t):t.then(o=>F(this.code,o))}else throw Error("Unknown type, must be binary type")}};var Ue=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Mt=te({name:"sha2-256",code:18,encode:Ue("SHA-256")}),Vt=te({name:"sha2-512",code:19,encode:Ue("SHA-512")});var oe={};h(oe,{identity:()=>$t});var Te=0,Pt="identity",ze=y,kt=r=>F(Te,ze(r)),$t={code:Te,name:Pt,encode:ze,digest:kt};var Ur=new TextEncoder,Tr=new TextDecoder;var c=class{constructor(e,t,o,s){this.code=t,this.version=e,this.multihash=o,this.bytes=s,this.byteOffset=s.byteOffset,this.byteLength=s.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:q,byteLength:q,code:$,version:$,multihash:$,bytes:$,_baseCache:q,asCID:q})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==V)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kt)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return c.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=F(e,t);return c.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&je(this.multihash,e.multihash)}toString(e){let{bytes:t,version:o,_baseCache:s}=this;switch(o){case 0:return Xt(t,s,e||w.encoder);default:return Gt(t,s,e||z.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return Ht(/^0\.0/,Wt),!!(e&&(e[Le]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof c)return e;if(e!=null&&e.asCID===e){let{version:t,code:o,multihash:s,bytes:n}=e;return new c(t,o,s,n||Ie(t,o,s.bytes))}else if(e!=null&&e[Le]===!0){let{version:t,multihash:o,code:s}=e,n=Ae(o);return c.create(t,s,n)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==V)throw new Error(`Version 0 CID must use dag-pb (code: ${V}) block encoding`);return new c(e,t,o,o.bytes)}case 1:{let s=Ie(e,t,o.bytes);return new c(e,t,o,s)}default:throw new Error("Invalid version")}}static createV0(e){return c.create(0,V,e)}static createV1(e,t){return c.create(1,e,t)}static decode(e){let[t,o]=c.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=c.inspectBytes(e),o=t.size-t.multihashSize,s=y(e.subarray(o,o+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let n=s.subarray(t.multihashSize-t.digestSize),D=new M(t.multihashCode,t.digestSize,n,s);return[t.version===0?c.createV0(D):c.createV1(t.codec,D),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[S,P]=O(e.subarray(t));return t+=P,S},s=o(),n=V;if(s===18?(s=0,t=0):s===1&&(n=o()),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let D=t,a=o(),f=o(),B=t+f,p=B-D;return{version:s,codec:n,multihashCode:a,digestSize:f,multihashSize:p,size:B}}static parse(e,t){let[o,s]=Jt(e,t),n=c.decode(s);return n._baseCache.set(o,e),n}},Jt=(r,e)=>{switch(r[0]){case"Q":{let t=e||w;return[w.prefix,t.decode(`${w.prefix}${r}`)]}case w.prefix:{let t=e||w;return[w.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Xt=(r,e,t)=>{let{prefix:o}=t;if(o!==w.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(o);if(s==null){let n=t.encode(r).slice(1);return e.set(o,n),n}else return s},Gt=(r,e,t)=>{let{prefix:o}=t,s=e.get(o);if(s==null){let n=t.encode(r);return e.set(o,n),n}else return s},V=112,Kt=18,Ie=(r,e,t)=>{let o=L(r),s=o+L(e),n=new Uint8Array(s+t.byteLength);return I(r,n,0),I(e,n,o),n.set(t,s),n},Le=Symbol.for("@ipld/js-cid/CID"),$={writable:!1,configurable:!1,enumerable:!0},q={writable:!1,enumerable:!1,configurable:!1},Qt="0.0.0-dev",Ht=(r,e)=>{if(r.test(Qt))console.warn(e);else throw new Error(e)},Wt=`CID.isCID(v) is deprecated and will be removed in the next major release. ++Following code pattern: ++ ++if (CID.isCID(value)) { ++ doSomethingWithCID(value) ++} ++ ++Is replaced with: ++ ++const cid = CID.asCID(value) ++if (cid) { ++ // Make sure to use cid instead of value ++ doSomethingWithCID(cid) ++} ++`;var se={...J,...X,...G,...K,...Q,...H,...W,...Z,...Y,..._},$r={...re,...oe};function Ne(r,e,t,o){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:o}}}var Oe=Ne("utf8","u",r=>{let e=new TextDecoder("utf8");return"u"+e.decode(r)},r=>new TextEncoder().encode(r.substring(1))),ne=Ne("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);let e=U(r.length);for(let t=0;t", ++ "homepage": "https://github.com/achingbrain/uint8arrays", ++ "bugs": "https://github.com/achingbrain/uint8arrays/issues", ++ "types": "types/src/index.d.ts", ++ "repository": { ++ "type": "git", ++ "url": "https://github.com/achingbrain/uint8arrays.git" ++ }, ++ "scripts": { ++ "test": "aegir test", ++ "lint": "aegir ts -p check && aegir lint", ++ "release": "aegir release", ++ "release-minor": "aegir release --type minor", ++ "release-major": "aegir release --type major", ++ "build": "aegir build" ++ }, ++ "license": "MIT", ++ "dependencies": { ++ "multiformats": "^9.4.2" ++ }, ++ "devDependencies": { ++ "@types/benchmark": "^2.1.1", ++ "aegir": "^35.0.0", ++ "benchmark": "^2.1.4", ++ "util": "^0.12.4" ++ }, ++ "eslintConfig": { ++ "extends": "ipfs", ++ "parserOptions": { ++ "sourceType": "module" ++ }, ++ "ignorePatterns": [ ++ "!.aegir.js" ++ ] ++ }, ++ "typesVersions": { ++ "*": { ++ "*": [ ++ "types/src", ++ "types/src/*" ++ ] ++ } ++ }, ++ "exports": { ++ ".": { ++ "browser": "./esm/src/index.js", ++ "require": "./cjs/src/index.js", ++ "import": "./esm/src/index.js" ++ }, ++ "./alloc": { ++ "browser": "./esm/src/alloc.js", ++ "require": "./cjs/src/alloc.js", ++ "import": "./esm/src/alloc.js" ++ }, ++ "./compare": { ++ "browser": "./esm/src/compare.js", ++ "require": "./cjs/src/compare.js", ++ "import": "./esm/src/compare.js" ++ }, ++ "./concat": { ++ "browser": "./esm/src/concat.js", ++ "require": "./cjs/src/concat.js", ++ "import": "./esm/src/concat.js" ++ }, ++ "./equals": { ++ "browser": "./esm/src/equals.js", ++ "require": "./cjs/src/equals.js", ++ "import": "./esm/src/equals.js" ++ }, ++ "./from-string": { ++ "browser": "./esm/src/from-string.js", ++ "require": "./cjs/src/from-string.js", ++ "import": "./esm/src/from-string.js" ++ }, ++ "./to-string": { ++ "browser": "./esm/src/to-string.js", ++ "require": "./cjs/src/to-string.js", ++ "import": "./esm/src/to-string.js" ++ }, ++ "./xor": { ++ "browser": "./esm/src/xor.js", ++ "require": "./cjs/src/xor.js", ++ "import": "./esm/src/xor.js" ++ } ++ }, ++ "contributors": [ ++ "achingbrain ", ++ "Irakli Gozalishvili ", ++ "Cayman ", ++ "Hugo Dias ", ++ "Mircea Nistor ", ++ "Rafael Ramalho ", ++ "Vasco Santos " ++ ], ++ "browser": { ++ ".": "./cjs/src/index.js", ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify", ++ "./alloc.js": "./cjs/src/alloc.js", ++ "./compare.js": "./cjs/src/compare.js", ++ "./concat.js": "./cjs/src/concat.js", ++ "./equals.js": "./cjs/src/equals.js", ++ "./from-string.js": "./cjs/src/from-string.js", ++ "./to-string.js": "./cjs/src/to-string.js", ++ "./xor.js": "./cjs/src/xor.js" ++ }, ++ "react-native": { ++ ".": "./cjs/src/index.js", ++ "./alloc": "./cjs/src/alloc.js", ++ "./compare": "./cjs/src/compare.js", ++ "./concat": "./cjs/src/concat.js", ++ "./equals": "./cjs/src/equals.js", ++ "./from-string": "./cjs/src/from-string.js", ++ "./to-string": "./cjs/src/to-string.js", ++ "./xor": "./cjs/src/xor.js", ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } ++} +diff --git a/node_modules/uint8arrays/to-string b/node_modules/uint8arrays/to-string +new file mode 100644 +index 0000000000000000000000000000000000000000..2708e31dca8063775318af642874a080d638e1fe +--- /dev/null ++++ b/node_modules/uint8arrays/to-string +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/to-string.js') +diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts b/node_modules/uint8arrays/types/src/alloc.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..71086104a021fa42346cd5d46a72b6da8bb79f1e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/alloc.d.ts +@@ -0,0 +1,18 @@ ++/** ++ * Returns a `Uint8Array` of the requested size. Referenced memory will ++ * be initialized to 0. ++ * ++ * @param {number} [size] ++ * @returns {Uint8Array} ++ */ ++export function alloc(size?: number | undefined): Uint8Array; ++/** ++ * Where possible returns a Uint8Array of the requested size that references ++ * uninitialized memory. Only use if you are certain you will immediately ++ * overwrite every value in the returned `Uint8Array`. ++ * ++ * @param {number} [size] ++ * @returns {Uint8Array} ++ */ ++export function allocUnsafe(size?: number | undefined): Uint8Array; ++//# sourceMappingURL=alloc.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts.map b/node_modules/uint8arrays/types/src/alloc.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..ded98e850419b7387b1b5248b08666f357f0b060 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/alloc.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"alloc.d.ts","sourceRoot":"","sources":["../../src/alloc.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kDAFa,UAAU,CAQtB;AAED;;;;;;;GAOG;AACH,wDAFa,UAAU,CAQtB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/compare.d.ts b/node_modules/uint8arrays/types/src/compare.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..dd23039272fd0eb5375622e34c718fa3cb1eec04 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/compare.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Can be used with Array.sort to sort and array with Uint8Array entries ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function compare(a: Uint8Array, b: Uint8Array): 0 | 1 | -1; ++//# sourceMappingURL=compare.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/compare.d.ts.map b/node_modules/uint8arrays/types/src/compare.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..e8238ebc28b6d4ebe38f6535d6180e5a99f76194 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/compare.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2BAHW,UAAU,KACV,UAAU,cAsBpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/concat.d.ts b/node_modules/uint8arrays/types/src/concat.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..960ca199e3a7586f586c8766e60aaa542916a851 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/concat.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns a new Uint8Array created by concatenating the passed ArrayLikes ++ * ++ * @param {Array>} arrays ++ * @param {number} [length] ++ */ ++export function concat(arrays: Array>, length?: number | undefined): Uint8Array; ++//# sourceMappingURL=concat.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/concat.d.ts.map b/node_modules/uint8arrays/types/src/concat.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..a74679fba41402c50244f031fef3465a11cb81b7 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/concat.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../src/concat.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAHW,MAAM,UAAU,MAAM,CAAC,CAAC,2CAiBlC"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/equals.d.ts b/node_modules/uint8arrays/types/src/equals.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..4c4df17c62640f71f638699722bf9cd68e65cc3e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/equals.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns true if the two passed Uint8Arrays have the same content ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function equals(a: Uint8Array, b: Uint8Array): boolean; ++//# sourceMappingURL=equals.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/equals.d.ts.map b/node_modules/uint8arrays/types/src/equals.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..f4b4fb784dcfa264e6f45b5fbcd779ab77b2e5c5 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/equals.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/equals.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAHW,UAAU,KACV,UAAU,WAkBpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts b/node_modules/uint8arrays/types/src/from-string.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..a2a48d58229830ecc2f00b630e265d71e99d4055 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/from-string.d.ts +@@ -0,0 +1,17 @@ ++/** ++ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings ++ */ ++/** ++ * Create a `Uint8Array` from the passed string ++ * ++ * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module. ++ * ++ * Also `ascii` which is similar to node's 'binary' encoding. ++ * ++ * @param {string} string ++ * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc ++ * @returns {Uint8Array} ++ */ ++export function fromString(string: string, encoding?: import("./util/bases.js").SupportedEncodings | undefined): Uint8Array; ++export type SupportedEncodings = import('./util/bases').SupportedEncodings; ++//# sourceMappingURL=from-string.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts.map b/node_modules/uint8arrays/types/src/from-string.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..5f31eb6c8816c3da59a6ebf016cfca7f0f55fa5e +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/from-string.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"from-string.d.ts","sourceRoot":"","sources":["../../src/from-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,mCAJW,MAAM,wEAEJ,UAAU,CAetB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/index.d.ts b/node_modules/uint8arrays/types/src/index.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..7a4a255ddc3b1c194a7907ed2ae972b28fdcecc4 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/index.d.ts +@@ -0,0 +1,8 @@ ++import { compare } from "./compare.js"; ++import { concat } from "./concat.js"; ++import { equals } from "./equals.js"; ++import { fromString } from "./from-string.js"; ++import { toString } from "./to-string.js"; ++import { xor } from "./xor.js"; ++export { compare, concat, equals, fromString, toString, xor }; ++//# sourceMappingURL=index.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/index.d.ts.map b/node_modules/uint8arrays/types/src/index.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..4b136e26cf4d54488bfbbaf749a89197c074cd91 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/index.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":""} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts b/node_modules/uint8arrays/types/src/to-string.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..bf72c50427b41a8c4be85347e966feb710e18aa0 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/to-string.d.ts +@@ -0,0 +1,17 @@ ++/** ++ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings ++ */ ++/** ++ * Turns a `Uint8Array` into a string. ++ * ++ * Supports `utf8`, `utf-8` and any encoding supported by the multibase module. ++ * ++ * Also `ascii` which is similar to node's 'binary' encoding. ++ * ++ * @param {Uint8Array} array - The array to turn into a string ++ * @param {SupportedEncodings} [encoding=utf8] - The encoding to use ++ * @returns {string} ++ */ ++export function toString(array: Uint8Array, encoding?: import("./util/bases.js").SupportedEncodings | undefined): string; ++export type SupportedEncodings = import('./util/bases').SupportedEncodings; ++//# sourceMappingURL=to-string.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts.map b/node_modules/uint8arrays/types/src/to-string.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..7290dc82e7b1c782b76b2ff96b2ccd49612db22d +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/to-string.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"to-string.d.ts","sourceRoot":"","sources":["../../src/to-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,gCAJW,UAAU,wEAER,MAAM,CAelB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..7b01d6f35e3821e5d695535d345d3684453d439f +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts +@@ -0,0 +1,10 @@ ++/** ++ * Create a Uint8Array of the specified length - uses ++ * the more performant `Buffer.allocUnsafe` if it is ++ * available or `new Uint8Array` if it is not. ++ * ++ * @param {number} length ++ * @returns {Uint8Array} ++ */ ++export function allocUnsafe(length: number): Uint8Array; ++//# sourceMappingURL=alloc-unsafe.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..78b2cfb583f5830da40a1286bd1dac3b5b977ada +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"alloc-unsafe.d.ts","sourceRoot":"","sources":["../../../src/util/alloc-unsafe.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAHW,MAAM,GACJ,UAAU,CAQtB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts b/node_modules/uint8arrays/types/src/util/bases.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..c0dae33bc527a38464924c863af85fbc77667e93 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/bases.d.ts +@@ -0,0 +1,36 @@ ++export default BASES; ++export type MultibaseCodec = import('multiformats/bases/interface').MultibaseCodec; ++export type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof { ++ base256emoji: import("multiformats/bases/base").Codec<"base256emoji", "🚀">; ++ base64: import("multiformats/bases/base").Codec<"base64", "m">; ++ base64pad: import("multiformats/bases/base").Codec<"base64pad", "M">; ++ base64url: import("multiformats/bases/base").Codec<"base64url", "u">; ++ base64urlpad: import("multiformats/bases/base").Codec<"base64urlpad", "U">; ++ base58btc: import("multiformats/bases/base").Codec<"base58btc", "z">; ++ base58flickr: import("multiformats/bases/base").Codec<"base58flickr", "Z">; ++ base36: import("multiformats/bases/base").Codec<"base36", "k">; ++ base36upper: import("multiformats/bases/base").Codec<"base36upper", "K">; ++ base32: import("multiformats/bases/base").Codec<"base32", "b">; ++ base32upper: import("multiformats/bases/base").Codec<"base32upper", "B">; ++ base32pad: import("multiformats/bases/base").Codec<"base32pad", "c">; ++ base32padupper: import("multiformats/bases/base").Codec<"base32padupper", "C">; ++ base32hex: import("multiformats/bases/base").Codec<"base32hex", "v">; ++ base32hexupper: import("multiformats/bases/base").Codec<"base32hexupper", "V">; ++ base32hexpad: import("multiformats/bases/base").Codec<"base32hexpad", "t">; ++ base32hexpadupper: import("multiformats/bases/base").Codec<"base32hexpadupper", "T">; ++ base32z: import("multiformats/bases/base").Codec<"base32z", "h">; ++ base16: import("multiformats/bases/base").Codec<"base16", "f">; ++ base16upper: import("multiformats/bases/base").Codec<"base16upper", "F">; ++ base10: import("multiformats/bases/base").Codec<"base10", "9">; ++ base8: import("multiformats/bases/base").Codec<"base8", "7">; ++ base2: import("multiformats/bases/base").Codec<"base2", "0">; ++ identity: import("multiformats/bases/base").Codec<"identity", "\0">; ++}; ++/** ++ * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings ++ */ ++/** ++ * @type {Record} ++ */ ++declare const BASES: Record>; ++//# sourceMappingURL=bases.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts.map b/node_modules/uint8arrays/types/src/util/bases.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..6956f5335bf63870aa45350f2af1d66b881b6a09 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/util/bases.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../../src/util/bases.js"],"names":[],"mappings":";6BAIa,OAAO,8BAA8B,EAAE,cAAc,CAAC,GAAG,CAAC;iCAoD1D,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAAW;AADnF;;GAEG;AAEH;;GAEG;AACH,qBAFU,OAAO,kBAAkB,6DAAiB,CAWnD"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/xor.d.ts b/node_modules/uint8arrays/types/src/xor.d.ts +new file mode 100644 +index 0000000000000000000000000000000000000000..deef5bb965a9e26283eab13a5cc6053bc59ef9ba +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/xor.d.ts +@@ -0,0 +1,8 @@ ++/** ++ * Returns the xor distance between two arrays ++ * ++ * @param {Uint8Array} a ++ * @param {Uint8Array} b ++ */ ++export function xor(a: Uint8Array, b: Uint8Array): Uint8Array; ++//# sourceMappingURL=xor.d.ts.map +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/src/xor.d.ts.map b/node_modules/uint8arrays/types/src/xor.d.ts.map +new file mode 100644 +index 0000000000000000000000000000000000000000..31db299b05a25b8439726a3e2fed3db618adad83 +--- /dev/null ++++ b/node_modules/uint8arrays/types/src/xor.d.ts.map +@@ -0,0 +1 @@ ++{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../src/xor.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,uBAHW,UAAU,KACV,UAAU,cAcpB"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..94b8c183d597efe32717777259261e28fc9c7853 +--- /dev/null ++++ b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/chai-parentheses/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/chai-bytes/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/aegir/dist/utils/chai.d.ts","../test/alloc.spec.js","../test/compare.spec.js","../test/concat.spec.js","../test/equals.spec.js","../test/from-string.spec.js","../test/to-string.spec.js","../test/xor.spec.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts","../src/concat.ts","../src/util/alloc-unsafe.js","../src/xor.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"c1f79c6d85cd84518fd7349588b3c61bdc189f58e3866f925cbf4631c81e31f9","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},{"version":"c6950fb69844190789c747a2ee2d49f34bd84273d692176d2c54d18d95fa3387","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},"33f12bdfbbb9a552db999b771a6e831fd0c94b321f958a1473def67b2b3e473f",{"version":"51a9c988758740ae2c6c44a76ef2438803df230b415b497293dfa5990508ab5a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b7210f350109bf3192235ed6e6ec55a0f5a19a4616daf84dc4196c052fa7cd18",{"version":"2cd140717148f456597ad7cd68b231e7ca6e5e92c60885b269e59880dae6019f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9368bbbf2a1dd5e9293b1a9ef06b4d0f02cbb18d5bde3b7f8fb134d7f0be4a93",{"version":"731062ffe7b99522b302e5615932f0956d50bcf2439cd6e38dc80af51982c1d7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"860a70e5ee208c81bfacb0bb46148ca0ff1566c65d29ccd8cd0d33963ad8bd40","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"58eb84f5c5f506c9dddeb6912d862fe15a523790d2aaf16dbb11d8dd203a79ca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[127],[63,127],[84,127],[87,127],[88,93,127],[89,99,100,107,116,126,127],[89,90,99,107,127],[91,127],[92,93,100,108,127],[93,116,123,127],[94,96,99,107,127],[95,127],[96,97,127],[98,99,127],[99,127],[99,100,101,116,126,127],[99,100,101,116,127],[102,107,116,126,127],[99,100,102,103,107,116,123,126,127],[102,104,116,123,126,127],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[99,105,127],[106,126,127],[96,99,107,116,127],[108,127],[109,127],[87,110,127],[111,125,127,131],[112,127],[113,127],[99,114,127],[114,115,127,129],[99,116,117,118,127],[116,118,127],[116,117,127],[119,127],[120,127],[99,121,122,127],[121,122,127],[93,107,123,127],[124,127],[107,125,127],[88,102,113,126,127],[93,127],[116,127,128],[127,129],[127,130],[88,93,99,101,110,116,126,127,129,131],[116,127,132],[127,138],[127,140],[99,116,127,134],[63,64,65,66,67,68,127],[63,64,127],[45,127],[52,54,55,56,127],[45,46,127],[53,127],[46,127],[46,48,127],[47,48,49,50,51,127],[41,127],[58,127],[42,43,44,59,60,61,127],[41,45,57,127],[41,69,127],[42,69,127],[43,69,127],[44,69,127],[58,59,60,69,127],[60,69,127],[61,69,127],[58],[45,56]],"referencedMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,62],[44,1],[59,63],[62,64],[60,63],[58,65],[61,62],[70,66],[71,67],[72,68],[73,69],[74,70],[75,71],[76,72]],"exportedModulesMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,73],[60,73],[58,74],[71,67],[73,69]],"semanticDiagnosticsPerFile":[77,64,68,66,63,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,86,133,102,103,104,134,105,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,139,138,140,141,142,69,67,65,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61,70,71,72,73,74,75,76],"affectedFilesPendingEmit":[[77,1],[64,1],[68,1],[66,1],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[86,1],[133,1],[102,1],[103,1],[104,1],[134,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[115,1],[116,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[132,1],[135,1],[136,1],[137,1],[139,1],[138,1],[140,1],[141,1],[142,1],[69,1],[67,1],[65,1],[56,1],[45,1],[57,1],[51,1],[47,1],[53,1],[55,1],[54,1],[48,1],[49,1],[46,1],[52,1],[50,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[41,1],[42,1],[43,1],[143,1],[44,1],[59,1],[62,1],[60,1],[144,1],[58,1],[61,1],[145,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1]]},"version":"4.3.5"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo +new file mode 100644 +index 0000000000000000000000000000000000000000..140901c820b9d415726b42863170d121b6b1c25e +--- /dev/null ++++ b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo +@@ -0,0 +1 @@ ++{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e",{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[117],[64,117],[74,117],[77,117],[78,83,117],[79,89,90,97,106,116,117],[79,80,89,97,117],[81,117],[82,83,90,98,117],[83,106,113,117],[84,86,89,97,117],[85,117],[86,87,117],[88,89,117],[89,117],[89,90,91,106,116,117],[89,90,91,106,117],[92,97,106,116,117],[89,90,92,93,97,106,113,116,117],[92,94,106,113,116,117],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],[89,95,117],[96,116,117],[86,89,97,106,117],[98,117],[99,117],[77,100,117],[101,115,117,121],[102,117],[103,117],[89,104,117],[104,105,117,119],[89,106,107,108,117],[106,108,117],[106,107,117],[109,117],[110,117],[89,111,112,117],[111,112,117],[83,97,113,117],[114,117],[97,115,117],[78,92,103,116,117],[83,117],[106,117,118],[117,119],[117,120],[78,83,89,91,100,106,116,117,119,121],[106,117,122],[117,128],[117,130],[89,106,117,124],[45,117],[52,54,55,56,117],[45,46,117],[53,117],[46,117],[46,48,117],[47,48,49,50,51,117],[41,117],[58,117],[42,43,44,59,60,61,117],[41,45,57,117],[58],[45,56]],"referencedMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,60],[44,1],[59,61],[62,62],[60,61],[58,63],[61,60]],"exportedModulesMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,64],[60,64],[58,65]],"semanticDiagnosticsPerFile":[63,65,66,67,64,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,123,92,93,94,124,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,125,126,127,129,128,130,131,132,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61]},"version":"4.3.5"} +\ No newline at end of file +diff --git a/node_modules/uint8arrays/xor b/node_modules/uint8arrays/xor +new file mode 100644 +index 0000000000000000000000000000000000000000..53e53af9d8ad1a2b2a539e12c490e290d815d919 +--- /dev/null ++++ b/node_modules/uint8arrays/xor +@@ -0,0 +1 @@ ++module.exports = require('./cjs/src/xor.js') +diff --git a/package.json b/package.json +index b8af0f09781065988fb544b0f5504fadc6b71d25..c1328f8ded800730387ae17e079682786da22994 100644 +--- a/package.json ++++ b/package.json +@@ -56,5 +56,35 @@ + "@types/elliptic": "6.4.18", + "@types/lodash.isequal": "4.5.6", + "@walletconnect/jsonrpc-types": "1.0.4" ++ }, ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" + } + } diff --git a/package.json b/package.json index 419bc25712..8b0326ad56 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,28 @@ "@scure/btc-signer/@noble/hashes": "1.8.0", "lodash@4.17.3": "4.17.21", "@ledgerhq/hw-transport": "6.31.0", - "jail-monkey@2.8.0": "patch:jail-monkey@npm%3A2.8.0#./.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch" + "jail-monkey@2.8.0": "patch:jail-monkey@npm%3A2.8.0#./.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch", + "@walletconnect/core@2.16.1": "patch:@walletconnect/core@npm%3A2.16.1#./.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch", + "@walletconnect/sign-client@2.16.1": "patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch", + "@walletconnect/utils@2.17.2": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", + "@walletconnect/utils@2.16.1": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", + "@noble/curves@1.9.7": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.7.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.2.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.4.2": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.4.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.4.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.1.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.2.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.1.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.8.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@bitcoinerlab/secp256k1@1.2.0": "patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch", + "@bitcoinerlab/secp256k1@^1.0.5": "patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch" }, "engines": { "node": ">=20.18.0", diff --git a/packages/core-mobile/.ruby-version b/packages/core-mobile/.ruby-version index be94e6f53d..15a2799817 100644 --- a/packages/core-mobile/.ruby-version +++ b/packages/core-mobile/.ruby-version @@ -1 +1 @@ -3.2.2 +3.3.0 diff --git a/packages/core-mobile/Gemfile b/packages/core-mobile/Gemfile index 767cd0a6ee..4bc14d5d0f 100644 --- a/packages/core-mobile/Gemfile +++ b/packages/core-mobile/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby '3.2.2' +ruby '3.3.0' gem 'cocoapods', '1.16.2' gem 'activesupport', '7.0.8' diff --git a/packages/core-mobile/Gemfile.lock b/packages/core-mobile/Gemfile.lock index b6cd641b5b..d48ebf1122 100644 --- a/packages/core-mobile/Gemfile.lock +++ b/packages/core-mobile/Gemfile.lock @@ -108,7 +108,7 @@ DEPENDENCIES mutex_m RUBY VERSION - ruby 3.2.2p53 + ruby 3.3.0p0 BUNDLED WITH 2.4.10 diff --git a/packages/core-mobile/PerformanceTracer.ts b/packages/core-mobile/PerformanceTracer.ts new file mode 100644 index 0000000000..caa35ca0e5 --- /dev/null +++ b/packages/core-mobile/PerformanceTracer.ts @@ -0,0 +1,262 @@ +// PerformanceTracker.js + +// eslint-disable-next-line @discordapp/discord/no-native-alert +import {Alert} from 'react-native'; +import performance, {PerformanceObserver} from 'react-native-performance'; + +/** + * We expect the app (or react-native-performance) to emit exactly these four + * “react-native-mark” entries automatically at startup: + * + * ‣ nativeLaunchStart + * ‣ nativeLaunchEnd + * ‣ runJsBundleStart + * ‣ runJsBundleEnd + * + * In addition, the user will manually call markTTI() at the moment they + * consider the UI fully interactive. That “tti” mark is a plain `performance.mark('tti')`. + * + * Once we know all three “end”‐marks exist— i.e.: + * • nativeLaunchEnd + * • runJsBundleEnd + * • tti + * —then we fire off three measurements and immediately show an Alert. + */ + +const REQUIRED_FLAGS = { + sawNativeLaunchEnd: false, + sawRunJsBundleEnd: false, + sawTTI: false, + sawTTIRender: false, + sawAuthIsDone: false, + sawAppReady: false, +}; + +// Only show the final Alert once: +let hasFiredAlert = false; + +// Utility: once all three flags are true, measure & alert exactly once. +function tryMeasureAndAlertReactNativeMarks() { + if (hasFiredAlert) { + return; + } + + const rnObserver = new PerformanceObserver((list) => { + for (const entry of list.getEntries()) { + if (entry.name === 'nativeLaunchEnd') { + REQUIRED_FLAGS.sawNativeLaunchEnd = true; + } else if (entry.name === 'runJsBundleEnd') { + REQUIRED_FLAGS.sawRunJsBundleEnd = true; + } + } + +}); + +// Start observing RIGHT AWAY, buffered = true so we catch any marks that +// happened *before* this script was imported. +rnObserver.observe({ + type: 'react-native-mark', + buffered: true, +}); + + const con = console + con.log('REQUIRED_FLAGS', REQUIRED_FLAGS) + + const {sawNativeLaunchEnd, sawRunJsBundleEnd, sawTTI, sawTTIRender, sawAuthIsDone, sawAppReady} = REQUIRED_FLAGS; + if (!sawNativeLaunchEnd || !sawRunJsBundleEnd || !sawTTI || !sawTTIRender || !sawAuthIsDone || !sawAppReady) { + const con = console; con.log('Not all required flags seen yet:', REQUIRED_FLAGS); + return; + } + + // By the time we get here, we know: + // • performance.getEntriesByName('nativeLaunchEnd') exists + // • performance.getEntriesByName('runJsBundleEnd') exists + // • performance.getEntriesByName('tti') exists + // + // Now we perform our three measures, *inside* the PO callbacks, + // so we don't risk calling `measure(...)` prematurely. + + // 1) nativeLaunch = nativeLaunchEnd – nativeLaunchStart + performance.measure('nativeLaunch', 'nativeLaunchStart', 'nativeLaunchEnd'); + + performance.measure('beforeJsBundle', 'nativeLaunchStart', 'runJsBundleStart'); + + // 2) runJsBundle = runJsBundleEnd – runJsBundleStart + performance.measure('runJsBundle', 'runJsBundleStart', 'runJsBundleEnd'); + + // 3) timeToInteractive = tti – runJsBundleEnd + performance.measure('timeToInteractive', 'runJsBundleStart', 'tti'); + + performance.measure('timeToRender', 'authIsDone', 'ttiRender'); + + performance.measure('timeAfterAuthIsDone', 'authIsDone', 'appReady'); + + // Extract those three measurements: + const beforeJsBundleEntry = performance.getEntriesByName('beforeJsBundle').pop(); + const nativeLaunchEntry = performance.getEntriesByName('nativeLaunch').pop(); + const runJsEntry = performance.getEntriesByName('runJsBundle').pop(); + const ttiEntry = performance.getEntriesByName('timeToInteractive').pop(); + const ttiRender = performance.getEntriesByName('timeToRender').pop(); + const timeAfterAuthIsDone = performance.getEntriesByName('timeAfterAuthIsDone').pop(); + + const nativeLaunchMs = nativeLaunchEntry ? nativeLaunchEntry.duration.toFixed(2) : 'n/a'; + const runJsMs = runJsEntry ? runJsEntry.duration.toFixed(2) : 'n/a'; + const ttiMs = ttiEntry ? ttiEntry.duration.toFixed(2) : 'n/a'; + const ttiRenderMs = ttiRender ? ttiRender.duration.toFixed(2) : 'n/a'; + const beforeJsBundleMs = beforeJsBundleEntry ? beforeJsBundleEntry.duration.toFixed(2) : 'n/a'; + const timeAfterAuthIsDoneMs = timeAfterAuthIsDone ? timeAfterAuthIsDone.duration.toFixed(2) : 'n/a'; + + Alert.alert( + 'Startup Metrics (non-static)', + `• nativeLaunch: ${nativeLaunchMs} ms\n` + + `• runJsBundle: ${runJsMs} ms\n` + + `• timeToPinlock: ${ttiMs} ms\n` + + `• beforeJsBundleEval: ${beforeJsBundleMs} ms\n` + + `• TimeToRenderTokenItem: ${ttiRenderMs} ms\n` + + `• TimeToLayoutTokenItem: ${timeAfterAuthIsDoneMs} ms`, + ); + + hasFiredAlert = true; +} + +let rnObserver = null; +let genericObserver = null; + +export const observe = () => { + const con = console + con.log('Starting PerformanceTracer observe()') + // OBSERVER #1: listen for “react-native-mark” entries + // -------------------------------- + // This catches both + // • “nativeLaunchEnd” + // • “runJsBundleEnd” + // which are logged internally by React Native or react-native-performance + // as soon as JS bundle has finished evaluation. + rnObserver = new PerformanceObserver((list) => { + const con = console + const marks = performance.getEntriesByType('react-native-mark') + con.log('RN MARK ENTRIES:', marks.length) + + + for (const entry of marks) { + console.log('RN MARK:', entry.name) + if (entry.name === 'nativeLaunchEnd') { + REQUIRED_FLAGS.sawNativeLaunchEnd = true; + } else if (entry.name === 'runJsBundleEnd') { + REQUIRED_FLAGS.sawRunJsBundleEnd = true; + } + } + tryMeasureAndAlertReactNativeMarks(); + }); + + // Start observing RIGHT AWAY, buffered = true so we catch any marks that + // happened *before* this script was imported. + rnObserver.observe({ + type: 'react-native-mark', + buffered: true, + }); + +// OBSERVER #2: listen for plain “mark” entries +// -------------------------------- +// This will catch the user‐invoked TTI mark: +// performance.mark('tti') + genericObserver = new PerformanceObserver((list) => { + for (const entry of list.getEntries()) { + if (entry.name === 'tti') { + REQUIRED_FLAGS.sawTTI = true; + } + } + tryMeasureAndAlertReactNativeMarks(); + }); + + genericObserver.observe({type: 'mark', buffered: true}); +} + +/** + * Call this the moment your UI is fully interactive. For example: + * + * import { markTTI } from './PerformanceTracker'; + * // …later, after your top‐level navigation has rendered: + * markTTI(); + */ +export function markTTIFinal(timestamp?: number) { + if (REQUIRED_FLAGS.sawTTI) { + return; + } + if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { + // eslint-disable-next-line no-console + console.warn('Performance API not available—cannot mark TTI.'); + return; + } + + // Create the “tti” mark. OBSERVER #2 will catch it. + + if (timestamp) { + performance.mark('tti', { + startTime: timestamp + }); + } else { + performance.mark('tti'); + } + + // In case the other two “react-native-mark” entries have already come and gone, + // we force-set this flag and try one more time to measure+alert: + REQUIRED_FLAGS.sawTTI = true; + tryMeasureAndAlertReactNativeMarks(); +} + +export function markTIIRender(timestamp?: number) { + if (REQUIRED_FLAGS.sawTTIRender) { + return; + } + if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { + // eslint-disable-next-line no-console + console.warn('Performance API not available—cannot mark TTI.'); + return; + } + + + // Create the “tti” mark. OBSERVER #2 will catch it. + if (timestamp) { + performance.mark('ttiRender', { + startTime: timestamp + }); + } else { + performance.mark('ttiRender'); + } + + // In case the other two “react-native-mark” entries have already come and gone, + // we force-set this flag and try one more time to measure+alert: + REQUIRED_FLAGS.sawTTIRender = true; + tryMeasureAndAlertReactNativeMarks(); +} + +export function markAuthIsDone() { + if (REQUIRED_FLAGS.sawAuthIsDone) { + return; + } + if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { + // eslint-disable-next-line no-console + console.warn('Performance API not available—cannot mark AuthIsDone.'); + return; + } + + performance.mark('authIsDone'); + REQUIRED_FLAGS.sawAuthIsDone = true; + tryMeasureAndAlertReactNativeMarks(); +} + +export function markAppReady() { + if (REQUIRED_FLAGS.sawAppReady) { + return; + } + if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { + // eslint-disable-next-line no-console + console.warn('Performance API not available—cannot mark AppReady.'); + return; + } + + performance.mark('appReady'); + REQUIRED_FLAGS.sawAppReady = true; + tryMeasureAndAlertReactNativeMarks(); +} diff --git a/packages/core-mobile/android/app/build.gradle b/packages/core-mobile/android/app/build.gradle index c00d53b8fe..0ce3ed7d0b 100644 --- a/packages/core-mobile/android/app/build.gradle +++ b/packages/core-mobile/android/app/build.gradle @@ -128,6 +128,7 @@ android { } release { + signingConfig signingConfigs.debug minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } diff --git a/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt b/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt index 800a1c71f1..e52caecb9d 100644 --- a/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt +++ b/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt @@ -46,10 +46,9 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - RootedCheck.precompute(this) + RootedCheck.precompute(this); increaseWindowCursorSize() - RNBranchModule.getAutoInstance(this); // Manually set user agent to our format. This helps avoid getting identified as a bot and rate limited by cloudflare diff --git a/packages/core-mobile/android/gradle.properties b/packages/core-mobile/android/gradle.properties index 855e34849e..c09aafee22 100644 --- a/packages/core-mobile/android/gradle.properties +++ b/packages/core-mobile/android/gradle.properties @@ -11,7 +11,7 @@ # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m +org.gradle.jvmargs=-Xmx8096m -XX:MaxMetaspaceSize=4096m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/packages/core-mobile/app/new/common/components/PinScreen.tsx b/packages/core-mobile/app/new/common/components/PinScreen.tsx index 82b5ed1a0a..726bfebe3a 100644 --- a/packages/core-mobile/app/new/common/components/PinScreen.tsx +++ b/packages/core-mobile/app/new/common/components/PinScreen.tsx @@ -38,6 +38,7 @@ import BiometricsSDK, { BiometricType } from 'utils/BiometricsSDK' import Logger from 'utils/Logger' import { commonStorage } from 'utils/mmkv' import { StorageKey } from 'resources/Constants' +import { markAuthIsDone } from '../../../../PerformanceTracer' export const PinScreen = ({ onForgotPin, @@ -79,6 +80,7 @@ export const PinScreen = ({ } const handleLoginSuccess = useCallback(() => { + markAuthIsDone() handleStartLoading() pinInputRef.current?.blur() isProcessing.value = true diff --git a/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx b/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx index eb5e40b0c6..20f3912450 100644 --- a/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx +++ b/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx @@ -28,6 +28,7 @@ import { selectTokenVisibility } from 'store/portfolio' import { useAssetsFilterAndSort } from '../hooks/useAssetsFilterAndSort' import { EmptyState } from './EmptyState' import { TokenListItem } from './TokenListItem' +import { markTIIRender } from '../../../../../../PerformanceTracer' interface Props { containerStyle: ViewStyle @@ -98,6 +99,8 @@ const AssetsScreen: FC = ({ (item: LocalTokenWithBalance, index: number): JSX.Element => { const isLeftColumn = index % numColumns === 0 + markTIIRender(); + const style = isGridView ? { marginLeft: isLeftColumn ? 8 : 0, diff --git a/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx b/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx index 5283a23ad2..85c108b1bb 100644 --- a/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx +++ b/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx @@ -17,6 +17,7 @@ import { SubTextNumber } from 'common/components/SubTextNumber' import { UNKNOWN_AMOUNT } from 'consts/amount' import { TokenListViewProps } from '../types' import { LogoWithNetwork } from './LogoWithNetwork' +import { markAppReady } from '../../../../../../PerformanceTracer' export const TokenListView = ({ token, @@ -53,7 +54,7 @@ export const TokenListView = ({ } return ( - + { const router = useRouter() @@ -18,6 +19,7 @@ const LoginWithPinOrBiometry = (): JSX.Element => { return ( {markTTIFinal()}} shouldAvoidKeyboard hideHeaderBackground scrollEnabled={false} diff --git a/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts b/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts index f592deb315..825b7149a0 100644 --- a/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts +++ b/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts @@ -14,41 +14,40 @@ if (!Config.PROXY_URL) const baseUrl = `${Config.PROXY_URL}/watchlist` +// Zodios endpoint definitions +const endpoints = [ + { + method: 'get', + path: '/price', + alias: 'simplePrice', + response: SimplePriceResponseSchema + }, + { + method: 'get', + path: '/tokens', + parameters: [{ name: 'currency', type: 'Query', schema: string() }], + alias: 'tokens', + response: array(TopTokenSchema) + }, + { + method: 'get', + path: '/trending', + alias: 'trending', + response: array(TrendingTokenSchema) + } +] as const + // Infer types from schemas for typings export type SimplePriceResponse = z.infer export type TopToken = z.infer export type TrendingToken = z.infer // Dev (validated) and Prod (raw) clients -const devClient = new Zodios( - baseUrl, - [ - { - method: 'get', - path: '/price', - alias: 'simplePrice', - response: SimplePriceResponseSchema - }, - { - method: 'get', - path: '/tokens', - parameters: [{ name: 'currency', type: 'Query', schema: string() }], - alias: 'tokens', - response: array(TopTokenSchema) - }, - { - method: 'get', - path: '/trending', - alias: 'trending', - response: array(TrendingTokenSchema) - } - ], - { - axiosConfig: { - headers: { 'Content-Type': 'application/json' } - } +const devClient = new Zodios(baseUrl, endpoints, { + axiosConfig: { + headers: { 'Content-Type': 'application/json' } } -) +}) const prodClient = axios.create({ baseURL: baseUrl, @@ -56,7 +55,7 @@ const prodClient = axios.create({ }) // Force validation on/off -const useValidation = __DEV__ //in normal use +const useValidation = __DEV__ //in normal use export const watchListCacheClient = { /** @@ -94,4 +93,4 @@ export const watchListCacheClient = { const { data } = await prodClient.get('/trending') return data } -} +} \ No newline at end of file diff --git a/packages/core-mobile/index.js b/packages/core-mobile/index.js index 38a27a1f0a..4163bd6931 100644 --- a/packages/core-mobile/index.js +++ b/packages/core-mobile/index.js @@ -1,3 +1,7 @@ +//import './profiler' +import { observe } from './PerformanceTracer' +observe(); + import { enableFreeze } from 'react-native-screens' enableFreeze(true) diff --git a/packages/core-mobile/ios/Podfile.lock b/packages/core-mobile/ios/Podfile.lock index d631da859a..e28db207e0 100644 --- a/packages/core-mobile/ios/Podfile.lock +++ b/packages/core-mobile/ios/Podfile.lock @@ -533,6 +533,57 @@ PODS: - nanopb/encode (= 3.30910.0) - nanopb/decode (3.30910.0) - nanopb/encode (3.30910.0) + - NitroAvalabsCrypto (0.1.0): + - DoubleConversion + - glog + - hermes-engine + - NitroModules + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-callinvoker + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - NitroModules (0.30.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-callinvoker + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - OpenSSL-Universal (1.1.1100) - OpenTelemetrySwiftApi (1.13.1) - PLCrashReporter (1.12.0) @@ -2158,6 +2209,30 @@ PODS: - React-Codegen - React-Core - ReactCommon/turbomodule/core + - react-native-performance (6.0.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - react-native-quick-base64 (2.1.2): - DoubleConversion - glog @@ -3230,32 +3305,7 @@ PODS: - Yoga - RNSensors (7.3.6): - React-Core - - RNSentry (6.14.0): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - Sentry/HybridSDK (= 8.50.2) - - Yoga - - RNShare (12.0.9): + - RNSentry (7.4.0): - DoubleConversion - glog - hermes-engine @@ -3278,6 +3328,7 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - Sentry/HybridSDK (= 8.57.0) - Yoga - RNSound (0.12.0): - DoubleConversion @@ -3360,7 +3411,7 @@ PODS: - SDWebImage (~> 5.10) - SDWebImageSVGCoder (1.7.0): - SDWebImage/Core (~> 5.6) - - Sentry/HybridSDK (8.50.2) + - Sentry/HybridSDK (8.57.0) - SocketRocket (0.7.1) - SwiftUIIntrospect (1.3.0) - Yoga (0.0.0) @@ -3410,6 +3461,8 @@ DEPENDENCIES: - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - jail-monkey (from `../node_modules/jail-monkey`) - lottie-react-native (from `../node_modules/lottie-react-native`) + - NitroAvalabsCrypto (from `../node_modules/react-native-nitro-avalabs-crypto`) + - NitroModules (from `../node_modules/react-native-nitro-modules`) - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) @@ -3460,6 +3513,7 @@ DEPENDENCIES: - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-pager-view (from `../node_modules/react-native-pager-view`) - react-native-passkey (from `../node_modules/react-native-passkey`) + - react-native-performance (from `../node_modules/react-native-performance`) - react-native-quick-base64 (from `../node_modules/react-native-quick-base64`) - react-native-quick-crypto (from `../node_modules/react-native-quick-crypto`) - react-native-restart (from `../node_modules/react-native-restart`) @@ -3527,7 +3581,6 @@ DEPENDENCIES: - RNScreens (from `../node_modules/react-native-screens`) - RNSensors (from `../node_modules/react-native-sensors`) - "RNSentry (from `../node_modules/@sentry/react-native`)" - - RNShare (from `../node_modules/react-native-share`) - RNSound (from `../node_modules/react-native-sound`) - RNSVG (from `../node_modules/react-native-svg`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -3655,6 +3708,10 @@ EXTERNAL SOURCES: :path: "../node_modules/jail-monkey" lottie-react-native: :path: "../node_modules/lottie-react-native" + NitroAvalabsCrypto: + :path: "../node_modules/react-native-nitro-avalabs-crypto" + NitroModules: + :path: "../node_modules/react-native-nitro-modules" RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: @@ -3749,6 +3806,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-pager-view" react-native-passkey: :path: "../node_modules/react-native-passkey" + react-native-performance: + :path: "../node_modules/react-native-performance" react-native-quick-base64: :path: "../node_modules/react-native-quick-base64" react-native-quick-crypto: @@ -3883,8 +3942,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-sensors" RNSentry: :path: "../node_modules/@sentry/react-native" - RNShare: - :path: "../node_modules/react-native-share" RNSound: :path: "../node_modules/react-native-sound" RNSVG: @@ -3962,6 +4019,8 @@ SPEC CHECKSUMS: lottie-react-native: 8bc11e10576d1a3f77f4e0ae5b70503c5c890a09 MultiplatformBleAdapter: b1fddd0d499b96b607e00f0faa8e60648343dc1d nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 + NitroAvalabsCrypto: 04b9f004efee45b190f5f55edb4695e20bcdb1ea + NitroModules: a0e083750af37516a6b356ccf3373716eb1d01a1 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c OpenTelemetrySwiftApi: aaee576ed961e0c348af78df58b61300e95bd104 PLCrashReporter: db59ef96fa3d25f3650040d02ec2798cffee75f2 @@ -4014,6 +4073,7 @@ SPEC CHECKSUMS: react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 react-native-pager-view: f238ed7fb53458bd03366944a33686f067c83e9a react-native-passkey: 3aac247c18127443ef4a002b59d8e12dc7e99f2e + react-native-performance: 83bf66f3ada75bb7b0cd69735ac7d51e8f3ca81d react-native-quick-base64: 651d972291fd5d9902869636a1b3c46820324490 react-native-quick-crypto: 71b622aa0a231ac068759f5eef37982ad5eae58c react-native-restart: 0bc732f4461709022a742bb29bcccf6bbc5b4863 @@ -4080,14 +4140,13 @@ SPEC CHECKSUMS: RNReanimated: 722d67dfde539bfe29b572878f4bc805f727726b RNScreens: f0678748c5310b49a3f920f1485f5ec477afd345 RNSensors: 111159597ac51505df10413c61b28bcd28e88983 - RNSentry: 3bc708566b3390947b6ecd785645398cd1a0049e - RNShare: 43faaefd287ef344e8379caeaca12d112f713295 + RNSentry: 0f61ae3c111d9129a978aeedd1fa05d0cd2307a9 RNSound: 72c4886fb80b8a0e8c40131099223e09422aa8b4 RNSVG: 794f269526df9ddc1f79b3d1a202b619df0368e3 SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 SDWebImageAVIFCoder: 00310d246aab3232ce77f1d8f0076f8c4b021d90 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c - Sentry: d95f5f3b32d01324b3e27d3c52747005302cc026 + Sentry: e1b49e5f49367ff211b25c431a60e2bd83b792aa SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 SwiftUIIntrospect: fee9aa07293ee280373a591e1824e8ddc869ba5d Yoga: adb397651e1c00672c12e9495babca70777e411e diff --git a/packages/core-mobile/metro.config.js b/packages/core-mobile/metro.config.js index 11f292e419..77056a4474 100644 --- a/packages/core-mobile/metro.config.js +++ b/packages/core-mobile/metro.config.js @@ -1,6 +1,12 @@ const { mergeConfig } = require('@react-native/metro-config') const { getSentryExpoConfig } = require('@sentry/react-native/metro') const merge = require('lodash.merge') +const path = require('path') + +// Workspace paths (adjust if your monorepo depth is different) +const projectRoot = __dirname +const workspaceRoot = path.resolve(projectRoot, '..', '..') +const nitroCryptoPath = path.resolve(workspaceRoot, 'packages/react-native-nitro-avalabs-crypto') const monorepoConfig = require('./metro.monorepo.config') const defaultConfig = getSentryExpoConfig(__dirname) @@ -25,13 +31,22 @@ const baseConfig = { }), babelTransformerPath: require.resolve('react-native-svg-transformer') }, + watchFolders: [ + workspaceRoot, + nitroCryptoPath, + ], resolver: { // mute warnings about circular dependencies requireCycleIgnorePatterns: [/^app\/.*/, /^node_modules\/.*/], extraNodeModules: { stream: require.resolve('./node_modules/stream-browserify'), - '@noble/hashes': require.resolve('./node_modules/@noble/hashes') + '@noble/hashes': require.resolve('./node_modules/@noble/hashes'), + "react-native-nitro-avalabs-crypto": nitroCryptoPath }, + nodeModulesPaths: [ + path.resolve(workspaceRoot, 'node_modules'), + path.resolve(projectRoot, 'node_modules'), + ], // TODO: should this be a temporary fix? unstable_enablePackageExports: false, // sbmodern is needed for storybook diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 7bb29a3cb7..9de3760fe6 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -23,9 +23,9 @@ "appium": "wdio run ./e2e-appium/wdio.conf.ts" }, "dependencies": { - "@avalabs/avalanche-module": "1.11.0", + "@avalabs/avalanche-module": "1.10.2", "@avalabs/avalanchejs": "5.1.0-alpha.2", - "@avalabs/bitcoin-module": "1.11.0", + "@avalabs/bitcoin-module": "1.10.2", "@avalabs/bridge-unified": "4.0.3", "@avalabs/core-bridge-sdk": "3.1.0-alpha.61", "@avalabs/core-chains-sdk": "3.1.0-alpha.61", @@ -33,12 +33,12 @@ "@avalabs/core-gasless-sdk": "3.1.0-alpha.61", "@avalabs/core-utils-sdk": "3.1.0-alpha.61", "@avalabs/core-wallets-sdk": "3.1.0-alpha.61", - "@avalabs/evm-module": "1.11.0", + "@avalabs/evm-module": "1.10.2", "@avalabs/glacier-sdk": "3.1.0-alpha.58", "@avalabs/k2-alpine": "workspace:*", - "@avalabs/svm-module": "1.11.0", + "@avalabs/svm-module": "1.10.2", "@avalabs/types": "3.1.0-alpha.58", - "@avalabs/vm-module-types": "1.11.0", + "@avalabs/vm-module-types": "1.10.2", "@babel/runtime": "7.25.7", "@bitcoinerlab/secp256k1": "1.2.0", "@blockaid/client": "0.48.0", @@ -77,6 +77,7 @@ "@paraswap/sdk": "7.2.3", "@react-native-async-storage/async-storage": "2.1.2", "@react-native-clipboard/clipboard": "1.15.0", + "@react-native-community/cli-tools": "^20.0.2", "@react-native-community/datetimepicker": "8.4.1", "@react-native-community/netinfo": "11.4.1", "@react-native-community/slider": "4.5.6", @@ -92,7 +93,7 @@ "@react-navigation/native-stack": "7.3.25", "@reduxjs/toolkit": "1.8.1", "@reown/walletkit": "1.0.0", - "@sentry/react-native": "6.14.0", + "@sentry/react-native": "7.4.0", "@shopify/flash-list": "1.7.6", "@shopify/react-native-performance": "4.1.2", "@shopify/react-native-skia": "v2.0.0-next.4", @@ -108,7 +109,7 @@ "@walletconnect/utils": "2.17.2", "@zodios/core": "10.9.6", "assert": "2.1.0", - "axios": "1.12.2", + "axios": "1.12.1", "base-64": "1.0.0", "big.js": "6.2.2", "bip174": "2.1.0", @@ -153,6 +154,7 @@ "lodash.merge": "4.6.2", "lottie-react-native": "7.2.2", "lru-cache": "11.0.2", + "metro-symbolicate": "^0.83.3", "moment": "2.30.1", "path-browserify": "1.0.1", "qrcode-reader": "1.0.4", @@ -189,10 +191,12 @@ "react-native-localize": "3.2.1", "react-native-mmkv": "3.2.0", "react-native-modal-datetime-picker": "18.0.0", + "react-native-nitro-avalabs-crypto": "workspace:*", + "react-native-nitro-modules": "^0.30.2", "react-native-os": "1.2.6", "react-native-pager-view": "6.7.1", "react-native-passkey": "3.1.0", - "react-native-performance": "5.1.2", + "react-native-performance": "^6.0.0", "react-native-permissions": "4.1.5", "react-native-popable": "0.4.3", "react-native-popover-view": "6.1.0", @@ -207,7 +211,6 @@ "react-native-safe-area-context": "5.5.2", "react-native-screens": "4.15.4", "react-native-sensors": "7.3.6", - "react-native-share": "12.0.9", "react-native-sound": "0.12.0", "react-native-svg": "15.11.2", "react-native-tab-view": "4.0.5", @@ -294,7 +297,7 @@ "babel-loader": "9.2.1", "babel-plugin-inline-dotenv": "1.7.0", "babel-plugin-module-resolver": "5.0.2", - "babel-plugin-react-compiler": "19.1.0-rc.3", + "babel-plugin-react-compiler": "latest", "babel-plugin-react-require": "4.0.3", "detox": "20.41.1", "eslint": "8.50.0", diff --git a/packages/core-mobile/react-native.config.js b/packages/core-mobile/react-native.config.js index 76214935f8..4f20438284 100644 --- a/packages/core-mobile/react-native.config.js +++ b/packages/core-mobile/react-native.config.js @@ -1,11 +1,6 @@ module.exports = { assets: ['./app/assets/fonts/'], dependencies: { - 'react-native-performance': { - platforms: { - ios: null, - android: null - } - } + } } diff --git a/packages/core-mobile/simplePatch.sh b/packages/core-mobile/simplePatch.sh new file mode 100755 index 0000000000..b504f4d5a4 --- /dev/null +++ b/packages/core-mobile/simplePatch.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +set -e + +usage() { + echo "usage: $0 [-v ] [--locator ]" + echo "examples:" + echo " $0 @walletconnect/core" + echo " $0 @walletconnect/utils -v 2.16.1" + echo " $0 @walletconnect/utils --locator @walletconnect/utils@npm:2.16.1" + exit 1 +} + +[[ $# -ge 1 ]] || usage +PKG="$1"; shift || true + +VER="" +LOC="" +while [[ $# -gt 0 ]]; do + case "$1" in + -v|--version) VER="${2:-}"; shift 2 ;; + --locator) LOC="${2:-}"; shift 2 ;; + -h|--help) usage ;; + *) echo "unknown arg: $1"; usage ;; + esac +done + +# If --locator given, use it verbatim. Else build from PKG + optional -v. +if [[ -n "$LOC" ]]; then + PATCH_ARG="$LOC" +else + if [[ -n "$VER" ]]; then + # Yarn Berry expects protocol when multiple versions exist + PATCH_ARG="${PKG%@*}@npm:${VER}" + else + PATCH_ARG="$PKG" + fi +fi + +# Resolve node_modules path (supports @scope/name and optional @version) +if [[ "$PKG" == @*/* ]]; then + SCOPE="${PKG%%/*}" # @scope + REST="${PKG#*/}" # name[@version] + NAME="${REST%%@*}" # name + PKG_DIR="node_modules/$SCOPE/$NAME" +else + NAME="${PKG%%@*}" + PKG_DIR="node_modules/$NAME" +fi + +echo "→ yarn patch $PATCH_ARG" +OUT="$(yarn patch "$PATCH_ARG" 2>&1 | tee /dev/stderr)" + +# Handle the “multiple candidate packages found” case nicely +if grep -q "Multiple candidate packages found" <<<"$OUT"; then + echo "❌ Multiple versions installed. Try:" + echo " yarn why ${PKG%@*}" + echo " then re-run with:" + echo " $0 ${PKG%@*} --locator ${PKG%@*}@npm:" + exit 1 +fi + +TMP_DIR="$(sed -nE 's/.*edit the following folder: (.*)$/\1/p' <<<"$OUT" | tail -n1)" +[[ -d "$TMP_DIR" ]] || { echo "❌ Failed to get yarn patch temp dir"; exit 1; } +[[ -d "$PKG_DIR" ]] || { echo "❌ Package dir not found: $PKG_DIR"; exit 1; } + +echo "→ Copying $PKG_DIR → $TMP_DIR" +cp -a "$PKG_DIR"/. "$TMP_DIR"/ + +echo "→ yarn patch-commit" +# NOTE: On Yarn Berry, -s takes NO message string +yarn patch-commit -s "$TMP_DIR" + +echo "✅ Patch created under .yarn/patches" diff --git a/packages/react-native-nitro-avalabs-crypto/.editorconfig b/packages/react-native-nitro-avalabs-crypto/.editorconfig new file mode 100644 index 0000000000..65365be68e --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/.editorconfig @@ -0,0 +1,15 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] + +indent_style = space +indent_size = 2 + +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/packages/react-native-nitro-avalabs-crypto/.gitattributes b/packages/react-native-nitro-avalabs-crypto/.gitattributes new file mode 100644 index 0000000000..e27f70fa49 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/.gitattributes @@ -0,0 +1,3 @@ +*.pbxproj -text +# specific for windows script files +*.bat text eol=crlf diff --git a/packages/react-native-nitro-avalabs-crypto/.gitignore b/packages/react-native-nitro-avalabs-crypto/.gitignore new file mode 100644 index 0000000000..9b33822c02 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/.gitignore @@ -0,0 +1,90 @@ +# OSX +# +.DS_Store + +# XDE +.expo/ + +# VSCode +.vscode/ +jsconfig.json + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace +**/.xcode.env.local + +# Android/IJ +# +.classpath +.cxx +.gradle +.idea +.project +.settings +local.properties +android.iml + +# Cocoapods +# +example/ios/Pods + +# Ruby +example/vendor/ + +# node.js +# +node_modules/ +npm-debug.log +yarn-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +android/app/libs +android/keystores/debug.keystore + +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Expo +.expo/ + +# Turborepo +.turbo/ + +# generated by bob +lib/ + +# React Native Codegen +ios/generated +android/generated + +# React Native Nitro Modules +nitrogen/ + +ios/secp-out/ +ios/secp256k1-src/ +ios/secp-build/ diff --git a/packages/react-native-nitro-avalabs-crypto/.nvmrc b/packages/react-native-nitro-avalabs-crypto/.nvmrc new file mode 100644 index 0000000000..c004e356d6 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/.nvmrc @@ -0,0 +1 @@ +v22.20.0 diff --git a/packages/react-native-nitro-avalabs-crypto/.watchmanconfig b/packages/react-native-nitro-avalabs-crypto/.watchmanconfig new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md b/packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..45d257b29a --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md b/packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md new file mode 100644 index 0000000000..52e6493549 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md @@ -0,0 +1,147 @@ +# Contributing + +Contributions are always welcome, no matter how large or small! + +We want this community to be friendly and respectful to each other. Please follow it in all your interactions with the project. Before contributing, please read the [code of conduct](./CODE_OF_CONDUCT.md). + +## Development workflow + +This project is a monorepo managed using [Yarn workspaces](https://yarnpkg.com/features/workspaces). It contains the following packages: + +- The library package in the root directory. +- An example app in the `example/` directory. + +To get started with the project, make sure you have the correct version of [Node.js](https://nodejs.org/) installed. See the [`.nvmrc`](./.nvmrc) file for the version used in this project. + +Run `yarn` in the root directory to install the required dependencies for each package: + +```sh +yarn +``` + +> Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development without manually migrating. + +This project uses Nitro Modules. If you're not familiar with how Nitro works, make sure to check the [Nitro Modules Docs](https://nitro.margelo.com/). + +You need to run [Nitrogen](https://nitro.margelo.com/docs/nitrogen) to generate the boilerplate code required for this project. The example app will not build without this step. + +Run **Nitrogen** in following cases: + +- When you make changes to any `*.nitro.ts` files. +- When running the project for the first time (since the generated files are not committed to the repository). + +To invoke **Nitrogen**, use the following command: + +```sh +yarn nitrogen +``` + +The [example app](/example/) demonstrates usage of the library. You need to run it to test any changes you make. + +It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app. + +If you want to use Android Studio or Xcode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/NitroAvalabsCryptoExample.xcworkspace` in Xcode and find the source files at `Pods > Development Pods > react-native-nitro-avalabs-crypto`. + +To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `react-native-nitro-avalabs-crypto` under `Android`. + +You can use various commands from the root directory to work with the project. + +To start the packager: + +```sh +yarn example start +``` + +To run the example app on Android: + +```sh +yarn example android +``` + +To run the example app on iOS: + +```sh +yarn example ios +``` + +To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this: + +```sh +Running "NitroAvalabsCryptoExample" with {"fabric":true,"initialProps":{"concurrentRoot":true},"rootTag":1} +``` + +Note the `"fabric":true` and `"concurrentRoot":true` properties. + +Make sure your code passes TypeScript and ESLint. Run the following to verify: + +```sh +yarn typecheck +yarn lint +``` + +To fix formatting errors, run the following: + +```sh +yarn lint --fix +``` + +Remember to add tests for your change if possible. Run the unit tests by: + +```sh +yarn test +``` + +### Commit message convention + +We follow the [conventional commits specification](https://www.conventionalcommits.org/en) for our commit messages: + +- `fix`: bug fixes, e.g. fix crash due to deprecated method. +- `feat`: new features, e.g. add new method to the module. +- `refactor`: code refactor, e.g. migrate from class components to hooks. +- `docs`: changes into documentation, e.g. add usage example for the module. +- `test`: adding or updating tests, e.g. add integration tests using detox. +- `chore`: tooling changes, e.g. change CI config. + +Our pre-commit hooks verify that your commit message matches this format when committing. + +### Linting and tests + +[ESLint](https://eslint.org/), [Prettier](https://prettier.io/), [TypeScript](https://www.typescriptlang.org/) + +We use [TypeScript](https://www.typescriptlang.org/) for type checking, [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) for linting and formatting the code, and [Jest](https://jestjs.io/) for testing. + +Our pre-commit hooks verify that the linter and tests pass when committing. + +### Publishing to npm + +We use [release-it](https://github.com/release-it/release-it) to make it easier to publish new versions. It handles common tasks like bumping version based on semver, creating tags and releases etc. + +To publish new versions, run the following: + +```sh +yarn release +``` + +### Scripts + +The `package.json` file contains various scripts for common tasks: + +- `yarn`: setup project by installing dependencies. +- `yarn typecheck`: type-check files with TypeScript. +- `yarn lint`: lint files with ESLint. +- `yarn test`: run unit tests with Jest. +- `yarn example start`: start the Metro server for the example app. +- `yarn example android`: run the example app on Android. +- `yarn example ios`: run the example app on iOS. + +### Sending a pull request + +> **Working on your first pull request?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github). + +When you're sending a pull request: + +- Prefer small pull requests focused on one change. +- Verify that linters and tests are passing. +- Review the documentation to make sure it looks good. +- Follow the pull request template when opening a pull request. +- For pull requests that change the API or implementation, discuss with maintainers first by opening an issue. diff --git a/packages/react-native-nitro-avalabs-crypto/LICENSE b/packages/react-native-nitro-avalabs-crypto/LICENSE new file mode 100644 index 0000000000..59f91e3931 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/LICENSE @@ -0,0 +1,20 @@ +MIT License + +Copyright (c) 2025 TurboSzymon +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec b/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec new file mode 100644 index 0000000000..80dc7532dd --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec @@ -0,0 +1,67 @@ +require "json" + +package = JSON.parse(File.read(File.join(__dir__, "package.json"))) + +Pod::Spec.new do |s| + s.name = "NitroAvalabsCrypto" + s.version = package["version"] + s.summary = package["description"] + s.homepage = package["homepage"] + s.license = package["license"] + s.authors = package["author"] + + s.platforms = { :ios => min_ios_version_supported } + s.source = { :git => "https://github.com/Szymon20000/react-native-nitro-avalabs-crypto.git", :tag => "#{s.version}" } + + s.source_files = [ + "ios/**/*.{swift}", + "ios/**/*.{m,mm}", + "cpp/**/*.{hpp,cpp}", + ] + + s.dependency 'React-jsi' + s.dependency 'React-callinvoker' + + load 'nitrogen/generated/ios/NitroAvalabsCrypto+autolinking.rb' + add_nitrogen_files(s) + + # ----------------------------------------------------------------- + # Build script – produces secp256k1.xcframework + # ----------------------------------------------------------------- + s.script_phases = [{ + :name => 'Build secp256k1 (cached)', + :execution_position => :before_compile, + :shell_path => '/bin/bash', + :script => %Q{bash "${PODS_TARGET_SRCROOT}/ios/scripts/build.sh"} + }] + + # ----------------------------------------------------------------- + # Use the XCFramework – **no manual paths or -lsecp256k1** + # ----------------------------------------------------------------- + s.vendored_frameworks = '$(PODS_TARGET_SRCROOT)/ios/secp-out/secp256k1.xcframework' + + # Keep your C++/Swift flags (they are harmless) + s.pod_target_xcconfig = { + 'HEADER_SEARCH_PATHS' => '$(inherited) $(PODS_TARGET_SRCROOT)/ios/secp-out/include', + 'CLANG_CXX_LIBRARY' => 'libc++', + 'OTHER_CPLUSPLUSFLAGS' => '$(inherited) -std=gnu++20', + 'CLANG_CXX_LANGUAGE_STANDARD' => 'c++20', + 'SWIFT_OBJC_INTEROP_MODE' => 'objcxx', + 'DEFINES_MODULE' => 'YES', + 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' + } + + # Tell Xcode where the public headers live + s.xcconfig = { + 'HEADER_SEARCH_PATHS' => '$(inherited) $(PODS_TARGET_SRCROOT)/ios/secp-out/include', + } + + s.user_target_xcconfig = { + 'LIBRARY_SEARCH_PATHS[sdk=iphoneos*]' => '$(inherited) "$(PODS_ROOT)/../../node_modules/react-native-nitro-avalabs-crypto/ios/secp-build/iphoneos-arm64/lib"', + 'LIBRARY_SEARCH_PATHS[sdk=iphonesimulator*]' => '$(inherited) "$(PODS_ROOT)/../../node_modules/react-native-nitro-avalabs-crypto/ios/secp-build/iphonesimulator-arm64/lib"', + 'OTHER_LDFLAGS' => '$(inherited) -lsecp256k1' +} + + s.static_framework = true + install_modules_dependencies(s) +end \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/README.md b/packages/react-native-nitro-avalabs-crypto/README.md new file mode 100644 index 0000000000..85149d1eeb --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/README.md @@ -0,0 +1,39 @@ +# react-native-nitro-avalabs-crypto + +Avalabs' React Native crypto libray + +## Installation + + +```sh +npm install react-native-nitro-avalabs-crypto react-native-nitro-modules + +> `react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/). +``` + + +## Usage + + +```js +import { multiply } from 'react-native-nitro-avalabs-crypto'; + +// ... + +const result = multiply(3, 7); +``` + + +## Contributing + +- [Development workflow](CONTRIBUTING.md#development-workflow) +- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request) +- [Code of conduct](CODE_OF_CONDUCT.md) + +## License + +MIT + +--- + +Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob) diff --git a/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt b/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt new file mode 100644 index 0000000000..9c4385a8b4 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt @@ -0,0 +1,57 @@ +project(nitroavalabscrypto) +cmake_minimum_required(VERSION 3.9.0) + +set(PACKAGE_NAME nitroavalabscrypto) +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_CXX_STANDARD 20) + +# Define C++ library and add all sources +file(GLOB CPP_SOURCES "../cpp/*.cpp" "../cpp/*.hpp") +add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp ${CPP_SOURCES}) + +# Add Nitrogen specs +include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/nitroavalabscrypto+autolinking.cmake) + +# Set up local includes +include_directories("src/main/cpp" "../cpp") + +# Debug variables +message("SECP256K1_ANDROID_ROOT: ${SECP256K1_ANDROID_ROOT}") +message("ANDROID_ABI: ${ANDROID_ABI}") +message("SECP256K1_LIB_DIR: ${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib") +file(GLOB LIB_FILES "${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib/*") +message("Files in SECP256K1_LIB_DIR: ${LIB_FILES}") + +# Check for secp256k1 variables +if(NOT DEFINED SECP256K1_INCLUDE_DIR OR NOT DEFINED SECP256K1_ANDROID_ROOT) + message(FATAL_ERROR "SECP256K1 vars not provided. Ensure Gradle passes -DSECP256K1_INCLUDE_DIR and -DSECP256K1_ANDROID_ROOT.") +endif() + +# Set the library path directly +set(SECP256K1_LIB_DIR "${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib") +file(REAL_PATH "${SECP256K1_LIB_DIR}" RESOLVED_LIB_DIR) +message("Resolved SECP256K1_LIB_DIR: ${RESOLVED_LIB_DIR}") +set(SECP256K1_LIB "${RESOLVED_LIB_DIR}/libsecp256k1.so") +if(NOT EXISTS "${SECP256K1_LIB}") + message(FATAL_ERROR "libsecp256k1.so does not exist at ${SECP256K1_LIB}") +else() + file(SIZE "${SECP256K1_LIB}" LIB_SIZE) + message("libsecp256k1.so size: ${LIB_SIZE} bytes") + if(LIB_SIZE EQUAL 0) + message(FATAL_ERROR "libsecp256k1.so is empty at ${SECP256K1_LIB}") + endif() + message("Manually set libsecp256k1.so at: ${SECP256K1_LIB}") +endif() + +# Add headers for secp256k1 +include_directories("${SECP256K1_INCLUDE_DIR}") + +find_library(LOG_LIB log) + +# Link all libraries together +target_link_libraries( + ${PACKAGE_NAME} + ${LOG_LIB} + ${SECP256K1_LIB} + android +) \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle new file mode 100644 index 0000000000..47b9bf3b18 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -0,0 +1,404 @@ +buildscript { + ext.getExtOrDefault = {name -> + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['NitroAvalabsCrypto_' + name] + } + + repositories { + google() + mavenCentral() + } + + dependencies { + classpath "com.android.tools.build:gradle:8.7.2" + // noinspection DifferentKotlinGradleVersion + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}" + } +} + +def reactNativeArchitectures() { + def value = rootProject.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} + +apply plugin: "com.android.library" +apply plugin: "kotlin-android" +apply from: '../nitrogen/generated/android/nitroavalabscrypto+autolinking.gradle' + +apply plugin: "com.facebook.react" + +def getExtOrIntegerDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroAvalabsCrypto_" + name]).toInteger() +} + +// === secp256k1 Android build wiring (headers + .so per ABI) === +ext { + SECP_OUTPUTS_INCLUDE_DIR = "$buildDir/outputs/include" + SECP_OUTPUTS_ROOT = "$buildDir/outputs/android" // /lib/libsecp256k1.so +} + +ext { + secpRepoUrl = 'https://github.com/bitcoin-core/secp256k1.git' + secpTag = 'v0.7.0' + secpCommit = '' + workDir = file("$buildDir/secp256k1") + installRoot = file("$buildDir/secp-android") + outputsRoot = file(SECP_OUTPUTS_ROOT) + outputsIncludeDir = file(SECP_OUTPUTS_INCLUDE_DIR) + enableModules = (project.findProperty('secpModules') ?: '') // e.g., ecdh,recovery,schnorrsig,extrakeys + // Use the same API level for all ABIs; default to max(minSdkVersion, 21). Override with -PsecpApi. + secpApi = (project.findProperty('secpApi') ?: Math.max(getExtOrIntegerDefault("minSdkVersion"), 21)).toString() +} + +import org.apache.tools.ant.taskdefs.condition.Os + +def isMac() { Os.isFamily(Os.FAMILY_MAC) } + +def findNdkRoot() { + ['ANDROID_NDK_HOME','ANDROID_NDK_ROOT','ANDROID_NDK'].collect { System.getenv(it) } + .find { it && file(it).exists() } ?: + { -> + def home = System.getenv('HOME') + def ndkBundle = file("$home/Library/Android/sdk/ndk-bundle") + if (ndkBundle.exists()) return ndkBundle + def ndkMulti = file("$home/Library/Android/sdk/ndk") + if (ndkMulti.exists()) { + def versions = ndkMulti.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> a.name <=> b.name } + if (versions && !versions.isEmpty()) return versions.last() + } + throw new GradleException("Android NDK not found. Set ANDROID_NDK_HOME / ANDROID_NDK_ROOT / ANDROID_NDK.") + }.call() +} + +def ndkRoot = file(findNdkRoot()) + +def hostTag = ['darwin-arm64','darwin-x86_64'].find { new File(ndkRoot, "toolchains/llvm/prebuilt/${it}").exists() } ?: + new File(ndkRoot, "toolchains/llvm/prebuilt").listFiles()?.find { it.isDirectory() }?.name +if (!hostTag) throw new GradleException("Cannot locate NDK llvm/prebuilt host tag under ${ndkRoot}.") + +def toolBin = file("${ndkRoot}/toolchains/llvm/prebuilt/${hostTag}/bin") + +def abiMatrix = { + [ + 'armeabi-v7a': [ host:'arm-linux-androideabi', target:'armv7a-linux-androideabi', api: secpApi ], + 'arm64-v8a' : [ host:'aarch64-linux-android', target:'aarch64-linux-android', api: secpApi ], + 'x86' : [ host:'i686-linux-android', target:'i686-linux-android', api: secpApi ], + 'x86_64' : [ host:'x86_64-linux-android', target:'x86_64-linux-android', api: secpApi ], + ] +}.call() + +def moduleFlagsString = { + def map = [ + ecdh : '--enable-module-ecdh', + recovery : '--enable-module-recovery', + extrakeys : '--enable-module-extrakeys', + schnorrsig: '--enable-module-schnorrsig', + ] + (enableModules ?: '').split(',').collect { it.trim() }.findAll { it }.collect { map[it] ?: '' }.findAll { it }.join(' ') +}.call() + +// Fetch repo at pinned tag or commit (incremental) +tasks.register('fetchSecp256k1') { + inputs.property('repoUrl', secpRepoUrl) + inputs.property('tag', secpTag) + inputs.property('commit', secpCommit) + outputs.dir(workDir) + doLast { + if (!workDir.exists()) { + workDir.mkdirs() + } + + // Determine ref to check out: prefer tag, then commit, else default branch + def ref = (secpTag ?: secpCommit ?: '').trim() + if (ref) { + // --- Try Git first (annotated tags need refs/tags/) --- + def ok = true + try { + exec { workingDir workDir; commandLine 'git', 'init'; ignoreExitValue true } + exec { workingDir workDir; commandLine 'git', 'remote', 'remove', 'origin'; ignoreExitValue true } + exec { workingDir workDir; commandLine 'git', 'remote', 'add', 'origin', secpRepoUrl; ignoreExitValue true } + exec { workingDir workDir; commandLine 'git', 'fetch', '--tags', '--prune', 'origin' } + def co1 = exec { workingDir workDir; commandLine 'git', 'checkout', "refs/tags/${ref}"; ignoreExitValue true } + if (co1.exitValue != 0) { + def co2 = exec { workingDir workDir; commandLine 'git', 'checkout', ref; ignoreExitValue true } + if (co2.exitValue != 0) ok = false + } + } catch (Exception e) { + ok = false + } + + if (!ok) { + // --- Fallback: download release tarball --- + def url = "https://github.com/bitcoin-core/secp256k1/archive/refs/tags/${ref}.tar.gz" + def tarFile = file("${buildDir}/secp256k1-${ref}.tar.gz") + def refNoV = ref.startsWith('v') ? ref.substring(1) : ref + def extractDir = file("${buildDir}/secp256k1-${refNoV}") + + println "[secp] Git checkout failed for '${ref}', falling back to tarball: ${url}" + def curlRes = exec { commandLine 'curl', '-fL', '-o', tarFile.absolutePath, url; ignoreExitValue true } + if (curlRes.exitValue != 0) { + throw new GradleException("Failed to download ${url}. Try setting -PsecpTag to a valid release (e.g., v0.6.0).") + } + // Ensure clean target + if (extractDir.exists()) extractDir.deleteDir() + exec { commandLine 'tar', '-xzf', tarFile.absolutePath, '-C', buildDir.absolutePath } + + if (!extractDir.exists()) { + throw new GradleException("Expected extracted folder ${extractDir} not found after untar. Tag '${ref}' may be invalid.") + } + // Move to workDir + if (workDir.exists() && workDir.listFiles()?.length) workDir.deleteDir() + extractDir.renameTo(workDir) + println "[secp] Extracted to ${workDir}" + } else { + println "[secp] Checked out ${ref} via git" + } + } else { + // No explicit ref: clone/update default branch best-effort + if (!new File(workDir, '.git').exists()) { + exec { commandLine 'git', 'clone', secpRepoUrl, workDir.absolutePath } + } else { + exec { workingDir workDir; commandLine 'git', 'pull', '--ff-only', 'origin'; ignoreExitValue true } + } + } + } +} + +// Per-ABI configure/build (incremental) + +def abis = ['armeabi-v7a','arm64-v8a','x86','x86_64'] + +abis.each { abi -> + def meta = abiMatrix[abi] + def ccTrip = "${meta.target}${meta.api}-clang" + def arTool = "${meta.host}-ar" + def ranlibTool = "${meta.host}-ranlib" + def stripTool = "${meta.host}-strip" + + def installDir = file("${installRoot}/${abi}") + def stagedLib = file("${outputsRoot}/${abi}/lib/libsecp256k1.so") + def libDirOut = stagedLib.parentFile + def stampFile = file("${buildDir}/stamps/secp_${abi}.stamp") + + tasks.register("configureSecp_${abi}") { + dependsOn 'fetchSecp256k1' + + inputs.property('host', meta.host) + inputs.property('target', meta.target) + inputs.property('api', meta.api) + inputs.property('commit', secpCommit) + inputs.property('modules', enableModules) + inputs.property('ndkRoot', ndkRoot.absolutePath) + inputs.property('hostTag', hostTag) + inputs.files(fileTree(dir: workDir, includes: ['configure.ac','Makefile.am','autogen.sh'])).withPathSensitivity(PathSensitivity.RELATIVE) + outputs.file(stampFile) + + onlyIf { !(stampFile.exists() && stagedLib.exists()) } + + doLast { + outputsIncludeDir.mkdirs() + installDir.mkdirs() + libDirOut.mkdirs() + file("${buildDir}/stamps").mkdirs() + + exec { workingDir workDir; commandLine 'bash', '-lc', './autogen.sh' } + + println "[secp:${abi}] Using API level ${meta.api} (unified)" + + exec { + workingDir workDir + environment 'CC', new File(toolBin, ccTrip).absolutePath + // Use LLVM binutils with libtool-friendly flags (NDK r25+) + environment 'AR', new File(toolBin, 'llvm-ar').absolutePath + environment 'ARFLAGS', 'crs' + environment 'RANLIB', new File(toolBin, 'llvm-ranlib').absolutePath + environment 'NM', new File(toolBin, 'llvm-nm').absolutePath + environment 'STRIP', new File(toolBin, stripTool).absolutePath + // Safer CFLAGS for cross builds + environment 'CFLAGS', "-fPIC -O2 --sysroot=${new File(ndkRoot, 'toolchains/llvm/prebuilt/' + hostTag + '/sysroot').absolutePath}" + environment 'LDFLAGS', '' + // Link against Android log for __android_log_print and enable optional configure logging + environment 'LIBS', '-llog' + // On macOS, libtool is glibtool/gnulibtool; autogen.sh already glibtoolize's, but keep these for safety + environment 'LIBTOOLIZE', 'glibtoolize' + environment 'LIBTOOL', 'glibtool' + commandLine 'bash', '-lc', ([ + './configure', + "--host=${meta.host}", + '--enable-shared', + '--disable-static', + '--with-pic', + '--disable-benchmark', + '--disable-tests', + "--prefix=${installDir.absolutePath}", + moduleFlagsString + ].findAll { it }.join(' ')) + } + + stampFile.text = "configured:${abi}:${secpCommit}:${enableModules}:${meta.api}:${hostTag}:${ndkRoot}" + } + } + + tasks.register("buildSecp_${abi}") { + dependsOn "configureSecp_${abi}" + + inputs.file(file("${workDir}/Makefile")) + inputs.property('commit', secpCommit) + inputs.property('modules', enableModules) + outputs.file(stagedLib) + + onlyIf { !stagedLib.exists() } + + doLast { + def jobs = project.findProperty('jobs') ?: Runtime.runtime.availableProcessors() + exec { + workingDir workDir + environment 'LIBS', '-llog' + commandLine 'bash', '-lc', "make -j${jobs} && make install" + } + + libDirOut.mkdirs() + copy { + from file("${installDir}/lib") + include 'libsecp256k1.so*' + into libDirOut + } + + if (!outputsIncludeDir.exists() || outputsIncludeDir.listFiles() == null || outputsIncludeDir.listFiles().length == 0) { + copy { + from file("${installDir}/include") + into outputsIncludeDir + } + } + println "[${abi}] staged -> ${stagedLib}" + } + } +} + +// Aggregate task + tasks.register('buildSecpAllAndroid') { + group = 'build' + description = 'Build secp256k1 Android .so for all ABIs and stage headers (incremental)' + dependsOn abis.collect { "buildSecp_${it}" } + } + +// Clean helper + tasks.register('cleanSecpAndroid') { + doLast { delete workDir, installRoot, outputsRoot, outputsIncludeDir, file("${buildDir}/stamps") } + } + +android { + namespace "com.margelo.nitro.nitroavalabscrypto" + + compileSdkVersion getExtOrIntegerDefault("compileSdkVersion") + + defaultConfig { + minSdkVersion getExtOrIntegerDefault("minSdkVersion") + targetSdkVersion getExtOrIntegerDefault("targetSdkVersion") + + externalNativeBuild { + cmake { + cppFlags "-frtti -fexceptions -Wall -fstack-protector-all" + arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", + "-DSECP256K1_INCLUDE_DIR=${SECP_OUTPUTS_INCLUDE_DIR}", "-DSECP256K1_ANDROID_ROOT=${SECP_OUTPUTS_ROOT}" + abiFilters (*reactNativeArchitectures()) + + buildTypes { + debug { + cppFlags "-O1 -g" + } + release { + cppFlags "-O2" + } + } + } + } + } + + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } + + packagingOptions { + excludes = [ + "META-INF", + "META-INF/**", + "**/libc++_shared.so", + "**/libfbjni.so", + "**/libjsi.so", + "**/libfolly_json.so", + "**/libfolly_runtime.so", + "**/libglog.so", + "**/libhermes.so", + "**/libhermes-executor-debug.so", + "**/libhermes_executor.so", + "**/libreactnative.so", + "**/libreactnativejni.so", + "**/libturbomodulejsijni.so", + "**/libreact_nativemodule_core.so", + "**/libjscexecutor.so" + ] + } + + buildFeatures { + buildConfig true + prefab true + } + + buildTypes { + release { + minifyEnabled false + } + } + + lintOptions { + disable "GradleCompatible" + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + sourceSets { + main { + java.srcDirs += [ + "generated/java", + "generated/jni" + ] + } + } +} + +// Ensure native build tasks run after secp outputs are prepared (AGP 8.x safe) +afterEvaluate { + def secpTask = tasks.named('buildSecpAllAndroid') + + tasks.configureEach { t -> + def n = t.name + if (n.startsWith('externalNativeBuild') || + n.startsWith('configureCMake') || + n.startsWith('buildCMake') || + n.startsWith('generateJsonModel') || + n.startsWith('prefabGenerate')) { + t.dependsOn(secpTask) + t.doFirst { + println "[secp] '${n}' dependsOn buildSecpAllAndroid" + } + } + } +} + +repositories { + mavenCentral() + google() +} + +def kotlin_version = getExtOrDefault("kotlinVersion") + +dependencies { + implementation "com.facebook.react:react-android" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation project(":react-native-nitro-modules") +} diff --git a/packages/react-native-nitro-avalabs-crypto/android/gradle.properties b/packages/react-native-nitro-avalabs-crypto/android/gradle.properties new file mode 100644 index 0000000000..be949285b4 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/gradle.properties @@ -0,0 +1,5 @@ +NitroAvalabsCrypto_kotlinVersion=2.0.21 +NitroAvalabsCrypto_minSdkVersion=24 +NitroAvalabsCrypto_targetSdkVersion=34 +NitroAvalabsCrypto_compileSdkVersion=35 +NitroAvalabsCrypto_ndkVersion=27.1.12297006 diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/AndroidManifest.xml b/packages/react-native-nitro-avalabs-crypto/android/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..a2f47b6057 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp b/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp new file mode 100644 index 0000000000..13054444aa --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp @@ -0,0 +1,6 @@ +#include +#include "nitroavalabscryptoOnLoad.hpp" + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { + return margelo::nitro::nitroavalabscrypto::initialize(vm); +} diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt new file mode 100644 index 0000000000..840758562a --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt @@ -0,0 +1,10 @@ +package com.margelo.nitro.nitroavalabscrypto + +import com.facebook.proguard.annotations.DoNotStrip + +@DoNotStrip +class NitroAvalabsCrypto : HybridNitroAvalabsCryptoSpec() { + override fun multiply(a: Double, b: Double): Double { + return a * b + } +} diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt new file mode 100644 index 0000000000..1a4a17346a --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt @@ -0,0 +1,22 @@ +package com.margelo.nitro.nitroavalabscrypto + +import com.facebook.react.TurboReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.module.model.ReactModuleInfoProvider + +class NitroAvalabsCryptoPackage : TurboReactPackage() { + override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? { + return null + } + + override fun getReactModuleInfoProvider(): ReactModuleInfoProvider { + return ReactModuleInfoProvider { HashMap() } + } + + companion object { + init { + System.loadLibrary("nitroavalabscrypto") + } + } +} diff --git a/packages/react-native-nitro-avalabs-crypto/babel.config.js b/packages/react-native-nitro-avalabs-crypto/babel.config.js new file mode 100644 index 0000000000..0c05fd6963 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/babel.config.js @@ -0,0 +1,12 @@ +module.exports = { + overrides: [ + { + exclude: /\/node_modules\//, + presets: ['module:react-native-builder-bob/babel-preset'], + }, + { + include: /\/node_modules\//, + presets: ['module:@react-native/babel-preset'], + }, + ], +}; diff --git a/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp new file mode 100644 index 0000000000..e9b5ae3a2a --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp @@ -0,0 +1,316 @@ +#include "CryptoHybrid.hpp" +#include +#include +#include +#include +#ifdef __ANDROID__ +#include +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "CryptoHybrid", __VA_ARGS__) +#else +#define LOGI(...) +#endif + +static std::string toHex(const uint8_t* p, size_t n) { + static const char* k = "0123456789abcdef"; + std::string s; s.resize(n*2); + for (size_t i=0;i>4]; s[2*i+1]=k[p[i]&0xF]; } + return s; +} + +namespace margelo::nitro::nitroavalabscrypto { + +namespace { + std::once_flag g_once; + secp256k1_context* g_ctx = nullptr; + + inline uint8_t hexNibble(char c) { + if (c >= '0' && c <= '9') return static_cast(c - '0'); + c = static_cast(std::tolower(static_cast(c))); + if (c >= 'a' && c <= 'f') return static_cast(10 + (c - 'a')); + throw std::invalid_argument("Invalid hex character"); + } +} + +secp256k1_context* CryptoHybrid::ctx() { + std::call_once(g_once, [] { + g_ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY | SECP256K1_CONTEXT_SIGN); + // optional randomization (not strictly required) + unsigned char seed[32] = {0}; + (void)secp256k1_context_randomize(g_ctx, seed); + }); + return g_ctx; +} + +std::vector CryptoHybrid::hexToBytes(const std::string& h) { + std::string hex = h; + if (hex.rfind("0x", 0) == 0 || hex.rfind("0X", 0) == 0) hex.erase(0, 2); + if (hex.size() % 2 != 0) throw std::invalid_argument("Hex string must have even length"); + std::vector out(hex.size()/2); + for (size_t i=0;i((hexNibble(hex[2*i]) << 4) | hexNibble(hex[2*i+1])); + } + return out; +} + +std::vector CryptoHybrid::bytesFromVariant(const std::variant>& v) { + if (std::holds_alternative(v)) { + return hexToBytes(std::get(v)); + } else { + const auto& ab = std::get>(v); + if (!ab) throw std::invalid_argument("ArrayBuffer is null"); + auto* p = reinterpret_cast(ab->data()); + return std::vector(p, p + ab->size()); + } +} + +std::array CryptoHybrid::require32(const std::variant>& v, const char* what) { + auto bytes = bytesFromVariant(v); + if (bytes.size() != 32) { + throw std::invalid_argument(std::string(what) + " must be 32 bytes"); + } + std::array out{}; + std::copy(bytes.begin(), bytes.end(), out.begin()); + return out; +} + +secp256k1_pubkey CryptoHybrid::parsePubkey(const std::vector& in) { + secp256k1_pubkey pk{}; + // Accept 33 (compressed) or 65 (uncompressed) + if (in.size() != 33 && in.size() != 65) { + throw std::invalid_argument("Public key must be 33 or 65 bytes"); + } + if (secp256k1_ec_pubkey_parse(ctx(), &pk, in.data(), in.size()) != 1) { + throw std::invalid_argument("Invalid public key bytes"); + } + return pk; +} + +std::vector CryptoHybrid::serializePubkey(const secp256k1_pubkey& pk, bool compressed) { + size_t len = compressed ? 33 : 65; + std::vector out(len); + unsigned int flags = compressed ? SECP256K1_EC_COMPRESSED : SECP256K1_EC_UNCOMPRESSED; + if (secp256k1_ec_pubkey_serialize(ctx(), out.data(), &len, &pk, flags) != 1) { + throw std::runtime_error("Failed to serialize public key"); + } + out.resize(len); + return out; +} + +std::shared_ptr CryptoHybrid::toAB(const std::vector& v) { + auto ab = ArrayBuffer::allocate(v.size()); + std::memcpy(ab->data(), v.data(), v.size()); + return ab; +} + +/* ---------- getPublicKey* (ECDSA-style pubkey from 32-byte seckey) ---------- */ + +std::shared_ptr CryptoHybrid::getPublicKeyFromString(const std::string& secretKey, std::optional isCompressed) { + auto sk = hexToBytes(secretKey); + if (sk.size() != 32) throw std::invalid_argument("secretKey must be 32 bytes hex"); + bool comp = isCompressed.value_or(true); + + secp256k1_pubkey pk{}; + if (secp256k1_ec_seckey_verify(ctx(), sk.data()) != 1) + throw std::invalid_argument("Invalid secret key"); + if (secp256k1_ec_pubkey_create(ctx(), &pk, sk.data()) != 1) + throw std::runtime_error("secp256k1_ec_pubkey_create failed"); + + return toAB(serializePubkey(pk, comp)); +} + +std::shared_ptr CryptoHybrid::getPublicKeyFromArrayBuffer(const std::shared_ptr& secretKey, std::optional isCompressed) { + if (!secretKey) throw std::invalid_argument("secretKey ArrayBuffer is null"); + if (secretKey->size() != 32) throw std::invalid_argument("secretKey must be 32 bytes"); + bool comp = isCompressed.value_or(true); + + const auto* sk = reinterpret_cast(secretKey->data()); + if (secp256k1_ec_seckey_verify(ctx(), sk) != 1) + throw std::invalid_argument("Invalid secret key"); + + secp256k1_pubkey pk{}; + if (secp256k1_ec_pubkey_create(ctx(), &pk, sk) != 1) + throw std::runtime_error("secp256k1_ec_pubkey_create failed"); + + return toAB(serializePubkey(pk, comp)); +} + +/* ------------------------ pointAddScalar: P + t·G ------------------------- */ + +std::shared_ptr CryptoHybrid::pointAddScalar( + const std::variant>& publicKey, + const std::variant>& tweak, + std::optional isCompressed +) { + bool comp = isCompressed.value_or(true); + auto pkBytes = bytesFromVariant(publicKey); + auto t32 = require32(tweak, "tweak"); + + secp256k1_pubkey pk = parsePubkey(pkBytes); + + // P = P + t*G + if (secp256k1_ec_pubkey_tweak_add(ctx(), &pk, t32.data()) != 1) { + throw std::runtime_error("Tweak add failed (invalid tweak or infinity)"); + } + + return toAB(serializePubkey(pk, comp)); +} + +/* ----------------------------- ECDSA sign/verify -------------------------- */ +/* Assumption: message is a 32-byte digest (e.g., SHA-256). */ + +std::shared_ptr CryptoHybrid::sign( + const std::variant>& secretKey, + const std::variant>& message +) { + auto sk = require32(secretKey, "secretKey"); + auto msg32 = require32(message, "message"); + + if (secp256k1_ec_seckey_verify(ctx(), sk.data()) != 1) + throw std::invalid_argument("Invalid secret key"); + + secp256k1_ecdsa_signature sig{}; + if (secp256k1_ecdsa_sign(ctx(), &sig, msg32.data(), sk.data(), nullptr, nullptr) != 1) { + throw std::runtime_error("ECDSA sign failed"); + } + + // DER serialize + std::vector der(72); // max DER size ~72 bytes + size_t derlen = der.size(); + if (secp256k1_ecdsa_signature_serialize_der(ctx(), der.data(), &derlen, &sig) != 1) { + throw std::runtime_error("ECDSA DER serialization failed"); + } + der.resize(derlen); + return toAB(der); +} + +bool CryptoHybrid::verify( + const std::variant>& publicKey, + const std::variant>& message, + const std::variant>& signature +) { + auto pkBytes = bytesFromVariant(publicKey); + auto msg32 = require32(message, "message"); + + secp256k1_pubkey pk = parsePubkey(pkBytes); + + auto sigBytes = bytesFromVariant(signature); + secp256k1_ecdsa_signature sig{}; + + int parsed = 0; + // Try DER first + if (!sigBytes.empty()) { + parsed = secp256k1_ecdsa_signature_parse_der(ctx(), &sig, sigBytes.data(), sigBytes.size()); + if (!parsed && sigBytes.size() == 64) { + // Try compact if 64 bytes + parsed = secp256k1_ecdsa_signature_parse_compact(ctx(), &sig, sigBytes.data()); + } + } + if (!parsed) return false; + + // Normalize (makes high-S equal low-S for verification) + secp256k1_ecdsa_signature sigNorm = sig; + (void)secp256k1_ecdsa_signature_normalize(ctx(), &sigNorm, &sig); + + return secp256k1_ecdsa_verify(ctx(), &sigNorm, msg32.data(), &pk) == 1; +} + +/* -------------------------- Schnorr sign/verify --------------------------- */ +/* Assumption: messageHash is a 32-byte BIP340 digest; pubkey may be 32-byte xonly + or 33/65-byte normal EC key (we’ll convert to xonly). */ + +std::shared_ptr CryptoHybrid::signSchnorr( + const std::variant>& secretKey, + const std::variant>& messageHash, + const std::variant>& auxRand +) { + auto sk = require32(secretKey, "secretKey"); + auto msg32 = require32(messageHash, "messageHash"); + auto aux32 = require32(auxRand, "auxRand"); + + LOGI("signSchnorr sk=%s", toHex(sk.data(), 32).c_str()); + LOGI("signSchnorr msg=%s", toHex(msg32.data(), 32).c_str()); + LOGI("signSchnorr aux=%s", toHex(aux32.data(), 32).c_str()); + + if (secp256k1_ec_seckey_verify(ctx(), sk.data()) != 1) + throw std::invalid_argument("Invalid secret key"); + + secp256k1_keypair keypair; + if (secp256k1_keypair_create(ctx(), &keypair, sk.data()) != 1) + throw std::runtime_error("keypair_create failed"); + + // --- DEBUG: log x-only and compressed pubkeys --- + { + // X-only pubkey (BIP340) + secp256k1_xonly_pubkey xpk{}; + int parity = 0; + if (secp256k1_keypair_xonly_pub(ctx(), &xpk, &parity, &keypair) == 1) { + unsigned char x32[32]; + secp256k1_xonly_pubkey_serialize(ctx(), x32, &xpk); + LOGI("signSchnorr xonly.pk.x=%s parity=%d", toHex(x32, 32).c_str(), parity); + } else { + LOGI("signSchnorr xonly.pk FAILED"); + } + + // Full compressed pubkey (33 bytes) + secp256k1_pubkey full{}; + if (secp256k1_ec_pubkey_create(ctx(), &full, sk.data()) == 1) { + unsigned char comp33[33]; + size_t compLen = 33; + if (secp256k1_ec_pubkey_serialize(ctx(), comp33, &compLen, &full, SECP256K1_EC_COMPRESSED) == 1) { + LOGI("signSchnorr pubkey(compressed,33)=%s", toHex(comp33, compLen).c_str()); + } else { + LOGI("signSchnorr pubkey serialize FAILED"); + } + } else { + LOGI("signSchnorr ec_pubkey_create FAILED"); + } + } + + std::array sig64{}; + if (secp256k1_schnorrsig_sign32(ctx(), sig64.data(), msg32.data(), &keypair, aux32.data()) != 1) + throw std::runtime_error("schnorrsig_sign32 failed"); + + // --- Self-verify before returning --- + secp256k1_xonly_pubkey xpk{}; + int parity = 0; + if (secp256k1_keypair_xonly_pub(ctx(), &xpk, &parity, &keypair) != 1) + throw std::runtime_error("keypair_xonly_pub failed"); + + if (secp256k1_schnorrsig_verify(ctx(), sig64.data(), msg32.data(), 32, &xpk) != 1) { + LOGI("signSchnorr self-verify FAILED"); + throw std::runtime_error("Schnorr self-verify failed"); + } + + LOGI("signSchnorr sig=%s", toHex(sig64.data(), 64).c_str()); + return toAB(std::vector(sig64.begin(), sig64.end())); +} + +bool CryptoHybrid::verifySchnorr( + const std::variant>& publicKey, + const std::variant>& messageHash, + const std::variant>& signature +) { + auto msg32 = require32(messageHash, "messageHash"); + auto sig = bytesFromVariant(signature); + if (sig.size() != 64) return false; + + auto pkBytes = bytesFromVariant(publicKey); + LOGI("verifySchnorr pkLen=%zu msg=%s sig=%s", pkBytes.size(), + toHex(reinterpret_cast(msg32.data()), 32).c_str(), + toHex(sig.data(), 64).c_str()); + + secp256k1_xonly_pubkey xpk{}; + if (pkBytes.size() == 32) { + if (secp256k1_xonly_pubkey_parse(ctx(), &xpk, pkBytes.data()) != 1) return false; + } else { + try { + secp256k1_pubkey full = parsePubkey(pkBytes); + int parity = 0; + if (secp256k1_xonly_pubkey_from_pubkey(ctx(), &xpk, &parity, &full) != 1) return false; + } catch (...) { return false; } + } + + return secp256k1_schnorrsig_verify(ctx(), sig.data(), msg32.data(), 32, &xpk) == 1; +} + +} // namespace margelo::nitro::nitroavalabscrypto \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp new file mode 100644 index 0000000000..d9a04edac8 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp @@ -0,0 +1,77 @@ +#pragma once + +#include "HybridCryptoSpec.hpp" // your generated spec +#include +// Schnorr / xonly +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace margelo::nitro::nitroavalabscrypto { + +class CryptoHybrid final : public HybridCryptoSpec { +public: + // Per your spec’s note: explicitly call HybridObject(TAG) in ctor + CryptoHybrid() : HybridObject(TAG) {} + ~CryptoHybrid() override = default; + + // ---- Spec methods ---- + std::shared_ptr getPublicKey( + const std::variant>& secretKey, + std::optional isCompressed); + + std::shared_ptr getPublicKeyFromString(const std::string& secretKey, std::optional isCompressed) override; + std::shared_ptr getPublicKeyFromArrayBuffer(const std::shared_ptr& secretKey, std::optional isCompressed) override; + std::shared_ptr pointAddScalar( + const std::variant>& publicKey, + const std::variant>& tweak, + std::optional isCompressed) override; + + std::shared_ptr sign( + const std::variant>& secretKey, + const std::variant>& message) override; + + bool verify( + const std::variant>& publicKey, + const std::variant>& message, + const std::variant>& signature) override; + + std::shared_ptr signSchnorr( + const std::variant>& secretKey, + const std::variant>& messageHash, + const std::variant>& auxRand + ) override; + + bool verifySchnorr( + const std::variant>& publicKey, + const std::variant>& messageHash, + const std::variant>& signature) override; + + +protected: + // If your nitrogen requires it, you can override loadHybridMethods(), + // but the base already wires methods based on the spec. + +private: + // context singleton + static secp256k1_context* ctx(); + + // helpers + static std::vector hexToBytes(const std::string& hex); + static std::vector bytesFromVariant(const std::variant>& v); + static std::array require32(const std::variant>& v, const char* what); + static std::vector serializePubkey(const secp256k1_pubkey& pk, bool compressed); + static secp256k1_pubkey parsePubkey(const std::vector& in); + static std::shared_ptr toAB(const std::vector& v); +}; + +} // namespace margelo::nitro::nitroavalabscrypto diff --git a/packages/react-native-nitro-avalabs-crypto/eslint.config.mjs b/packages/react-native-nitro-avalabs-crypto/eslint.config.mjs new file mode 100644 index 0000000000..16b00bbcd9 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/eslint.config.mjs @@ -0,0 +1,29 @@ +import { fixupConfigRules } from '@eslint/compat'; +import { FlatCompat } from '@eslint/eslintrc'; +import js from '@eslint/js'; +import prettier from 'eslint-plugin-prettier'; +import { defineConfig } from 'eslint/config'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default defineConfig([ + { + extends: fixupConfigRules(compat.extends('@react-native', 'prettier')), + plugins: { prettier }, + rules: { + 'react/react-in-jsx-scope': 'off', + 'prettier/prettier': 'error', + }, + }, + { + ignores: ['node_modules/', 'lib/'], + }, +]); diff --git a/packages/react-native-nitro-avalabs-crypto/ios/scripts/build.sh b/packages/react-native-nitro-avalabs-crypto/ios/scripts/build.sh new file mode 100644 index 0000000000..ac7b3cd345 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/ios/scripts/build.sh @@ -0,0 +1,176 @@ +#!/usr/bin/env bash +set -euo pipefail + +# ------------------- Configuration ------------------- +SECP_REPO_URL=${SECP_REPO_URL:-"https://github.com/bitcoin-core/secp256k1.git"} +SECP_TAG=${SECP_TAG:-"v0.7.0"} +MODULE_FLAGS=${SECP_MODULES:-"--enable-module-extrakeys --enable-module-schnorrsig"} + +ROOT_DIR="${PODS_TARGET_SRCROOT:-${SRCROOT:-$(pwd)}}" +IOS_DIR="${ROOT_DIR}/ios" +WORK_DIR="${IOS_DIR}/secp256k1-src" +BUILD_DIR="${IOS_DIR}/secp-build" +OUT_DIR="${IOS_DIR}/secp-out" +XC_OUT="${OUT_DIR}/secp256k1.xcframework" + +# Detect SDK (Xcode env) +if [[ "${SDK_NAME:-}" == iphonesimulator* || "${EFFECTIVE_PLATFORM_NAME:-}" == "-iphonesimulator" ]]; then + BUILD_TARGET="iphonesimulator" +else + BUILD_TARGET="iphoneos" +fi +STAMP_FILE="${OUT_DIR}/.last_target" + +# ------------------- Homebrew tools ------------------- +BREW_PREFIX="$((/usr/bin/env brew --prefix) 2>/dev/null || true)" +if [[ -n "$BREW_PREFIX" && -d "$BREW_PREFIX" ]]; then + export PATH="$BREW_PREFIX/bin:$BREW_PREFIX/opt/automake/bin:$BREW_PREFIX/opt/autoconf/bin:$BREW_PREFIX/opt/libtool/bin:$PATH" +fi +for p in /opt/homebrew/bin /usr/local/bin; do + [[ -d "$p" ]] && case ":$PATH:" in *":$p:"*) ;; *) export PATH="$p:$PATH";; esac +done + +if ! command -v autoreconf >/dev/null 2>&1; then + echo "[secp] ERROR: 'autoreconf' not found. Install: brew install autoconf automake libtool" + exit 1 +fi + +# ------------------- Fast-path cache ------------------- +if [[ -d "${XC_OUT}" ]] && [[ -f "${STAMP_FILE}" ]] && grep -q "^${BUILD_TARGET}$" "${STAMP_FILE}"; then + echo "[secp] Using cached ${XC_OUT} for ${BUILD_TARGET}" + exit 0 +fi +if [[ -d "${XC_OUT}" ]] && [[ -f "${STAMP_FILE}" ]] && ! grep -q "^${BUILD_TARGET}$" "${STAMP_FILE}"; then + echo "[secp] Target changed – rebuilding" + rm -rf "${XC_OUT}" +fi + +mkdir -p "${WORK_DIR}" "${BUILD_DIR}" "${OUT_DIR}" + +# ------------------- Clone / update ------------------- +if [[ ! -d "${WORK_DIR}/.git" ]]; then + echo "[secp] Cloning ${SECP_REPO_URL}@${SECP_TAG}..." + git clone --depth 1 --branch "${SECP_TAG}" "${SECP_REPO_URL}" "${WORK_DIR}" +else + echo "[secp] Updating repo..." + git -C "${WORK_DIR}" fetch --tags + git -C "${WORK_DIR}" checkout "${SECP_TAG}" + git -C "${WORK_DIR}" reset --hard "${SECP_TAG}" +fi + +export LIBTOOLIZE="${LIBTOOLIZE:-glibtoolize}" +export LIBTOOL="${LIBTOOL:-glibtool}" + +pushd "${WORK_DIR}" >/dev/null +echo "[secp] Running autogen.sh..." +bash ./autogen.sh +popd >/dev/null + +# ------------------- Build helper ------------------- +build_one() { + local sdk="$1" # iphoneos / iphonesimulator + local arch="$2" # arm64 / x86_64 + local host="$3" # aarch64-apple-darwin / x86_64-apple-darwin + + # ---- Clean previous build ---- + echo "[secp] Cleaning old objects for ${sdk}/${arch}..." + (cd "${WORK_DIR}" && make distclean || true) + find "${WORK_DIR}" -name "*.o" -o -name "*.lo" -o -name "*.la" -o -name "*.a" -delete + rm -rf "${WORK_DIR}/.libs" + + # ---- SDK / compiler ---- + local SDKROOT=$(xcrun --sdk "${sdk}" --show-sdk-path) + local CC=$(xcrun --sdk "${sdk}" -f clang) + local CXX=$(xcrun --sdk "${sdk}" -f clang++) + + # ---- Flags (identical for all slices) ---- + local ARCH_FLAG="-arch ${arch}" + local MIN_VERSION + if [[ "${sdk}" == "iphonesimulator" ]]; then + MIN_VERSION="-mios-simulator-version-min=${IPHONEOS_DEPLOYMENT_TARGET:-12.0}" + local TARGET_FLAG="-target ${arch}-apple-ios${IPHONEOS_DEPLOYMENT_TARGET:-12.0}-simulator" + else + MIN_VERSION="-miphoneos-version-min=${IPHONEOS_DEPLOYMENT_TARGET:-12.0}" + local TARGET_FLAG="" + fi + + local CFLAGS="-O2 -fPIC -fembed-bitcode ${ARCH_FLAG} ${TARGET_FLAG} -isysroot ${SDKROOT} ${MIN_VERSION}" + local LDFLAGS="${ARCH_FLAG} ${TARGET_FLAG} -isysroot ${SDKROOT} ${MIN_VERSION}" + + local PREFIX="${BUILD_DIR}/${sdk}-${arch}" + mkdir -p "${PREFIX}" + + echo "[secp] Configuring ${sdk}/${arch}..." + ( + cd "${WORK_DIR}" + env \ + CC="${CC}" CXX="${CXX}" \ + CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + LIBTOOLIZE="${LIBTOOLIZE}" LIBTOOL="${LIBTOOL}" \ + ./configure \ + --host="${host}" \ + --enable-shared=no --enable-static \ + --with-pic \ + --disable-benchmark --disable-tests \ + --prefix="${PREFIX}" \ + ${MODULE_FLAGS} + make -j$(sysctl -n hw.ncpu) + make install + ) + + # ---- Verify slice ---- + local OUT_LIB="${PREFIX}/lib/libsecp256k1.a" + if [[ -f "${OUT_LIB}" ]]; then + local INFO=$(lipo -info "${OUT_LIB}") + echo "[secp] Built ${sdk}/${arch}: ${INFO}" + fi +} + +# ------------------- Build slices ------------------- +build_one iphoneos arm64 aarch64-apple-darwin + +HOST_ARCH="$(uname -m)" +if [[ "$HOST_ARCH" == "arm64" ]]; then + build_one iphonesimulator arm64 aarch64-apple-darwin +elif [[ "$HOST_ARCH" == "x86_64" ]]; then + build_one iphonesimulator x86_64 x86_64-apple-darwin +else + echo "[secp] WARNING: unknown host arch $HOST_ARCH – no simulator slice" +fi + +# ------------------- Copy headers (once) ------------------- +rm -rf "${OUT_DIR}/include" +for inc in \ + "${BUILD_DIR}/iphoneos-arm64/include" \ + "${BUILD_DIR}/iphonesimulator-arm64/include" \ + "${BUILD_DIR}/iphonesimulator-x86_64/include"; do + [[ -d "$inc" ]] && cp -R "$inc" "${OUT_DIR}/include" && break +done + +# ------------------- Create XCFramework ------------------- +echo "[secp] Creating XCFramework..." +rm -rf "${XC_OUT}" + +DEV_LIB="${BUILD_DIR}/iphoneos-arm64/lib/libsecp256k1.a" +SIM_ARM64_LIB="${BUILD_DIR}/iphonesimulator-arm64/lib/libsecp256k1.a" +SIM_X64_LIB="${BUILD_DIR}/iphonesimulator-x86_64/lib/libsecp256k1.a" + +XC_ARGS=() +[[ -f "${DEV_LIB}" ]] && XC_ARGS+=( -library "${DEV_LIB}" -headers "${OUT_DIR}/include" ) +[[ -f "${SIM_ARM64_LIB}" ]] && XC_ARGS+=( -library "${SIM_ARM64_LIB}" -headers "${OUT_DIR}/include" ) +[[ -f "${SIM_X64_LIB}" ]] && XC_ARGS+=( -library "${SIM_X64_LIB}" -headers "${OUT_DIR}/include" ) + +if [[ ${#XC_ARGS[@]} -eq 0 ]]; then + echo "[secp] No libraries to package!" + exit 1 +fi + +xcodebuild -create-xcframework \ + "${XC_ARGS[@]}" \ + -output "${XC_OUT}" || { + echo "[secp] Failed to create XCFramework" + exit 1 + } + +echo "[secp] XCFramework created: ${XC_OUT}" +echo "${BUILD_TARGET}" > "${STAMP_FILE}" \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/lefthook.yml b/packages/react-native-nitro-avalabs-crypto/lefthook.yml new file mode 100644 index 0000000000..9695c1295c --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/lefthook.yml @@ -0,0 +1,14 @@ +pre-commit: + parallel: true + commands: + lint: + glob: "*.{js,ts,jsx,tsx}" + run: npx eslint {staged_files} + types: + glob: "*.{js,ts, jsx, tsx}" + run: npx tsc +commit-msg: + parallel: true + commands: + commitlint: + run: npx commitlint --edit diff --git a/packages/react-native-nitro-avalabs-crypto/nitro.json b/packages/react-native-nitro-avalabs-crypto/nitro.json new file mode 100644 index 0000000000..bb2b7099cb --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/nitro.json @@ -0,0 +1,16 @@ +{ + "cxxNamespace": ["nitroavalabscrypto"], + "ios": { + "iosModuleName": "NitroAvalabsCrypto" + }, + "android": { + "androidNamespace": ["nitroavalabscrypto"], + "androidCxxLibName": "nitroavalabscrypto" + }, + "autolinking": { + "Crypto": { + "cpp": "CryptoHybrid" + } + }, + "ignorePaths": ["node_modules"] +} diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json new file mode 100644 index 0000000000..74214a4cd0 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -0,0 +1,163 @@ +{ + "name": "react-native-nitro-avalabs-crypto", + "version": "0.1.0", + "description": "Avalabs' React Native crypto libray", + "main": "./src/index.tsx", + "exports": { + ".": { + "source": "./src/index.tsx", + "default": "./src/index.tsx" + }, + "./package.json": "./package.json" + }, + "files": [ + "src", + "lib", + "android", + "ios", + "cpp", + "nitrogen", + "nitro.json", + "*.podspec", + "react-native.config.js", + "!ios/build", + "!android/build", + "!android/gradle", + "!android/gradlew", + "!android/gradlew.bat", + "!android/local.properties", + "!**/__tests__", + "!**/__fixtures__", + "!**/__mocks__", + "!**/.*" + ], + "scripts": { + "example": "yarn workspace react-native-nitro-avalabs-crypto-example", + "test": "jest", + "typecheck": "tsc", + "lint": "eslint \"**/*.{js,ts,tsx}\"", + "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib", + "prepare": "bob build", + "nitrogen": "nitrogen", + "release": "release-it --only-version" + }, + "keywords": [ + "react-native", + "ios", + "android" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/Szymon20000/react-native-nitro-avalabs-crypto.git" + }, + "author": "TurboSzymon (https://github.com/Szymon20000)", + "license": "MIT", + "bugs": { + "url": "https://github.com/Szymon20000/react-native-nitro-avalabs-crypto/issues" + }, + "homepage": "https://github.com/Szymon20000/react-native-nitro-avalabs-crypto#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org/" + }, + "devDependencies": { + "@commitlint/config-conventional": "^19.8.1", + "@eslint/compat": "^1.3.2", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.35.0", + "@evilmartians/lefthook": "^1.12.3", + "@react-native/babel-preset": "0.81.1", + "@react-native/eslint-config": "^0.81.1", + "@release-it/conventional-changelog": "^10.0.1", + "@types/jest": "^29.5.14", + "@types/react": "^19.1.0", + "commitlint": "^19.8.1", + "del-cli": "^6.0.0", + "eslint": "^9.35.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", + "jest": "^29.7.0", + "nitrogen": "^0.30.2", + "prettier": "^3.6.2", + "react": "19.1.0", + "react-native": "0.81.1", + "react-native-builder-bob": "^0.40.13", + "react-native-nitro-modules": "^0.30.2", + "release-it": "^19.0.4", + "turbo": "^2.5.6", + "typescript": "^5.9.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-nitro-modules": "^0.30.2" + }, + "packageManager": "yarn@3.6.1", + "jest": { + "preset": "react-native", + "modulePathIgnorePatterns": [ + "/example/node_modules", + "/lib/" + ] + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "release-it": { + "git": { + "commitMessage": "chore: release ${version}", + "tagName": "v${version}" + }, + "npm": { + "publish": true + }, + "github": { + "release": true + }, + "plugins": { + "@release-it/conventional-changelog": { + "preset": { + "name": "angular" + } + } + } + }, + "prettier": { + "quoteProps": "consistent", + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false + }, + "react-native-builder-bob": { + "source": "src", + "output": "lib", + "targets": [ + [ + "custom", + { + "script": "nitrogen", + "clean": "nitrogen/" + } + ], + [ + "module", + { + "esm": true + } + ], + [ + "typescript", + { + "project": "tsconfig.build.json" + } + ] + ] + }, + "create-react-native-library": { + "languages": "kotlin-swift", + "type": "nitro-module", + "version": "0.54.6" + } +} diff --git a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts new file mode 100644 index 0000000000..05dda5b357 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts @@ -0,0 +1,318 @@ +import { NitroModules } from 'react-native-nitro-modules'; +import type { Crypto } from './specs/Crypto.nitro'; + +const con = console; + +// Native hybrid object +const NativeCrypto = NitroModules.createHybridObject('Crypto'); + +/** Strip 0x, validate, and normalize hex to even length (left-pad with one '0' if needed). */ +function normalizeHex(hex: string): string { + let h = hex.startsWith('0x') || hex.startsWith('0X') ? hex.slice(2) : hex; + if (!/^[0-9a-fA-F]*$/.test(h)) throw new TypeError('Invalid hex string'); + if (h.length % 2) h = '0' + h; + return h.toLowerCase(); +} + +/** Convert hex string to a fresh ArrayBuffer. */ +function hexToArrayBuffer(hex: string): ArrayBuffer { + const h = normalizeHex(hex); + const len = h.length / 2; + const out = new Uint8Array(len); + for (let i = 0; i < len; i++) { + out[i] = parseInt(h.slice(i * 2, i * 2 + 2), 16); + } + return out.buffer; +} + +/** Convert a Uint8Array or ArrayBuffer to a tight ArrayBuffer view. */ +function toArrayBuffer(input: Uint8Array | ArrayBuffer): ArrayBuffer { + if (input instanceof ArrayBuffer) return input; + // Make a tight copy that respects byteOffset/byteLength + return input.buffer.slice(input.byteOffset, input.byteOffset + input.byteLength); +} + +/** Accepts string (hex), ArrayBuffer, or Uint8Array and returns ArrayBuffer */ +function hexLikeToArrayBuffer(input: string | ArrayBuffer | Uint8Array): ArrayBuffer { + if (typeof input === 'string') return hexToArrayBuffer(input); + if (input instanceof ArrayBuffer) return input; + if (input instanceof Uint8Array) return toArrayBuffer(input); + throw new TypeError('Expected hex string, ArrayBuffer, or Uint8Array'); +} + +/** Ensure a 32-byte buffer */ +function ensure32(name: string, ab: ArrayBuffer): ArrayBuffer { + if (ab.byteLength !== 32) throw new TypeError(`${name} must be 32 bytes`); + return ab; +} + +/** bigint → 32-byte ArrayBuffer (left-padded). Throws if it doesn't fit. */ +function bigintToArrayBuffer32(n: bigint): ArrayBuffer { + if (n < 0n) throw new TypeError('Secret key must be non-negative'); + const out = new Uint8Array(32); + let i = 31; + let v = n; + while (v > 0n) { + if (i < 0) throw new RangeError('bigint does not fit into 32 bytes'); + out[i] = Number(v & 0xffn); + v >>= 8n; + i--; + } + return out.buffer; +} + +/** bigint → 64-char hex string (left-padded). Throws if it doesn't fit. */ +function bigintToHex64(n: bigint): string { + if (n < 0n) throw new TypeError('Secret key must be non-negative'); + let hex = n.toString(16); + if (hex.length > 64) throw new RangeError('bigint does not fit into 32 bytes'); + return hex.padStart(64, '0').toLowerCase(); +} + +/** + * Public JS API — accepts Uint8Array | ArrayBuffer | string | bigint. + * Returns Uint8Array for ergonomic use in JS. + */ +export function getPublicKey( + secretKey: Uint8Array | ArrayBuffer | string | bigint, + isCompressed = true +): Uint8Array { + con.log('[Crypto] getPublicKey called with', typeof secretKey, isCompressed); + let ab: ArrayBuffer | undefined; + let hex: string | undefined; + + if (typeof secretKey === 'bigint') { + con.log('[Crypto] Secret is bigint'); + // Prefer zero-copy native path via ArrayBuffer + ab = bigintToArrayBuffer32(secretKey); + // hex fallback available if needed: hex = bigintToHex64(secretKey); + } else if (typeof secretKey === 'string') { + con.log('[Crypto] Secret is string', secretKey.slice(0, 10) + '...'); + hex = normalizeHex(secretKey); + } else { + con.log('[Crypto] Secret is buffer-like', secretKey instanceof Uint8Array, secretKey instanceof ArrayBuffer); + ab = toArrayBuffer(secretKey); + } + + let outBuf: ArrayBuffer; + if (ab && typeof NativeCrypto.getPublicKeyFromArrayBuffer === 'function') { + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromArrayBuffer'); + outBuf = NativeCrypto.getPublicKeyFromArrayBuffer(ab, isCompressed); + } else if (hex && typeof NativeCrypto.getPublicKeyFromString === 'function') { + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromString'); + // Native returns ArrayBuffer already — no conversion needed + outBuf = NativeCrypto.getPublicKeyFromString(hex, isCompressed); + } else if (hex && typeof NativeCrypto.getPublicKeyFromArrayBuffer === 'function') { + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromArrayBuffer'); + outBuf = NativeCrypto.getPublicKeyFromArrayBuffer(hexToArrayBuffer(hex), isCompressed); + } else if (ab && typeof NativeCrypto.getPublicKeyFromString === 'function') { + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromString'); + // fallback: convert buffer to hex and use string method; native returns ArrayBuffer + const bytes = new Uint8Array(ab); + let h = ''; + for (let i = 0; i < bytes.length; i++) h += bytes[i].toString(16).padStart(2, '0'); + outBuf = NativeCrypto.getPublicKeyFromString(h, isCompressed); + } else { + throw new Error('Native Crypto hybrid does not expose the expected methods.'); + } + + con.log('[Crypto] Native call succeeded, result byteLength:', outBuf?.byteLength); + con.log('[Crypto] Returning Uint8Array with length', outBuf?.byteLength); + try { + const res = new Uint8Array(outBuf); + con.log('[Crypto] getPublicKey completed'); + return res; + } catch (error) { + con.error('[Crypto] getPublicKey failed', error); + throw error; + } +} + +// Optionally re-export the native methods (typed) if you want direct access: +export const getPublicKeyFromArrayBuffer = NativeCrypto.getPublicKeyFromArrayBuffer.bind(NativeCrypto); +export const getPublicKeyFromString = NativeCrypto.getPublicKeyFromString.bind(NativeCrypto); + +/** Add scalar*G to existing public key (P + t*G). Returns Uint8Array. */ +export function pointAddScalar( + publicKey: string | ArrayBuffer | Uint8Array, + tweak: string | ArrayBuffer | Uint8Array, + isCompressed = true +): Uint8Array { + con.log('[Crypto] pointAddScalar called'); + const pkAB = hexLikeToArrayBuffer(publicKey as any); + const twAB = hexLikeToArrayBuffer(tweak as any); + const out = NativeCrypto.pointAddScalar(pkAB, twAB, isCompressed); + return new Uint8Array(out); +} + +/** ECDSA sign. Message must be a 32-byte digest. Returns DER signature bytes. */ +function isDerSignature(u8: Uint8Array): boolean { + return u8.length >= 8 && u8[0] === 0x30; +} + +/** Convert 32-byte big-endian integer to minimal DER INTEGER (with zero prefix if high bit set). */ +function be32ToDerInt(src: Uint8Array): Uint8Array { + // Strip leading zeros + let i = 0; + while (i < src.length - 1 && src[i] === 0) i++; + let v = src.subarray(i); + // If high bit set, prepend 0x00 to force positive + if (v[0] & 0x80) { + const out = new Uint8Array(v.length + 1); + out[0] = 0x00; + out.set(v, 1); + return out; + } + return v; +} + +/** Convert a 64-byte compact ECDSA signature (r||s) to DER sequence. */ +function compact64ToDer(sig64: Uint8Array): Uint8Array { + if (sig64.length !== 64) throw new TypeError('compact ECDSA signature must be 64 bytes'); + const r = sig64.subarray(0, 32); + const s = sig64.subarray(32, 64); + const rDer = be32ToDerInt(r); + const sDer = be32ToDerInt(s); + const len = 2 + rDer.length + 2 + sDer.length; // 0x02 rLen r 0x02 sLen s + const out = new Uint8Array(2 + 2 + rDer.length + 2 + sDer.length); + let p = 0; + out[p++] = 0x30; // SEQUENCE + out[p++] = len; + out[p++] = 0x02; // INTEGER + out[p++] = rDer.length; + out.set(rDer, p); p += rDer.length; + out[p++] = 0x02; // INTEGER + out[p++] = sDer.length; + out.set(sDer, p); + return out; +} + +export function sign( + secretKey: string | ArrayBuffer | Uint8Array, + message: string | ArrayBuffer | Uint8Array +): Uint8Array { + con.log('[Crypto] sign called'); + const skAB = hexLikeToArrayBuffer(secretKey as any); + const msgAB = hexLikeToArrayBuffer(message as any); + if (msgAB.byteLength !== 32) throw new TypeError('ECDSA message must be 32 bytes'); + const out = NativeCrypto.sign(skAB, msgAB); + let sig = new Uint8Array(out); + // Normalize to compact(64) – many JS libs expect r||s + if (isDerSignature(sig)) { + con.log('[Crypto] sign: converting DER signature to compact(64)'); + sig = derToCompact64(sig); + } else if (sig.length !== 64) { + throw new TypeError(`ECDSA signature has unexpected length: ${sig.length}`); + } + return sig; +} + +/** Parse minimal ASN.1 DER ECDSA signature and return {r,s} raw big-endian bytes (unpadded). */ +function parseDerEcdsa(sig: Uint8Array): { r: Uint8Array; s: Uint8Array } { + if (sig.length < 8 || sig[0] !== 0x30) throw new TypeError('Invalid DER: no SEQ'); + let p = 1; + let len = sig[p++]; + if (len & 0x80) { + const n = len & 0x7f; + if (n === 0 || n > 2) throw new TypeError('Invalid DER: long len too big'); + if (p + n > sig.length) throw new TypeError('Invalid DER: length overflow'); + len = 0; + for (let i = 0; i < n; i++) len = (len << 8) | sig[p++]; + } + if (p + len !== sig.length) throw new TypeError('Invalid DER: len mismatch'); + if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing r INTEGER'); + let rLen = sig[p++]; + if (p + rLen > sig.length) throw new TypeError('Invalid DER: r overflow'); + let r = sig.subarray(p, p + rLen); p += rLen; + if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing s INTEGER'); + let sLen = sig[p++]; + if (p + sLen > sig.length) throw new TypeError('Invalid DER: s overflow'); + let s = sig.subarray(p, p + sLen); + // Strip an optional leading 0x00 that enforces positive INTEGER + if (r.length > 0 && r[0] === 0x00) r = r.subarray(1); + if (s.length > 0 && s[0] === 0x00) s = s.subarray(1); + return { r, s }; +} + +/** Convert DER ECDSA signature to compact 64-byte (r||s). */ +function derToCompact64(sigDer: Uint8Array): Uint8Array { + const { r, s } = parseDerEcdsa(sigDer); + if (r.length > 32 || s.length > 32) throw new TypeError('Invalid DER: r/s too long'); + const out = new Uint8Array(64); + out.set(r, 32 - r.length); + out.set(s, 64 - s.length); + return out; +} + +/** ECDSA verify. Message must be a 32-byte digest. Accepts DER or compact(64B) signature. */ +/** Determine if signature is ASN.1 DER (starts with 0x30). */ + +export function verify( + publicKey: string | ArrayBuffer | Uint8Array, + message: string | ArrayBuffer | Uint8Array, + signature: string | ArrayBuffer | Uint8Array +): boolean { + con.log('[Crypto] verify called'); + const pkAB = hexLikeToArrayBuffer(publicKey as any); + const msgAB = hexLikeToArrayBuffer(message as any); + const sigAB0 = hexLikeToArrayBuffer(signature as any); + if (msgAB.byteLength !== 32) throw new TypeError('ECDSA message must be 32 bytes'); + + // Normalize signature to DER if it is compact-64 + let sigU8 = new Uint8Array(sigAB0); + if (!isDerSignature(sigU8)) { + if (sigU8.length === 64) { + con.log('[Crypto] verify: converting compact(64) signature to DER'); + sigU8 = compact64ToDer(sigU8); + } else { + con.log('[Crypto] verify: non-DER signature with unexpected length', sigU8.length); + } + } + return NativeCrypto.verify(pkAB, msgAB, sigU8.buffer); +} + +/** Schnorr sign (BIP-340). messageHash must be 32 bytes. Returns 64-byte signature. */ +/** Schnorr sign (BIP-340). messageHash must be 32 bytes. Returns 64-byte signature. */ +export function signSchnorr( + messageHash: string | ArrayBuffer | Uint8Array, + secretKey: string | ArrayBuffer | Uint8Array, + auxRand?: string | ArrayBuffer | Uint8Array +): Uint8Array { + con.log('[Crypto] signSchnorr called (msg, sk, aux). args=', { + msgType: typeof messageHash, + skType: typeof secretKey, + hasAux: auxRand !== undefined, + }); + + const msgAB = ensure32('Schnorr messageHash', hexLikeToArrayBuffer(messageHash as any)); + const skAB = ensure32('Schnorr secretKey', hexLikeToArrayBuffer(secretKey as any)); + + let auxAB: ArrayBuffer; + if (auxRand === undefined) { + con.log('[Crypto] signSchnorr: using zero-filled auxRand'); + auxAB = new Uint8Array(32).buffer; + } else { + auxAB = ensure32('Schnorr auxRand', hexLikeToArrayBuffer(auxRand as any)); + con.log('[Crypto] signSchnorr: auxRand provided, byteLength=', (auxAB as ArrayBuffer).byteLength); + } + + // Native expects (secretKey, messageHash, auxRand) + const out = NativeCrypto.signSchnorr(skAB, msgAB, auxAB); + const sig = new Uint8Array(out); + con.log('[Crypto] signSchnorr: native returned', sig.length, 'bytes'); + return sig; +} +/** Schnorr verify (BIP-340). messageHash must be 32 bytes. Signature must be 64 bytes. */ +export function verifySchnorr( + publicKey: string | ArrayBuffer | Uint8Array, + messageHash: string | ArrayBuffer | Uint8Array, + signature: string | ArrayBuffer | Uint8Array +): boolean { + con.log('[Crypto] verifySchnorr called'); + const pkAB = hexLikeToArrayBuffer(publicKey as any); + const msgAB = hexLikeToArrayBuffer(messageHash as any); + const sigAB = hexLikeToArrayBuffer(signature as any); + if (msgAB.byteLength !== 32) throw new TypeError('Schnorr messageHash must be 32 bytes'); + if (sigAB.byteLength !== 64) throw new TypeError('Schnorr signature must be 64 bytes'); + return NativeCrypto.verifySchnorr(pkAB, msgAB, sigAB); +} \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx b/packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx new file mode 100644 index 0000000000..bf84291a5e --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx @@ -0,0 +1 @@ +it.todo('write a test'); diff --git a/packages/react-native-nitro-avalabs-crypto/src/index.tsx b/packages/react-native-nitro-avalabs-crypto/src/index.tsx new file mode 100644 index 0000000000..b27550e284 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/src/index.tsx @@ -0,0 +1 @@ +export * from './Crypto'; \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts b/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts new file mode 100644 index 0000000000..3400729eea --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts @@ -0,0 +1,55 @@ +// /Users/szymonkapala/work/avalabs/core-mobile/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts +import type { HybridObject } from 'react-native-nitro-modules'; + +// Use ArrayBuffer in specs (Nitro’s zero-copy binary type) +export type HexLike = string | ArrayBuffer; + +export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { + // existing methods + getPublicKeyFromString(secretKey: string, isCompressed?: boolean): ArrayBuffer; + getPublicKeyFromArrayBuffer(secretKey: ArrayBuffer, isCompressed?: boolean): ArrayBuffer; + + // NEW additions: + /** + * Adds scalar*G to an existing public key P. + * @param publicKey Hex string or ArrayBuffer representing P + * @param tweak Hex string or ArrayBuffer representing scalar + * @param isCompressed optional boolean + * @returns ArrayBuffer for resulting public key + */ + pointAddScalar(publicKey: HexLike, tweak: HexLike, isCompressed?: boolean): ArrayBuffer; + + /** + * Generic sign (e.g., ECDSA) using secret key. + * @param secretKey Hex string or ArrayBuffer + * @param message Hex string or ArrayBuffer + * @returns ArrayBuffer representing signature + */ + sign(secretKey: HexLike, message: HexLike): ArrayBuffer; + + /** + * Generic verify (e.g., ECDSA) using public key. + * @param publicKey Hex string or ArrayBuffer + * @param message Hex string or ArrayBuffer + * @param signature Hex string or ArrayBuffer + * @returns boolean + */ + verify(publicKey: HexLike, message: HexLike, signature: HexLike): boolean; + + /** + * Schnorr sign using secret key. + * @param secretKey Hex string or ArrayBuffer + * @param message Hash Hex string or ArrayBuffer (32 bytes) + * @returns ArrayBuffer for Schnorr signature + */ + signSchnorr(secretKey: HexLike, messageHash: HexLike, auxRand: HexLike): ArrayBuffer; + + /** + * Schnorr verify using public key. + * @param publicKey Hex string or ArrayBuffer + * @param messageHash Hex string or ArrayBuffer (32 bytes) + * @param signature Hex string or ArrayBuffer + * @returns boolean + */ + verifySchnorr(publicKey: HexLike, messageHash: HexLike, signature: HexLike): boolean; +} \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/tsconfig.build.json b/packages/react-native-nitro-avalabs-crypto/tsconfig.build.json new file mode 100644 index 0000000000..3c0636adf2 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig", + "exclude": ["example", "lib"] +} diff --git a/packages/react-native-nitro-avalabs-crypto/tsconfig.json b/packages/react-native-nitro-avalabs-crypto/tsconfig.json new file mode 100644 index 0000000000..0178044002 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "rootDir": ".", + "paths": { + "react-native-nitro-avalabs-crypto": ["./src/index"] + }, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "customConditions": ["react-native-strict-api"], + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react-jsx", + "lib": ["ESNext"], + "module": "ESNext", + "moduleResolution": "bundler", + "noEmit": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noImplicitUseStrict": false, + "noStrictGenericChecks": false, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ESNext", + "verbatimModuleSyntax": true + } +} diff --git a/packages/react-native-nitro-avalabs-crypto/turbo.json b/packages/react-native-nitro-avalabs-crypto/turbo.json new file mode 100644 index 0000000000..c4d78c4961 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/turbo.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://turbo.build/schema.json", + "globalDependencies": [".nvmrc", ".yarnrc.yml"], + "globalEnv": ["NODE_ENV"], + "tasks": { + "build:android": { + "env": ["ANDROID_HOME", "ORG_GRADLE_PROJECT_newArchEnabled"], + "inputs": [ + "package.json", + "android", + "!android/build", + "src/*.ts", + "src/*.tsx", + "example/package.json", + "example/android", + "!example/android/.gradle", + "!example/android/build", + "!example/android/app/build" + ], + "outputs": [] + }, + "build:ios": { + "env": [ + "RCT_NEW_ARCH_ENABLED", + "RCT_USE_RN_DEP", + "RCT_USE_PREBUILT_RNCORE" + ], + "inputs": [ + "package.json", + "*.podspec", + "ios", + "src/*.ts", + "src/*.tsx", + "example/package.json", + "example/ios", + "!example/ios/build", + "!example/ios/Pods" + ], + "outputs": [] + } + } +} diff --git a/yarn.lock b/yarn.lock index b560f8429b..6c5437790d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -225,9 +225,34 @@ __metadata: languageName: node linkType: hard -"@avalabs/avalanche-module@npm:1.11.0": - version: 1.11.0 - resolution: "@avalabs/avalanche-module@npm:1.11.0" +"@ark/regex@npm:0.0.0": + version: 0.0.0 + resolution: "@ark/regex@npm:0.0.0" + dependencies: + "@ark/util": 0.50.0 + checksum: b89d50a610393a4025a0e2cb4444c16c4f2fb16708ee6e4afe36160ee3503c3a7a5df8a7477bbf4b75099509329fc62f388f64819002d2f93642b2188618b5e5 + languageName: node + linkType: hard + +"@ark/schema@npm:0.50.0": + version: 0.50.0 + resolution: "@ark/schema@npm:0.50.0" + dependencies: + "@ark/util": 0.50.0 + checksum: 6a080104865ec4a0be91d6bffab95f69923f4a85b6087f67cf04555b30b65544084eeebbfa4cf9759ec27b964b0fc4dc7e19603b055b472a096463f13c084343 + languageName: node + linkType: hard + +"@ark/util@npm:0.50.0": + version: 0.50.0 + resolution: "@ark/util@npm:0.50.0" + checksum: 50aa1d506bbf70ef502f0f424370ab831fcb891f5a71fdec51c46d06c504eab751ccfa2920bbeae7c97d22bcfc71c755a29121489984eacf052040c61c696fc9 + languageName: node + linkType: hard + +"@avalabs/avalanche-module@npm:1.10.2": + version: 1.10.2 + resolution: "@avalabs/avalanche-module@npm:1.10.2" dependencies: "@avalabs/avalanchejs": 5.1.0-alpha.2 "@avalabs/core-chains-sdk": 3.1.0-alpha.61 @@ -237,12 +262,12 @@ __metadata: "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 "@avalabs/glacier-sdk": 3.1.0-alpha.61 "@avalabs/types": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.11.0 + "@avalabs/vm-module-types": 1.10.2 "@metamask/rpc-errors": 6.3.0 big.js: 6.2.1 bn.js: 5.2.1 zod: 3.23.8 - checksum: d401fb16a61dfb099fa36a01887baa1d2026edec22f35c363e9ebe2d384a8a085d47d0e0aa5bfcd92e4503417d24399053294bf82a92cf3004f067183645a67c + checksum: c2e078c1abbb7e51c402e30f14ccf2ccd4d8289b550a85ff1fbb94a71c071f1f20347cac1e0f6cc0363c8bd924ad0a27c5140d57f15a9e6e56fdc2cce0e15dee languageName: node linkType: hard @@ -259,20 +284,20 @@ __metadata: languageName: node linkType: hard -"@avalabs/bitcoin-module@npm:1.11.0": - version: 1.11.0 - resolution: "@avalabs/bitcoin-module@npm:1.11.0" +"@avalabs/bitcoin-module@npm:1.10.2": + version: 1.10.2 + resolution: "@avalabs/bitcoin-module@npm:1.10.2" dependencies: "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 "@avalabs/core-utils-sdk": 3.1.0-alpha.61 "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.11.0 + "@avalabs/vm-module-types": 1.10.2 "@metamask/rpc-errors": 6.3.0 big.js: 6.2.1 bitcoinjs-lib: 5.2.0 bn.js: 5.2.1 zod: 3.23.8 - checksum: b926cad8665c9b24578ba665078c42f11466f7721b1b5be40e7936ad17a501b16b2ae05f313497da5cb7abf1be1aebf575bdceb4d2eb5265f7af1428982a1864 + checksum: 8a15403bc82e20f258718f50329c3dc3ac7e466ade3346d14edecc9ef118f2b8a4dd42cb46bbd7066f440bd055e3930aa386c07c9829da8755df5f944584791f languageName: node linkType: hard @@ -350,9 +375,9 @@ __metadata: version: 0.0.0-use.local resolution: "@avalabs/core-mobile@workspace:packages/core-mobile" dependencies: - "@avalabs/avalanche-module": 1.11.0 + "@avalabs/avalanche-module": 1.10.2 "@avalabs/avalanchejs": 5.1.0-alpha.2 - "@avalabs/bitcoin-module": 1.11.0 + "@avalabs/bitcoin-module": 1.10.2 "@avalabs/bridge-unified": 4.0.3 "@avalabs/core-bridge-sdk": 3.1.0-alpha.61 "@avalabs/core-chains-sdk": 3.1.0-alpha.61 @@ -360,13 +385,13 @@ __metadata: "@avalabs/core-gasless-sdk": 3.1.0-alpha.61 "@avalabs/core-utils-sdk": 3.1.0-alpha.61 "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 - "@avalabs/evm-module": 1.11.0 + "@avalabs/evm-module": 1.10.2 "@avalabs/glacier-sdk": 3.1.0-alpha.58 "@avalabs/k2-alpine": "workspace:*" - "@avalabs/svm-module": 1.11.0 + "@avalabs/svm-module": 1.10.2 "@avalabs/tsconfig-mobile": "workspace:*" "@avalabs/types": 3.1.0-alpha.58 - "@avalabs/vm-module-types": 1.11.0 + "@avalabs/vm-module-types": 1.10.2 "@babel/core": 7.28.0 "@babel/plugin-proposal-nullish-coalescing-operator": 7.18.6 "@babel/plugin-syntax-object-rest-spread": 7.8.3 @@ -418,6 +443,7 @@ __metadata: "@react-native-community/cli": 18.0.0 "@react-native-community/cli-platform-android": 18.0.0 "@react-native-community/cli-platform-ios": 18.0.0 + "@react-native-community/cli-tools": ^20.0.2 "@react-native-community/datetimepicker": 8.4.1 "@react-native-community/netinfo": 11.4.1 "@react-native-community/slider": 4.5.6 @@ -438,7 +464,7 @@ __metadata: "@reduxjs/toolkit": 1.8.1 "@reown/walletkit": 1.0.0 "@rushstack/eslint-patch": 1.10.4 - "@sentry/react-native": 6.14.0 + "@sentry/react-native": 7.4.0 "@shopify/flash-list": 1.7.6 "@shopify/react-native-performance": 4.1.2 "@shopify/react-native-skia": v2.0.0-next.4 @@ -485,12 +511,12 @@ __metadata: appium-uiautomator2-driver: 5.0.3 appium-xcuitest-driver: 10.1.2 assert: 2.1.0 - axios: 1.12.2 + axios: 1.12.1 babel-jest: 30.1.2 babel-loader: 9.2.1 babel-plugin-inline-dotenv: 1.7.0 babel-plugin-module-resolver: 5.0.2 - babel-plugin-react-compiler: 19.1.0-rc.3 + babel-plugin-react-compiler: latest babel-plugin-react-require: 4.0.3 base-64: 1.0.0 big.js: 6.2.2 @@ -541,6 +567,7 @@ __metadata: lodash.merge: 4.6.2 lottie-react-native: 7.2.2 lru-cache: 11.0.2 + metro-symbolicate: ^0.83.3 mocha: 11.7.2 moment: 2.30.1 msw: 1.3.2 @@ -586,10 +613,12 @@ __metadata: react-native-localize: 3.2.1 react-native-mmkv: 3.2.0 react-native-modal-datetime-picker: 18.0.0 + react-native-nitro-avalabs-crypto: "workspace:*" + react-native-nitro-modules: ^0.30.2 react-native-os: 1.2.6 react-native-pager-view: 6.7.1 react-native-passkey: 3.1.0 - react-native-performance: 5.1.2 + react-native-performance: ^6.0.0 react-native-permissions: 4.1.5 react-native-popable: 0.4.3 react-native-popover-view: 6.1.0 @@ -604,7 +633,6 @@ __metadata: react-native-safe-area-context: 5.5.2 react-native-screens: 4.15.4 react-native-sensors: 7.3.6 - react-native-share: 12.0.9 react-native-sound: 0.12.0 react-native-svg: 15.11.2 react-native-svg-transformer: 1.5.1 @@ -713,9 +741,9 @@ __metadata: languageName: node linkType: hard -"@avalabs/evm-module@npm:1.11.0": - version: 1.11.0 - resolution: "@avalabs/evm-module@npm:1.11.0" +"@avalabs/evm-module@npm:1.10.2": + version: 1.10.2 + resolution: "@avalabs/evm-module@npm:1.10.2" dependencies: "@avalabs/core-chains-sdk": 3.1.0-alpha.61 "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 @@ -724,7 +752,7 @@ __metadata: "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 "@avalabs/glacier-sdk": 3.1.0-alpha.61 "@avalabs/types": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.11.0 + "@avalabs/vm-module-types": 1.10.2 "@blockaid/client": 0.48.0 "@metamask/rpc-errors": 6.3.0 "@openzeppelin/contracts": 4.9.6 @@ -734,7 +762,7 @@ __metadata: zod: 3.23.8 peerDependencies: ethers: 6.13.5 - checksum: 34e4a2e838f35bbe8a669c7529df366da3b279aa2bc69543ae97136af3e146883841944735d841526776d67d25de1f672cd299c075bc577f85503f55d28639df + checksum: 644d947e2bb27d68f184d50c3e9bd5f7652a9e9d95b4f4df578948188cd58c94e7836411933ccc4227fa0a6968d7dff83d1f4e3f560788ff0253a9a18bb89b1c languageName: node linkType: hard @@ -840,15 +868,15 @@ __metadata: languageName: unknown linkType: soft -"@avalabs/svm-module@npm:1.11.0": - version: 1.11.0 - resolution: "@avalabs/svm-module@npm:1.11.0" +"@avalabs/svm-module@npm:1.10.2": + version: 1.10.2 + resolution: "@avalabs/svm-module@npm:1.10.2" dependencies: "@avalabs/core-chains-sdk": 3.1.0-alpha.61 "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 "@avalabs/core-utils-sdk": 3.1.0-alpha.61 "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.11.0 + "@avalabs/vm-module-types": 1.10.2 "@blockaid/client": 0.48.0 "@metamask/rpc-errors": 6.3.0 "@scure/base": 1.2.4 @@ -859,7 +887,7 @@ __metadata: "@wallet-standard/base": 1.1.0 "@wallet-standard/features": 1.1.0 zod: 3.23.8 - checksum: 239cb64e19336ac983385116b65369bbaa014975aab042cb459a5971b5c767175138fe8daebb3694855da08c2fb30a935e5a83026880e03ee1d8b7deb203b53f + checksum: 7c540707ebd1a16758b06e0bb2de8af3a103fa43b6ffacd878d0b4c89b0188ef4bc68fa5c345be083fdd4c8f08408cc773244dbaaf676a9534103576c5e65518 languageName: node linkType: hard @@ -883,9 +911,9 @@ __metadata: languageName: node linkType: hard -"@avalabs/vm-module-types@npm:1.11.0": - version: 1.11.0 - resolution: "@avalabs/vm-module-types@npm:1.11.0" +"@avalabs/vm-module-types@npm:1.10.2": + version: 1.10.2 + resolution: "@avalabs/vm-module-types@npm:1.10.2" dependencies: "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 "@avalabs/glacier-sdk": 3.1.0-alpha.61 @@ -896,7 +924,7 @@ __metadata: zod: 3.23.8 peerDependencies: ethers: 6.13.5 - checksum: 895948b9d2a1bae2e2cf11f8c3ce8f6fb2c7a7858da0f71243ac97eaa48ed514f7a76c8e7cc314fc47f1bcfb318b58e07b0127cbd8d0ebb7311b71724066968e + checksum: 25ae229261bf20eadff489192c09f0d11d090cb4e3a3cfc82aa3bd45ce7153534221d80b424f8d539ec955ca72e48e0ea824f7764e0117c0281aaa33cda5d790 languageName: node linkType: hard @@ -1013,6 +1041,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.0": + version: 7.28.4 + resolution: "@babel/compat-data@npm:7.28.4" + checksum: 9f6f5289bbe5a29e3f9c737577a797205a91f19371b50af8942257d9cb590d44eb950154e4f2a3d5de4105f97a49d6fbc8daebe0db1e6eee04f5a4bf73536bfc + languageName: node + linkType: hard + "@babel/core@npm:7.28.0": version: 7.28.0 resolution: "@babel/core@npm:7.28.0" @@ -1279,6 +1314,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" + dependencies: + "@babel/types": ^7.27.3 + checksum: 63863a5c936ef82b546ca289c9d1b18fabfc24da5c4ee382830b124e2e79b68d626207febc8d4bffc720f50b2ee65691d7d12cc0308679dee2cd6bdc926b7190 + languageName: node + linkType: hard + "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.7": version: 7.25.7 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.7" @@ -1354,7 +1398,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.27.2": +"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: @@ -1437,6 +1481,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-create-class-features-plugin@npm:7.28.3" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.3 + "@babel/helper-member-expression-to-functions": ^7.27.1 + "@babel/helper-optimise-call-expression": ^7.27.1 + "@babel/helper-replace-supers": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + "@babel/traverse": ^7.28.3 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 6d918e5e9c88ad1a262ab7b1a3caede1bbf95f8276c96846d8b0c1af251c85a0c868a9f1bbbaebdeb199e44dfd0e10fbe22935e56bedd1aa41ba4a7162bfa86c + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6": version: 7.22.15 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" @@ -1489,6 +1550,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.1 + regexpu-core: ^6.2.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 2ede6bbad0016a9262fd281ce8f1a5d69e6179dcec4ea282830e924c29a29b66b0544ecb92e4ef4acdaf2c4c990931d7dc442dbcd6a8bcec4bad73923ef70934 + languageName: node + linkType: hard + "@babel/helper-define-polyfill-provider@npm:^0.6.2": version: 0.6.2 resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" @@ -1504,6 +1578,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-define-polyfill-provider@npm:^0.6.5": + version: 0.6.5 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" + dependencies: + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-plugin-utils": ^7.27.1 + debug: ^4.4.1 + lodash.debounce: ^4.0.8 + resolve: ^1.22.10 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 9fd3b09b209c8ed0d3d8bc1f494f1368b9e1f6e46195af4ce948630fe97d7dafde4882eedace270b319bf6555ddf35e220c77505f6d634f621766cdccbba0aae + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" @@ -1576,6 +1665,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" + dependencies: + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 + checksum: b13a3d120015a6fd2f6e6c2ff789cd12498745ef028710cba612cfb751b91ace700c3f96c1689228d1dcb41e9d4cf83d6dff8627dcb0c8da12d79440e783c6b8 + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-module-imports@npm:7.22.15" @@ -1696,29 +1795,29 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.3": - version: 7.27.3 - resolution: "@babel/helper-module-transforms@npm:7.27.3" +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" dependencies: "@babel/helper-module-imports": ^7.27.1 "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.27.3 + "@babel/traverse": ^7.28.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: c611d42d3cb7ba23b1a864fcf8d6cde0dc99e876ca1c9a67e4d7919a70706ded4aaa45420de2bf7f7ea171e078e59f0edcfa15a56d74b9485e151b95b93b946e + checksum: 7cf7b79da0fa626d6c84bfc7b35c079a2559caecaa2ff645b0f1db0d741507aa4df6b5b98a3283e8ac4e89094af271d805bf5701e5c4f916e622797b7c8cbb18 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" +"@babel/helper-module-transforms@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-module-transforms@npm:7.27.3" dependencies: "@babel/helper-module-imports": ^7.27.1 "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.28.3 + "@babel/traverse": ^7.27.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: 7cf7b79da0fa626d6c84bfc7b35c079a2559caecaa2ff645b0f1db0d741507aa4df6b5b98a3283e8ac4e89094af271d805bf5701e5c4f916e622797b7c8cbb18 + checksum: c611d42d3cb7ba23b1a864fcf8d6cde0dc99e876ca1c9a67e4d7919a70706ded4aaa45420de2bf7f7ea171e078e59f0edcfa15a56d74b9485e151b95b93b946e languageName: node linkType: hard @@ -1758,6 +1857,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" + dependencies: + "@babel/types": ^7.27.1 + checksum: 0fb7ee824a384529d6b74f8a58279f9b56bfe3cce332168067dddeab2552d8eeb56dc8eaf86c04a3a09166a316cb92dfc79c4c623cd034ad4c563952c98b464f + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" @@ -1826,6 +1934,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.1 + "@babel/helper-wrap-function": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 0747397ba013f87dbf575454a76c18210d61c7c9af0f697546b4bcac670b54ddc156330234407b397f0c948738c304c228e0223039bc45eab4fbf46966a5e8cc + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.22.9": version: 7.22.20 resolution: "@babel/helper-replace-supers@npm:7.22.20" @@ -1878,6 +1999,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.27.1 + "@babel/helper-optimise-call-expression": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 3690266c304f21008690ba68062f889a363583cabc13c3d033b94513953147af3e0a3fdb48fa1bb9fa3734b64e221fc65e5222ab70837f02321b7225f487c6ef + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-simple-access@npm:7.22.5" @@ -1946,6 +2080,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" + dependencies: + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 + checksum: 4f380c5d0e0769fa6942a468b0c2d7c8f0c438f941aaa88f785f8752c103631d0904c7b4e76207a3b0e6588b2dec376595370d92ca8f8f1b422c14a69aa146d4 + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" @@ -2096,6 +2240,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.27.1": + version: 7.28.3 + resolution: "@babel/helper-wrap-function@npm:7.28.3" + dependencies: + "@babel/template": ^7.27.2 + "@babel/traverse": ^7.28.3 + "@babel/types": ^7.28.2 + checksum: 0ebdfdc918fdd0c1cf6ff15ba4c664974d0cdf21a017af560d58b00c379df3bf2e55f13a44fe3225668bca169da174f6cb97a96c4e987fb728fdb8f9a39db302 + languageName: node + linkType: hard + "@babel/helpers@npm:^7.23.2": version: 7.23.2 resolution: "@babel/helpers@npm:7.23.2" @@ -2291,6 +2446,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 72f24b9487e445fa61cf8be552aad394a648c2bb445c38d39d1df003186d9685b87dd8d388c950f438ea0ca44c82099d9c49252fb681c719cc72edf02bbe0304 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.7" @@ -2302,6 +2469,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: eb7f4146dc01f1198ce559a90b077e58b951a07521ec414e3c7d4593bf6c4ab5c2af22242a7e9fec085e20299e0ba6ea97f44a45e84ab148141bf9eb959ad25e + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.7" @@ -2313,6 +2491,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 621cfddfcc99a81e74f8b6f9101fd260b27500cb1a568e3ceae9cc8afe9aee45ac3bca3900a2b66c612b1a2366d29ef67d4df5a1c975be727eaad6906f98c2c6 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.7" @@ -2326,6 +2515,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + "@babel/plugin-transform-optional-chaining": ^7.27.1 + peerDependencies: + "@babel/core": ^7.13.0 + checksum: f07aa80272bd7a46b7ba11a4644da6c9b6a5a64e848dfaffdad6f02663adefd512e1aaebe664c4dd95f7ed4f80c872c7f8db8d8e34b47aae0930b412a28711a0 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.7" @@ -2338,6 +2540,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/traverse": ^7.28.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c810e5d36030df6861ced35f0adbda7b4b41ac3e984422b32bee906564fd49374435f0a7a1a42eb0a9e6a5170c255f0ab31c163d5fc51fa5a816aa0420311029 + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:^7.12.9": version: 7.24.7 resolution: "@babel/plugin-proposal-decorators@npm:7.24.7" @@ -2493,6 +2707,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-flow@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-flow@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-assertions@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7" @@ -2504,7 +2729,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fb661d630808d67ecb85eabad25aac4e9696a20464bad4c4a6a0d3d40e4dc22557d47e9be3d591ec06429cf048cfe169b8891c373606344d51c4f3ac0f91d6d0 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: @@ -2592,6 +2828,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -2713,6 +2960,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -2758,6 +3016,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-arrow-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 62c2cc0ae2093336b1aa1376741c5ed245c0987d9e4b4c5313da4a38155509a7098b5acce582b6781cc0699381420010da2e3086353344abe0a6a0ec38961eb7 + languageName: node + linkType: hard + "@babel/plugin-transform-async-generator-functions@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.4" @@ -2786,6 +3055,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-remap-async-to-generator": ^7.27.1 + "@babel/traverse": ^7.28.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 174aaccd7a8386fd7f32240c3f65a93cf60dcc5f6a2123cfbff44c0d22b424cd41de3a0c6d136b6a2fa60a8ca01550c261677284cb18a0daeab70730b2265f1d + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" @@ -2812,6 +3094,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-module-imports": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-remap-async-to-generator": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d79d7a7ae7d416f6a48200017d027a6ba94c09c7617eea8b4e9c803630f00094c1a4fc32bf20ce3282567824ce3fcbda51653aac4003c71ea4e681b331338979 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoped-functions@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.7" @@ -2823,6 +3118,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7fb4988ca80cf1fc8345310d5edfe38e86b3a72a302675cdd09404d5064fe1d1fe1283ebe658ad2b71445ecef857bfb29a748064306b5f6c628e0084759c2201 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoping@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" @@ -2845,6 +3151,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.28.0": + version: 7.28.4 + resolution: "@babel/plugin-transform-block-scoping@npm:7.28.4" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7f62eae907c0b4f85b9cc024da949697e57d17f2107ca4a240011174762d4c546b856ccbd5ba83ecb4bc9eb50150ea46558d551a5b05d3f25aace88a65fa4e04 + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" @@ -2881,6 +3198,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 475a6e5a9454912fe1bdc171941976ca10ea4e707675d671cdb5ce6b6761d84d1791ac61b6bca81a2e5f6430cb7b9d8e4b2392404110e69c28207a754e196294 + languageName: node + linkType: hard + "@babel/plugin-transform-class-static-block@npm:7.25.7, @babel/plugin-transform-class-static-block@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-class-static-block@npm:7.25.7" @@ -2894,6 +3223,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-static-block@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.28.3 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 9b2feaacbf29637ab35a3aae1df35a1129adec5400a1767443739557fb0d3bf8278bf0ec90aacf43dec9a7dd91428d01375020b70528713e1bc36a72776a104c + languageName: node + linkType: hard + "@babel/plugin-transform-classes@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-classes@npm:7.25.9" @@ -2942,6 +3283,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/plugin-transform-classes@npm:7.28.4" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.3 + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-globals": ^7.28.0 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-replace-supers": ^7.27.1 + "@babel/traverse": ^7.28.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f412e00c86584a9094cc0a2f3dd181b8108a4dced477d609c5406beddd5bf79d05a7ea74db508dc4dcb37172f042d5ef98d3d6311ade61c7ea6fbbbb70f5ec29 + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" @@ -2966,6 +3323,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/template": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 48bd20f7d631b08c51155751bf75b698d4a22cca36f41c22921ab92e53039c9ec5c3544e5282e18692325ef85d2e4a18c27e12c62b5e20c26fb0c92447e35224 + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" @@ -2988,6 +3357,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-destructuring@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/traverse": ^7.28.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5b464d6a03c6eaa1327b60ffc1630ca977db0256938b34e281e65c81c965680e930a6bac043272942d6d4bbd7d1eddded0b7231779429ba51275e092e7367859 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.7" @@ -3000,6 +3381,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2173e5b13f403538ffc6bd57b190cedf4caf320abc13a99e5b2721864e7148dbd3bd7c82d92377136af80432818f665fdd9a1fd33bc5549a4c91e24e5ce2413c + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-keys@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.7" @@ -3011,6 +3404,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ef2112d658338e3ff0827f39a53c0cfa211f1cbbe60363bca833a5269df389598ec965e7283600b46533c39cdca82307d0d69c0f518290ec5b00bb713044715b + languageName: node + linkType: hard + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.7" @@ -3023,6 +3427,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 2a109613535e6ac79240dced71429e988affd6a5b3d0cd0f563c8d6c208c51ce7bf2c300bc1150502376b26a51f279119b3358f1c0f2d2f8abca3bcd62e1ae46 + languageName: node + linkType: hard + "@babel/plugin-transform-dynamic-import@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.7" @@ -3035,6 +3451,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-dynamic-import@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7a9fbc8d17148b7f11a1d1ca3990d2c2cd44bd08a45dcaf14f20a017721235b9044b20e6168b6940282bb1b48fb78e6afbdfb9dd9d82fde614e15baa7d579932 + languageName: node + linkType: hard + +"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": + version: 7.28.0 + resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/plugin-transform-destructuring": ^7.28.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a44140097ed4854883c426613f4e8763237cd0fdab1c780514f4315f6c148d6b528d7a57fe6fdec4dbce28a21b70393ef3507b72dfec2e30bfc8d7db1ff19474 + languageName: node + linkType: hard + "@babel/plugin-transform-exponentiation-operator@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.7" @@ -3047,6 +3486,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4ff4a0f30babc457a5ae8564deda209599627c2ce647284a0e8e66f65b44f6d968cf77761a4cc31b45b61693f0810479248c79e681681d8ccb39d0c52944c1fd + languageName: node + linkType: hard + "@babel/plugin-transform-export-namespace-from@npm:7.25.7, @babel/plugin-transform-export-namespace-from@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.7" @@ -3059,7 +3509,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": +"@babel/plugin-transform-export-namespace-from@npm:^7.25.9, @babel/plugin-transform-export-namespace-from@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" dependencies: @@ -3082,6 +3532,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-flow-strip-types@npm:^7.26.5": + version: 7.27.1 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/plugin-syntax-flow": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0885028866fadefef35292d5a27f878d6a12b6f83778f8731481d4503b49c258507882a7de2aafda9b62d5f6350042f1a06355b998d5ed5e85d693bfcb77b939 + languageName: node + linkType: hard + "@babel/plugin-transform-for-of@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-for-of@npm:7.24.7" @@ -3106,6 +3568,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-for-of@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-for-of@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c9224e08de5d80b2c834383d4359aa9e519db434291711434dd996a4f86b7b664ad67b45d65459b7ec11fa582e3e11a3c769b8a8ca71594bdd4e2f0503f84126 + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.25.1": version: 7.25.1 resolution: "@babel/plugin-transform-function-name@npm:7.25.1" @@ -3132,6 +3606,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" + dependencies: + "@babel/helper-compilation-targets": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 26a2a183c3c52a96495967420a64afc5a09f743a230272a131668abf23001e393afa6371e6f8e6c60f4182bea210ed31d1caf866452d91009c1daac345a52f23 + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-json-strings@npm:7.25.7" @@ -3144,6 +3631,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2c05a02f63b49f47069271b3405a66c3c8038de5b995b0700b1bd9a5e2bb3e67abd01e4604629302a521f4d8122a4233944aefa16559fd4373d256cc5d3da57f + languageName: node + linkType: hard + "@babel/plugin-transform-literals@npm:^7.25.2": version: 7.25.2 resolution: "@babel/plugin-transform-literals@npm:7.25.2" @@ -3166,6 +3664,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0a76d12ab19f32dd139964aea7da48cecdb7de0b75e207e576f0f700121fe92367d788f328bf4fb44b8261a0f605c97b44e62ae61cddbb67b14e94c88b411f95 + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" @@ -3190,6 +3699,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2757955d81d65cc4701c17b83720745f6858f7a1d1d58117e379c204f47adbeb066b778596b6168bdbf4a22c229aab595d79a9abc261d0c6bfd62d4419466e73 + languageName: node + linkType: hard + "@babel/plugin-transform-member-expression-literals@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.7" @@ -3201,6 +3721,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 804121430a6dcd431e6ffe99c6d1fbbc44b43478113b79c677629e7f877b4f78a06b69c6bfb2747fd84ee91879fe2eb32e4620b53124603086cf5b727593ebe8 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-amd@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-modules-amd@npm:7.25.7" @@ -3213,6 +3744,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-amd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8bb36d448e438d5d30f4faf19120e8c18aa87730269e65d805bf6032824d175ed738057cc392c2c8a650028f1ae0f346cad8d6b723f31a037b586e2092a7be18 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-commonjs@npm:^7.23.0": version: 7.23.0 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" @@ -3264,6 +3807,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bc45c1beff9b145c982bd6a614af338893d38bce18a9df7d658c9084e0d8114b286dcd0e015132ae7b15dd966153cb13321e4800df9766d0ddd892d22bf09d2a + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.7" @@ -3278,6 +3833,20 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7c17a8973676c18525d87f277944616596f1b154cc2b9263bfd78ecdbf5f4288ec46c7f58017321ca3e3d6dfeb96875467b95311a39719b475d42a157525d87f + languageName: node + linkType: hard + "@babel/plugin-transform-modules-umd@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-modules-umd@npm:7.25.7" @@ -3290,6 +3859,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-umd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b007dd89231f2eeccf1c71a85629bcb692573303977a4b1c5f19a835ea6b5142c18ef07849bc6d752b874a11bc0ddf3c67468b77c8ee8310290b688a4f01ef31 + languageName: node + linkType: hard + "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" @@ -3314,6 +3895,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: a711c92d9753df26cefc1792481e5cbff4fe4f32b383d76b25e36fa865d8023b1b9aa6338cf18f5c0e864c71a7fbe8115e840872ccd61a914d9953849c68de7d + languageName: node + linkType: hard + "@babel/plugin-transform-new-target@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-new-target@npm:7.25.7" @@ -3325,6 +3918,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-new-target@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-new-target@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 32c8078d843bda001244509442d68fd3af088d7348ba883f45c262b2c817a27ffc553b0d78e7f7a763271b2ece7fac56151baad7a91fb21f5bb1d2f38e5acad7 + languageName: node + linkType: hard + "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0": version: 7.26.6 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.26.6" @@ -3360,6 +3964,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1c6b3730748782d2178cc30f5cc37be7d7666148260f3f2dfc43999908bdd319bdfebaaf19cf04ac1f9dee0f7081093d3fa730cda5ae1b34bcd73ce406a78be7 + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" @@ -3384,6 +3999,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 049b958911de86d32408cd78017940a207e49c054ae9534ab53a32a57122cc592c0aae3c166d6f29bd1a7d75cc779d71883582dd76cb28b2fbb493e842d8ffca + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" @@ -3412,6 +4038,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-rest-spread@npm:^7.28.0": + version: 7.28.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" + dependencies: + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/plugin-transform-destructuring": ^7.28.0 + "@babel/plugin-transform-parameters": ^7.27.7 + "@babel/traverse": ^7.28.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2063672ba4ac457a64b5c0c982439c7b08b4c70f0e743792b98240db5a05f1c063918d8366c92d4d6b2572e2e3452b300a23980b6668e4f54ff349f60d47ec48 + languageName: node + linkType: hard + "@babel/plugin-transform-object-super@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-object-super@npm:7.25.7" @@ -3424,6 +4065,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-super@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-object-super@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-replace-supers": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 46b819cb9a6cd3cfefe42d07875fee414f18d5e66040366ae856116db560ad4e16f3899a0a7fddd6773e0d1458444f94b208b67c0e3b6977a27ea17a5c13dbf6 + languageName: node + linkType: hard + "@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" @@ -3448,6 +4101,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f4356b04cf21a98480f9788ea50f1f13ee88e89bb6393ba4b84d1f39a4a84c7928c9a4328e8f4c5b6deb218da68a8fd17bf4f46faec7653ddc20ffaaa5ba49f4 + languageName: node + linkType: hard + "@babel/plugin-transform-optional-chaining@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" @@ -3486,6 +4150,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4428d31f182d724db6f10575669aad3dbccceb0dea26aa9071fa89f11b3456278da3097fcc78937639a13c105a82cd452dc0218ce51abdbcf7626a013b928a5 + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-parameters@npm:7.24.7" @@ -3508,6 +4184,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-parameters@npm:^7.27.7": + version: 7.27.7 + resolution: "@babel/plugin-transform-parameters@npm:7.27.7" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d51f195e1d6ac5d9fce583e9a70a5bfe403e62386e5eb06db9fbc6533f895a98ff7e7c3dcaa311a8e6fa7a9794466e81cdabcba6af9f59d787fb767bfe7868b4 + languageName: node + linkType: hard + "@babel/plugin-transform-private-methods@npm:7.25.7, @babel/plugin-transform-private-methods@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-private-methods@npm:7.25.7" @@ -3532,6 +4219,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c76f8f6056946466116e67eb9d8014a2d748ade2062636ab82045c1dac9c233aff10e597777bc5af6f26428beb845ceb41b95007abef7d0484da95789da56662 + languageName: node + linkType: hard + "@babel/plugin-transform-private-property-in-object@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" @@ -3560,6 +4259,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.1 + "@babel/helper-create-class-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: af539af1bd423aa46b9da83d649be716494ca80783841f47094b6741fa24e11141446027fd152ddff791dede9d4a76d0d5eb467402a2e584d7f5ea90e2673c7e + languageName: node + linkType: hard + "@babel/plugin-transform-property-literals@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-property-literals@npm:7.25.7" @@ -3571,6 +4283,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-property-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7caec27d5ed8870895c9faf4f71def72745d69da0d8e77903146a4e135fd7bed5778f5f9cebb36c5fba86338e6194dd67a08c033fc84b4299b7eceab6d9630cb + languageName: node + linkType: hard + "@babel/plugin-transform-react-display-name@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" @@ -3582,6 +4305,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-display-name@npm:^7.27.1": + version: 7.28.0 + resolution: "@babel/plugin-transform-react-display-name@npm:7.28.0" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 268b1a9192974439d17949e170b01cac2a2aa003c844e2fe3b8361146f42f66487178cffdfa8ce862aa9e6c814bc37f879a70300cb3f067815d15fa6aad04e6d + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-development@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" @@ -3593,6 +4327,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx-development@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1" + dependencies: + "@babel/plugin-transform-react-jsx": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: b88865d5b8c018992f2332da939faa15c4d4a864c9435a5937beaff3fe43781432cc42e0a5d5631098e0bd4066fc33f5fa72203b388b074c3545fe7aaa21e474 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-self@npm:^7.24.7": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" @@ -3645,6 +4390,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.1 + "@babel/helper-module-imports": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/plugin-syntax-jsx": ^7.27.1 + "@babel/types": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 960d36e5d11ba68e4fbf1e2b935c153cb6ea7b0004f838aaee8baf7de30462b8f0562743a39ce3c370cc70b8f79d3c549104a415a615b2b0055b71fd025df0f3 + languageName: node + linkType: hard + "@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" @@ -3657,6 +4417,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-pure-annotations@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a6f591c5e85a1ab0685d4a25afe591fe8d11dc0b73c677cf9560ff8d540d036a1cce9efcb729fc9092def4d854dc304ffdc063a89a9247900b69c516bf971a4c + languageName: node + linkType: hard + "@babel/plugin-transform-regenerator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" @@ -3681,6 +4453,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regenerator@npm:^7.28.3": + version: 7.28.4 + resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2aa99b3a7b254a109e913fabbe1fb320ff40723988fde0e225212b7ef20f523a399a6e45077258b176c29715493b2a853cf7c130811692215adf33e5af99782b + languageName: node + linkType: hard + +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: f6cb385fe0e798bff7e9b20cf5912bf40e180895ff3610b1ccdce260f3c20daaebb3a99dc087c8168a99151cd3e16b94f4689fd5a4b01cf1834b45c133e620b2 + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-reserved-words@npm:7.25.7" @@ -3692,6 +4487,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-reserved-words@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: dea0b66742d2863b369c06c053e11e15ba785892ea19cccf7aef3c1bdaa38b6ab082e19984c5ea7810d275d9445c5400fcc385ad71ce707ed9256fadb102af3b + languageName: node + linkType: hard + "@babel/plugin-transform-runtime@npm:^7.24.7": version: 7.25.9 resolution: "@babel/plugin-transform-runtime@npm:7.25.9" @@ -3741,6 +4547,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: fbba6e2aef0b69681acb68202aa249c0598e470cc0853d7ff5bd0171fd6a7ec31d77cfabcce9df6360fc8349eded7e4a65218c32551bd3fc0caaa1ac899ac6d4 + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-spread@npm:7.24.7" @@ -3765,6 +4582,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 58b08085ee9c29955ac3b68d61c1a79728d44d19a69cb5eb669794aeaf54c57c6647af7b979c1297e81ede3d08b3ddcb1936ef39a533f28ff3e399a9be54dab1 + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" @@ -3787,6 +4616,28 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: e1414a502efba92c7974681767e365a8cda6c5e9e5f33472a9eaa0ce2e75cea0a9bef881ff8dda37c7810ad902f98d3c00ead92a3ac3b73a79d011df85b5a189 + languageName: node + linkType: hard + +"@babel/plugin-transform-strict-mode@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/plugin-transform-strict-mode@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0c5bbc9f913b2cea1a1f5697bac320f11575016eed2eee16d2430af5ddceff5382ad3f1b70bf7158ff458db38568a903fab03b308150753453354785365667ec + languageName: node + linkType: hard + "@babel/plugin-transform-template-literals@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" @@ -3809,6 +4660,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-template-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 93aad782503b691faef7c0893372d5243df3219b07f1f22cfc32c104af6a2e7acd6102c128439eab15336d048f1b214ca134b87b0630d8cd568bf447f78b25ce + languageName: node + linkType: hard + "@babel/plugin-transform-typeof-symbol@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.7" @@ -3820,6 +4682,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ed8048c8de72c60969a64cf2273cc6d9275d8fa8db9bd25a1268273a00fb9cbd79931140311411bda1443aa56cb3961fb911d1795abacde7f0482f1d8fdf0356 + languageName: node + linkType: hard + "@babel/plugin-transform-typescript@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-typescript@npm:7.22.15" @@ -3864,6 +4737,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.27.1": + version: 7.28.0 + resolution: "@babel/plugin-transform-typescript@npm:7.28.0" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.3 + "@babel/helper-create-class-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + "@babel/plugin-syntax-typescript": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 14c1024bcd57fcd469d90cf0c15c3cd4e771e2eb2cd9afee3aa79b59c8ed103654f7c5c71cdb3bfe31c1d0cb08bfad8c80f5aa1d24b4b454bd21301d5925533d + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.7" @@ -3875,6 +4763,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: d817154bc10758ddd85b716e0bc1af1a1091e088400289ab6b78a1a4d609907ce3d2f1fd51a6fd0e0c8ecbb5f8e3aab4957e0747776d132d2379e85c3ef0520a + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-property-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.7" @@ -3887,6 +4786,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5d99c89537d1ebaac3f526c04b162cf95a47d363d4829f78c6701a2c06ab78a48da66a94f853f85f44a3d72153410ba923e072bed4b7166fa097f503eb14131d + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-regex@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" @@ -3923,6 +4834,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: a34d89a2b75fb78e66d97c3dc90d4877f7e31f43316b52176f95a5dee20e9bb56ecf158eafc42a001676ddf7b393d9e67650bad6b32f5405780f25fb83cd68e3 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-sets-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.7" @@ -3935,6 +4858,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 295126074c7388ab05c82ef3ed0907a1ee4666bbdd763477ead9aba6eb2c74bdf65669416861ac93d337a4a27640963bb214acadc2697275ce95aab14868d57f + languageName: node + linkType: hard + "@babel/preset-env@npm:7.25.7": version: 7.25.7 resolution: "@babel/preset-env@npm:7.25.7" @@ -4028,6 +4963,86 @@ __metadata: languageName: node linkType: hard +"@babel/preset-env@npm:^7.25.2": + version: 7.28.3 + resolution: "@babel/preset-env@npm:7.28.3" + dependencies: + "@babel/compat-data": ^7.28.0 + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-validator-option": ^7.27.1 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.27.1 + "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.27.1 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.27.1 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.27.1 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.28.3 + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 + "@babel/plugin-syntax-import-assertions": ^7.27.1 + "@babel/plugin-syntax-import-attributes": ^7.27.1 + "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 + "@babel/plugin-transform-arrow-functions": ^7.27.1 + "@babel/plugin-transform-async-generator-functions": ^7.28.0 + "@babel/plugin-transform-async-to-generator": ^7.27.1 + "@babel/plugin-transform-block-scoped-functions": ^7.27.1 + "@babel/plugin-transform-block-scoping": ^7.28.0 + "@babel/plugin-transform-class-properties": ^7.27.1 + "@babel/plugin-transform-class-static-block": ^7.28.3 + "@babel/plugin-transform-classes": ^7.28.3 + "@babel/plugin-transform-computed-properties": ^7.27.1 + "@babel/plugin-transform-destructuring": ^7.28.0 + "@babel/plugin-transform-dotall-regex": ^7.27.1 + "@babel/plugin-transform-duplicate-keys": ^7.27.1 + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.27.1 + "@babel/plugin-transform-dynamic-import": ^7.27.1 + "@babel/plugin-transform-explicit-resource-management": ^7.28.0 + "@babel/plugin-transform-exponentiation-operator": ^7.27.1 + "@babel/plugin-transform-export-namespace-from": ^7.27.1 + "@babel/plugin-transform-for-of": ^7.27.1 + "@babel/plugin-transform-function-name": ^7.27.1 + "@babel/plugin-transform-json-strings": ^7.27.1 + "@babel/plugin-transform-literals": ^7.27.1 + "@babel/plugin-transform-logical-assignment-operators": ^7.27.1 + "@babel/plugin-transform-member-expression-literals": ^7.27.1 + "@babel/plugin-transform-modules-amd": ^7.27.1 + "@babel/plugin-transform-modules-commonjs": ^7.27.1 + "@babel/plugin-transform-modules-systemjs": ^7.27.1 + "@babel/plugin-transform-modules-umd": ^7.27.1 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.27.1 + "@babel/plugin-transform-new-target": ^7.27.1 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.27.1 + "@babel/plugin-transform-numeric-separator": ^7.27.1 + "@babel/plugin-transform-object-rest-spread": ^7.28.0 + "@babel/plugin-transform-object-super": ^7.27.1 + "@babel/plugin-transform-optional-catch-binding": ^7.27.1 + "@babel/plugin-transform-optional-chaining": ^7.27.1 + "@babel/plugin-transform-parameters": ^7.27.7 + "@babel/plugin-transform-private-methods": ^7.27.1 + "@babel/plugin-transform-private-property-in-object": ^7.27.1 + "@babel/plugin-transform-property-literals": ^7.27.1 + "@babel/plugin-transform-regenerator": ^7.28.3 + "@babel/plugin-transform-regexp-modifiers": ^7.27.1 + "@babel/plugin-transform-reserved-words": ^7.27.1 + "@babel/plugin-transform-shorthand-properties": ^7.27.1 + "@babel/plugin-transform-spread": ^7.27.1 + "@babel/plugin-transform-sticky-regex": ^7.27.1 + "@babel/plugin-transform-template-literals": ^7.27.1 + "@babel/plugin-transform-typeof-symbol": ^7.27.1 + "@babel/plugin-transform-unicode-escapes": ^7.27.1 + "@babel/plugin-transform-unicode-property-regex": ^7.27.1 + "@babel/plugin-transform-unicode-regex": ^7.27.1 + "@babel/plugin-transform-unicode-sets-regex": ^7.27.1 + "@babel/preset-modules": 0.1.6-no-external-plugins + babel-plugin-polyfill-corejs2: ^0.4.14 + babel-plugin-polyfill-corejs3: ^0.13.0 + babel-plugin-polyfill-regenerator: ^0.6.5 + core-js-compat: ^3.43.0 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4e70f69b727d21eedd4de201ac082e951482f2d28a388e401e7937fd6f15bc1a49a63c12f59e87a18d237ac037a5b29d983f3bb82f1196d6444ae5b605ac6e2 + languageName: node + linkType: hard + "@babel/preset-modules@npm:0.1.6-no-external-plugins": version: 0.1.6-no-external-plugins resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" @@ -4057,6 +5072,22 @@ __metadata: languageName: node linkType: hard +"@babel/preset-react@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/preset-react@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-validator-option": ^7.27.1 + "@babel/plugin-transform-react-display-name": ^7.27.1 + "@babel/plugin-transform-react-jsx": ^7.27.1 + "@babel/plugin-transform-react-jsx-development": ^7.27.1 + "@babel/plugin-transform-react-pure-annotations": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 00bc146f9c742eed804c598d3f31b7d889c1baf8c768989b7f84a93ca527dd1518d3b86781e89ca45cae6dbee136510d3a121658e01416c5578aecf751517bb5 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:7.25.7": version: 7.25.7 resolution: "@babel/preset-typescript@npm:7.25.7" @@ -4102,6 +5133,21 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/preset-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-validator-option": ^7.27.1 + "@babel/plugin-syntax-jsx": ^7.27.1 + "@babel/plugin-transform-modules-commonjs": ^7.27.1 + "@babel/plugin-transform-typescript": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 38020f1b23e88ec4fbffd5737da455d8939244bddfb48a2516aef93fb5947bd9163fb807ce6eff3e43fa5ffe9113aa131305fef0fb5053998410bbfcfe6ce0ec + languageName: node + linkType: hard + "@babel/regjsgen@npm:^0.8.0": version: 0.8.0 resolution: "@babel/regjsgen@npm:0.8.0" @@ -4225,7 +5271,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.27.2": +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -4471,13 +5517,12 @@ __metadata: languageName: node linkType: hard -"@bitcoinerlab/secp256k1@npm:^1.0.5": - version: 1.0.5 - resolution: "@bitcoinerlab/secp256k1@npm:1.0.5" +"@bitcoinerlab/secp256k1@patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch::locator=mobile-monorepo%40workspace%3A.": + version: 1.2.0 + resolution: "@bitcoinerlab/secp256k1@patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch::version=1.2.0&hash=058e44&locator=mobile-monorepo%40workspace%3A." dependencies: - "@noble/hashes": ^1.1.5 - "@noble/secp256k1": ^1.7.1 - checksum: 410a60394f2877941815a8b2ac6b70215ab2278ee106dea67673224c55cee87c8fc7136fc7a0d8ce73181b7953a811738d4c9480bdc2216c9cd75e2e07407723 + "@noble/curves": ^1.7.0 + checksum: 20781cf9e1039bda8685ae0c0b7486141b070afec9844428236a006db84889525ebb406b5aa3ffe8ff4463e065ed0091f9abf2525f3fa5f609bcc7bb6b52e0d5 languageName: node linkType: hard @@ -4536,6 +5581,197 @@ __metadata: languageName: node linkType: hard +"@commitlint/cli@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/cli@npm:19.8.1" + dependencies: + "@commitlint/format": ^19.8.1 + "@commitlint/lint": ^19.8.1 + "@commitlint/load": ^19.8.1 + "@commitlint/read": ^19.8.1 + "@commitlint/types": ^19.8.1 + tinyexec: ^1.0.0 + yargs: ^17.0.0 + bin: + commitlint: ./cli.js + checksum: 0ad393d0a7be57044c9822de065f35375fe0c2331f9a6c044ce20f0316aa3ab1a1b679040ba130ff60b180d54738c26d81d7afb47d9da355ba25161b1a5a91dd + languageName: node + linkType: hard + +"@commitlint/config-conventional@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/config-conventional@npm:19.8.1" + dependencies: + "@commitlint/types": ^19.8.1 + conventional-changelog-conventionalcommits: ^7.0.2 + checksum: f17e855b7293391655b7d05cf2e0ed43f5d03e48ad050a19c2a21ef1fc6516e8b9f2a386ed53ce93a2d2edc4464fc5081319710bd9134ec6feb6ccfcb2e7616c + languageName: node + linkType: hard + +"@commitlint/config-validator@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/config-validator@npm:19.8.1" + dependencies: + "@commitlint/types": ^19.8.1 + ajv: ^8.11.0 + checksum: 26eee15c1c0564fc8857b4bbc4f06305a32e049a724ede73753f66fc15316eb79a5dde4c8e2765bd75952a27b138cd80cffc49491281f122b834f8467c658d80 + languageName: node + linkType: hard + +"@commitlint/ensure@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/ensure@npm:19.8.1" + dependencies: + "@commitlint/types": ^19.8.1 + lodash.camelcase: ^4.3.0 + lodash.kebabcase: ^4.1.1 + lodash.snakecase: ^4.1.1 + lodash.startcase: ^4.4.0 + lodash.upperfirst: ^4.3.1 + checksum: af342f61b246c301937cc03477c64b86ca6dea47de23f94d237181d346d020ec23c8a458f56aec8bfe9cdcb80a06adcc34964f32c05a2649282a959ce6fae39d + languageName: node + linkType: hard + +"@commitlint/execute-rule@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/execute-rule@npm:19.8.1" + checksum: a39d9a87c0962c290e4f7d7438e8fca7642384a5aa97ec84c0b3dbbf91dc048496dd25447ba3dbec37b00006eec1951f8f22f30a98448e90e22d44d585d8a68f + languageName: node + linkType: hard + +"@commitlint/format@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/format@npm:19.8.1" + dependencies: + "@commitlint/types": ^19.8.1 + chalk: ^5.3.0 + checksum: 5af80e489c1470e20519780867145492c145690bd8e6b0dc049f53d317b045fa39ba012faed2715307e105ca439e6b16bdd4fe9c39c146d38bb5d93f1542fc5f + languageName: node + linkType: hard + +"@commitlint/is-ignored@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/is-ignored@npm:19.8.1" + dependencies: + "@commitlint/types": ^19.8.1 + semver: ^7.6.0 + checksum: a70631bb7825ed49f2d6164c7547d025ca184a5e65eb7b1bd63f041ae7aa9189991c2dbef18b1160951aeb59595307b75d5ba151ea10e0de4d36f22709b9c877 + languageName: node + linkType: hard + +"@commitlint/lint@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/lint@npm:19.8.1" + dependencies: + "@commitlint/is-ignored": ^19.8.1 + "@commitlint/parse": ^19.8.1 + "@commitlint/rules": ^19.8.1 + "@commitlint/types": ^19.8.1 + checksum: adf5fb6e68c9b6301243dce251be47884e4c2d6ee1f43e6aa0a31a054d2bd85880b4f2941781e13290e3b88b4f6da4b9b1978b9117444a8c89beb6f310e95951 + languageName: node + linkType: hard + +"@commitlint/load@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/load@npm:19.8.1" + dependencies: + "@commitlint/config-validator": ^19.8.1 + "@commitlint/execute-rule": ^19.8.1 + "@commitlint/resolve-extends": ^19.8.1 + "@commitlint/types": ^19.8.1 + chalk: ^5.3.0 + cosmiconfig: ^9.0.0 + cosmiconfig-typescript-loader: ^6.1.0 + lodash.isplainobject: ^4.0.6 + lodash.merge: ^4.6.2 + lodash.uniq: ^4.5.0 + checksum: e78c997ef529f80f8b62f686e553d0f2cb33d88b8b907d2e3890195851cd783fd44bd780addaa49f1cceb12ed073c10bb10e11dc082f51e4fdc54640f5ac1cca + languageName: node + linkType: hard + +"@commitlint/message@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/message@npm:19.8.1" + checksum: e365590dd539fe2519a15bd99ee8499c3ffbd80852839783ae6fd0b65feef08b26d2134a4e9ea32e006c2b3aa04447a38b011e73975b4fc3d7c7380a0fbf2377 + languageName: node + linkType: hard + +"@commitlint/parse@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/parse@npm:19.8.1" + dependencies: + "@commitlint/types": ^19.8.1 + conventional-changelog-angular: ^7.0.0 + conventional-commits-parser: ^5.0.0 + checksum: f6264bb30399b420a875532905e18049b4ab6f24d79f42d20fa06e64b9f355649ac18a33874e02643f0a826f3cec69423d6bc96cf852fa692338603ce910a95f + languageName: node + linkType: hard + +"@commitlint/read@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/read@npm:19.8.1" + dependencies: + "@commitlint/top-level": ^19.8.1 + "@commitlint/types": ^19.8.1 + git-raw-commits: ^4.0.0 + minimist: ^1.2.8 + tinyexec: ^1.0.0 + checksum: ee0f42e2e5a3ade673b2d14f3b2056a86804afe7d09b6703d51b41edc099b33b9c09dc715b30d7113879999381a198d78b4fcbc649785ed3beb9c3f7d1dc2bb2 + languageName: node + linkType: hard + +"@commitlint/resolve-extends@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/resolve-extends@npm:19.8.1" + dependencies: + "@commitlint/config-validator": ^19.8.1 + "@commitlint/types": ^19.8.1 + global-directory: ^4.0.1 + import-meta-resolve: ^4.0.0 + lodash.mergewith: ^4.6.2 + resolve-from: ^5.0.0 + checksum: d1415e1bff196a2f1ee18e2ba41764cb2855adda2e8221bb0d20d8d365c9a4777ad99b8babd0959aec8ac6fe8de6be7b928d5e3c38cb458c92c73a195b52bff7 + languageName: node + linkType: hard + +"@commitlint/rules@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/rules@npm:19.8.1" + dependencies: + "@commitlint/ensure": ^19.8.1 + "@commitlint/message": ^19.8.1 + "@commitlint/to-lines": ^19.8.1 + "@commitlint/types": ^19.8.1 + checksum: dc3a90b4561369991b851224c5cc1c0e2297c68ce148e21a7a5893a0556fffced192d59bf491a6c80270da012840fafdb34d991b7048170f4b2e7b0122211cee + languageName: node + linkType: hard + +"@commitlint/to-lines@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/to-lines@npm:19.8.1" + checksum: 47f33d5e0d77aa0cc2fc14daa3e73661c64c9cffb5fc9c723714ced4fcfc758bf5ba2e084143fa55bc512ad896d115b9983a308a97a005200484f04f2ed0fd90 + languageName: node + linkType: hard + +"@commitlint/top-level@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/top-level@npm:19.8.1" + dependencies: + find-up: ^7.0.0 + checksum: c875b6c1be495675c77d86e80419d27fd5eb70fc061ef412d041541219c3222d9c4dbd6f0353247d49e9b2cd6d86a7ffc9df1ba20f96c77726c1f9a0edeeb8fe + languageName: node + linkType: hard + +"@commitlint/types@npm:^19.8.1": + version: 19.8.1 + resolution: "@commitlint/types@npm:19.8.1" + dependencies: + "@types/conventional-commits-parser": ^5.0.0 + chalk: ^5.3.0 + checksum: d1943a5789a02c75b0c72755673ab8d50c850b025abb7806b7eef83b373591948f5d1d9cd22022f89302a256546934d797445913c5c495d8e92711cf17b0fbf0 + languageName: node + linkType: hard + "@config-plugins/detox@npm:11.0.0": version: 11.0.0 resolution: "@config-plugins/detox@npm:11.0.0" @@ -4568,6 +5804,24 @@ __metadata: languageName: node linkType: hard +"@conventional-changelog/git-client@npm:^1.0.0": + version: 1.0.1 + resolution: "@conventional-changelog/git-client@npm:1.0.1" + dependencies: + "@types/semver": ^7.5.5 + semver: ^7.5.2 + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.0.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + checksum: 4be45d4d1335878772fe0ad6e279970569c9526b544af3f58d31d70199f40c8051459a22f02d87c458a7c95f0ba68cd9a839da19504c5c40045c5b0691354305 + languageName: node + linkType: hard + "@craftzdog/react-native-buffer@npm:^6.0.5": version: 6.0.5 resolution: "@craftzdog/react-native-buffer@npm:6.0.5" @@ -4668,11 +5922,11 @@ __metadata: linkType: hard "@emnapi/runtime@npm:^1.5.0": - version: 1.5.0 - resolution: "@emnapi/runtime@npm:1.5.0" + version: 1.7.0 + resolution: "@emnapi/runtime@npm:1.7.0" dependencies: tslib: ^2.4.0 - checksum: 03b23bdc0bb72bce4d8967ca29d623c2599af18977975c10532577db2ec89a57d97d2c76c5c4bde856c7c29302b9f7af357e921c42bd952bdda206972185819a + checksum: 2aa1b056f39f113b0fae006f8a113ce2e309c199a5a2b141906f9c3d76c0208d9e61601fe1cdffb3c0b769cfcf141635fe7f14e83a34447257306da4d5f2a0e4 languageName: node linkType: hard @@ -4685,9 +5939,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/aix-ppc64@npm:0.25.10" +"@esbuild/aix-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/aix-ppc64@npm:0.25.12" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -4699,9 +5953,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/android-arm64@npm:0.25.10" +"@esbuild/android-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm64@npm:0.25.12" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -4713,9 +5967,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/android-arm@npm:0.25.10" +"@esbuild/android-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm@npm:0.25.12" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -4727,9 +5981,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/android-x64@npm:0.25.10" +"@esbuild/android-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-x64@npm:0.25.12" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -4741,9 +5995,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/darwin-arm64@npm:0.25.10" +"@esbuild/darwin-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-arm64@npm:0.25.12" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -4755,9 +6009,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/darwin-x64@npm:0.25.10" +"@esbuild/darwin-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-x64@npm:0.25.12" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -4769,9 +6023,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/freebsd-arm64@npm:0.25.10" +"@esbuild/freebsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-arm64@npm:0.25.12" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -4783,9 +6037,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/freebsd-x64@npm:0.25.10" +"@esbuild/freebsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-x64@npm:0.25.12" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -4797,9 +6051,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-arm64@npm:0.25.10" +"@esbuild/linux-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm64@npm:0.25.12" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -4811,9 +6065,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-arm@npm:0.25.10" +"@esbuild/linux-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm@npm:0.25.12" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -4825,9 +6079,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-ia32@npm:0.25.10" +"@esbuild/linux-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ia32@npm:0.25.12" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -4839,9 +6093,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-loong64@npm:0.25.10" +"@esbuild/linux-loong64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-loong64@npm:0.25.12" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -4853,9 +6107,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-mips64el@npm:0.25.10" +"@esbuild/linux-mips64el@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-mips64el@npm:0.25.12" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -4867,9 +6121,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-ppc64@npm:0.25.10" +"@esbuild/linux-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ppc64@npm:0.25.12" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -4881,9 +6135,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-riscv64@npm:0.25.10" +"@esbuild/linux-riscv64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-riscv64@npm:0.25.12" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -4895,9 +6149,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-s390x@npm:0.25.10" +"@esbuild/linux-s390x@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-s390x@npm:0.25.12" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -4909,16 +6163,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/linux-x64@npm:0.25.10" +"@esbuild/linux-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-x64@npm:0.25.12" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/netbsd-arm64@npm:0.25.10" +"@esbuild/netbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-arm64@npm:0.25.12" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -4930,16 +6184,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/netbsd-x64@npm:0.25.10" +"@esbuild/netbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-x64@npm:0.25.12" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/openbsd-arm64@npm:0.25.10" +"@esbuild/openbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-arm64@npm:0.25.12" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -4951,16 +6205,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/openbsd-x64@npm:0.25.10" +"@esbuild/openbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-x64@npm:0.25.12" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/openharmony-arm64@npm:0.25.10" +"@esbuild/openharmony-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openharmony-arm64@npm:0.25.12" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard @@ -4972,9 +6226,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/sunos-x64@npm:0.25.10" +"@esbuild/sunos-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/sunos-x64@npm:0.25.12" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -4986,9 +6240,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/win32-arm64@npm:0.25.10" +"@esbuild/win32-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-arm64@npm:0.25.12" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -5000,9 +6254,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/win32-ia32@npm:0.25.10" +"@esbuild/win32-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-ia32@npm:0.25.12" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -5014,9 +6268,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.10": - version: 0.25.10 - resolution: "@esbuild/win32-x64@npm:0.25.10" +"@esbuild/win32-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-x64@npm:0.25.12" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -5046,6 +6300,29 @@ __metadata: languageName: node linkType: hard +"@eslint/compat@npm:^1.3.2": + version: 1.4.0 + resolution: "@eslint/compat@npm:1.4.0" + dependencies: + "@eslint/core": ^0.16.0 + peerDependencies: + eslint: ^8.40 || 9 + peerDependenciesMeta: + eslint: + optional: true + checksum: 090882a61e3c8fa1911ff796f9cf13ed645139760cdecb2444dcb6c75a0d2f2a379e62b1e83586a13ece2280ed8a3acea9cc125acb99bc68012575918ac8f26d + languageName: node + linkType: hard + +"@eslint/core@npm:^0.16.0": + version: 0.16.0 + resolution: "@eslint/core@npm:0.16.0" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 5c08dbf08aa27a6e057003a05a29f483038b70e59f9ac7af26938d0fa4627383c95768e2154835260607de34975e8f407c10762af9a005ed348cd8039cc6aede + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.2": version: 2.1.2 resolution: "@eslint/eslintrc@npm:2.1.2" @@ -5063,6 +6340,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^10.0.1 + globals: ^14.0.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: 8241f998f0857abf5a615072273b90b1244d75c1c45d217c6a8eb444c6e12bbb5506b4879c14fb262eb72b7d8e3d2f0542da2db1a7f414a12496ebb790fb4d62 + languageName: node + linkType: hard + "@eslint/js@npm:8.50.0": version: 8.50.0 resolution: "@eslint/js@npm:8.50.0" @@ -5070,6 +6364,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:^9.35.0": + version: 9.37.0 + resolution: "@eslint/js@npm:9.37.0" + checksum: 916f2ff7f70eadaa3a1c3f7d6d375fccfb676723484e1c54c5d63ff8a462746090097b73d21f4cb876ff2276d04af3f1c4c9e9a93729a9305213ca3aaa75008c + languageName: node + linkType: hard + "@ethereumjs/common@npm:4.4.0, @ethereumjs/common@npm:^4.4.0": version: 4.4.0 resolution: "@ethereumjs/common@npm:4.4.0" @@ -5587,6 +6888,16 @@ __metadata: languageName: node linkType: hard +"@evilmartians/lefthook@npm:^1.12.3": + version: 1.13.6 + resolution: "@evilmartians/lefthook@npm:1.13.6" + bin: + lefthook: bin/index.js + checksum: 6cceca3e874015678f50818ae14a74d959816cfaba6638f8852d007332404d6819b15c71538985a3650a1ef057aa6975c17fadfe43ece7a0da1aeb9faaf02946 + conditions: (os=darwin | os=linux | os=win32) & (cpu=x64 | cpu=arm64 | cpu=ia32) + languageName: node + linkType: hard + "@expo/cli@npm:0.24.20": version: 0.24.20 resolution: "@expo/cli@npm:0.24.20" @@ -6727,6 +8038,13 @@ __metadata: languageName: node linkType: hard +"@hutson/parse-repository-url@npm:^5.0.0": + version: 5.0.0 + resolution: "@hutson/parse-repository-url@npm:5.0.0" + checksum: 8adce66fd62e339382191f32a90708fab4c65560124b67a06262c57815706944a2f894d33f9bd8dd97180fd80accc0c3d1d5b5138ab86ed10ee071cb487d5983 + languageName: node + linkType: hard + "@img/colour@npm:^1.0.0": version: 1.0.0 resolution: "@img/colour@npm:1.0.0" @@ -6935,53 +8253,53 @@ __metadata: languageName: node linkType: hard -"@inquirer/ansi@npm:^1.0.0": - version: 1.0.0 - resolution: "@inquirer/ansi@npm:1.0.0" - checksum: 153b619c1178ece3e28a66ab41b7827b9ee64c84180f779bcc1c38c8c3e87979130bba109dd7e648ccdd3786da75c4a3a0945e816dc6afec9219f54ac7fbbb69 +"@inquirer/ansi@npm:^1.0.0, @inquirer/ansi@npm:^1.0.1": + version: 1.0.1 + resolution: "@inquirer/ansi@npm:1.0.1" + checksum: 0dda65720736f3e730715f3778e0e90f039ebd1382c277495a4d1cdbd2b2863095aa7291cd8ea7d3c0618bdee04a375db6e10a7bae5fb904df0b632a1c7774f9 languageName: node linkType: hard -"@inquirer/checkbox@npm:^4.2.4": - version: 4.2.4 - resolution: "@inquirer/checkbox@npm:4.2.4" +"@inquirer/checkbox@npm:^4.3.0": + version: 4.3.0 + resolution: "@inquirer/checkbox@npm:4.3.0" dependencies: - "@inquirer/ansi": ^1.0.0 - "@inquirer/core": ^10.2.2 - "@inquirer/figures": ^1.0.13 - "@inquirer/type": ^3.0.8 + "@inquirer/ansi": ^1.0.1 + "@inquirer/core": ^10.3.0 + "@inquirer/figures": ^1.0.14 + "@inquirer/type": ^3.0.9 yoctocolors-cjs: ^2.1.2 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 4e55f2795016c63f1ee0d9c48a83d067f485f23fb2fe404eeb47c239031b12f5c3c20ec5e26f99c5c103bb47ce341cef918038268bee9e70d512425614d56840 + checksum: d4957d0ce205c5c0bc70eb9491ca4ebe983cce0abaf552cc8ad521179db94841fb25603121d0af1b31757bb8381377a410c21cde2a48754af18f694b31477c14 languageName: node linkType: hard -"@inquirer/confirm@npm:^5.1.18": - version: 5.1.18 - resolution: "@inquirer/confirm@npm:5.1.18" +"@inquirer/confirm@npm:^5.1.19": + version: 5.1.19 + resolution: "@inquirer/confirm@npm:5.1.19" dependencies: - "@inquirer/core": ^10.2.2 - "@inquirer/type": ^3.0.8 + "@inquirer/core": ^10.3.0 + "@inquirer/type": ^3.0.9 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 59a27eedf9b8e5ff1ca5eb738121caf56c94d9ec80f0ff02021300a7894c608e9c32e06b79ba21714f6977a277c84025e62b141c50c580be2a30697f52ef4941 + checksum: d65e0addf80c146d71a74057d77048bd78a4a80d74a9e0d774b759ff1adf38a33cde6c06a6d6ef802bb61ef9158770315dec3931f89b3624c0e63c595c0473c1 languageName: node linkType: hard -"@inquirer/core@npm:^10.2.2": - version: 10.2.2 - resolution: "@inquirer/core@npm:10.2.2" +"@inquirer/core@npm:^10.2.2, @inquirer/core@npm:^10.3.0": + version: 10.3.0 + resolution: "@inquirer/core@npm:10.3.0" dependencies: - "@inquirer/ansi": ^1.0.0 - "@inquirer/figures": ^1.0.13 - "@inquirer/type": ^3.0.8 + "@inquirer/ansi": ^1.0.1 + "@inquirer/figures": ^1.0.14 + "@inquirer/type": ^3.0.9 cli-width: ^4.1.0 mute-stream: ^2.0.0 signal-exit: ^4.1.0 @@ -6992,39 +8310,39 @@ __metadata: peerDependenciesMeta: "@types/node": optional: true - checksum: 79d528ecb5f485a0f63bd5e48273a2ffba9457240e2a1971da8ea97a97c8398b932260691b8d5e5134f306ba8b08ce7a4800dfa7bd8cc9143a86760714215927 + checksum: 42607c2e8388bf6505f5ce1716d47750f9386085f3080733b7f27bfe59d576d480ec622d7468fcf1bd9b854ff117311421d9eae0c083873c67324023635e103a languageName: node linkType: hard -"@inquirer/editor@npm:^4.2.20": - version: 4.2.20 - resolution: "@inquirer/editor@npm:4.2.20" +"@inquirer/editor@npm:^4.2.21": + version: 4.2.21 + resolution: "@inquirer/editor@npm:4.2.21" dependencies: - "@inquirer/core": ^10.2.2 + "@inquirer/core": ^10.3.0 "@inquirer/external-editor": ^1.0.2 - "@inquirer/type": ^3.0.8 + "@inquirer/type": ^3.0.9 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: d87ddb4d2668a8860ea48dee4f26323d568a50be8dfa645d29fcd97d9457a20bc5a80b7f79c725af253e363dee740b28f77a1f9748eb6833fc002b00a6f5d67a + checksum: 8467c192f9c1573853718c15c020146268cf4b076d99a14e014a61d124c46157c57780d770caeeba94f309259504f3602248591842d11b9465ad12fd82185276 languageName: node linkType: hard -"@inquirer/expand@npm:^4.0.20": - version: 4.0.20 - resolution: "@inquirer/expand@npm:4.0.20" +"@inquirer/expand@npm:^4.0.21": + version: 4.0.21 + resolution: "@inquirer/expand@npm:4.0.21" dependencies: - "@inquirer/core": ^10.2.2 - "@inquirer/type": ^3.0.8 + "@inquirer/core": ^10.3.0 + "@inquirer/type": ^3.0.9 yoctocolors-cjs: ^2.1.2 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 975d2159dc38ae4a4fd9e7fe1f731bcb01f20a80f49d79a43232cbf9310d868cbc20c19c25fb9d3970d1415be772fd1a793065b4d939e60045b13abecb45d057 + checksum: eb1900c443895377c03652c3e2b6ca29c572fe6ee2682e264572957b9b4a596d3d55c9ea271934846fb05d5cc5195cca0dffde1386e41358ac5c308698320e93 languageName: node linkType: hard @@ -7043,142 +8361,142 @@ __metadata: languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.13": - version: 1.0.13 - resolution: "@inquirer/figures@npm:1.0.13" - checksum: 1042cbefad8c69b004396ce6be2d0b135c303317d870ddd0cee75bac429fc7c7f577bac9e3c1ec1cd3668a709f49a591edb2f714193778e7d7b140a622f2a1ef +"@inquirer/figures@npm:^1.0.14": + version: 1.0.14 + resolution: "@inquirer/figures@npm:1.0.14" + checksum: 37eec986f119eabb6c231c8c1481c6a48ab2347e9f57b2d6442161f7b83936678221fccb7ead60582026c2ae20d457467d0727c485ff53aee2cf965077b0f51b languageName: node linkType: hard -"@inquirer/input@npm:^4.2.4": - version: 4.2.4 - resolution: "@inquirer/input@npm:4.2.4" +"@inquirer/input@npm:^4.2.5": + version: 4.2.5 + resolution: "@inquirer/input@npm:4.2.5" dependencies: - "@inquirer/core": ^10.2.2 - "@inquirer/type": ^3.0.8 + "@inquirer/core": ^10.3.0 + "@inquirer/type": ^3.0.9 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 725b9e3152e15bdcc5c7043cd8a15cc5573cb78ea7a273aca802f0a673ddd3f543e4cb2a94445e88f7ca66facef6faaa6040f959bf70c28f53c0fad25a8cecda + checksum: 9d192556aefc8f8fbc70626f9a90cd2806032ec9e7d323b46afff0a0813f5c0f766ff9a5d2f8bdc39863688f8fdd081ce23b782c19aebf61ff8692c9135528b6 languageName: node linkType: hard -"@inquirer/number@npm:^3.0.20": - version: 3.0.20 - resolution: "@inquirer/number@npm:3.0.20" +"@inquirer/number@npm:^3.0.21": + version: 3.0.21 + resolution: "@inquirer/number@npm:3.0.21" dependencies: - "@inquirer/core": ^10.2.2 - "@inquirer/type": ^3.0.8 + "@inquirer/core": ^10.3.0 + "@inquirer/type": ^3.0.9 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 9f5d3c7484cd8d0e798ac6ab4e00b71dcc46450b5d9e39f40def15dd76363aa0fac17158583cad1b64af90968b72bfa4cc6ac3338f19651023f2cb686db9c394 + checksum: 445ba93639ecfc3755efa7ee9cf7cf972919abc1cd022ada27e7d73b93e01680ffcf56a8ca6fe090775358c8d2aec259890aa33b6c0e1c3aeba7306f25ba633a languageName: node linkType: hard -"@inquirer/password@npm:^4.0.20": - version: 4.0.20 - resolution: "@inquirer/password@npm:4.0.20" +"@inquirer/password@npm:^4.0.21": + version: 4.0.21 + resolution: "@inquirer/password@npm:4.0.21" dependencies: - "@inquirer/ansi": ^1.0.0 - "@inquirer/core": ^10.2.2 - "@inquirer/type": ^3.0.8 + "@inquirer/ansi": ^1.0.1 + "@inquirer/core": ^10.3.0 + "@inquirer/type": ^3.0.9 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 9b3c46498cf09e3d3da1e2539b23468ab4020904dc40efb8a8f50b1c5bf7af7e7355c18ee313dac00d750b4b83d8b0a2c72b10cfcef475f742a5a738fe4300f2 + checksum: 07fb1527ea2d44a81b79d9263f59713e66977e21fbf44efedb6bf08d27d617900ef481c49c91b0a749caf1d282f2b5e19fe6b7474acc98db3edd174eb5d45416 languageName: node linkType: hard -"@inquirer/prompts@npm:^7.8.6": - version: 7.8.6 - resolution: "@inquirer/prompts@npm:7.8.6" - dependencies: - "@inquirer/checkbox": ^4.2.4 - "@inquirer/confirm": ^5.1.18 - "@inquirer/editor": ^4.2.20 - "@inquirer/expand": ^4.0.20 - "@inquirer/input": ^4.2.4 - "@inquirer/number": ^3.0.20 - "@inquirer/password": ^4.0.20 - "@inquirer/rawlist": ^4.1.8 - "@inquirer/search": ^3.1.3 - "@inquirer/select": ^4.3.4 +"@inquirer/prompts@npm:^7.8.6, @inquirer/prompts@npm:^7.9.0": + version: 7.9.0 + resolution: "@inquirer/prompts@npm:7.9.0" + dependencies: + "@inquirer/checkbox": ^4.3.0 + "@inquirer/confirm": ^5.1.19 + "@inquirer/editor": ^4.2.21 + "@inquirer/expand": ^4.0.21 + "@inquirer/input": ^4.2.5 + "@inquirer/number": ^3.0.21 + "@inquirer/password": ^4.0.21 + "@inquirer/rawlist": ^4.1.9 + "@inquirer/search": ^3.2.0 + "@inquirer/select": ^4.4.0 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: a6e554516743de1f5781503c4a402df6d24af7d526e89ac5cd17a30d5761bfcc16f283f49382aa57c67e7b88c0e63e91e9aa5367a1dbe4de6373c873fae60202 + checksum: 1dd6a87bcf77d1a8b728c781a7d34c0dd4028d7ec96e4e41e173a260d3ef9a76cba5eb8715d8674d75b18681d3f7eac9bd9f3ff1d82d8e786fb5222893498ea3 languageName: node linkType: hard -"@inquirer/rawlist@npm:^4.1.8": - version: 4.1.8 - resolution: "@inquirer/rawlist@npm:4.1.8" +"@inquirer/rawlist@npm:^4.1.9": + version: 4.1.9 + resolution: "@inquirer/rawlist@npm:4.1.9" dependencies: - "@inquirer/core": ^10.2.2 - "@inquirer/type": ^3.0.8 + "@inquirer/core": ^10.3.0 + "@inquirer/type": ^3.0.9 yoctocolors-cjs: ^2.1.2 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: ece338071d8070d7be123b2cac0bffabe3a1b1c197bf18d518e4eeed910aaa9359c287b3bdfc6943f0552839c312e36ef87aebae62ed31b10d59d7442f8b3064 + checksum: ec23e087bfa9497b36d51b53e8da18c837e4a0c5c091bce7d1a6b52d9664035d7e22c3753993dd3c7c9ebfd5e9b71f1738873f2c25422668733ddb28d74bf26b languageName: node linkType: hard -"@inquirer/search@npm:^3.1.3": - version: 3.1.3 - resolution: "@inquirer/search@npm:3.1.3" +"@inquirer/search@npm:^3.2.0": + version: 3.2.0 + resolution: "@inquirer/search@npm:3.2.0" dependencies: - "@inquirer/core": ^10.2.2 - "@inquirer/figures": ^1.0.13 - "@inquirer/type": ^3.0.8 + "@inquirer/core": ^10.3.0 + "@inquirer/figures": ^1.0.14 + "@inquirer/type": ^3.0.9 yoctocolors-cjs: ^2.1.2 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 7b908673b28b2651ecba33974b99b684d253a911d1e6123f386e648911060add083981889de81d2ed89c0cfc504047624b1ba15921da92a95a28cfd73decec6b + checksum: 5f8f86368513d29d9119a04cc65bbe075d0d93ec55af27a555f02bf740c7a65497e36df80da722cbee020ab348c9038856f0e070e9a22615ff9d5c3155c3296a languageName: node linkType: hard -"@inquirer/select@npm:^4.3.4": - version: 4.3.4 - resolution: "@inquirer/select@npm:4.3.4" +"@inquirer/select@npm:^4.4.0": + version: 4.4.0 + resolution: "@inquirer/select@npm:4.4.0" dependencies: - "@inquirer/ansi": ^1.0.0 - "@inquirer/core": ^10.2.2 - "@inquirer/figures": ^1.0.13 - "@inquirer/type": ^3.0.8 + "@inquirer/ansi": ^1.0.1 + "@inquirer/core": ^10.3.0 + "@inquirer/figures": ^1.0.14 + "@inquirer/type": ^3.0.9 yoctocolors-cjs: ^2.1.2 peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 59da7ce52c324879e7c7b239ae4ddbdc9519a6593ded099eb1efa9cb45854d62e6565cab29d4df38fdc64bf7fc1ba7d0192b686a4039f9501739a189dcee303c + checksum: cb0441f5ec981011f3e451fa062897e8991ca3b0cadca99432d2556a1f90e9c0251b277233056db63b717b5f77caaf32b2c5db7a1881fcc78d5c357d1e912616 languageName: node linkType: hard -"@inquirer/type@npm:^3.0.8": - version: 3.0.8 - resolution: "@inquirer/type@npm:3.0.8" +"@inquirer/type@npm:^3.0.8, @inquirer/type@npm:^3.0.9": + version: 3.0.9 + resolution: "@inquirer/type@npm:3.0.9" peerDependencies: "@types/node": ">=18" peerDependenciesMeta: "@types/node": optional: true - checksum: 361fa75c98f274462aaa3f2baf40ee43f284daaa64e3689a92863ed4ff63236ca3d40c6e715b3ff80c45feb6ab679792a6162e2d4521daff3929c490b0dddfcf + checksum: 960ba4737405f70bac17e7cdc4696c60064b06c8dd13a4b3d0783763ba1714bdadbd598b88d537ab9415b7d5d61e011ac042cfbd1438b2a35298e2868724b853 languageName: node linkType: hard @@ -9323,52 +10641,7 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0": - version: 1.1.0 - resolution: "@noble/curves@npm:1.1.0" - dependencies: - "@noble/hashes": 1.3.1 - checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5 - languageName: node - linkType: hard - -"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": - version: 1.2.0 - resolution: "@noble/curves@npm:1.2.0" - dependencies: - "@noble/hashes": 1.3.2 - checksum: bb798d7a66d8e43789e93bc3c2ddff91a1e19fdb79a99b86cd98f1e5eff0ee2024a2672902c2576ef3577b6f282f3b5c778bebd55761ddbb30e36bf275e83dd0 - languageName: node - linkType: hard - -"@noble/curves@npm:1.3.0, @noble/curves@npm:~1.3.0": - version: 1.3.0 - resolution: "@noble/curves@npm:1.3.0" - dependencies: - "@noble/hashes": 1.3.3 - checksum: b65342ee66c4a440eee2978524412eabba9a9efdd16d6370e15218c6a7d80bddf35e66bb57ed52c0dfd32cb9a717b439ab3a72db618f1a0066dfebe3fd12a421 - languageName: node - linkType: hard - -"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": - version: 1.4.2 - resolution: "@noble/curves@npm:1.4.2" - dependencies: - "@noble/hashes": 1.4.0 - checksum: c475a83c4263e2c970eaba728895b9b5d67e0ca880651e9c6e3efdc5f6a4f07ceb5b043bf71c399fc80fada0b8706e69d0772bffdd7b9de2483b988973a34cba - languageName: node - linkType: hard - -"@noble/curves@npm:1.6.0, @noble/curves@npm:~1.6.0": - version: 1.6.0 - resolution: "@noble/curves@npm:1.6.0" - dependencies: - "@noble/hashes": 1.5.0 - checksum: 258f3feb2a6098cf35521562ecb7d452fd728e8a008ff9f1ef435184f9d0c782ceb8f7b7fa8df3317c3be7a19f53995ee124cd05c8080b130bd42e3cb072f24d - languageName: node - linkType: hard - -"@noble/curves@npm:1.9.7, @noble/curves@npm:^1.7.0": +"@noble/curves@npm:1.9.7": version: 1.9.7 resolution: "@noble/curves@npm:1.9.7" dependencies: @@ -9377,30 +10650,12 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.4.0": - version: 1.5.0 - resolution: "@noble/curves@npm:1.5.0" - dependencies: - "@noble/hashes": 1.4.0 - checksum: a43464c5db67a931b1c93d6634c98e30d791dd567408ebeffd582be1a7f31169f6f26b191e24a9552d89d935408bd8c3dfb90ad8b47286ecf53cbdd2d79d02af - languageName: node - linkType: hard - -"@noble/curves@npm:^1.6.0": - version: 1.8.0 - resolution: "@noble/curves@npm:1.8.0" - dependencies: - "@noble/hashes": 1.7.0 - checksum: 88198bc5b8049358dfcc6c5e121125744fb81c703299127800f38f868a41697bc26bef8f88dc38f1939f4e0133b8db5f24337164eca7421a6a9480ee711f5e1b - languageName: node - linkType: hard - -"@noble/curves@npm:^1.8.0": - version: 1.8.1 - resolution: "@noble/curves@npm:1.8.1" +"@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::locator=mobile-monorepo%40workspace%3A.": + version: 1.9.7 + resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=033597&locator=mobile-monorepo%40workspace%3A." dependencies: - "@noble/hashes": 1.7.1 - checksum: 4143f1248ed57c1ae46dfef5c692a91383e5830420b9c72d3ff1061aa9ebbf8999297da6d2aed8a9716fef8e6b1f5a45737feeab02abf55ca2a4f514bf9339ec + "@noble/hashes": 1.8.0 + checksum: 31dc3dc0070b44d4fb6d3ecbc7d4f996b146dc79385b80ed33eee03334450b177174c71a8e1a787ce4b8b451310fd9962a55099f573617f35361e30f5e1c2427 languageName: node linkType: hard @@ -9418,7 +10673,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.1.5, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:^1.7.0": +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:^1.7.0": version: 1.8.0 resolution: "@noble/hashes@npm:1.8.0" checksum: c94e98b941963676feaba62475b1ccfa8341e3f572adbb3b684ee38b658df44100187fa0ef4220da580b13f8d27e87d5492623c8a02ecc61f23fb9960c7918f5 @@ -9459,6 +10714,15 @@ __metadata: languageName: node linkType: hard +"@nodeutils/defaults-deep@npm:1.1.0": + version: 1.1.0 + resolution: "@nodeutils/defaults-deep@npm:1.1.0" + dependencies: + lodash: ^4.15.0 + checksum: 205ff2a4ae2a00c2c640317f888c075bd6429206e26b6c9c99bb691fa05c23274fda2a1023d97fad0ee06ca82232cc058c7c1e06350a37cda5a58fe5aff00c5c + languageName: node + linkType: hard + "@notifee/react-native@npm:9.1.8": version: 9.1.8 resolution: "@notifee/react-native@npm:9.1.8" @@ -9552,6 +10816,130 @@ __metadata: languageName: node linkType: hard +"@octokit/auth-token@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/auth-token@npm:6.0.0" + checksum: 9c23be526c7f8e282aa7ccec6f3a72a1beec44eae736327e9ba78419fa28ba75e2c686e9eac75f35ce99bdb55eff9605f7ef7588a9d4f4e18ad5ed16a5d887ab + languageName: node + linkType: hard + +"@octokit/core@npm:^7.0.2": + version: 7.0.5 + resolution: "@octokit/core@npm:7.0.5" + dependencies: + "@octokit/auth-token": ^6.0.0 + "@octokit/graphql": ^9.0.2 + "@octokit/request": ^10.0.4 + "@octokit/request-error": ^7.0.1 + "@octokit/types": ^15.0.0 + before-after-hook: ^4.0.0 + universal-user-agent: ^7.0.0 + checksum: 7b5780b708f2cefd94ddb1727cd2e03cbd198f25389e42fad7bf5822cf45f3fa4df1a6da1f01d5cd0b2c3586ec3f8bacf121dd5aa163eba10e5c8cf1d71bd5db + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^11.0.1": + version: 11.0.1 + resolution: "@octokit/endpoint@npm:11.0.1" + dependencies: + "@octokit/types": ^15.0.0 + universal-user-agent: ^7.0.2 + checksum: 0ef3b6c7eabde9c6d086ca17737037dbf372081541e7bc75cc7ba3feaf31c6fc8478b2b715465619819710725caccd9c8b09e55ecf76baebba61e48b246bb22b + languageName: node + linkType: hard + +"@octokit/graphql@npm:^9.0.2": + version: 9.0.2 + resolution: "@octokit/graphql@npm:9.0.2" + dependencies: + "@octokit/request": ^10.0.4 + "@octokit/types": ^15.0.0 + universal-user-agent: ^7.0.0 + checksum: 21480658ca60af50378110b79c512d23fbdf00f1c34c429be50f51ef39b9bf831f20a4f3f0d2e02e00097307a327ce6088a1fe93abb061100f797234f0ee5d67 + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^26.0.0": + version: 26.0.0 + resolution: "@octokit/openapi-types@npm:26.0.0" + checksum: 4a569f87bd5163b3973a411511ae2410d548555228790baa0d4f70ad77dbe7d5df1cf542d09768b2bbab227eae1f0fa6eaade00d351d2fce1da76deb0e646db5 + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^13.0.1": + version: 13.2.0 + resolution: "@octokit/plugin-paginate-rest@npm:13.2.0" + dependencies: + "@octokit/types": ^15.0.0 + peerDependencies: + "@octokit/core": ">=6" + checksum: 8638d49b7126b64b19b3336d5471763076cf446203d9d1194353c8c3d2ff17dcc8fa72894ad4b208236d5ab154d1a73e066cd87a893aebd7fc36da40b1e63366 + languageName: node + linkType: hard + +"@octokit/plugin-request-log@npm:^6.0.0": + version: 6.0.0 + resolution: "@octokit/plugin-request-log@npm:6.0.0" + peerDependencies: + "@octokit/core": ">=6" + checksum: 8a79973b1429bfead9113c4117f418aaef5ff368795daded3415ba14623d97d5fc08d1e822dbd566ecc9f041119e1a48a11853a9c48d9eb1caa62baa79c17f83 + languageName: node + linkType: hard + +"@octokit/plugin-rest-endpoint-methods@npm:^16.0.0": + version: 16.1.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:16.1.0" + dependencies: + "@octokit/types": ^15.0.0 + peerDependencies: + "@octokit/core": ">=6" + checksum: 676a08e20dcde32029af93c65b80d18a60604c5945f4cf12e2773611968da5de3db5916dd249070796603fc2ed26b7e5e3924299c77c4d78216fba943284887b + languageName: node + linkType: hard + +"@octokit/request-error@npm:^7.0.1": + version: 7.0.1 + resolution: "@octokit/request-error@npm:7.0.1" + dependencies: + "@octokit/types": ^15.0.0 + checksum: f99dffa4e257a4cb3724c633c26e5334af881c54669ee0013de96b846bb327ac77e68b36459be183817b84f6f7518e6b70c9e7926b5547a9665b2607b1afddd6 + languageName: node + linkType: hard + +"@octokit/request@npm:^10.0.4": + version: 10.0.5 + resolution: "@octokit/request@npm:10.0.5" + dependencies: + "@octokit/endpoint": ^11.0.1 + "@octokit/request-error": ^7.0.1 + "@octokit/types": ^15.0.0 + fast-content-type-parse: ^3.0.0 + universal-user-agent: ^7.0.2 + checksum: beab7ab902055577b281130c73559397674c524ebe8b4bec137db56b04309b87907e44a7bfad040f60362e042cc376a2a4043d6b52e6a57aa5eafa4b712b7cda + languageName: node + linkType: hard + +"@octokit/rest@npm:22.0.0": + version: 22.0.0 + resolution: "@octokit/rest@npm:22.0.0" + dependencies: + "@octokit/core": ^7.0.2 + "@octokit/plugin-paginate-rest": ^13.0.1 + "@octokit/plugin-request-log": ^6.0.0 + "@octokit/plugin-rest-endpoint-methods": ^16.0.0 + checksum: 6a7eff019c0889b23c0820831936e5dc8fa7643bdf0e98ba073b36a10f5602b9f283ca2c74ec8172b8529d0647dfa4a7857dcd81ca028b303937f26750a6c7f6 + languageName: node + linkType: hard + +"@octokit/types@npm:^15.0.0": + version: 15.0.0 + resolution: "@octokit/types@npm:15.0.0" + dependencies: + "@octokit/openapi-types": ^26.0.0 + checksum: f98075b9c4ff19ec4c84e314ea5d953a55bd526fdcff858d993da930e5dc8633c51405f99c2a8c89ecabf5949b494bb160cfeaed7e1ff94fa439c85b2301cc2b + languageName: node + linkType: hard + "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -9749,6 +11137,13 @@ __metadata: languageName: node linkType: hard +"@phun-ky/typeof@npm:2.0.3": + version: 2.0.3 + resolution: "@phun-ky/typeof@npm:2.0.3" + checksum: e5084843eed665327028c770733e2ced44613ec5ebcc48a398fe9ce11e278d160e311b3077f093e2017ab09e100413e6df380daabeb0e193d47e01cb605d6260 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -9756,6 +11151,13 @@ __metadata: languageName: node linkType: hard +"@pkgr/core@npm:^0.2.9": + version: 0.2.9 + resolution: "@pkgr/core@npm:0.2.9" + checksum: bb2fb86977d63f836f8f5b09015d74e6af6488f7a411dcd2bfdca79d76b5a681a9112f41c45bdf88a9069f049718efc6f3900d7f1de66a2ec966068308ae517f + languageName: node + linkType: hard + "@playwright/test@npm:1.48.0": version: 1.48.0 resolution: "@playwright/test@npm:1.48.0" @@ -9850,8 +11252,8 @@ __metadata: linkType: hard "@puppeteer/browsers@npm:^2.2.0": - version: 2.10.12 - resolution: "@puppeteer/browsers@npm:2.10.12" + version: 2.10.13 + resolution: "@puppeteer/browsers@npm:2.10.13" dependencies: debug: ^4.4.3 extract-zip: ^2.0.1 @@ -9862,7 +11264,7 @@ __metadata: yargs: ^17.7.2 bin: browsers: lib/cjs/main-cli.js - checksum: de479b9b5b198a570df2973bce25558af0e5cefe493f437b474b476d5a35c5634de0d3595cd6e9f5afd1141a57c6b3fb062bb779bcc78840a788c30587f242f8 + checksum: d97c6eb4e802fc6aca885754a70530d7c2d52bec0487ea41497654bf5538a0751aae0e19c7318169072114fc2285145261342178e8748bf294793a528077ce14 languageName: node linkType: hard @@ -11100,6 +12502,24 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-tools@npm:^20.0.2": + version: 20.0.2 + resolution: "@react-native-community/cli-tools@npm:20.0.2" + dependencies: + "@vscode/sudo-prompt": ^9.0.0 + appdirsjs: ^1.2.4 + chalk: ^4.1.2 + execa: ^5.0.0 + find-up: ^5.0.0 + launch-editor: ^2.9.1 + mime: ^2.4.1 + ora: ^5.4.1 + prompts: ^2.4.2 + semver: ^7.5.2 + checksum: cc6d765e1778b982ee173b757a9e30f47173c185484321d4909ecf0dcf6441b7eb4a8d7ede44f1b3e8d3052ce2b97247ea4f2171eb523a5289f795220f7d6a4c + languageName: node + linkType: hard + "@react-native-community/cli-types@npm:18.0.0": version: 18.0.0 resolution: "@react-native-community/cli-types@npm:18.0.0" @@ -11286,6 +12706,13 @@ __metadata: languageName: node linkType: hard +"@react-native/assets-registry@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/assets-registry@npm:0.81.1" + checksum: 9657f2cfd82d3699d5753a214a48c3f3403514eab441021afd2c4f2c0f58625be72eb77015d480cbe87ac46bcb48ed73f1b0de1f4ef7f361e40d24a029ce96b9 + languageName: node + linkType: hard + "@react-native/babel-plugin-codegen@npm:0.79.5": version: 0.79.5 resolution: "@react-native/babel-plugin-codegen@npm:0.79.5" @@ -11296,6 +12723,16 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-plugin-codegen@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/babel-plugin-codegen@npm:0.81.1" + dependencies: + "@babel/traverse": ^7.25.3 + "@react-native/codegen": 0.81.1 + checksum: 39ce6fae08dbc22751883f77a0f19d7bfe4b91f224ff3ebbf618879606edc208584cea37e1875aa900d96cf43ea2df199458d8182adacbff35b6b34ee54de48a + languageName: node + linkType: hard + "@react-native/babel-preset@npm:0.79.5": version: 0.79.5 resolution: "@react-native/babel-preset@npm:0.79.5" @@ -11351,6 +12788,61 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-preset@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/babel-preset@npm:0.81.1" + dependencies: + "@babel/core": ^7.25.2 + "@babel/plugin-proposal-export-default-from": ^7.24.7 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-syntax-export-default-from": ^7.24.7 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-transform-arrow-functions": ^7.24.7 + "@babel/plugin-transform-async-generator-functions": ^7.25.4 + "@babel/plugin-transform-async-to-generator": ^7.24.7 + "@babel/plugin-transform-block-scoping": ^7.25.0 + "@babel/plugin-transform-class-properties": ^7.25.4 + "@babel/plugin-transform-classes": ^7.25.4 + "@babel/plugin-transform-computed-properties": ^7.24.7 + "@babel/plugin-transform-destructuring": ^7.24.8 + "@babel/plugin-transform-flow-strip-types": ^7.25.2 + "@babel/plugin-transform-for-of": ^7.24.7 + "@babel/plugin-transform-function-name": ^7.25.1 + "@babel/plugin-transform-literals": ^7.25.2 + "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.8 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-numeric-separator": ^7.24.7 + "@babel/plugin-transform-object-rest-spread": ^7.24.7 + "@babel/plugin-transform-optional-catch-binding": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.8 + "@babel/plugin-transform-parameters": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.24.7 + "@babel/plugin-transform-private-property-in-object": ^7.24.7 + "@babel/plugin-transform-react-display-name": ^7.24.7 + "@babel/plugin-transform-react-jsx": ^7.25.2 + "@babel/plugin-transform-react-jsx-self": ^7.24.7 + "@babel/plugin-transform-react-jsx-source": ^7.24.7 + "@babel/plugin-transform-regenerator": ^7.24.7 + "@babel/plugin-transform-runtime": ^7.24.7 + "@babel/plugin-transform-shorthand-properties": ^7.24.7 + "@babel/plugin-transform-spread": ^7.24.7 + "@babel/plugin-transform-sticky-regex": ^7.24.7 + "@babel/plugin-transform-typescript": ^7.25.2 + "@babel/plugin-transform-unicode-regex": ^7.24.7 + "@babel/template": ^7.25.0 + "@react-native/babel-plugin-codegen": 0.81.1 + babel-plugin-syntax-hermes-parser: 0.29.1 + babel-plugin-transform-flow-enums: ^0.0.2 + react-refresh: ^0.14.0 + peerDependencies: + "@babel/core": "*" + checksum: 085e58eddf6a4cc1875e0d20d73a973fde6a5748d8f9bd2bbf5ec6b6df046654650eebdd3d7231654430d4f3be69ef9f6e1326111d5c6974e84df78c1841c548 + languageName: node + linkType: hard + "@react-native/codegen@npm:0.79.5": version: 0.79.5 resolution: "@react-native/codegen@npm:0.79.5" @@ -11366,6 +12858,23 @@ __metadata: languageName: node linkType: hard +"@react-native/codegen@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/codegen@npm:0.81.1" + dependencies: + "@babel/core": ^7.25.2 + "@babel/parser": ^7.25.3 + glob: ^7.1.1 + hermes-parser: 0.29.1 + invariant: ^2.2.4 + nullthrows: ^1.1.1 + yargs: ^17.6.2 + peerDependencies: + "@babel/core": "*" + checksum: 9c938c7567922cd7778d707d4c73a4bb856f03bac91a3b6ce76bbcf0e7211b3db4e937d572d5ec5e238f41bfa8d21f99eb63f12feeed2e536d41b6069aa25459 + languageName: node + linkType: hard + "@react-native/community-cli-plugin@npm:0.79.5": version: 0.79.5 resolution: "@react-native/community-cli-plugin@npm:0.79.5" @@ -11387,6 +12896,29 @@ __metadata: languageName: node linkType: hard +"@react-native/community-cli-plugin@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/community-cli-plugin@npm:0.81.1" + dependencies: + "@react-native/dev-middleware": 0.81.1 + debug: ^4.4.0 + invariant: ^2.2.4 + metro: ^0.83.1 + metro-config: ^0.83.1 + metro-core: ^0.83.1 + semver: ^7.1.3 + peerDependencies: + "@react-native-community/cli": "*" + "@react-native/metro-config": "*" + peerDependenciesMeta: + "@react-native-community/cli": + optional: true + "@react-native/metro-config": + optional: true + checksum: 03cb31126df95a9ea61dcea74304bc7a84e87d1aa1e04cfe61f1a3636658be91709352ed0a006009a23d1feaa1e4a20df8143b9588773325de3aa06f392b2e3b + languageName: node + linkType: hard + "@react-native/debugger-frontend@npm:0.79.5": version: 0.79.5 resolution: "@react-native/debugger-frontend@npm:0.79.5" @@ -11394,6 +12926,13 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-frontend@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/debugger-frontend@npm:0.81.1" + checksum: d36f75a0c7c5536d0192cc5534f039926036c0056478d6e09e53c722d015a89bfd19caa98a2c93746364cb086490f5c973d1b1ae84ebe62c45f8bac16a00d7f5 + languageName: node + linkType: hard + "@react-native/dev-middleware@npm:0.79.5": version: 0.79.5 resolution: "@react-native/dev-middleware@npm:0.79.5" @@ -11413,6 +12952,25 @@ __metadata: languageName: node linkType: hard +"@react-native/dev-middleware@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/dev-middleware@npm:0.81.1" + dependencies: + "@isaacs/ttlcache": ^1.4.1 + "@react-native/debugger-frontend": 0.81.1 + chrome-launcher: ^0.15.2 + chromium-edge-launcher: ^0.2.0 + connect: ^3.6.5 + debug: ^4.4.0 + invariant: ^2.2.4 + nullthrows: ^1.1.1 + open: ^7.0.3 + serve-static: ^1.16.2 + ws: ^6.2.3 + checksum: e158914574e9d0af0b3c69425472398c9c8cbc8f91c85c9ef78c95711f04b3188c9efb725ddbf5a5a95b77de2128519c1dbad3bcd5fd831b8b5988f6ffb75e34 + languageName: node + linkType: hard + "@react-native/eslint-config@npm:0.79.5": version: 0.79.5 resolution: "@react-native/eslint-config@npm:0.79.5" @@ -11436,6 +12994,29 @@ __metadata: languageName: node linkType: hard +"@react-native/eslint-config@npm:^0.81.1": + version: 0.81.4 + resolution: "@react-native/eslint-config@npm:0.81.4" + dependencies: + "@babel/core": ^7.25.2 + "@babel/eslint-parser": ^7.25.1 + "@react-native/eslint-plugin": 0.81.4 + "@typescript-eslint/eslint-plugin": ^7.1.1 + "@typescript-eslint/parser": ^7.1.1 + eslint-config-prettier: ^8.5.0 + eslint-plugin-eslint-comments: ^3.2.0 + eslint-plugin-ft-flow: ^2.0.1 + eslint-plugin-jest: ^27.9.0 + eslint-plugin-react: ^7.30.1 + eslint-plugin-react-hooks: ^5.2.0 + eslint-plugin-react-native: ^4.0.0 + peerDependencies: + eslint: ">=8" + prettier: ">=2" + checksum: e601fe1298710557916a0ab3c32975ab0e65319c78edaca7369eded6eea4f94ab4a00c1eafd437f93a82baa93cdfbd2a930ceb1b82b4a2e92f51d490184dd1b1 + languageName: node + linkType: hard + "@react-native/eslint-plugin@npm:0.79.5": version: 0.79.5 resolution: "@react-native/eslint-plugin@npm:0.79.5" @@ -11443,6 +13024,13 @@ __metadata: languageName: node linkType: hard +"@react-native/eslint-plugin@npm:0.81.4": + version: 0.81.4 + resolution: "@react-native/eslint-plugin@npm:0.81.4" + checksum: e9c3ada247dfa410ae5f0ed20fb12ec79193a1140ec643d2cf822d472f7951e51247b4b235924faef0763efed73432dcfb203fd4af3c7abd8ccc10442efa6c31 + languageName: node + linkType: hard + "@react-native/gradle-plugin@npm:0.79.5": version: 0.79.5 resolution: "@react-native/gradle-plugin@npm:0.79.5" @@ -11450,6 +13038,13 @@ __metadata: languageName: node linkType: hard +"@react-native/gradle-plugin@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/gradle-plugin@npm:0.81.1" + checksum: 70f35565880989d7aea5cb4cb7e44986f1b465908f5536291b1089ac67bd0f09d3072e0412281546075e0d128a066f664df9d60987fd402cc957599add126891 + languageName: node + linkType: hard + "@react-native/js-polyfills@npm:0.79.5": version: 0.79.5 resolution: "@react-native/js-polyfills@npm:0.79.5" @@ -11457,6 +13052,13 @@ __metadata: languageName: node linkType: hard +"@react-native/js-polyfills@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/js-polyfills@npm:0.81.1" + checksum: e0f099f1ad7c99d84162c86a40499a2830036aadb00dd2fd025a177be28d2fed096a6070fe0d1cd3c5d6e0b708b89a18493a7335b9d458fc7501c94be3116393 + languageName: node + linkType: hard + "@react-native/metro-babel-transformer@npm:0.79.5": version: 0.79.5 resolution: "@react-native/metro-babel-transformer@npm:0.79.5" @@ -11497,6 +13099,13 @@ __metadata: languageName: node linkType: hard +"@react-native/normalize-colors@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/normalize-colors@npm:0.81.1" + checksum: 4717307f611e9bdc11d7b5d53426fa21e35c8ec5ba0ef2b71b943b3dbb168a147da8ed01253421886a0054a6ed7f6550937a15ae0f2c1afa4f623098640e161f + languageName: node + linkType: hard + "@react-native/normalize-colors@npm:^0.73.0": version: 0.73.2 resolution: "@react-native/normalize-colors@npm:0.73.2" @@ -11528,6 +13137,23 @@ __metadata: languageName: node linkType: hard +"@react-native/virtualized-lists@npm:0.81.1": + version: 0.81.1 + resolution: "@react-native/virtualized-lists@npm:0.81.1" + dependencies: + invariant: ^2.2.4 + nullthrows: ^1.1.1 + peerDependencies: + "@types/react": ^19.1.0 + react: "*" + react-native: "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9073000e1d3b78bb9a1209ecc5c8795e6ff4e1eba4385a39bd639a441d25415163d0044ecd10e962024a22744ce680af3bac4b7721871c5790e1bf490f9b8cab + languageName: node + linkType: hard + "@react-navigation/bottom-tabs@npm:7.4.7": version: 7.4.7 resolution: "@react-navigation/bottom-tabs@npm:7.4.7" @@ -11714,6 +13340,21 @@ __metadata: languageName: node linkType: hard +"@release-it/conventional-changelog@npm:^10.0.1": + version: 10.0.1 + resolution: "@release-it/conventional-changelog@npm:10.0.1" + dependencies: + concat-stream: ^2.0.0 + conventional-changelog: ^6.0.0 + conventional-recommended-bump: ^10.0.0 + git-semver-tags: ^8.0.0 + semver: ^7.6.3 + peerDependencies: + release-it: ^18.0.0 || ^19.0.0 + checksum: 9b8a90b3ceaee172cdfb0de248af62182d78966fe43b7d965566513423b5e96e1f1a95849e3a5b2cfc6d06d19ffc64b580aabdfbbbe50e8e491593cd03033016 + languageName: node + linkType: hard + "@reown/walletkit@npm:1.0.0": version: 1.0.0 resolution: "@reown/walletkit@npm:1.0.0" @@ -11885,132 +13526,132 @@ __metadata: languageName: node linkType: hard -"@sentry-internal/browser-utils@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry-internal/browser-utils@npm:8.54.0" +"@sentry-internal/browser-utils@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry-internal/browser-utils@npm:10.20.0" dependencies: - "@sentry/core": 8.54.0 - checksum: a6dc51bcf0b6029ebb49dd3478bd216da5aac118512ae247a3fa4c61b809a6caa27ee1531dc49cdab18f340f6a0cb337cc160c217e6af60060cb50aa2ab15abd + "@sentry/core": 10.20.0 + checksum: f84c42a81ece894d2b7224d9a3ae9515fe63773d2776ebcfc1063bdb83726ee2f9a1cfb3db618fc848cabd60d5a18d6e25805a7a996aeefb836856bd4a9b9660 languageName: node linkType: hard -"@sentry-internal/feedback@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry-internal/feedback@npm:8.54.0" +"@sentry-internal/feedback@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry-internal/feedback@npm:10.20.0" dependencies: - "@sentry/core": 8.54.0 - checksum: e99ca3997609deba59af450b6298dc5125cc7633a59751632cf3b4a7cf12f097cc3ffa9424c483489a0d232a6c577479fe5496355e6a5c2b3ada0c7aa72e7251 + "@sentry/core": 10.20.0 + checksum: 01ebfbcef593cd430e8b5295f01cf92360836613158fb363ff31d85f3889389546137bccb9aff547382938646c4daa347bfa3d6be249246ed2ee6bdb67022b73 languageName: node linkType: hard -"@sentry-internal/replay-canvas@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry-internal/replay-canvas@npm:8.54.0" +"@sentry-internal/replay-canvas@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry-internal/replay-canvas@npm:10.20.0" dependencies: - "@sentry-internal/replay": 8.54.0 - "@sentry/core": 8.54.0 - checksum: ed11de4c3503833d1e3503e521d0945eb393e16c6e5a2da3b5eae8632540a96530e465e8b6947879440ef19aba5f0d13ce36c4400955fcb310de2882c8610887 + "@sentry-internal/replay": 10.20.0 + "@sentry/core": 10.20.0 + checksum: 0da8cd3a16c402e510ae8e29f3b9df975a20c25bdb78f71217fabd0f33105d1a963861044a7869aba57adbb9478bcc4daa10fe4d0ba38c3daeb90836a672ab1f languageName: node linkType: hard -"@sentry-internal/replay@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry-internal/replay@npm:8.54.0" +"@sentry-internal/replay@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry-internal/replay@npm:10.20.0" dependencies: - "@sentry-internal/browser-utils": 8.54.0 - "@sentry/core": 8.54.0 - checksum: 2d46529612cb279ef53e8fb0f96d9da7b0526e9c3990af27620cb1f10a3f66b81966121d904da08b4ad07c0ae162230dfa39a9572127033b62ca2aae9b9008d8 + "@sentry-internal/browser-utils": 10.20.0 + "@sentry/core": 10.20.0 + checksum: b738f84e56f06039127ac7abba6eee65414e14d1291a92c1a1330731b34151c9bf5da46ac5ca26d5d5eb725ac629c01546522a36e8787506a1c7ef661577f9b7 languageName: node linkType: hard -"@sentry/babel-plugin-component-annotate@npm:3.4.0": - version: 3.4.0 - resolution: "@sentry/babel-plugin-component-annotate@npm:3.4.0" - checksum: 670dcbe210d0dabf3b0e37899b0c2ed10d83d314b700d391de5e3f19f3cc43622977e611e86071c47e2c92db7c662ea8723c903081b92e90309e1aeda7eb2eba +"@sentry/babel-plugin-component-annotate@npm:4.4.0": + version: 4.4.0 + resolution: "@sentry/babel-plugin-component-annotate@npm:4.4.0" + checksum: 28e7ce36eaf12cd1d8c39a6db952b62606130b704ea4ea081b79d15d51e4156335bec9009b35187f8ccde245cabc03c98a300f9116a90b94632aae1b5ae420a5 languageName: node linkType: hard -"@sentry/browser@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry/browser@npm:8.54.0" +"@sentry/browser@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry/browser@npm:10.20.0" dependencies: - "@sentry-internal/browser-utils": 8.54.0 - "@sentry-internal/feedback": 8.54.0 - "@sentry-internal/replay": 8.54.0 - "@sentry-internal/replay-canvas": 8.54.0 - "@sentry/core": 8.54.0 - checksum: b125b194877cbdefc76884f6b1b7995d0949f7e7e5c4283c69f01071656df0e571bd0ac1cf1bb47f89f268370dd8b69126db44e2949ee5176a043e615c5bc7e0 + "@sentry-internal/browser-utils": 10.20.0 + "@sentry-internal/feedback": 10.20.0 + "@sentry-internal/replay": 10.20.0 + "@sentry-internal/replay-canvas": 10.20.0 + "@sentry/core": 10.20.0 + checksum: b762cdf354ad8614c3b4adc68c17df2ba0d16c86fec2ff2dd3a7fa6d9a88fca896409474d544beeb45375a7fb4c24e5dd4ac95b08993670980445f9530c2dded languageName: node linkType: hard -"@sentry/cli-darwin@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-darwin@npm:2.45.0" +"@sentry/cli-darwin@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-darwin@npm:2.56.1" conditions: os=darwin languageName: node linkType: hard -"@sentry/cli-linux-arm64@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-linux-arm64@npm:2.45.0" - conditions: (os=linux | os=freebsd) & cpu=arm64 +"@sentry/cli-linux-arm64@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-linux-arm64@npm:2.56.1" + conditions: (os=linux | os=freebsd | os=android) & cpu=arm64 languageName: node linkType: hard -"@sentry/cli-linux-arm@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-linux-arm@npm:2.45.0" - conditions: (os=linux | os=freebsd) & cpu=arm +"@sentry/cli-linux-arm@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-linux-arm@npm:2.56.1" + conditions: (os=linux | os=freebsd | os=android) & cpu=arm languageName: node linkType: hard -"@sentry/cli-linux-i686@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-linux-i686@npm:2.45.0" - conditions: (os=linux | os=freebsd) & (cpu=x86 | cpu=ia32) +"@sentry/cli-linux-i686@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-linux-i686@npm:2.56.1" + conditions: (os=linux | os=freebsd | os=android) & (cpu=x86 | cpu=ia32) languageName: node linkType: hard -"@sentry/cli-linux-x64@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-linux-x64@npm:2.45.0" - conditions: (os=linux | os=freebsd) & cpu=x64 +"@sentry/cli-linux-x64@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-linux-x64@npm:2.56.1" + conditions: (os=linux | os=freebsd | os=android) & cpu=x64 languageName: node linkType: hard -"@sentry/cli-win32-arm64@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-win32-arm64@npm:2.45.0" +"@sentry/cli-win32-arm64@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-win32-arm64@npm:2.56.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@sentry/cli-win32-i686@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-win32-i686@npm:2.45.0" +"@sentry/cli-win32-i686@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-win32-i686@npm:2.56.1" conditions: os=win32 & (cpu=x86 | cpu=ia32) languageName: node linkType: hard -"@sentry/cli-win32-x64@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli-win32-x64@npm:2.45.0" +"@sentry/cli-win32-x64@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli-win32-x64@npm:2.56.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@sentry/cli@npm:2.45.0": - version: 2.45.0 - resolution: "@sentry/cli@npm:2.45.0" +"@sentry/cli@npm:2.56.1": + version: 2.56.1 + resolution: "@sentry/cli@npm:2.56.1" dependencies: - "@sentry/cli-darwin": 2.45.0 - "@sentry/cli-linux-arm": 2.45.0 - "@sentry/cli-linux-arm64": 2.45.0 - "@sentry/cli-linux-i686": 2.45.0 - "@sentry/cli-linux-x64": 2.45.0 - "@sentry/cli-win32-arm64": 2.45.0 - "@sentry/cli-win32-i686": 2.45.0 - "@sentry/cli-win32-x64": 2.45.0 + "@sentry/cli-darwin": 2.56.1 + "@sentry/cli-linux-arm": 2.56.1 + "@sentry/cli-linux-arm64": 2.56.1 + "@sentry/cli-linux-i686": 2.56.1 + "@sentry/cli-linux-x64": 2.56.1 + "@sentry/cli-win32-arm64": 2.56.1 + "@sentry/cli-win32-i686": 2.56.1 + "@sentry/cli-win32-x64": 2.56.1 https-proxy-agent: ^5.0.0 node-fetch: ^2.6.7 progress: ^2.0.3 @@ -12035,28 +13676,27 @@ __metadata: optional: true bin: sentry-cli: bin/sentry-cli - checksum: 8f922057524c5ab59762fa7353be603cab0c17df3ef499dee3da7999296e8aaaa01e4c5c6f2880df475816cd94d76fc7f24622743c2d8aa6195dbf4e2a917d29 + checksum: e70c68ddaf0dda7cae7a886f221cf62520603d71cb96976c40e515df56565b31d8f78a50af83b89b17a39f136976d83d54fd9eeca8aa05026dfff18b7a07c999 languageName: node linkType: hard -"@sentry/core@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry/core@npm:8.54.0" - checksum: ad7165a0bc56918cf8b8e5e15c4ceed11358970d8bf4c587a0fb05d8bd2759ee1d965da2a51e705e0e0aaf3a84150ecbf3bd647bfa0dd32bc723b28b91d46a66 +"@sentry/core@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry/core@npm:10.20.0" + checksum: 8f14a7feee3257876d7735520b1efc06606142c21026d3a0b77377dd33c5b47aba45875ea0961c188f48d6ba2c05f44bb56d59cd6d5f16f8f903f33c14dbb48b languageName: node linkType: hard -"@sentry/react-native@npm:6.14.0": - version: 6.14.0 - resolution: "@sentry/react-native@npm:6.14.0" +"@sentry/react-native@npm:7.4.0": + version: 7.4.0 + resolution: "@sentry/react-native@npm:7.4.0" dependencies: - "@sentry/babel-plugin-component-annotate": 3.4.0 - "@sentry/browser": 8.54.0 - "@sentry/cli": 2.45.0 - "@sentry/core": 8.54.0 - "@sentry/react": 8.54.0 - "@sentry/types": 8.54.0 - "@sentry/utils": 8.54.0 + "@sentry/babel-plugin-component-annotate": 4.4.0 + "@sentry/browser": 10.20.0 + "@sentry/cli": 2.56.1 + "@sentry/core": 10.20.0 + "@sentry/react": 10.20.0 + "@sentry/types": 10.20.0 peerDependencies: expo: ">=49.0.0" react: ">=17.0.0" @@ -12066,38 +13706,29 @@ __metadata: optional: true bin: sentry-expo-upload-sourcemaps: scripts/expo-upload-sourcemaps.js - checksum: 5d2ac344aa70a9f6b1298f824d6219b818bd743a3d4e9c15b3884d1b3d85edde440f7f32d90a2e8dbf3f6eb11fb7fe91ba761c2ad1c1d4bb05c5f73658459399 + checksum: d9f4fa5ab692eb294671c77418ef11a83a1109fdbcfacde658ea63af223b2ee54d41494f254527f7a2b2c870ef9fdaaf6f62797a818fedba28a2c1d48ba00e4e languageName: node linkType: hard -"@sentry/react@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry/react@npm:8.54.0" +"@sentry/react@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry/react@npm:10.20.0" dependencies: - "@sentry/browser": 8.54.0 - "@sentry/core": 8.54.0 + "@sentry/browser": 10.20.0 + "@sentry/core": 10.20.0 hoist-non-react-statics: ^3.3.2 peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x - checksum: 6f6d12f4db77f137b7b4361bfe298f9eba19b865e56701f7ba336ffedada683bd4baa962747f8b96a91d3399b1317206689e8a7565fb06b930b71440cd8a00a1 + checksum: 423639032ae40640fb8082b4c3e9998f1e336fb230f948b50fd3c4a8083d178f597f0808d21c4687e46e3dfc7a6456d2e1e6fd5dcb6dd31c4c75f89189f6ca3f languageName: node linkType: hard -"@sentry/types@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry/types@npm:8.54.0" +"@sentry/types@npm:10.20.0": + version: 10.20.0 + resolution: "@sentry/types@npm:10.20.0" dependencies: - "@sentry/core": 8.54.0 - checksum: 948095843efa280ee1a1dad5ac6dc20688395c25b344860d22505de14a10b1f873bcbeaaf32ba8506955a789a9c0fb0df4e80b93dfee21b1847423e954d0e616 - languageName: node - linkType: hard - -"@sentry/utils@npm:8.54.0": - version: 8.54.0 - resolution: "@sentry/utils@npm:8.54.0" - dependencies: - "@sentry/core": 8.54.0 - checksum: 063c31528f4d3d0f17be18050c84fad12a8a62fde97ca8e0e10c0cc01323e644d8d1cbba4b95b20de5d62eaee23ba43ae51b479057da4fd59dbccd49ac97277a + "@sentry/core": 10.20.0 + checksum: 6f799d62279c0e0a7df6c2cef4680413f33d0b91835f0a034523eef89f082bb5a9ca490bb90324931b4c3e9d41b9134f494c60d845b46dd1953961bd80c25f66 languageName: node linkType: hard @@ -12195,6 +13826,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/merge-streams@npm:^2.1.0": + version: 2.3.0 + resolution: "@sindresorhus/merge-streams@npm:2.3.0" + checksum: e989d53dee68d7e49b4ac02ae49178d561c461144cea83f66fa91ff012d981ad0ad2340cbd13f2fdb57989197f5c987ca22a74eb56478626f04e79df84291159 + languageName: node + linkType: hard + "@sindresorhus/merge-streams@npm:^4.0.0": version: 4.0.0 resolution: "@sindresorhus/merge-streams@npm:4.0.0" @@ -13666,6 +15304,17 @@ __metadata: languageName: node linkType: hard +"@ts-morph/common@npm:~0.28.1": + version: 0.28.1 + resolution: "@ts-morph/common@npm:0.28.1" + dependencies: + minimatch: ^10.0.1 + path-browserify: ^1.0.1 + tinyglobby: ^0.2.14 + checksum: bc3e879ff55fe8fe460d49124d10f74aba4ec92c261b7f65d48153a107e1b733676bb89e1c55fa4e5c045fe055c6c5247f7d340aaf1db1a44ffaf32ca2a00ec5 + languageName: node + linkType: hard + "@tsconfig/node10@npm:^1.0.7": version: 1.0.9 resolution: "@tsconfig/node10@npm:1.0.9" @@ -13811,6 +15460,15 @@ __metadata: languageName: node linkType: hard +"@types/conventional-commits-parser@npm:^5.0.0": + version: 5.0.1 + resolution: "@types/conventional-commits-parser@npm:5.0.1" + dependencies: + "@types/node": "*" + checksum: b4eb4f22051d42e7ed9fd3bffe6ea0cf62ae493a3c6c775a16babbad977c934f4c09ec3fa93020894de2073d63cfcd3a27dd5f00984966161da6797dd88a0f0d + languageName: node + linkType: hard + "@types/cookie@npm:^0.4.1": version: 0.4.1 resolution: "@types/cookie@npm:0.4.1" @@ -14258,6 +15916,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^29.5.14": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 + languageName: node + linkType: hard + "@types/js-levenshtein@npm:^1.1.1": version: 1.1.3 resolution: "@types/js-levenshtein@npm:1.1.3" @@ -14265,6 +15933,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.9": version: 7.0.14 resolution: "@types/json-schema@npm:7.0.14" @@ -14418,24 +16093,24 @@ __metadata: linkType: hard "@types/node@npm:^20.1.0, @types/node@npm:^20.11.28, @types/node@npm:^20.11.30": - version: 20.19.21 - resolution: "@types/node@npm:20.19.21" + version: 20.19.24 + resolution: "@types/node@npm:20.19.24" dependencies: undici-types: ~6.21.0 - checksum: 79eeb55b109a54e212d963870d0a9184bbc1b6ed07a26a52d9aa87c15f594648d3832876b37635e5fb5c6206acd9240209394579d4e6ec0870d1b78cfa4c13d2 + checksum: d532a28d454dfadc7b3af7f39d087f7d9416d2e0cdd4b47c3e00fc303177280a66bd15a86078a9957260a47b1d2bad5ac35096aeb316e56bc0318c904f214cc3 languageName: node linkType: hard "@types/node@npm:^24.0.10": - version: 24.7.2 - resolution: "@types/node@npm:24.7.2" + version: 24.10.0 + resolution: "@types/node@npm:24.10.0" dependencies: - undici-types: ~7.14.0 - checksum: dd676a9041e36825e9c6917b34105da0c3f390ee95cca8e050a9efb7d55851dcb48d05f23700eb5540a22a8d4fd3da289b4c07a3888aeb74d3304dcb07b813b0 + undici-types: ~7.16.0 + checksum: 268c843faae02ba88be2441759c26e73038583a7e221fa3000f2c1d7fdc1d06b28cb514fc5367f7cb147c3519cd25ddafdfa1f8566829b91fb096262ebe3f7bb languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1, @types/normalize-package-data@npm:^2.4.3": version: 2.4.4 resolution: "@types/normalize-package-data@npm:2.4.4" checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05 @@ -14449,6 +16124,13 @@ __metadata: languageName: node linkType: hard +"@types/parse-path@npm:^7.0.0": + version: 7.0.3 + resolution: "@types/parse-path@npm:7.0.3" + checksum: 21a12c228d38f5a75659dfd7cb127dc2001ed3f6acbd1b2e0575d1348c735594c0bab06a97fe849c151438384829f20ea5971cb045f7ecd37d53c76a9fcb9de3 + languageName: node + linkType: hard + "@types/pbkdf2@npm:^3.0.0": version: 3.1.2 resolution: "@types/pbkdf2@npm:3.1.2" @@ -14536,6 +16218,13 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^7.5.5": + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 76d218e414482a398148d5c28f2bfa017108869f3fc18cda379c9d8d062348f8b9653ae2fa8642d3b5b52e211928fe8be34f22da4e1f08245c84e0e51e040673 + languageName: node + linkType: hard + "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -15133,6 +16822,30 @@ __metadata: languageName: node linkType: hard +"@walletconnect/core@patch:@walletconnect/core@npm%3A2.16.1#./.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch::locator=mobile-monorepo%40workspace%3A.": + version: 2.16.1 + resolution: "@walletconnect/core@patch:@walletconnect/core@npm%3A2.16.1#./.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch::version=2.16.1&hash=ba47c6&locator=mobile-monorepo%40workspace%3A." + dependencies: + "@walletconnect/heartbeat": 1.2.2 + "@walletconnect/jsonrpc-provider": 1.0.14 + "@walletconnect/jsonrpc-types": 1.0.4 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/jsonrpc-ws-connection": 1.0.14 + "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/logger": 2.1.2 + "@walletconnect/relay-api": 1.0.11 + "@walletconnect/relay-auth": 1.0.4 + "@walletconnect/safe-json": 1.0.2 + "@walletconnect/time": 1.0.2 + "@walletconnect/types": 2.16.1 + "@walletconnect/utils": 2.16.1 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + checksum: 00ac1393a60fd18525bbdd08dd3f4801b6b0230ec89d4fd4e67b212d35bddf164881a39c048f77e198241b93d943bef9ac101f267e816ff8dd96f4d043cd559f + languageName: node + linkType: hard + "@walletconnect/environment@npm:^1.0.1": version: 1.0.1 resolution: "@walletconnect/environment@npm:1.0.1" @@ -15311,6 +17024,23 @@ __metadata: languageName: node linkType: hard +"@walletconnect/sign-client@patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch::locator=mobile-monorepo%40workspace%3A.": + version: 2.16.1 + resolution: "@walletconnect/sign-client@patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch::version=2.16.1&hash=73f242&locator=mobile-monorepo%40workspace%3A." + dependencies: + "@walletconnect/core": 2.16.1 + "@walletconnect/events": 1.0.1 + "@walletconnect/heartbeat": 1.2.2 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/logger": 2.1.2 + "@walletconnect/time": 1.0.2 + "@walletconnect/types": 2.16.1 + "@walletconnect/utils": 2.16.1 + events: 3.3.0 + checksum: d3750186101d02675d9d0d0ccb18dec9a8326d1563bb98d28348a3bf6315cf61cf4bb7efac040f1fc9421593660e9c872b08303bccb765bf1dfcaaa3575e05bd + languageName: node + linkType: hard + "@walletconnect/time@npm:1.0.2, @walletconnect/time@npm:^1.0.2": version: 1.0.2 resolution: "@walletconnect/time@npm:1.0.2" @@ -15348,33 +17078,37 @@ __metadata: languageName: node linkType: hard -"@walletconnect/utils@npm:2.16.1": - version: 2.16.1 - resolution: "@walletconnect/utils@npm:2.16.1" +"@walletconnect/utils@npm:2.17.2": + version: 2.17.2 + resolution: "@walletconnect/utils@npm:2.17.2" dependencies: + "@ethersproject/hash": 5.7.0 + "@ethersproject/transactions": 5.7.0 "@stablelib/chacha20poly1305": 1.0.1 "@stablelib/hkdf": 1.0.1 "@stablelib/random": 1.0.2 "@stablelib/sha256": 1.0.1 "@stablelib/x25519": 1.0.3 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/keyvaluestorage": 1.1.1 "@walletconnect/relay-api": 1.0.11 "@walletconnect/relay-auth": 1.0.4 "@walletconnect/safe-json": 1.0.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.16.1 + "@walletconnect/types": 2.17.2 "@walletconnect/window-getters": 1.0.1 "@walletconnect/window-metadata": 1.0.1 detect-browser: 5.3.0 - elliptic: ^6.5.7 + elliptic: 6.6.0 query-string: 7.1.3 uint8arrays: 3.1.0 - checksum: 404c5f262e020c208ab30283c1dbe23f7a4876d3d89ebb23dde95ea32deb8ada72886d64151f6a826d21774797fa44feed70d33729661aa0de4b6850b3ace0d5 + checksum: 5d7ca3982053d4988955ad1084f561e99b64c3949967988e325548dbfb5a0c4a180516c22fb5d6d428f5d515d49ede4d32921282f5d3ad625fc66f18c00f7453 languageName: node linkType: hard -"@walletconnect/utils@npm:2.17.2": +"@walletconnect/utils@patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch::locator=mobile-monorepo%40workspace%3A.": version: 2.17.2 - resolution: "@walletconnect/utils@npm:2.17.2" + resolution: "@walletconnect/utils@patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch::version=2.17.2&hash=633b2e&locator=mobile-monorepo%40workspace%3A." dependencies: "@ethersproject/hash": 5.7.0 "@ethersproject/transactions": 5.7.0 @@ -15396,7 +17130,7 @@ __metadata: elliptic: 6.6.0 query-string: 7.1.3 uint8arrays: 3.1.0 - checksum: 5d7ca3982053d4988955ad1084f561e99b64c3949967988e325548dbfb5a0c4a180516c22fb5d6d428f5d515d49ede4d32921282f5d3ad625fc66f18c00f7453 + checksum: 3c843c362826293bdfd1058bd8294d1f1e56558512f9b483ea6d65149b9483883ef562c007096a7ebfde297e685163fab42120bda3437dcd4468e23b243ddade languageName: node linkType: hard @@ -15726,9 +17460,9 @@ __metadata: linkType: hard "@zip.js/zip.js@npm:^2.7.53": - version: 2.8.7 - resolution: "@zip.js/zip.js@npm:2.8.7" - checksum: 8d7b8d30a90726d45b857d9c02d56030c9fdfd6eb6f09392b621f8c294bef91acff55f1f018add1050f738c33dbcd45667bc01eb83225f08c0f4388a8e84f3ed + version: 2.8.8 + resolution: "@zip.js/zip.js@npm:2.8.8" + checksum: 51333312cdd471da02a19c9504e0bc1606bb94353488d51c6b2482430df23e41a40c657a20151b753b81a53fbd278d7b6c8240be0c700e5235007703affe8765 languageName: node linkType: hard @@ -15783,6 +17517,18 @@ __metadata: languageName: node linkType: hard +"JSONStream@npm:^1.3.5": + version: 1.3.5 + resolution: "JSONStream@npm:1.3.5" + dependencies: + jsonparse: ^1.2.0 + through: ">=2.2.7 <3" + bin: + JSONStream: ./bin.js + checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 + languageName: node + linkType: hard + "abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -15941,6 +17687,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" + bin: + acorn: bin/acorn + checksum: 309c6b49aedf1a2e34aaf266de06de04aab6eb097c02375c66fdeb0f64556a6a823540409914fb364d9a11bc30d79d485a2eba29af47992d3490e9886c4391c3 + languageName: node + linkType: hard + "acorn@npm:^8.4.1": version: 8.11.2 resolution: "acorn@npm:8.11.2" @@ -15970,6 +17725,13 @@ __metadata: languageName: node linkType: hard +"add-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "add-stream@npm:1.0.0" + checksum: 3e9e8b0b8f0170406d7c3a9a39bfbdf419ccccb0fd2a396338c0fda0a339af73bf738ad414fc520741de74517acf0dd92b4a36fd3298a47fd5371eee8f2c5a06 + languageName: node + linkType: hard + "aes-js@npm:4.0.0-beta.5": version: 4.0.0-beta.5 resolution: "aes-js@npm:4.0.0-beta.5" @@ -16205,21 +17967,39 @@ __metadata: languageName: node linkType: hard -"appium-adb@npm:^13.0.0, appium-adb@npm:^13.0.9": - version: 13.0.9 - resolution: "appium-adb@npm:13.0.9" +"appium-adb@npm:^13.0.0": + version: 13.0.11 + resolution: "appium-adb@npm:13.0.11" + dependencies: + "@appium/support": ^7.0.0-rc.1 + async-lock: ^1.0.0 + asyncbox: ^3.0.0 + bluebird: ^3.4.7 + ini: ^6.0.0 + lodash: ^4.0.0 + lru-cache: ^11.1.0 + semver: ^7.0.0 + source-map-support: ^0.x + teen_process: ^3.0.0 + checksum: c45d3d71e264ee2c2d727f9440561183bc5424238e0039963459b99a50bba9c1a31790969c8adaed4e4bcc9b19a6cfd31d135ae6ad79700ef5cff06bb7e1ac5b + languageName: node + linkType: hard + +"appium-adb@npm:^14.0.0": + version: 14.0.0 + resolution: "appium-adb@npm:14.0.0" dependencies: "@appium/support": ^7.0.0-rc.1 async-lock: ^1.0.0 asyncbox: ^3.0.0 bluebird: ^3.4.7 - ini: ^5.0.0 + ini: ^6.0.0 lodash: ^4.0.0 lru-cache: ^11.1.0 semver: ^7.0.0 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: 3bba621bdb7b9353ae1c3d42add7a4b2149e3f2d66ddc7f55e20cdd11fd5ad776f7fb4d7f8c32f3360c30e41cb33c9c578196ecd232d22ebedcdd0ed543abb2e + checksum: 6b546a8a9674d5afe87ea061f0d067a0bed9f948b102b9c8d2e47707ac5276dd3e1f04a452b25fc130022f5c7151e8bb2e07cec7e93eb6bcd863e9286f17beec languageName: node linkType: hard @@ -16245,13 +18025,13 @@ __metadata: linkType: hard "appium-android-driver@npm:^11.0.4": - version: 11.0.6 - resolution: "appium-android-driver@npm:11.0.6" + version: 11.0.12 + resolution: "appium-android-driver@npm:11.0.12" dependencies: "@appium/support": ^7.0.0-rc.1 "@colors/colors": ^1.6.0 - appium-adb: ^13.0.9 - appium-chromedriver: ^8.0.0 + appium-adb: ^14.0.0 + appium-chromedriver: ^8.0.16 asyncbox: ^3.0.0 axios: ^1.x bluebird: ^3.4.7 @@ -16267,18 +18047,18 @@ __metadata: ws: ^8.0.0 peerDependencies: appium: ^3.0.0-rc.2 - checksum: c8bc2275378e4907aa4b0db5da6988e8c6e045f6ceafe9485441efb54737366a93e349ecbcda16330ddc95ba6e50cea3fdb39c126e01e11085e888dc6d77ddcd + checksum: 40d653870d42455844252bf4a87234e47b13302353107761fde8c9dcb56778a9f04d3178c31b485cd5bc09e954662adf5d5436404628ba56cf6a06fabe7825f0 languageName: node linkType: hard -"appium-chromedriver@npm:^8.0.0": - version: 8.0.12 - resolution: "appium-chromedriver@npm:8.0.12" +"appium-chromedriver@npm:^8.0.16": + version: 8.0.18 + resolution: "appium-chromedriver@npm:8.0.18" dependencies: "@appium/base-driver": ^10.0.0-rc.2 "@appium/support": ^7.0.0-rc.1 "@xmldom/xmldom": ^0.x - appium-adb: ^13.0.0 + appium-adb: ^14.0.0 asyncbox: ^3.0.0 axios: ^1.6.5 bluebird: ^3.5.1 @@ -16288,7 +18068,7 @@ __metadata: source-map-support: ^0.x teen_process: ^3.0.0 xpath: ^0.x - checksum: 48ce9bf4d49b1e11bb2283793acc05904f585ed6db1415907b705f522d8cab7c0a152df1ced5a03dcb6337e5954e872d3e10b015d2c5986d9f6bbee59b912fe4 + checksum: 07e7ffdc807a542717960f81c2fbef744c4ce823af74413d9e3ecb990c72d25ac05f726e8b6a782660b3fdb9ecda972768f3610408ed2524ae3066b8f2b6e0fa languageName: node linkType: hard @@ -16314,8 +18094,8 @@ __metadata: linkType: hard "appium-idb@npm:^2.0.0": - version: 2.0.1 - resolution: "appium-idb@npm:2.0.1" + version: 2.0.2 + resolution: "appium-idb@npm:2.0.2" dependencies: "@appium/support": ^7.0.0-rc.1 asyncbox: ^3.0.0 @@ -16323,13 +18103,13 @@ __metadata: lodash: ^4.0.0 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: a669795371919e036bbdc6d43c9cdbe924c660dd0c8ccf218432496b0bcfc71a98e0df003b7da89e16f22fd309fbe068bb063541131076b28ad4557aca972b2c + checksum: 147ba312e5eaecb9b8991e872442e8b9a291521b14fadea1480cfd5d4d17fd1ec7f12010e0aec4c6d4b1d134f4e724815b219ebb4b26a341f8ec091542476d62 languageName: node linkType: hard "appium-ios-device@npm:^3.0.0": - version: 3.1.0 - resolution: "appium-ios-device@npm:3.1.0" + version: 3.1.2 + resolution: "appium-ios-device@npm:3.1.2" dependencies: "@appium/support": ^7.0.0-rc.1 asyncbox: ^3.0.0 @@ -16340,13 +18120,13 @@ __metadata: lodash: ^4.17.15 semver: ^7.0.0 source-map-support: ^0.x - checksum: cced0c2772117f1d6e8cca6f0eb469e9ff0de3b19856726283bd3c094b105a8751b2491c815d9d7c38c951f54d11f031962a024acf315ede0e7a46a1dbe53130 + checksum: b9c41c31e9c487aa5cb38e91c2b22a4bb1be2ebbf5c3ac813c0e00b729a1d058b0f177f79ed743215ef4fbaaf4e2b826150d7abc883beec5e008afa5d370bd4c languageName: node linkType: hard "appium-ios-remotexpc@npm:^0.x": - version: 0.7.0 - resolution: "appium-ios-remotexpc@npm:0.7.0" + version: 0.10.2 + resolution: "appium-ios-remotexpc@npm:0.10.2" dependencies: "@appium/strongbox": ^1.0.0-rc.1 "@appium/support": ^7.0.0-rc.1 @@ -16355,13 +18135,13 @@ __metadata: appium-ios-tuntap: ^0.x axios: ^1.12.0 npm-run-all2: ^8.0.4 - checksum: 935c72c3afaf909a82ae0562442c5fab557bacefb51dcb4b4432633d6ae588a5834d551f4b7d54ab2f129f3ad4afb3e4db12a59eefa1874ca5b43a706e56a957 + checksum: a83042784acd62f0bb818e047c4786b112ca1d3a64c2745da0cb86fb92904dcc125c55294bf089fccbe0aa6d61fce1d2ac0786fa64b7f31cb2e24c21abad85d3 languageName: node linkType: hard "appium-ios-simulator@npm:^7.0.0": - version: 7.0.1 - resolution: "appium-ios-simulator@npm:7.0.1" + version: 7.0.2 + resolution: "appium-ios-simulator@npm:7.0.2" dependencies: "@appium/support": ^7.0.0-rc.1 "@xmldom/xmldom": ^0.x @@ -16374,25 +18154,25 @@ __metadata: semver: ^7.0.0 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: fd006944f23f055bc7454baca7644a13c675a779a0b81a24169586631bdacedc5f81fe73de4910367f45b6cef7695fa90b8cca05ba9144057e784a6b9189cc40 + checksum: 0611a37733cbca3d33d62cb3fde5bc825d5b549d0fe2a699982a7f330cff20d25f7ccf5b76913dbebf5493bdbf4dad28ce5246095de9d9d450d1067ddbe46f2f languageName: node linkType: hard "appium-ios-tuntap@npm:^0.x": - version: 0.1.0 - resolution: "appium-ios-tuntap@npm:0.1.0" + version: 0.1.1 + resolution: "appium-ios-tuntap@npm:0.1.1" dependencies: "@appium/support": ^7.0.0-rc.1 node-addon-api: ^8.5.0 node-gyp: latest typescript: ^5.8.3 - checksum: 56078eb32a24c7999b44262c9a5e227dd1a62dc01b371652162aca95de6f83954a3c0e851363ffd92c4cb138fdb3d406f45760190d0d619d11a7ea5d8d314cf5 + checksum: e8835790d1615269d9e1be3a5236cf5fe8a9e88265b730bb13f7d2f60ee1455fd234c305967ce02fa4df85c12d67c48493f02909b46fdccbfb7ec30e3ff63751 languageName: node linkType: hard "appium-remote-debugger@npm:^15.0.2": - version: 15.1.0 - resolution: "appium-remote-debugger@npm:15.1.0" + version: 15.1.1 + resolution: "appium-remote-debugger@npm:15.1.1" dependencies: "@appium/base-driver": ^10.0.0-rc.1 "@appium/support": ^7.0.0-rc.1 @@ -16404,7 +18184,7 @@ __metadata: lodash: ^4.17.11 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: 655b4af5b96df8ee3a215d48173cc3359f722ed8d8455eaa03297293af8a8847de80017c0dfacaca49ffff686c91ce885fa975501ccf783480b37fbb85fe2e97 + checksum: 425efe5082d453e566f4b3f37f877ddcd4d81a84b91e212a03e7775258f9821869baaa4592af565fffc23951c516de8360f77001f0f4dcf74109be8a48a1590b languageName: node linkType: hard @@ -16471,15 +18251,15 @@ __metadata: linkType: hard "appium-uiautomator2-server@npm:^8.1.1": - version: 8.1.1 - resolution: "appium-uiautomator2-server@npm:8.1.1" - checksum: a368c6d5c3da01df3802168cf7426ec407b62c47466ea21ed1113bf5a726e516dfb6c6e20d72bc2e007a0dba41713d062284cdea15698b0978eafbfc57f81321 + version: 8.1.2 + resolution: "appium-uiautomator2-server@npm:8.1.2" + checksum: dd63ab73e3e51b64459d01fedbb511e4524f306ab827661dd0332317496f352faf921bca28d9cea7982681a5a9be0fcb2f3eb712c9f661886db0c6c024ace66b languageName: node linkType: hard "appium-webdriveragent@npm:^10.1.0": - version: 10.1.2 - resolution: "appium-webdriveragent@npm:10.1.2" + version: 10.2.1 + resolution: "appium-webdriveragent@npm:10.2.1" dependencies: "@appium/base-driver": ^10.0.0-rc.1 "@appium/strongbox": ^1.0.0-rc.1 @@ -16493,7 +18273,7 @@ __metadata: lodash: ^4.17.11 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: 4289a7dcf88a5f74bdb51037fc9b6e64d0d0f196c57b6c8e7ba579007e0227000ce46b8e8d394da975195949d00acd7dff6ef6c85aa35a3beb6d4697ebf292b5 + checksum: 0626ee1184adf5115090188eb6b56a545852a35ff6fdd48a081d4709a5c4de1c116c0fc55772e02775c39277c184c3f955ed06c7bc87495a260f241c6a011157 languageName: node linkType: hard @@ -16514,8 +18294,8 @@ __metadata: linkType: hard "appium-xcode@npm:^6.0.0": - version: 6.0.2 - resolution: "appium-xcode@npm:6.0.2" + version: 6.1.1 + resolution: "appium-xcode@npm:6.1.1" dependencies: "@appium/support": ^7.0.0-rc.1 asyncbox: ^3.0.0 @@ -16525,7 +18305,7 @@ __metadata: semver: ^7.0.0 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: 90eec47d07951cef45789b321c0e4f08895eb5c55f69015abc82427f687afaec7af380eb0af45bc86d0d47cf6e60d86e78ea6e6bf2a7b80668c2f55d09d9b8cb + checksum: 948d1be0e2b84468e4ae7e682aacce2b6969f2cab3c1638a77d26090f61662f2824ed0ac3e09525ba910dc4c1bc852c1c96cb513f3995f3c00b7ff6fbfa87060 languageName: node linkType: hard @@ -16764,6 +18544,17 @@ __metadata: languageName: node linkType: hard +"arktype@npm:^2.1.15": + version: 2.1.23 + resolution: "arktype@npm:2.1.23" + dependencies: + "@ark/regex": 0.0.0 + "@ark/schema": 0.50.0 + "@ark/util": 0.50.0 + checksum: 5874ef1c0140aff0a99cd88537e11851b4d0a1a49ee7b097eb766c941f9de6bbd04427bbda8023c69171db0ee02c7d99f08e59114b63fa83a93c4130964fb616 + languageName: node + linkType: hard + "arr-union@npm:^3.1.0": version: 3.1.0 resolution: "arr-union@npm:3.1.0" @@ -16815,6 +18606,13 @@ __metadata: languageName: node linkType: hard +"array-ify@npm:^1.0.0": + version: 1.0.0 + resolution: "array-ify@npm:1.0.0" + checksum: c0502015b319c93dd4484f18036bcc4b654eb76a4aa1f04afbcef11ac918859bb1f5d71ba1f0f1141770db9eef1a4f40f1761753650873068010bbf7bcdae4a4 + languageName: node + linkType: hard + "array-includes@npm:^3.1.6": version: 3.1.7 resolution: "array-includes@npm:3.1.7" @@ -17058,6 +18856,15 @@ __metadata: languageName: node linkType: hard +"async-retry@npm:1.3.3": + version: 1.3.3 + resolution: "async-retry@npm:1.3.3" + dependencies: + retry: 0.13.1 + checksum: 38a7152ff7265a9321ea214b9c69e8224ab1febbdec98efbbde6e562f17ff68405569b796b1c5271f354aef8783665d29953f051f68c1fc45306e61aec82fdc4 + languageName: node + linkType: hard + "async@npm:^2.6.0": version: 2.6.4 resolution: "async@npm:2.6.4" @@ -17194,7 +19001,18 @@ __metadata: languageName: node linkType: hard -"axios@npm:1.12.2, axios@npm:^1.12.0, axios@npm:^1.4.0, axios@npm:^1.6.5, axios@npm:^1.6.7, axios@npm:^1.x": +"axios@npm:1.12.1": + version: 1.12.1 + resolution: "axios@npm:1.12.1" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.4 + proxy-from-env: ^1.1.0 + checksum: 5160cf4e319ecd22de2bc4ad263881b5fb4cea1dfd9b8032ce349609fff041e0434f14e72bf2571b37ea88d1860f3456a95f3f40f2c14e84edfb6e81e5f27c4d + languageName: node + linkType: hard + +"axios@npm:1.12.2": version: 1.12.2 resolution: "axios@npm:1.12.2" dependencies: @@ -17236,6 +19054,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.12.0, axios@npm:^1.4.0, axios@npm:^1.6.5, axios@npm:^1.6.7, axios@npm:^1.x": + version: 1.13.2 + resolution: "axios@npm:1.13.2" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.4 + proxy-from-env: ^1.1.0 + checksum: 057d0204d5930e2969f0bccb9f0752745b1524a36994667833195e7e1a82f245d660752ba8517b2dbea17e9e4ed0479f10b80c5fe45edd0b5a0df645c0060386 + languageName: node + linkType: hard + "b4a@npm:^1.6.4": version: 1.6.6 resolution: "b4a@npm:1.6.6" @@ -17379,6 +19208,19 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs2@npm:^0.4.14": + version: 0.4.14 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" + dependencies: + "@babel/compat-data": ^7.27.7 + "@babel/helper-define-polyfill-provider": ^0.6.5 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: d654334c1b4390d08282416144b7b6f3d74d2cab44b2bfa2b6405c828882c82907b8b67698dce1be046c218d2d4fe5bf7fb6d01879938f3129dad969e8cfc44d + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.10.6": version: 0.10.6 resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" @@ -17391,6 +19233,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs3@npm:^0.13.0": + version: 0.13.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.13.0" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.5 + core-js-compat: ^3.43.0 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: cf526031acd97ff2124e7c10e15047e6eeb0620d029c687f1dca99916a8fe6cac0e634b84c913db6cb68b7a024f82492ba8fdcc2a6266e7b05bdac2cba0c2434 + languageName: node + linkType: hard + "babel-plugin-polyfill-regenerator@npm:^0.6.1": version: 0.6.2 resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" @@ -17402,12 +19256,23 @@ __metadata: languageName: node linkType: hard -"babel-plugin-react-compiler@npm:19.1.0-rc.3": - version: 19.1.0-rc.3 - resolution: "babel-plugin-react-compiler@npm:19.1.0-rc.3" +"babel-plugin-polyfill-regenerator@npm:^0.6.5": + version: 0.6.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.5 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb + languageName: node + linkType: hard + +"babel-plugin-react-compiler@npm:latest": + version: 1.0.0 + resolution: "babel-plugin-react-compiler@npm:1.0.0" dependencies: "@babel/types": ^7.26.0 - checksum: 1435e8a42fc6025642d98678c21d14974db0652cb799601369e962f5ea99cb3d2e2bcc0f67d464c1f179629d8e06464c40df248a984bab201243a327598cb3ff + checksum: 4c5c6c209a27477b7af8ce2361f3e5ddbc1ef59ebac5fc9d85cf91c3921752c19ac814bb7f98e7f55084db3cb585fc966aa05191018fa70e4444f2f4a980fff2 languageName: node linkType: hard @@ -17434,6 +19299,24 @@ __metadata: languageName: node linkType: hard +"babel-plugin-syntax-hermes-parser@npm:0.29.1": + version: 0.29.1 + resolution: "babel-plugin-syntax-hermes-parser@npm:0.29.1" + dependencies: + hermes-parser: 0.29.1 + checksum: bbb1eed253b4255f8c572e1cb2664868d9aa2238363e48a2d1e95e952b2c1d59e86a7051f44956407484df2c9bc6623608740eec10e2095946d241b795262cec + languageName: node + linkType: hard + +"babel-plugin-syntax-hermes-parser@npm:^0.28.0": + version: 0.28.1 + resolution: "babel-plugin-syntax-hermes-parser@npm:0.28.1" + dependencies: + hermes-parser: 0.28.1 + checksum: 2cbc921e663463480ead9ccc8bb229a5196032367ba2b5ccb18a44faa3afa84b4dc493297749983b9a837a3d76b0b123664aecc06f9122618c3246f03e076a9d + languageName: node + linkType: hard + "babel-plugin-transform-flow-enums@npm:^0.0.2": version: 0.0.2 resolution: "babel-plugin-transform-flow-enums@npm:0.0.2" @@ -17555,7 +19438,7 @@ __metadata: languageName: node linkType: hard -"bare-events@npm:^2.2.0": +"bare-events@npm:^2.0.0, bare-events@npm:^2.2.0": version: 2.2.2 resolution: "bare-events@npm:2.2.2" checksum: 154d3fc044cc171d3b85a89b768e626417b60c050123ac2ac10fc002152b4bdeb359ed1453ad54c0f1d05a7786f780d3b976af68e55c09fe4579d8466d3ff256 @@ -17563,20 +19446,31 @@ __metadata: linkType: hard "bare-events@npm:^2.5.4, bare-events@npm:^2.7.0": - version: 2.8.0 - resolution: "bare-events@npm:2.8.0" + version: 2.8.1 + resolution: "bare-events@npm:2.8.1" peerDependencies: bare-abort-controller: "*" peerDependenciesMeta: bare-abort-controller: optional: true - checksum: e7debb8d6a668232b07e645895ee569b15005bd99a60966800301dc45e9a687c8a403460dad69ec4b3200d623250210e3ac81181e2f024591ee13c698e77477c + checksum: 18511c49cd23d72ddc660530a7d802bcd767d343110ebcf47829ae312bddbc8eff81d08190d62364f1be14041242f30d24d9c755043a648f44d0fda47b92fdff + languageName: node + linkType: hard + +"bare-fs@npm:^2.1.1": + version: 2.2.3 + resolution: "bare-fs@npm:2.2.3" + dependencies: + bare-events: ^2.0.0 + bare-path: ^2.0.0 + streamx: ^2.13.0 + checksum: 598f1998f08b19c7f1eea76291e5c93664c82b60b997e56aa0e6dea05193d74d3865cfe1172d05684893253ef700ce3abb4e76c55da799fed2ee7a82597a5c44 languageName: node linkType: hard "bare-fs@npm:^4.0.1": - version: 4.4.10 - resolution: "bare-fs@npm:4.4.10" + version: 4.5.0 + resolution: "bare-fs@npm:4.5.0" dependencies: bare-events: ^2.5.4 bare-path: ^3.0.0 @@ -17588,7 +19482,14 @@ __metadata: peerDependenciesMeta: bare-buffer: optional: true - checksum: 7a3990b7e76ccdfda39068cd4f9b9be79338fd06b661748917f59e633f65edcd6cc63399f69379ee53ba6a6b6d5244795732329cdfef9e11193cd50c07c3b878 + checksum: 5330df4c87092f43f808518a84b7505d07554c5755b01f780a4bb1b7d88918b118fa46e8b290911782b933aba9f63cba7baa7866d58f5de5743f46237353117c + languageName: node + linkType: hard + +"bare-os@npm:^2.1.0": + version: 2.2.1 + resolution: "bare-os@npm:2.2.1" + checksum: 7d870d8955531809253dfbceeda5b68e8396ef640166f8ff6c4c5e344f18a6bc9253f6d5e7d9ae2841426b66e9b7b1a39b2a102e6b23e1ddff26ad8a8981af81 languageName: node linkType: hard @@ -17599,6 +19500,15 @@ __metadata: languageName: node linkType: hard +"bare-path@npm:^2.0.0, bare-path@npm:^2.1.0": + version: 2.1.1 + resolution: "bare-path@npm:2.1.1" + dependencies: + bare-os: ^2.1.0 + checksum: f25710be4ee4106f15b405b85ceea5c8da799f803b237008dc4a3533c0db01acd2500742f2204a37909c6871949725fb1907cf95434d80710bf832716d0da8df + languageName: node + linkType: hard + "bare-path@npm:^3.0.0": version: 3.0.0 resolution: "bare-path@npm:3.0.0" @@ -17626,11 +19536,11 @@ __metadata: linkType: hard "bare-url@npm:^2.2.2": - version: 2.3.0 - resolution: "bare-url@npm:2.3.0" + version: 2.3.2 + resolution: "bare-url@npm:2.3.2" dependencies: bare-path: ^3.0.0 - checksum: 3bc031d05bd35f1cc48e276b6a9c284c18b133c85575d758a44642d30a191e7d5548d469b2dc55e384cbabb3a4f44be5cafbad8653b330fe6bcefe6d3ec81c73 + checksum: 7b2a6335a55a010ffcc863f62cc5bfaa216b383bc05a8e7fb30caccb5600e09d403ad482fc671582eba531bbca4a891dba8eefa866f2e2d222b0a72f2460c340 languageName: node linkType: hard @@ -17701,6 +19611,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.8.9": + version: 2.8.17 + resolution: "baseline-browser-mapping@npm:2.8.17" + bin: + baseline-browser-mapping: dist/cli.js + checksum: 2ff31d36b475b628b551e0b29b2fb1ac36f903b99392da4da208ef718beefdc659b24b612a2922664fcffa1fc9bf733bb52d2e29756dcf09c54d764c64f0b964 + languageName: node + linkType: hard + "basic-auth@npm:~2.0.1": version: 2.0.1 resolution: "basic-auth@npm:2.0.1" @@ -17740,6 +19659,13 @@ __metadata: languageName: node linkType: hard +"before-after-hook@npm:^4.0.0": + version: 4.0.0 + resolution: "before-after-hook@npm:4.0.0" + checksum: a8cbd4d3c48f42f44307ef5966be152b836d2e5908834f2f885ddf104c2e2ba66dbb5e6ef89a37e77371b1d22d5c75b74df1472286c684a037c1a6db43f5617b + languageName: node + linkType: hard + "better-opn@npm:~3.0.2": version: 3.0.2 resolution: "better-opn@npm:3.0.2" @@ -18139,6 +20065,21 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.20.4, browserslist@npm:^4.26.3": + version: 4.26.3 + resolution: "browserslist@npm:4.26.3" + dependencies: + baseline-browser-mapping: ^2.8.9 + caniuse-lite: ^1.0.30001746 + electron-to-chromium: ^1.5.227 + node-releases: ^2.0.21 + update-browserslist-db: ^1.1.3 + bin: + browserslist: cli.js + checksum: aa5bbcda9db1eeb9952b4c2f11f9a5a2247da7bcce7fa14d3cc215e67246a93394eda2f86378a41c3f73e6e1a1561bf0e7eade93c5392cb6d37bc66f70d0c53f + languageName: node + linkType: hard + "browserslist@npm:^4.21.9": version: 4.22.1 resolution: "browserslist@npm:4.22.1" @@ -18326,6 +20267,15 @@ __metadata: languageName: node linkType: hard +"bundle-name@npm:^4.1.0": + version: 4.1.0 + resolution: "bundle-name@npm:4.1.0" + dependencies: + run-applescript: ^7.0.0 + checksum: 1d966c8d2dbf4d9d394e53b724ac756c2414c45c01340b37743621f59cc565a435024b394ddcb62b9b335d1c9a31f4640eb648c3fec7f97ee74dc0694c9beb6c + languageName: node + linkType: hard + "bunyamin@npm:^1.5.2": version: 1.6.2 resolution: "bunyamin@npm:1.6.2" @@ -18411,6 +20361,31 @@ __metadata: languageName: node linkType: hard +"c12@npm:3.3.0": + version: 3.3.0 + resolution: "c12@npm:3.3.0" + dependencies: + chokidar: ^4.0.3 + confbox: ^0.2.2 + defu: ^6.1.4 + dotenv: ^17.2.2 + exsolve: ^1.0.7 + giget: ^2.0.0 + jiti: ^2.5.1 + ohash: ^2.0.11 + pathe: ^2.0.3 + perfect-debounce: ^2.0.0 + pkg-types: ^2.3.0 + rc9: ^2.1.2 + peerDependencies: + magicast: ^0.3.5 + peerDependenciesMeta: + magicast: + optional: true + checksum: ec8ca3d5ee15a9e59008350cd1a2120f3bd9fd8c720486c3490d5bcf5c6b2de49b74737211623d5ae7afc4be7f122ee004277fdff7f677d9aac26123e7a6ab6f + languageName: node + linkType: hard + "cacache@npm:^17.0.0": version: 17.1.4 resolution: "cacache@npm:17.1.4" @@ -18617,6 +20592,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001746": + version: 1.0.30001751 + resolution: "caniuse-lite@npm:1.0.30001751" + checksum: d11e25c44e40c21e7b7492a25c9fd60f4c04e94aa265573f7c487666f5e1b5ca3ed09d09560336f959237063616255cb294d415511bb6cf0486eb2cb6a3a4318 + languageName: node + linkType: hard + "canvaskit-wasm@npm:0.40.0": version: 0.40.0 resolution: "canvaskit-wasm@npm:0.40.0" @@ -18670,7 +20652,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.0.1, chalk@npm:^5.1.2, chalk@npm:^5.4.1": +"chalk@npm:^5.0.1, chalk@npm:^5.1.2, chalk@npm:^5.4.1, chalk@npm:^5.6.2": version: 5.6.2 resolution: "chalk@npm:5.6.2" checksum: 4ee2d47a626d79ca27cb5299ecdcce840ef5755e287412536522344db0fc51ca0f6d6433202332c29e2288c6a90a2b31f3bd626bc8c14743b6b6ee28abd3b796 @@ -18790,7 +20772,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": +"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1, chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -18869,6 +20851,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^4.3.0": + version: 4.3.1 + resolution: "ci-info@npm:4.3.1" + checksum: 66c159d92648e8a07acab0a3a0681bff6ccc39aa44916263208c4d97bbbeedbbc886d7611fd30c21df1aa624ce3c6fcdfde982e74689e3e014e064e1d0805f94 + languageName: node + linkType: hard + "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": version: 1.0.4 resolution: "cipher-base@npm:1.0.4" @@ -18888,6 +20877,15 @@ __metadata: languageName: node linkType: hard +"citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: ^3.2.3 + checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab + languageName: node + linkType: hard + "cjs-module-lexer@npm:^1.0.0": version: 1.2.3 resolution: "cjs-module-lexer@npm:1.2.3" @@ -18943,6 +20941,13 @@ __metadata: languageName: node linkType: hard +"cli-spinners@npm:^3.2.0": + version: 3.3.0 + resolution: "cli-spinners@npm:3.3.0" + checksum: c3b9c31d96c9158f4d7140557fffb8c1caea2169d7b895374dd3c2f159267aa0db3b72f36bfcc3bbe3532a7ed162d07dc5c0dc3117e1c0dfe4d387e1d723d616 + languageName: node + linkType: hard + "cli-truncate@npm:^4.0.0": version: 4.0.0 resolution: "cli-truncate@npm:4.0.0" @@ -19077,6 +21082,13 @@ __metadata: languageName: node linkType: hard +"code-block-writer@npm:^13.0.3": + version: 13.0.3 + resolution: "code-block-writer@npm:13.0.3" + checksum: 8e234f0ec2db9625d5efb9f05bdae79da6559bb4d9df94a6aa79a89a7b5ae25093b70d309fc5122840c9c07995cb14b4dd3f98a30f8878e3a3372e177df79454 + languageName: node + linkType: hard + "coinselect@npm:3.1.13": version: 3.1.13 resolution: "coinselect@npm:3.1.13" @@ -19248,9 +21260,9 @@ __metadata: linkType: hard "commander@npm:^14.0.0": - version: 14.0.1 - resolution: "commander@npm:14.0.1" - checksum: a072b714e73a69cc85e68f588a3c910f330e5b31861fe1f9abc9312e81bdca193676fc1fea99f739b4237ee903751fb20b4adcdd409ec4c4df0964792e9daa47 + version: 14.0.2 + resolution: "commander@npm:14.0.2" + checksum: 0a9e549565d368dde2965821833324069b92b099b415c2106996e47db1f0b8c10c77367e9876873c00a52ca627af4c7472eba9b51dc0d6a3ef152ea063d3e9e9 languageName: node linkType: hard @@ -19289,6 +21301,18 @@ __metadata: languageName: node linkType: hard +"commitlint@npm:^19.8.1": + version: 19.8.1 + resolution: "commitlint@npm:19.8.1" + dependencies: + "@commitlint/cli": ^19.8.1 + "@commitlint/types": ^19.8.1 + bin: + commitlint: cli.js + checksum: 23e9a34b074361ec66c89573b1eba3ab65e7fe8044e22c3f044db87071817d8fe32e9e63313703c65385f5db1ab8e204eb2b3fa5e5a9481bc2fdef56eab478c1 + languageName: node + linkType: hard + "common-path-prefix@npm:^3.0.0": version: 3.0.0 resolution: "common-path-prefix@npm:3.0.0" @@ -19303,6 +21327,16 @@ __metadata: languageName: node linkType: hard +"compare-func@npm:^2.0.0": + version: 2.0.0 + resolution: "compare-func@npm:2.0.0" + dependencies: + array-ify: ^1.0.0 + dot-prop: ^5.1.0 + checksum: fb71d70632baa1e93283cf9d80f30ac97f003aabee026e0b4426c9716678079ef5fea7519b84d012cbed938c476493866a38a79760564a9e21ae9433e40e6f0d + languageName: node + linkType: hard + "compare-versions@npm:^6.0.0": version: 6.1.1 resolution: "compare-versions@npm:6.1.1" @@ -19378,6 +21412,25 @@ __metadata: languageName: node linkType: hard +"concat-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "concat-stream@npm:2.0.0" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.0.2 + typedarray: ^0.0.6 + checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 + languageName: node + linkType: hard + +"confbox@npm:^0.2.2": + version: 0.2.2 + resolution: "confbox@npm:0.2.2" + checksum: 335bc40d58f2785d2f8c5d45f0224e160dd634d42984ecf75b06addb6fe5f9584502ac9845d6f08f8ec066c8a796fd8b3c9ae9e8c7735047aa141d0e83469ab4 + languageName: node + linkType: hard + "connect@npm:^3.6.5, connect@npm:^3.7.0": version: 3.7.0 resolution: "connect@npm:3.7.0" @@ -19390,7 +21443,7 @@ __metadata: languageName: node linkType: hard -"consola@npm:3.4.2": +"consola@npm:3.4.2, consola@npm:^3.4.0, consola@npm:^3.4.2": version: 3.4.2 resolution: "consola@npm:3.4.2" checksum: 32d1339e0505842f033ca34cb4572a841281caa367f438b785d3b284ab2a06134f009e605908480402c5f57f56c1e3210090c37e6417923416f76ce730d39361 @@ -19427,6 +21480,198 @@ __metadata: languageName: node linkType: hard +"conventional-changelog-angular@npm:^7.0.0": + version: 7.0.0 + resolution: "conventional-changelog-angular@npm:7.0.0" + dependencies: + compare-func: ^2.0.0 + checksum: 2478962ad7ce42878449ba3568347d704f22c5c9af1cd36916b5600734bd7f82c09712a338c649195c44e907f1b0372ce52d6cb51df643f495c89af05ad4bc48 + languageName: node + linkType: hard + +"conventional-changelog-angular@npm:^8.0.0": + version: 8.0.0 + resolution: "conventional-changelog-angular@npm:8.0.0" + dependencies: + compare-func: ^2.0.0 + checksum: 71f492cb4dccd46174430517177054be2e2097f1264c55419a79aa94fe4d163f98aeab7da6836473470fbfc920051a9554f46498989bdd6438648c2d7e32b42c + languageName: node + linkType: hard + +"conventional-changelog-atom@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-atom@npm:5.0.0" + checksum: bc35ec5476b81544b534c3e31ff3a8f59b6484c3fd34c93303e6709c83870ea7f6923e0b97052bbbc118d4cc2d3de4501e9120c9704ff40e86c70e8831040610 + languageName: node + linkType: hard + +"conventional-changelog-codemirror@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-codemirror@npm:5.0.0" + checksum: babb18b6cfc0609b8af5ba679b8c11bdb0efad68b2401e0c014df38f195ebed27a6c16d55ca07081aeae0121dd7293544acf341de6dd3f54ea6bd90a2fbf410a + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^7.0.2": + version: 7.0.2 + resolution: "conventional-changelog-conventionalcommits@npm:7.0.2" + dependencies: + compare-func: ^2.0.0 + checksum: e17ac5970ae09d6e9b0c3a7edaed075b836c0c09c34c514589cbe06554f46ed525067fa8150a8467cc03b1cf9af2073e7ecf48790d4f5ea399921b1cbe313711 + languageName: node + linkType: hard + +"conventional-changelog-conventionalcommits@npm:^8.0.0": + version: 8.0.0 + resolution: "conventional-changelog-conventionalcommits@npm:8.0.0" + dependencies: + compare-func: ^2.0.0 + checksum: af80a3294ec833b6ca6b13874c275952391319dd0ebb771dbcf0b837a2f8504c197e894a3fc5def44574a04daa038a94cae8d00f8222e843bc788b6911a1eff4 + languageName: node + linkType: hard + +"conventional-changelog-core@npm:^8.0.0": + version: 8.0.0 + resolution: "conventional-changelog-core@npm:8.0.0" + dependencies: + "@hutson/parse-repository-url": ^5.0.0 + add-stream: ^1.0.0 + conventional-changelog-writer: ^8.0.0 + conventional-commits-parser: ^6.0.0 + git-raw-commits: ^5.0.0 + git-semver-tags: ^8.0.0 + hosted-git-info: ^7.0.0 + normalize-package-data: ^6.0.0 + read-package-up: ^11.0.0 + read-pkg: ^9.0.0 + checksum: ca295a0c68592fbdd80149a496ccddf4f4e852e88f60826213c22a34c05c825984ce6d305082467268887629aeb4abae0f00e724420896090c78475661dfccda + languageName: node + linkType: hard + +"conventional-changelog-ember@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-ember@npm:5.0.0" + checksum: a1476f149424dbc5b60420c41c1c1691a5b0e86448dca9f86c91474ee54ac404d3d59b3e75beb43da4db3c696a4189366f67c2431c6d8dc2276fad0d2f327a67 + languageName: node + linkType: hard + +"conventional-changelog-eslint@npm:^6.0.0": + version: 6.0.0 + resolution: "conventional-changelog-eslint@npm:6.0.0" + checksum: e508b44ab2acc32430a0ea75a724285eed5034fecade77f9e5aa89a176d31c3ed4cf2d54a111a8cfe0f99bd69e1aeb2a046eeddc7e035605976d4cf61d6ab911 + languageName: node + linkType: hard + +"conventional-changelog-express@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-express@npm:5.0.0" + checksum: f344f057a8756a99637029b912d2c0eb569b68e34983e8948c790bb4bfef40758b2760c0ab720b3943354da3fa76d3d77d8f42f4f4564e07240b574c3bad5d6c + languageName: node + linkType: hard + +"conventional-changelog-jquery@npm:^6.0.0": + version: 6.0.0 + resolution: "conventional-changelog-jquery@npm:6.0.0" + checksum: 845134cf5d15c455f84ac9425c7307608aaa44cc5c27abf2849a35c86c62cc7134307fa67bc412aee0c1d0ef42335423c18aca66a95119c971d9c5b4a1f44c42 + languageName: node + linkType: hard + +"conventional-changelog-jshint@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-jshint@npm:5.0.0" + dependencies: + compare-func: ^2.0.0 + checksum: 9db03b16610f2fbc448646cbb23f1ee28704ffa1175279ee39d51e8e0010bb82000385e662633900220f6834ad84b1ecf8ccbdebcf4ae0d7710a5599de9b0d52 + languageName: node + linkType: hard + +"conventional-changelog-preset-loader@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-changelog-preset-loader@npm:5.0.0" + checksum: 7630c2826b43f8f546f0575b46d3eb8c2ac2b5bcfae60b7d1186e9a87f07b7a689d9463afc125a40ab84a030574c9ce7965dd96e6506323e5a7d1ac2b9f2df19 + languageName: node + linkType: hard + +"conventional-changelog-writer@npm:^8.0.0": + version: 8.2.0 + resolution: "conventional-changelog-writer@npm:8.2.0" + dependencies: + conventional-commits-filter: ^5.0.0 + handlebars: ^4.7.7 + meow: ^13.0.0 + semver: ^7.5.2 + bin: + conventional-changelog-writer: dist/cli/index.js + checksum: 0a7b62fdc06dbe3e8f0feff2c51295ebc03d8046db73111b3c6a595472885551adf9ef2eeb741c43794466e58c1f23a055160c8aef08cacfe769b86ea2b7c611 + languageName: node + linkType: hard + +"conventional-changelog@npm:^6.0.0": + version: 6.0.0 + resolution: "conventional-changelog@npm:6.0.0" + dependencies: + conventional-changelog-angular: ^8.0.0 + conventional-changelog-atom: ^5.0.0 + conventional-changelog-codemirror: ^5.0.0 + conventional-changelog-conventionalcommits: ^8.0.0 + conventional-changelog-core: ^8.0.0 + conventional-changelog-ember: ^5.0.0 + conventional-changelog-eslint: ^6.0.0 + conventional-changelog-express: ^5.0.0 + conventional-changelog-jquery: ^6.0.0 + conventional-changelog-jshint: ^5.0.0 + conventional-changelog-preset-loader: ^5.0.0 + checksum: 78a2a74a19385e45ea69a9ef410de7cc9627cb2bada8b26850ff55999dfc3e5600138ee636dbd0c17159dcdcd81499b64d557d34dfb641d82d1b0d107c684c10 + languageName: node + linkType: hard + +"conventional-commits-filter@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-commits-filter@npm:5.0.0" + checksum: 2345546ea9e40412558d508311d7729b38f8d4c0fd554837c10721a432e8598ec1152320f6b601a9c11c023a31bccbb5a12067736b2227de8591f4de707e11a7 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^5.0.0": + version: 5.0.0 + resolution: "conventional-commits-parser@npm:5.0.0" + dependencies: + JSONStream: ^1.3.5 + is-text-path: ^2.0.0 + meow: ^12.0.1 + split2: ^4.0.0 + bin: + conventional-commits-parser: cli.mjs + checksum: bb92a0bfe41802330d2d14ddb0f912fd65dd355f1aa294e708f4891aac95c580919a70580b9f26563c24c3335baaed2ce003104394a8fa5ba61eeb3889e45df0 + languageName: node + linkType: hard + +"conventional-commits-parser@npm:^6.0.0": + version: 6.2.0 + resolution: "conventional-commits-parser@npm:6.2.0" + dependencies: + meow: ^13.0.0 + bin: + conventional-commits-parser: dist/cli/index.js + checksum: 57fc957d80d46b575a6ed2b193da8ea84dc85c82c54632ad1de7dcb9f8c22c55bff046827f991944c4bbe446f84b8196dd6b062cd5461f238cf75c719d904e20 + languageName: node + linkType: hard + +"conventional-recommended-bump@npm:^10.0.0": + version: 10.0.0 + resolution: "conventional-recommended-bump@npm:10.0.0" + dependencies: + "@conventional-changelog/git-client": ^1.0.0 + conventional-changelog-preset-loader: ^5.0.0 + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.0.0 + meow: ^13.0.0 + bin: + conventional-recommended-bump: dist/cli/index.js + checksum: d4a72f48ceec9947bf6f4ae346574262c8c991930a4b8d6d5d43cfd03bcf9531f74200ce60d43a251fd537b5292668f6480c17fe4ed458b4f84418db2be3af85 + languageName: node + linkType: hard + "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -19471,6 +21716,15 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.43.0": + version: 3.46.0 + resolution: "core-js-compat@npm:3.46.0" + dependencies: + browserslist: ^4.26.3 + checksum: 16d381c51e34d38ecc65d429d5a5c1dbd198f70b5a0a6256a3a41dcb8523e07f0a8682f6349298a55ff6e9d039e131d67b07fe863047a28672ae5f10373c57cf + languageName: node + linkType: hard + "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" @@ -19485,6 +21739,19 @@ __metadata: languageName: node linkType: hard +"cosmiconfig-typescript-loader@npm:^6.1.0": + version: 6.2.0 + resolution: "cosmiconfig-typescript-loader@npm:6.2.0" + dependencies: + jiti: ^2.6.1 + peerDependencies: + "@types/node": "*" + cosmiconfig: ">=9" + typescript: ">=5" + checksum: 2680bb585de1185aa23ba678cb0426cba1be8fa0a9d286f71c2ce5bd63f23e5b8f726161673a16babb2aa0e7d033fda8774268a025fb63f548d1c75977292212 + languageName: node + linkType: hard + "cosmiconfig@npm:^5.0.5": version: 5.2.1 resolution: "cosmiconfig@npm:5.2.1" @@ -20123,6 +22390,13 @@ __metadata: languageName: node linkType: hard +"dargs@npm:^8.0.0": + version: 8.1.0 + resolution: "dargs@npm:8.1.0" + checksum: 33f1b8f5f08e72c8a28355a87c0e1a9b6a0fec99252ecd9cf4735e65dd5f2e19747c860251ed5747b38e7204c7915fd7a7146aee5aaef5882c69169aae8b1d09 + languageName: node + linkType: hard + "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" @@ -20298,7 +22572,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.4.3": +"debug@npm:^4.4.1, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -20394,6 +22668,13 @@ __metadata: languageName: node linkType: hard +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 + languageName: node + linkType: hard + "dedent@npm:^1.0.0": version: 1.5.1 resolution: "dedent@npm:1.5.1" @@ -20467,6 +22748,23 @@ __metadata: languageName: node linkType: hard +"default-browser-id@npm:^5.0.0": + version: 5.0.0 + resolution: "default-browser-id@npm:5.0.0" + checksum: 185bfaecec2c75fa423544af722a3469b20704c8d1942794a86e4364fe7d9e8e9f63241a5b769d61c8151993bc65833a5b959026fa1ccea343b3db0a33aa6deb + languageName: node + linkType: hard + +"default-browser@npm:^5.2.1": + version: 5.2.1 + resolution: "default-browser@npm:5.2.1" + dependencies: + bundle-name: ^4.1.0 + default-browser-id: ^5.0.0 + checksum: afab7eff7b7f5f7a94d9114d1ec67273d3fbc539edf8c0f80019879d53aa71e867303c6f6d7cffeb10a6f3cfb59d4f963dba3f9c96830b4540cc7339a1bf9840 + languageName: node + linkType: hard + "defaults@npm:^1.0.3": version: 1.0.4 resolution: "defaults@npm:1.0.4" @@ -20514,6 +22812,13 @@ __metadata: languageName: node linkType: hard +"define-lazy-prop@npm:^3.0.0": + version: 3.0.0 + resolution: "define-lazy-prop@npm:3.0.0" + checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 + languageName: node + linkType: hard + "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" @@ -20532,6 +22837,13 @@ __metadata: languageName: node linkType: hard +"defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 + languageName: node + linkType: hard + "degenerator@npm:^5.0.0": version: 5.0.1 resolution: "degenerator@npm:5.0.1" @@ -20543,6 +22855,50 @@ __metadata: languageName: node linkType: hard +"del-cli@npm:^6.0.0": + version: 6.0.0 + resolution: "del-cli@npm:6.0.0" + dependencies: + del: ^8.0.0 + meow: ^13.2.0 + bin: + del: cli.js + del-cli: cli.js + checksum: 83591847823d06a68bd07daa8b92b1092c30ac02acb320b8eff1f265c6ca633657d066070320a7fd7dba3ea4993be32470d557bf33e0ce94e026ee289135eac7 + languageName: node + linkType: hard + +"del@npm:^6.1.1": + version: 6.1.1 + resolution: "del@npm:6.1.1" + dependencies: + globby: ^11.0.1 + graceful-fs: ^4.2.4 + is-glob: ^4.0.1 + is-path-cwd: ^2.2.0 + is-path-inside: ^3.0.2 + p-map: ^4.0.0 + rimraf: ^3.0.2 + slash: ^3.0.0 + checksum: 563288b73b8b19a7261c47fd21a330eeab6e2acd7c6208c49790dfd369127120dd7836cdf0c1eca216b77c94782a81507eac6b4734252d3bef2795cb366996b6 + languageName: node + linkType: hard + +"del@npm:^8.0.0": + version: 8.0.1 + resolution: "del@npm:8.0.1" + dependencies: + globby: ^14.0.2 + is-glob: ^4.0.3 + is-path-cwd: ^3.0.0 + is-path-inside: ^4.0.0 + p-map: ^7.0.2 + presentable-error: ^0.0.1 + slash: ^5.1.0 + checksum: 53ed4a379a68c90e7d6d3bcce09c49229e77de9a946d0a5fc25f45b16c950cb8665986b7d0d0423416c03bfd43e0f31e528c5a19c558fe47449be9d6fae7f846 + languageName: node + linkType: hard + "delaunator@npm:5": version: 5.0.1 resolution: "delaunator@npm:5.0.1" @@ -20616,6 +22972,13 @@ __metadata: languageName: node linkType: hard +"destr@npm:^2.0.3": + version: 2.0.5 + resolution: "destr@npm:2.0.5" + checksum: e6d5b9e922f528527cd98035249b4d34077828debd2be448a33e268ac1f803bd9a53e7cf0f5184ef68a67573b7f0a6033a89913f61eadaf0e180de49b148606e + languageName: node + linkType: hard + "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -20879,6 +23242,15 @@ __metadata: languageName: node linkType: hard +"dot-prop@npm:^5.1.0": + version: 5.3.0 + resolution: "dot-prop@npm:5.3.0" + dependencies: + is-obj: ^2.0.0 + checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea + languageName: node + linkType: hard + "dotenv-expand@npm:^10.0.0": version: 10.0.0 resolution: "dotenv-expand@npm:10.0.0" @@ -20909,7 +23281,7 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^17.2.0": +"dotenv@npm:^17.2.0, dotenv@npm:^17.2.2": version: 17.2.3 resolution: "dotenv@npm:17.2.3" checksum: fde23eb88649041ec7a0f6a47bbe59cac3c454fc2007cf2e40b9c984aaf0636347218c56cfbbf067034b0a73f530a2698a19b4058695787eb650ec69fe234624 @@ -21105,6 +23477,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.227": + version: 1.5.237 + resolution: "electron-to-chromium@npm:1.5.237" + checksum: 5905e2808dc6243ced0a83537afbafedec20c063feb6403a678b612a7855d79bc6ecb7d094bdab71f54173cf2ae5d1d8070b0c31572025001c94de62af84f5f8 + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.5.28": version: 1.5.32 resolution: "electron-to-chromium@npm:1.5.32" @@ -21801,35 +24180,35 @@ __metadata: linkType: hard "esbuild@npm:~0.25.0": - version: 0.25.10 - resolution: "esbuild@npm:0.25.10" - dependencies: - "@esbuild/aix-ppc64": 0.25.10 - "@esbuild/android-arm": 0.25.10 - "@esbuild/android-arm64": 0.25.10 - "@esbuild/android-x64": 0.25.10 - "@esbuild/darwin-arm64": 0.25.10 - "@esbuild/darwin-x64": 0.25.10 - "@esbuild/freebsd-arm64": 0.25.10 - "@esbuild/freebsd-x64": 0.25.10 - "@esbuild/linux-arm": 0.25.10 - "@esbuild/linux-arm64": 0.25.10 - "@esbuild/linux-ia32": 0.25.10 - "@esbuild/linux-loong64": 0.25.10 - "@esbuild/linux-mips64el": 0.25.10 - "@esbuild/linux-ppc64": 0.25.10 - "@esbuild/linux-riscv64": 0.25.10 - "@esbuild/linux-s390x": 0.25.10 - "@esbuild/linux-x64": 0.25.10 - "@esbuild/netbsd-arm64": 0.25.10 - "@esbuild/netbsd-x64": 0.25.10 - "@esbuild/openbsd-arm64": 0.25.10 - "@esbuild/openbsd-x64": 0.25.10 - "@esbuild/openharmony-arm64": 0.25.10 - "@esbuild/sunos-x64": 0.25.10 - "@esbuild/win32-arm64": 0.25.10 - "@esbuild/win32-ia32": 0.25.10 - "@esbuild/win32-x64": 0.25.10 + version: 0.25.12 + resolution: "esbuild@npm:0.25.12" + dependencies: + "@esbuild/aix-ppc64": 0.25.12 + "@esbuild/android-arm": 0.25.12 + "@esbuild/android-arm64": 0.25.12 + "@esbuild/android-x64": 0.25.12 + "@esbuild/darwin-arm64": 0.25.12 + "@esbuild/darwin-x64": 0.25.12 + "@esbuild/freebsd-arm64": 0.25.12 + "@esbuild/freebsd-x64": 0.25.12 + "@esbuild/linux-arm": 0.25.12 + "@esbuild/linux-arm64": 0.25.12 + "@esbuild/linux-ia32": 0.25.12 + "@esbuild/linux-loong64": 0.25.12 + "@esbuild/linux-mips64el": 0.25.12 + "@esbuild/linux-ppc64": 0.25.12 + "@esbuild/linux-riscv64": 0.25.12 + "@esbuild/linux-s390x": 0.25.12 + "@esbuild/linux-x64": 0.25.12 + "@esbuild/netbsd-arm64": 0.25.12 + "@esbuild/netbsd-x64": 0.25.12 + "@esbuild/openbsd-arm64": 0.25.12 + "@esbuild/openbsd-x64": 0.25.12 + "@esbuild/openharmony-arm64": 0.25.12 + "@esbuild/sunos-x64": 0.25.12 + "@esbuild/win32-arm64": 0.25.12 + "@esbuild/win32-ia32": 0.25.12 + "@esbuild/win32-x64": 0.25.12 dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -21885,7 +24264,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 1e7f8a3b3eaf3af3e260bd4a815f5b8c8a9fc9cbd640d05585a22df23381017dd41859ef7c5a36678416751c3056c88b6313f481736be8610d3524a5711e5655 + checksum: 3d1dc181338e2c44f4374508e9d0da3e7ae90f65d7f3f5d8076ff401a1726c5c9ecc86cfc825249349f1652e12d5ae13f02bcaa4d9487c88c7a11167f52ba353 languageName: node linkType: hard @@ -21896,7 +24275,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.2": +"escalade@npm:^3.1.2, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e @@ -21931,6 +24310,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^5.0.0": + version: 5.0.0 + resolution: "escape-string-regexp@npm:5.0.0" + checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e + languageName: node + linkType: hard + "escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" @@ -22157,6 +24543,26 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-prettier@npm:^5.5.4": + version: 5.5.4 + resolution: "eslint-plugin-prettier@npm:5.5.4" + dependencies: + prettier-linter-helpers: ^1.0.0 + synckit: ^0.11.7 + peerDependencies: + "@types/eslint": ">=8.0.0" + eslint: ">=8.0.0" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" + prettier: ">=3.0.0" + peerDependenciesMeta: + "@types/eslint": + optional: true + eslint-config-prettier: + optional: true + checksum: 0dd05ed85018ab0e98da80325b7bd4c4ab6dd684398f1270a7c8cf4261df714dd4502ba4c7f85f651aade9989da0a7d2adda03af8873b73b52014141abf385de + languageName: node + linkType: hard + "eslint-plugin-promise@npm:7.1.0": version: 7.1.0 resolution: "eslint-plugin-promise@npm:7.1.0" @@ -22184,6 +24590,15 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-react-hooks@npm:^5.2.0": + version: 5.2.0 + resolution: "eslint-plugin-react-hooks@npm:5.2.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: 5920736a78c0075488e7e30e04fbe5dba5b6b5a6c8c4b5742fdae6f9b8adf4ee387bc45dc6e03b4012865e6fd39d134da7b83a40f57c90cc9eecf80692824e3a + languageName: node + linkType: hard + "eslint-plugin-react-native-globals@npm:^0.1.1": version: 0.1.2 resolution: "eslint-plugin-react-native-globals@npm:0.1.2" @@ -22311,6 +24726,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 3a77e3f99a49109f6fb2c5b7784bc78f9743b834d238cdba4d66c602c6b52f19ed7bcd0a5c5dbbeae3a8689fd785e76c001799f53d2228b278282cf9f699fff5 + languageName: node + linkType: hard + "eslint@npm:8.50.0": version: 8.50.0 resolution: "eslint@npm:8.50.0" @@ -22358,6 +24780,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^10.0.1": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: ^8.15.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^4.2.1 + checksum: 5f9d0d7c81c1bca4bfd29a55270067ff9d575adb8c729a5d7f779c2c7b910bfc68ccf8ec19b29844b707440fc159a83868f22c8e87bbf7cbcb225ed067df6c85 + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -22418,6 +24851,13 @@ __metadata: languageName: node linkType: hard +"eta@npm:4.0.1": + version: 4.0.1 + resolution: "eta@npm:4.0.1" + checksum: 8e49f6de198da92739c1bc6b48b67282f7384faa4a89ac3877e4a933f189d8eb4cdce6cb041a9fcf4c3e0e83f63c4102077c43eb77931cad385d581aa993b295 + languageName: node + linkType: hard + "etag@npm:^1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" @@ -22571,6 +25011,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^4.0.3": + version: 4.1.0 + resolution: "execa@npm:4.1.0" + dependencies: + cross-spawn: ^7.0.0 + get-stream: ^5.0.0 + human-signals: ^1.1.1 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.0 + onetime: ^5.1.0 + signal-exit: ^3.0.2 + strip-final-newline: ^2.0.0 + checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 + languageName: node + linkType: hard + "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -22588,6 +25045,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^8.0.1, execa@npm:~8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^8.0.1 + human-signals: ^5.0.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^4.1.0 + strip-final-newline: ^3.0.0 + checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f + languageName: node + linkType: hard + "execa@npm:^9.6.0": version: 9.6.0 resolution: "execa@npm:9.6.0" @@ -22608,23 +25082,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:~8.0.1": - version: 8.0.1 - resolution: "execa@npm:8.0.1" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^8.0.1 - human-signals: ^5.0.0 - is-stream: ^3.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^5.1.0 - onetime: ^6.0.0 - signal-exit: ^4.1.0 - strip-final-newline: ^3.0.0 - checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f - languageName: node - linkType: hard - "exeunt@npm:1.1.0": version: 1.1.0 resolution: "exeunt@npm:1.1.0" @@ -23156,6 +25613,13 @@ __metadata: languageName: node linkType: hard +"exsolve@npm:^1.0.7": + version: 1.0.7 + resolution: "exsolve@npm:1.0.7" + checksum: 3adce048e4b1b08580aaabf38c7f92f78e1a662a1776fc02d7e9500d5ce4a30cd3f8e62206768821aa2c3bc2411a699146ebc5710ccc3d46e91199dbfff89f54 + languageName: node + linkType: hard + "extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -23229,6 +25693,13 @@ __metadata: languageName: node linkType: hard +"fast-content-type-parse@npm:^3.0.0": + version: 3.0.0 + resolution: "fast-content-type-parse@npm:3.0.0" + checksum: 490199423215b8a9c6e24a5a01a0d072af8ebfe24c13deac0a393dcac36b732295dd8cec5a2c4241249ed0fffc6983ba138f3001b13286afefb66360b6715a46 + languageName: node + linkType: hard + "fast-deep-equal@npm:^2.0.1": version: 2.0.1 resolution: "fast-deep-equal@npm:2.0.1" @@ -23290,6 +25761,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.3.3": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.8 + checksum: 0704d7b85c0305fd2cef37777337dfa26230fdd072dce9fb5c82a4b03156f3ffb8ed3e636033e65d45d2a5805a4e475825369a27404c0307f2db0c8eb3366fbd + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -23344,13 +25828,13 @@ __metadata: linkType: hard "fast-xml-parser@npm:^5.0.8": - version: 5.3.0 - resolution: "fast-xml-parser@npm:5.3.0" + version: 5.3.1 + resolution: "fast-xml-parser@npm:5.3.1" dependencies: strnum: ^2.1.0 bin: fxparser: src/cli/cli.js - checksum: fec3fad651269ebb908dd91ab90fa86fe28faa8353a81a05ec43682efcead163ff6edb125876dddd3845e53f8a3eb179c65ade8ee8b716bee436ae1151dc16e8 + checksum: 01e0a14f76b287728551f1840bf90a26306e0404d4decd81d1a5ece21efdce25d43d5d8e6068f1677467d6cead5995710ef823331a1db800fb2420080c87a769 languageName: node linkType: hard @@ -23397,6 +25881,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: bd537daa9d3cd53887eed35efa0eab2dbb1ca408790e10e024120e7a36c6e9ae2b33710cb8381e35def01bc9c1d7eaba746f886338413e68ff6ebaee07b9a6e8 + languageName: node + linkType: hard + "fecha@npm:^4.2.0": version: 4.2.3 resolution: "fecha@npm:4.2.3" @@ -23572,6 +26068,13 @@ __metadata: languageName: node linkType: hard +"find-up-simple@npm:^1.0.0": + version: 1.0.1 + resolution: "find-up-simple@npm:1.0.1" + checksum: 6e374bffda9f8425314eab47ef79752b6e77dcc95c0ad17d257aef48c32fe07bbc41bcafbd22941c25bb94fffaaaa8e178d928867d844c58100c7fe19ec82f72 + languageName: node + linkType: hard + "find-up@npm:^3.0.0": version: 3.0.0 resolution: "find-up@npm:3.0.0" @@ -23611,6 +26114,17 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^7.0.0": + version: 7.0.0 + resolution: "find-up@npm:7.0.0" + dependencies: + locate-path: ^7.2.0 + path-exists: ^5.0.0 + unicorn-magic: ^0.1.0 + checksum: e1c63860f9c04355ab2aa19f4be51c1a6e14a7d8cfbd8090e2be6da2a36a76995907cb45337a4b582b19b164388f71d6ab118869dc7bffb2093f2c089ecb95ee + languageName: node + linkType: hard + "find-yarn-workspace-root@npm:^2.0.0": version: 2.0.0 resolution: "find-yarn-workspace-root@npm:2.0.0" @@ -23923,7 +26437,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.0.0": +"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: @@ -24180,6 +26694,13 @@ __metadata: languageName: node linkType: hard +"get-east-asian-width@npm:^1.3.0": + version: 1.4.0 + resolution: "get-east-asian-width@npm:1.4.0" + checksum: 1d9a81a8004f4217ebef5d461875047d269e4b57e039558fd65130877cd4da8e3f61e1c4eada0c8b10e2816c7baf7d5fddb7006f561da13bc6f6dd19c1e964a4 + languageName: node + linkType: hard + "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" @@ -24275,7 +26796,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^5.1.0": +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: @@ -24334,11 +26855,11 @@ __metadata: linkType: hard "get-tsconfig@npm:^4.7.5": - version: 4.12.0 - resolution: "get-tsconfig@npm:4.12.0" + version: 4.13.0 + resolution: "get-tsconfig@npm:4.13.0" dependencies: resolve-pkg-maps: ^1.0.0 - checksum: 5a7f9f8f787473bc6cc337c77689d97c52c01e175b12b7d1f9d0d92e632de6f0fc046144009a49996438ae4feef98940867e16a16d67f1d1144e053e20efaac2 + checksum: b3cfa1316dd8842e038f6a3dc02ae87d9f3a227f14b79ac4b1c81bf6fc75de4dfc3355c4117612e183f5147dad49c8132841c7fdd7a4508531d820a9b90acc51 languageName: node linkType: hard @@ -24379,6 +26900,78 @@ __metadata: languageName: node linkType: hard +"giget@npm:^2.0.0": + version: 2.0.0 + resolution: "giget@npm:2.0.0" + dependencies: + citty: ^0.1.6 + consola: ^3.4.0 + defu: ^6.1.4 + node-fetch-native: ^1.6.6 + nypm: ^0.6.0 + pathe: ^2.0.3 + bin: + giget: dist/cli.mjs + checksum: 9957b75bc52e0c49203208e6d1e40511dacd0654e3f664323997eaeffb8b30080db393a44d206039f12bb5a29250546f574316e0593c42b9daae056f522d1603 + languageName: node + linkType: hard + +"git-raw-commits@npm:^4.0.0": + version: 4.0.0 + resolution: "git-raw-commits@npm:4.0.0" + dependencies: + dargs: ^8.0.0 + meow: ^12.0.1 + split2: ^4.0.0 + bin: + git-raw-commits: cli.mjs + checksum: 95546f4afcb33cf00ff638f7fec55ad61d4d927447737900e1f6fcbbdbb341b3f150908424cc62acb6d9faaea6f1e8f55d0697b899f0589af9d2733afb20abfb + languageName: node + linkType: hard + +"git-raw-commits@npm:^5.0.0": + version: 5.0.0 + resolution: "git-raw-commits@npm:5.0.0" + dependencies: + "@conventional-changelog/git-client": ^1.0.0 + meow: ^13.0.0 + bin: + git-raw-commits: src/cli.js + checksum: 8e2767f3a1d751b9aef0f8e84259c87114f1691a0e90ee915ebff5b2f5f8e72d7ea573ff2930be4286c9e067e85713ae67c0645c02e647c5a9c0f5b00bfd6284 + languageName: node + linkType: hard + +"git-semver-tags@npm:^8.0.0": + version: 8.0.0 + resolution: "git-semver-tags@npm:8.0.0" + dependencies: + "@conventional-changelog/git-client": ^1.0.0 + meow: ^13.0.0 + bin: + git-semver-tags: src/cli.js + checksum: 49ac7dc10d0a025eaac8bbdcfe9b0e9e596701a1b4ee78b16769995bc9f4bb8230741c37471b6534b804896c01a354effe2d252d727544c4dc5c5f314b559305 + languageName: node + linkType: hard + +"git-up@npm:^8.1.0": + version: 8.1.1 + resolution: "git-up@npm:8.1.1" + dependencies: + is-ssh: ^1.4.0 + parse-url: ^9.2.0 + checksum: 3b7c89bcd0c46e09154f3509ac5f69f3c746ec032390b86a34f7e831a3b60c0a976548780682cd490a522dd8eb4ff2a13b1b882ff0e94a35fe6fc317f09042a5 + languageName: node + linkType: hard + +"git-url-parse@npm:16.1.0": + version: 16.1.0 + resolution: "git-url-parse@npm:16.1.0" + dependencies: + git-up: ^8.1.0 + checksum: 386b0e1bf55c2732ae5d9d75a8063a46179c832794a010b0d8952f89e79dbda7bdf1d00ef478a13ab3962bcad1d1f7a1a1de18769de1514ffe1fb11c90a82270 + languageName: node + linkType: hard + "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -24404,7 +26997,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:11.0.3, glob@npm:^11.0.0, glob@npm:^11.0.3": +"glob@npm:11.0.3, glob@npm:^11.0.3": version: 11.0.3 resolution: "glob@npm:11.0.3" dependencies: @@ -24532,6 +27125,15 @@ __metadata: languageName: node linkType: hard +"global-directory@npm:^4.0.1": + version: 4.0.1 + resolution: "global-directory@npm:4.0.1" + dependencies: + ini: 4.1.1 + checksum: 5b4df24438a4e5f21e43fbdd9e54f5e12bb48dce01a0a83b415d8052ce91be2d3a97e0c8f98a535e69649b2190036155e9f0f7d3c62f9318f31bdc3fd4f235f5 + languageName: node + linkType: hard + "global@npm:~4.4.0": version: 4.4.0 resolution: "global@npm:4.4.0" @@ -24558,6 +27160,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac + languageName: node + linkType: hard + "globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" @@ -24577,7 +27186,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.1.0": +"globby@npm:^11.0.1, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -24591,6 +27200,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^14.0.2": + version: 14.1.0 + resolution: "globby@npm:14.1.0" + dependencies: + "@sindresorhus/merge-streams": ^2.1.0 + fast-glob: ^3.3.3 + ignore: ^7.0.3 + path-type: ^6.0.0 + slash: ^5.1.0 + unicorn-magic: ^0.3.0 + checksum: b1f27dccc999c010ee7e0ce7c6581fd2326ac86cf0508474d526d699a029b66b35d6fa4361c8b4ad8e80809582af71d5e2080e671cf03c26e98ca67aba8834bd + languageName: node + linkType: hard + "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -24877,6 +27500,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.28.1": + version: 0.28.1 + resolution: "hermes-estree@npm:0.28.1" + checksum: 4f7b4e0491352012a6cb799315a0aae16abdcc894335e901552ee6c64732d0cf06f0913c579036f9f452b7c4ad9bb0b6ab14e510c13bd7e5997385f77633ab00 + languageName: node + linkType: hard + "hermes-estree@npm:0.29.1": version: 0.29.1 resolution: "hermes-estree@npm:0.29.1" @@ -24884,6 +27514,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.32.0": + version: 0.32.0 + resolution: "hermes-estree@npm:0.32.0" + checksum: 7b0606a8d2cf4593634d01b0eae0764c0e4703bc5cd73cbb0547fb8dda9445a27a83345117c08eef64f6bdab1287e3c5a4e3001deed465a715d26f4e918c8b22 + languageName: node + linkType: hard + "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -24893,6 +27530,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.28.1": + version: 0.28.1 + resolution: "hermes-parser@npm:0.28.1" + dependencies: + hermes-estree: 0.28.1 + checksum: 0d95280d527e1ad46e8caacd56b24d07e4aec39704de86cf164600f2c4fb00f406dd74a37b2103433ef7ec388a549072da20438e224bd47def21f973c36aab7d + languageName: node + linkType: hard + "hermes-parser@npm:0.29.1": version: 0.29.1 resolution: "hermes-parser@npm:0.29.1" @@ -24902,6 +27548,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.32.0": + version: 0.32.0 + resolution: "hermes-parser@npm:0.32.0" + dependencies: + hermes-estree: 0.32.0 + checksum: 7ec172ec763ee5ba1d01f273084ab4c7ad7a543d1ed11e887ea3a9eba7c0b83854dde08e835e38f29b74146b5ce17e67d556774324a63f8afe16fb57021bfdcb + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -25119,6 +27774,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^1.1.1": + version: 1.1.1 + resolution: "human-signals@npm:1.1.1" + checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -25252,6 +27914,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^7.0.3": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14 + languageName: node + linkType: hard + "image-q@npm:^4.0.0": version: 4.0.0 resolution: "image-q@npm:4.0.0" @@ -25346,6 +28015,13 @@ __metadata: languageName: node linkType: hard +"index-to-position@npm:^1.1.0": + version: 1.2.0 + resolution: "index-to-position@npm:1.2.0" + checksum: 2026188af74d4f4c19de44ca29116f093daf072ff4f4b8dda61668463bd28b097164d43f819684cb2f65ff749bc0dec14fb3956da0299a36faa68255c4eb6858 + languageName: node + linkType: hard + "indexof@npm:~0.0.1": version: 0.0.1 resolution: "indexof@npm:0.0.1" @@ -25370,6 +28046,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:4.1.1": + version: 4.1.1 + resolution: "ini@npm:4.1.1" + checksum: 0e5909554074fbc31824fa5415b0f604de4a665514c96a897a77bf77353a7ad4743927321270e9d0610a9d510ccd1f3cd77422f7cc80d8f4542dbce75476fb6d + languageName: node + linkType: hard + "ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -25391,14 +28074,14 @@ __metadata: languageName: node linkType: hard -"ini@npm:^5.0.0": - version: 5.0.0 - resolution: "ini@npm:5.0.0" - checksum: a1cd2a06bf4d995b072ebe97132d8d50a6630798cc3a1c56d325d7b3aaf1f236b3301816f0079e4d47a9887f08e60a6fb95673f19bcafe4f0f9c4a5b5e30aff4 +"ini@npm:^6.0.0": + version: 6.0.0 + resolution: "ini@npm:6.0.0" + checksum: 82640ea788fac082fdf0a4d901654b0d4a32a62524cb9116206d2d66370fb12468af8bcdec0cafc2ceec71eb095919bf07410ce023e205383d3ae4d6c25b3626 languageName: node linkType: hard -"inquirer@npm:^12.7.0": +"inquirer@npm:12.9.6": version: 12.9.6 resolution: "inquirer@npm:12.9.6" dependencies: @@ -25418,6 +28101,26 @@ __metadata: languageName: node linkType: hard +"inquirer@npm:^12.7.0": + version: 12.10.0 + resolution: "inquirer@npm:12.10.0" + dependencies: + "@inquirer/ansi": ^1.0.1 + "@inquirer/core": ^10.3.0 + "@inquirer/prompts": ^7.9.0 + "@inquirer/type": ^3.0.9 + mute-stream: ^2.0.0 + run-async: ^4.0.5 + rxjs: ^7.8.2 + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 5778348201f9fb2a92670a4253eed34a6e599da75b5a8260c5c5731378e79f4df2a8c6cfa6beefd927da78a7104ca1cca52da4f0096799979bb8833e72582526 + languageName: node + linkType: hard + "inquirer@npm:^8.2.0": version: 8.2.6 resolution: "inquirer@npm:8.2.6" @@ -25491,8 +28194,8 @@ __metadata: linkType: hard "io.appium.settings@npm:^6.0.0": - version: 6.0.6 - resolution: "io.appium.settings@npm:6.0.6" + version: 6.0.8 + resolution: "io.appium.settings@npm:6.0.8" dependencies: "@appium/logger": ^2.0.0-rc.1 asyncbox: ^3.0.0 @@ -25501,7 +28204,7 @@ __metadata: semver: ^7.5.4 source-map-support: ^0.x teen_process: ^3.0.0 - checksum: 55e568582b84d57592cee5da5be2779766ea431fc57f3d5ca5667a99501067cfaa0786fb6ceaceff0e7934c45aaa9b1954387569a52fce83ae5b138146cfde44 + checksum: bd1a2f226aced2e8ab923ca3477328ad37a761fc4c1696cf53337c359501e9588c304a610367244fd03c47109039289594cebf35f531c357fc4b07954a264023 languageName: node linkType: hard @@ -25560,6 +28263,16 @@ __metadata: languageName: node linkType: hard +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: ^1.0.0 + is-windows: ^1.0.1 + checksum: 9d16b2605eda3f3ce755410f1d423e327ad3a898bcb86c9354cf63970ed3f91ba85e9828aa56f5d6a952b9fae43d0477770f78d37409ae8ecc31e59ebc279b27 + languageName: node + linkType: hard + "is-arguments@npm:^1.0.4": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" @@ -25704,7 +28417,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.16.0": +"is-core-module@npm:^2.16.0, is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -25768,6 +28481,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + "is-extendable@npm:^0.1.1": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" @@ -25853,6 +28575,26 @@ __metadata: languageName: node linkType: hard +"is-git-dirty@npm:^2.0.1": + version: 2.0.2 + resolution: "is-git-dirty@npm:2.0.2" + dependencies: + execa: ^4.0.3 + is-git-repository: ^2.0.0 + checksum: 13c8f58600e1ea0874703c1fa0ca87825119cf05347bb3b0bbbd331eec42b6a0e89519be4dcb173ac8eda84d1ade97fe187df8af10df599f1df8d0267680abdd + languageName: node + linkType: hard + +"is-git-repository@npm:^2.0.0": + version: 2.0.0 + resolution: "is-git-repository@npm:2.0.0" + dependencies: + execa: ^4.0.3 + is-absolute: ^1.0.0 + checksum: 9eba76437998b3239adc6e87ceb9b81f8ef00d6209f8700f2ba523e61359d5b068d11f8f94474bc90f92b39fd3c8261c4d60feb3cd62d18e1838480b0b135b88 + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -25862,6 +28604,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -25869,6 +28622,13 @@ __metadata: languageName: node linkType: hard +"is-interactive@npm:^2.0.0": + version: 2.0.0 + resolution: "is-interactive@npm:2.0.0" + checksum: e8d52ad490bed7ae665032c7675ec07732bbfe25808b0efbc4d5a76b1a1f01c165f332775c63e25e9a03d319ebb6b24f571a9e902669fc1e40b0a60b5be6e26c + languageName: node + linkType: hard + "is-ip@npm:^3.1.0": version: 3.1.0 resolution: "is-ip@npm:3.1.0" @@ -25978,6 +28738,13 @@ __metadata: languageName: node linkType: hard +"is-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 + languageName: node + linkType: hard + "is-object@npm:~0.1.2": version: 0.1.2 resolution: "is-object@npm:0.1.2" @@ -25985,13 +28752,34 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": +"is-path-cwd@npm:^2.2.0": + version: 2.2.0 + resolution: "is-path-cwd@npm:2.2.0" + checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 + languageName: node + linkType: hard + +"is-path-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "is-path-cwd@npm:3.0.0" + checksum: bc34d13b6a03dfca4a3ab6a8a5ba78ae4b24f4f1db4b2b031d2760c60d0913bd16a4b980dcb4e590adfc906649d5f5132684079a3972bd219da49deebb9adea8 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 languageName: node linkType: hard +"is-path-inside@npm:^4.0.0": + version: 4.0.0 + resolution: "is-path-inside@npm:4.0.0" + checksum: 8810fa11c58e6360b82c3e0d6cd7d9c7d0392d3ac9eb10f980b81f9839f40ac6d1d6d6f05d069db0d227759801228f0b072e1b6c343e4469b065ab5fe0b68fe5 + languageName: node + linkType: hard + "is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" @@ -26058,6 +28846,15 @@ __metadata: languageName: node linkType: hard +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: ^1.0.0 + checksum: 3271a0df109302ef5e14a29dcd5d23d9788e15ade91a40b942b035827ffbb59f7ce9ff82d036ea798541a52913cbf9d2d0b66456340887b51f3542d57b5a4c05 + languageName: node + linkType: hard + "is-set@npm:^2.0.1": version: 2.0.2 resolution: "is-set@npm:2.0.2" @@ -26099,6 +28896,15 @@ __metadata: languageName: node linkType: hard +"is-ssh@npm:^1.4.0": + version: 1.4.1 + resolution: "is-ssh@npm:1.4.1" + dependencies: + protocols: ^2.0.1 + checksum: 005b461ac444398eb8b7cd2f489288e49dd18c8b6cbf1eb20767f9b79f330ab6e3308b2dac8ec6ca2a950d2a368912e0e992e2474bc1b5204693abb6226c1431 + languageName: node + linkType: hard + "is-stream@npm:^2.0.0, is-stream@npm:^2.0.1": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -26159,6 +28965,15 @@ __metadata: languageName: node linkType: hard +"is-text-path@npm:^2.0.0": + version: 2.0.0 + resolution: "is-text-path@npm:2.0.0" + dependencies: + text-extensions: ^2.0.0 + checksum: 3a8725fc7c0d4c7741a97993bc2fecc09a0963660394d3ee76145274366c98ad57c6791d20d4ef829835f573b1137265051c05ecd65fbe72f69bb9ab9e3babbd + languageName: node + linkType: hard + "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": version: 1.1.12 resolution: "is-typed-array@npm:1.1.12" @@ -26193,6 +29008,15 @@ __metadata: languageName: node linkType: hard +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: ^0.1.2 + checksum: e8abfde203f7409f5b03a5f1f8636e3a41e78b983702ef49d9343eb608cdfe691429398e8815157519b987b739bcfbc73ae7cf4c8582b0ab66add5171088eab6 + languageName: node + linkType: hard + "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -26200,7 +29024,7 @@ __metadata: languageName: node linkType: hard -"is-unicode-supported@npm:^2.0.0": +"is-unicode-supported@npm:^2.0.0, is-unicode-supported@npm:^2.1.0": version: 2.1.0 resolution: "is-unicode-supported@npm:2.1.0" checksum: f254e3da6b0ab1a57a94f7273a7798dd35d1d45b227759f600d0fa9d5649f9c07fa8d3c8a6360b0e376adf916d151ec24fc9a50c5295c58bae7ca54a76a063f9 @@ -26259,6 +29083,13 @@ __metadata: languageName: node linkType: hard +"is-windows@npm:^1.0.1": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 + languageName: node + linkType: hard + "is-wsl@npm:^1.1.0": version: 1.1.0 resolution: "is-wsl@npm:1.1.0" @@ -26275,6 +29106,15 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + languageName: node + linkType: hard + "is@npm:~0.2.6": version: 0.2.7 resolution: "is@npm:0.2.7" @@ -26375,6 +29215,19 @@ __metadata: languageName: node linkType: hard +"issue-parser@npm:7.0.1": + version: 7.0.1 + resolution: "issue-parser@npm:7.0.1" + dependencies: + lodash.capitalize: ^4.2.1 + lodash.escaperegexp: ^4.1.2 + lodash.isplainobject: ^4.0.6 + lodash.isstring: ^4.0.1 + lodash.uniqby: ^4.7.0 + checksum: baf2831baa84c214a8c9f095889476f2ad7a6511fef7d096941ecf4666a822fbce298baac38510c4be782fc562488d4909535e81fb7a28c55779fcc88e3ec595 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" @@ -27210,6 +30063,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:^2.5.1, jiti@npm:^2.6.1": + version: 2.6.1 + resolution: "jiti@npm:2.6.1" + bin: + jiti: lib/jiti-cli.mjs + checksum: 9394e29c5e40d1ca8267923160d8d86706173c9ff30c901097883434b0c4866de2c060427b6a9a5843bb3e42fa3a3c8b5b2228531d3dd4f4f10c5c6af355bb86 + languageName: node + linkType: hard + "joi@npm:^17.2.1": version: 17.13.3 resolution: "joi@npm:17.13.3" @@ -27480,7 +30342,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.3": +"json5@npm:^2.2.1, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -27540,6 +30402,13 @@ __metadata: languageName: node linkType: hard +"jsonparse@npm:^1.2.0": + version: 1.3.1 + resolution: "jsonparse@npm:1.3.1" + checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d + languageName: node + linkType: hard + "jsprim@npm:^1.2.2": version: 1.4.2 resolution: "jsprim@npm:1.4.2" @@ -27654,7 +30523,7 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.1.0, kleur@npm:^4.1.5": +"kleur@npm:^4.1.0, kleur@npm:^4.1.4, kleur@npm:^4.1.5": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 @@ -28124,7 +30993,7 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^7.1.0": +"locate-path@npm:^7.1.0, locate-path@npm:^7.2.0": version: 7.2.0 resolution: "locate-path@npm:7.2.0" dependencies: @@ -28149,6 +31018,13 @@ __metadata: languageName: node linkType: hard +"lodash.capitalize@npm:^4.2.1": + version: 4.2.1 + resolution: "lodash.capitalize@npm:4.2.1" + checksum: d9195f31d48c105206f1099946d8bbc8ab71435bc1c8708296992a31a992bb901baf120fdcadd773098ac96e62a79e6b023ee7d26a2deb0d6c6aada930e6ad0a + languageName: node + linkType: hard + "lodash.clonedeep@npm:^4.5.0": version: 4.5.0 resolution: "lodash.clonedeep@npm:4.5.0" @@ -28177,6 +31053,13 @@ __metadata: languageName: node linkType: hard +"lodash.escaperegexp@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.escaperegexp@npm:4.1.2" + checksum: 6d99452b1cfd6073175a9b741a9b09ece159eac463f86f02ea3bee2e2092923fce812c8d2bf446309cc52d1d61bf9af51c8118b0d7421388e6cead7bd3798f0f + languageName: node + linkType: hard + "lodash.flatten@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flatten@npm:4.4.0" @@ -28226,13 +31109,20 @@ __metadata: languageName: node linkType: hard -"lodash.isstring@npm:4.0.1": +"lodash.isstring@npm:4.0.1, lodash.isstring@npm:^4.0.1": version: 4.0.1 resolution: "lodash.isstring@npm:4.0.1" checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 languageName: node linkType: hard +"lodash.kebabcase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.kebabcase@npm:4.1.1" + checksum: 5a6c59161914e1bae23438a298c7433e83d935e0f59853fa862e691164696bc07f6dfa4c313d499fbf41ba8d53314e9850416502376705a357d24ee6ca33af78 + languageName: node + linkType: hard + "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -28247,6 +31137,13 @@ __metadata: languageName: node linkType: hard +"lodash.mergewith@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 + languageName: node + linkType: hard + "lodash.pickby@npm:^4.6.0": version: 4.6.0 resolution: "lodash.pickby@npm:4.6.0" @@ -28254,7 +31151,14 @@ __metadata: languageName: node linkType: hard -"lodash.startcase@npm:4.4.0": +"lodash.snakecase@npm:^4.1.1": + version: 4.1.1 + resolution: "lodash.snakecase@npm:4.1.1" + checksum: 1685ed3e83dda6eae5a4dcaee161a51cd210aabb3e1c09c57150e7dd8feda19e4ca0d27d0631eabe8d0f4eaa51e376da64e8c018ae5415417c5890d42feb72a8 + languageName: node + linkType: hard + +"lodash.startcase@npm:4.4.0, lodash.startcase@npm:^4.4.0": version: 4.4.0 resolution: "lodash.startcase@npm:4.4.0" checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 @@ -28275,6 +31179,27 @@ __metadata: languageName: node linkType: hard +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d + languageName: node + linkType: hard + +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 659264545a95726d1493123345aad8cbf56e17810fa9a0b029852c6d42bc80517696af09d99b23bef1845d10d95e01b8b4a1da578f22aeba7a30d3e0022a4938 + languageName: node + linkType: hard + +"lodash.upperfirst@npm:^4.3.1": + version: 4.3.1 + resolution: "lodash.upperfirst@npm:4.3.1" + checksum: cadec6955900afe1928cc60cdc4923a79c2ef991e42665419cc81630ed9b4f952a1093b222e0141ab31cbc4dba549f97ec28ff67929d71e01861c97188a5fa83 + languageName: node + linkType: hard + "lodash.zip@npm:^4.2.0": version: 4.2.0 resolution: "lodash.zip@npm:4.2.0" @@ -28282,7 +31207,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4, lodash@npm:^4.0.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.2.1": +"lodash@npm:4.17.21, lodash@npm:^4, lodash@npm:^4.0.0, lodash@npm:^4.15.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.2.1": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -28308,6 +31233,16 @@ __metadata: languageName: node linkType: hard +"log-symbols@npm:^7.0.1": + version: 7.0.1 + resolution: "log-symbols@npm:7.0.1" + dependencies: + is-unicode-supported: ^2.0.0 + yoctocolors: ^2.1.1 + checksum: 0862313d84826b551582e39659b8586c56b65130c5f4f976420e2c23985228334f2a26fc4251ac22bf0a5b415d9430e86bf332557d934c10b036f9a549d63a09 + languageName: node + linkType: hard + "log-update@npm:^6.1.0": version: 6.1.0 resolution: "log-update@npm:6.1.0" @@ -28494,6 +31429,13 @@ __metadata: languageName: node linkType: hard +"macos-release@npm:^3.3.0": + version: 3.4.0 + resolution: "macos-release@npm:3.4.0" + checksum: f4c0cb8b3f93b05d73c502b4bbe2b811c44facfc9bd072c13a30ff2a8ba1cad5d9de517d10be8b31e2b917643245a81587a2eec8300e66a7364419d11402ab02 + languageName: node + linkType: hard + "mafmt@npm:^10.0.0": version: 10.0.0 resolution: "mafmt@npm:10.0.0" @@ -28504,11 +31446,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.12, magic-string@npm:^0.30.17": - version: 0.30.19 - resolution: "magic-string@npm:0.30.19" + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" dependencies: "@jridgewell/sourcemap-codec": ^1.5.5 - checksum: f360b87febeceddb35238e55963b70ef68381688c1aada6d842833a7be440a08cb0a8776e23b5e4e34785edc6b42b92dc08c829f43ecdb58547122f3fd79fdc7 + checksum: 4ff76a4e8d439431cf49f039658751ed351962d044e5955adc257489569bd676019c906b631f86319217689d04815d7d064ee3ff08ab82ae65b7655a7e82a414 languageName: node linkType: hard @@ -28695,6 +31637,20 @@ __metadata: languageName: node linkType: hard +"meow@npm:^12.0.1": + version: 12.1.1 + resolution: "meow@npm:12.1.1" + checksum: a6f3be85fbe53430ef53ab933dd790c39216eb4dbaabdbef593aa59efb40ecaa417897000175476bc33eed09e4cbce01df7ba53ba91e9a4bd84ec07024cb8914 + languageName: node + linkType: hard + +"meow@npm:^13.0.0, meow@npm:^13.2.0": + version: 13.2.0 + resolution: "meow@npm:13.2.0" + checksum: 79c61dc02ad448ff5c29bbaf1ef42181f1eae9947112c0e23db93e84cbc2708ecda53e54bfc6689f1e55255b2cea26840ec76e57a5773a16ca45f4fe2163ec1c + languageName: node + linkType: hard + "merge-deep@npm:^3.0.1": version: 3.0.3 resolution: "merge-deep@npm:3.0.3" @@ -28774,6 +31730,18 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:0.83.3": + version: 0.83.3 + resolution: "metro-babel-transformer@npm:0.83.3" + dependencies: + "@babel/core": ^7.25.2 + flow-enums-runtime: ^0.0.6 + hermes-parser: 0.32.0 + nullthrows: ^1.1.1 + checksum: dd178409d1718dae12dfffb6572ebc5bb78f1e0d7e93dce829c945957f8a686cb1b4c466c69585d7b982b3937fbea28d5c53a80691f2fc66717a0bcc800bc5b8 + languageName: node + linkType: hard + "metro-cache-key@npm:0.82.5": version: 0.82.5 resolution: "metro-cache-key@npm:0.82.5" @@ -28783,6 +31751,15 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.83.3": + version: 0.83.3 + resolution: "metro-cache-key@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: a6f9d2bf8b810f57d330d6f8f1ebf029e1224f426c5895f73d9bc1007482684048bfc7513a855626ee7f3ae72ca46e1b08cf983aefbfa84321bb7c0cef4ba4ae + languageName: node + linkType: hard + "metro-cache@npm:0.82.5": version: 0.82.5 resolution: "metro-cache@npm:0.82.5" @@ -28795,6 +31772,18 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.83.3": + version: 0.83.3 + resolution: "metro-cache@npm:0.83.3" + dependencies: + exponential-backoff: ^3.1.1 + flow-enums-runtime: ^0.0.6 + https-proxy-agent: ^7.0.5 + metro-core: 0.83.3 + checksum: 95606275411d85de071fd95171a9548406cd1154320850a554bf00207804f7844ed252f9750a802d6612ade839c579b23bd87927ae173f43c368e8f5d900149d + languageName: node + linkType: hard + "metro-config@npm:0.82.5, metro-config@npm:^0.82.0": version: 0.82.5 resolution: "metro-config@npm:0.82.5" @@ -28811,6 +31800,22 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-config@npm:0.83.3" + dependencies: + connect: ^3.6.5 + flow-enums-runtime: ^0.0.6 + jest-validate: ^29.7.0 + metro: 0.83.3 + metro-cache: 0.83.3 + metro-core: 0.83.3 + metro-runtime: 0.83.3 + yaml: ^2.6.1 + checksum: a14b77668a9712abbcebe5bf6a0081f0fd46caf8d37405174f261765abcd44d7a99910533fcc05edde3de10f9b22820cc9910c7dee2b01e761692a0a322f2608 + languageName: node + linkType: hard + "metro-core@npm:0.82.5, metro-core@npm:^0.82.0": version: 0.82.5 resolution: "metro-core@npm:0.82.5" @@ -28822,6 +31827,17 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-core@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + lodash.throttle: ^4.1.1 + metro-resolver: 0.83.3 + checksum: d06871313310cd718094ecbae805bcacea3f325340f6dff3c5044b62457c4690dd729cdb938349bdd3c41efa6f28032ae07696467ef006d5509fec9045c1966f + languageName: node + linkType: hard + "metro-file-map@npm:0.82.5": version: 0.82.5 resolution: "metro-file-map@npm:0.82.5" @@ -28839,6 +31855,23 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.83.3": + version: 0.83.3 + resolution: "metro-file-map@npm:0.83.3" + dependencies: + debug: ^4.4.0 + fb-watchman: ^2.0.0 + flow-enums-runtime: ^0.0.6 + graceful-fs: ^4.2.4 + invariant: ^2.2.4 + jest-worker: ^29.7.0 + micromatch: ^4.0.4 + nullthrows: ^1.1.1 + walker: ^1.0.7 + checksum: 0dea599206e93b6e8628be2aa98452d4dae16e805b810759ec8b50cebcd83f2d053f7e5865196d464f3793f86b3b5003830c6713f91bf62fa406a4af7c93a776 + languageName: node + linkType: hard + "metro-minify-terser@npm:0.82.5": version: 0.82.5 resolution: "metro-minify-terser@npm:0.82.5" @@ -28849,6 +31882,16 @@ __metadata: languageName: node linkType: hard +"metro-minify-terser@npm:0.83.3": + version: 0.83.3 + resolution: "metro-minify-terser@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + terser: ^5.15.0 + checksum: 1de88b70b7c903147807baa46497491a87600594fd0868b6538bbb9d7785242cabfbe8bccf36cc2285d0e17be72445b512d00c496952a159572545f3e6bcb199 + languageName: node + linkType: hard + "metro-resolver@npm:0.82.5": version: 0.82.5 resolution: "metro-resolver@npm:0.82.5" @@ -28858,6 +31901,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.83.3": + version: 0.83.3 + resolution: "metro-resolver@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: de2ae5ced6239b004a97712f98934c6e830870d11614e2dba48250930214581f0746df8a4f0f1cb71060fe21c2cf919d3359106ad4f375c2500ba08e10922896 + languageName: node + linkType: hard + "metro-runtime@npm:0.82.5, metro-runtime@npm:^0.82.0": version: 0.82.5 resolution: "metro-runtime@npm:0.82.5" @@ -28868,6 +31920,16 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-runtime@npm:0.83.3" + dependencies: + "@babel/runtime": ^7.25.0 + flow-enums-runtime: ^0.0.6 + checksum: dcbdc5502020d1e20cee1a3a8019323ab2f3ca2aa2d6ddb2b7a2b8547835a20b84fe4afc23c397f788584e108c70411db93df2f61322b44a4f0f119275052d03 + languageName: node + linkType: hard + "metro-source-map@npm:0.82.5, metro-source-map@npm:^0.82.0": version: 0.82.5 resolution: "metro-source-map@npm:0.82.5" @@ -28886,6 +31948,24 @@ __metadata: languageName: node linkType: hard +"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-source-map@npm:0.83.3" + dependencies: + "@babel/traverse": ^7.25.3 + "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" + "@babel/types": ^7.25.2 + flow-enums-runtime: ^0.0.6 + invariant: ^2.2.4 + metro-symbolicate: 0.83.3 + nullthrows: ^1.1.1 + ob1: 0.83.3 + source-map: ^0.5.6 + vlq: ^1.0.0 + checksum: 5bf3b7a1561bc1f0ad6ab3b7b550d4b4581da31964a7f218727a3201576912076c909a2e50fba4dd3c649d79312324dec683a37228f4559811c37b69ecca8831 + languageName: node + linkType: hard + "metro-symbolicate@npm:0.82.5": version: 0.82.5 resolution: "metro-symbolicate@npm:0.82.5" @@ -28902,6 +31982,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.83.3, metro-symbolicate@npm:^0.83.3": + version: 0.83.3 + resolution: "metro-symbolicate@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + invariant: ^2.2.4 + metro-source-map: 0.83.3 + nullthrows: ^1.1.1 + source-map: ^0.5.6 + vlq: ^1.0.0 + bin: + metro-symbolicate: src/index.js + checksum: 943cc2456d56ae2ed8369495c18966d91feff636b37909b5225ffb8ce2a50eba8fbedf116f3bea3059d431ebc621c9c9af8a8bfd181b0cd1fece051507e10ffd + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.82.5": version: 0.82.5 resolution: "metro-transform-plugins@npm:0.82.5" @@ -28916,6 +32012,20 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.83.3": + version: 0.83.3 + resolution: "metro-transform-plugins@npm:0.83.3" + dependencies: + "@babel/core": ^7.25.2 + "@babel/generator": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.3 + flow-enums-runtime: ^0.0.6 + nullthrows: ^1.1.1 + checksum: 6f92b9dfa53bdb63e79038bbd4d68791379ab26cf874679e64563618c578eeed3a828795debf8076ffd518431dff53191990784fb619046bcc03fff114b0cb21 + languageName: node + linkType: hard + "metro-transform-worker@npm:0.82.5": version: 0.82.5 resolution: "metro-transform-worker@npm:0.82.5" @@ -28937,6 +32047,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.83.3": + version: 0.83.3 + resolution: "metro-transform-worker@npm:0.83.3" + dependencies: + "@babel/core": ^7.25.2 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/types": ^7.25.2 + flow-enums-runtime: ^0.0.6 + metro: 0.83.3 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-minify-terser: 0.83.3 + metro-source-map: 0.83.3 + metro-transform-plugins: 0.83.3 + nullthrows: ^1.1.1 + checksum: fcb25ebc1ce703d830ef60c9af87325f996af4c3946325ab957b65ca59d12d181fe6c527c9ba1f932cd954d23a400052293117fe56f9a2727dfbc0a118e7bb27 + languageName: node + linkType: hard + "metro@npm:0.82.5, metro@npm:^0.82.0": version: 0.82.5 resolution: "metro@npm:0.82.5" @@ -28987,6 +32118,56 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.83.3, metro@npm:^0.83.1": + version: 0.83.3 + resolution: "metro@npm:0.83.3" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/core": ^7.25.2 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.3 + "@babel/types": ^7.25.2 + accepts: ^1.3.7 + chalk: ^4.0.0 + ci-info: ^2.0.0 + connect: ^3.6.5 + debug: ^4.4.0 + error-stack-parser: ^2.0.6 + flow-enums-runtime: ^0.0.6 + graceful-fs: ^4.2.4 + hermes-parser: 0.32.0 + image-size: ^1.0.2 + invariant: ^2.2.4 + jest-worker: ^29.7.0 + jsc-safe-url: ^0.2.2 + lodash.throttle: ^4.1.1 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-config: 0.83.3 + metro-core: 0.83.3 + metro-file-map: 0.83.3 + metro-resolver: 0.83.3 + metro-runtime: 0.83.3 + metro-source-map: 0.83.3 + metro-symbolicate: 0.83.3 + metro-transform-plugins: 0.83.3 + metro-transform-worker: 0.83.3 + mime-types: ^2.1.27 + nullthrows: ^1.1.1 + serialize-error: ^2.1.0 + source-map: ^0.5.6 + throat: ^5.0.0 + ws: ^7.5.10 + yargs: ^17.6.2 + bin: + metro: src/cli.js + checksum: 306d8c06b5a1a45e18df6e41f494bbc8b439700985429284eea7b3c3c82108e3c3795d859a8ab3ed7a85793d64e3160519be9aa84c6418d6ed37bd5ae4500b57 + languageName: node + linkType: hard + "micro-eth-signer@npm:0.7.2": version: 0.7.2 resolution: "micro-eth-signer@npm:0.7.2" @@ -29088,6 +32269,15 @@ __metadata: languageName: node linkType: hard +"mime-types@npm:3.0.1, mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": + version: 3.0.1 + resolution: "mime-types@npm:3.0.1" + dependencies: + mime-db: ^1.54.0 + checksum: 8d497ad5cb2dd1210ac7d049b5de94af0b24b45a314961e145b44389344604d54752f03bc00bf880c0da60a214be6fb6d423d318104f02c28d95dd8ebeea4fb4 + languageName: node + linkType: hard + "mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" @@ -29097,15 +32287,6 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": - version: 3.0.1 - resolution: "mime-types@npm:3.0.1" - dependencies: - mime-db: ^1.54.0 - checksum: 8d497ad5cb2dd1210ac7d049b5de94af0b24b45a314961e145b44389344604d54752f03bc00bf880c0da60a214be6fb6d423d318104f02c28d95dd8ebeea4fb4 - languageName: node - linkType: hard - "mime@npm:1.6.0, mime@npm:^1.3.4": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -29200,7 +32381,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.0.3": +"minimatch@npm:^10.0.1, minimatch@npm:^10.0.3": version: 10.0.3 resolution: "minimatch@npm:10.0.3" dependencies: @@ -29800,6 +32981,30 @@ __metadata: languageName: node linkType: hard +"new-github-release-url@npm:2.0.0": + version: 2.0.0 + resolution: "new-github-release-url@npm:2.0.0" + dependencies: + type-fest: ^2.5.1 + checksum: 3d4ae0f3b775623ceed8e558b6f9850e897aea981a9c937d3ad4e018669c829beccb2c4b5a6af996726ebf86c5b7638368dfc01f3ac2e395d1df29309bc0c5ca + languageName: node + linkType: hard + +"nitrogen@npm:^0.30.2": + version: 0.30.2 + resolution: "nitrogen@npm:0.30.2" + dependencies: + chalk: ^5.3.0 + react-native-nitro-modules: ^0.30.2 + ts-morph: ^27.0.0 + yargs: ^18.0.0 + zod: ^4.0.5 + bin: + nitrogen: lib/index.js + checksum: b8692111891d70715b200d1c7adf129fe302cc8d85055ccb60144269970460b747d78caa110eadaee5c10f3cc077da46d53edbbc63ee9a5112a396e3256a2b32 + languageName: node + linkType: hard + "no-case@npm:^3.0.4": version: 3.0.4 resolution: "no-case@npm:3.0.4" @@ -29885,6 +33090,13 @@ __metadata: languageName: node linkType: hard +"node-fetch-native@npm:^1.6.6": + version: 1.6.7 + resolution: "node-fetch-native@npm:1.6.7" + checksum: c564e4f098b2ee5f56569a5f7a3c81b86dd11eb626460c332930fbff180df727bf44067268b2f19e646ac2e87632662dabd362df4b6a93c7bd898a94a3af9cb1 + languageName: node + linkType: hard + "node-fetch@npm:3.3.2, node-fetch@npm:^3.3.2": version: 3.3.2 resolution: "node-fetch@npm:3.3.2" @@ -30018,9 +33230,16 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.21": + version: 2.0.25 + resolution: "node-releases@npm:2.0.25" + checksum: 9a23149cf3f6778e62440b1f26f91927aff06c3606a29996f3d196c7c0f5e31c17c24c324b5ef1f571cebef6b5a8db9adce9c09381ca271bc6422aac91463f75 + languageName: node + linkType: hard + "node-simctl@npm:^8.0.0": - version: 8.0.4 - resolution: "node-simctl@npm:8.0.4" + version: 8.0.5 + resolution: "node-simctl@npm:8.0.5" dependencies: "@appium/logger": ^2.0.0-rc.1 asyncbox: ^3.0.0 @@ -30032,7 +33251,7 @@ __metadata: teen_process: ^3.0.0 uuid: ^13.0.0 which: ^5.0.0 - checksum: c41aa15914d360f18e6931e93ad02ff665db058e5f5be0b857d494ab269af0459e690ab13ecb2d869cd28a11cb8959002ae194eb26058af45fd6ab2a50254d5a + checksum: 40ee4eb0ab5b67fb2a4ce4e56254c35c89c6d75386fa670922d89a33d903dbaf98fe036d1070f1801fcc89df56fafad9efb68fd2485760e8c72e39823881ae46 languageName: node linkType: hard @@ -30183,7 +33402,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -30239,6 +33458,21 @@ __metadata: languageName: node linkType: hard +"nypm@npm:^0.6.0": + version: 0.6.2 + resolution: "nypm@npm:0.6.2" + dependencies: + citty: ^0.1.6 + consola: ^3.4.2 + pathe: ^2.0.3 + pkg-types: ^2.3.0 + tinyexec: ^1.0.1 + bin: + nypm: dist/cli.mjs + checksum: 8cbbbfb3ead13d4c05223da4bb47a4341a69e27055631b152ca368c07d470f62e4e44edbb33403d3777359bd06a07d41f616320fc7f4b7f0926aba657cc34d2e + languageName: node + linkType: hard + "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" @@ -30255,6 +33489,15 @@ __metadata: languageName: node linkType: hard +"ob1@npm:0.83.3": + version: 0.83.3 + resolution: "ob1@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: 20dfe91d48d0cadd97159cfd53f5abdca435b55d58b1f562e0687485e8f44f8a95e8ab3c835badd13d0d8c01e3d7b14d639a316aa4bf82841ac78b49611d4e5c + languageName: node + linkType: hard + "obj-multiplex@npm:^1.0.0": version: 1.0.0 resolution: "obj-multiplex@npm:1.0.0" @@ -30505,6 +33748,13 @@ __metadata: languageName: node linkType: hard +"ohash@npm:^2.0.11": + version: 2.0.11 + resolution: "ohash@npm:2.0.11" + checksum: c8e4d44c410d0c0347c374cfa03832abe4ffe4ba946aaaac0274a6d80d9e64d86a1bd06c6affa8ad83ff85b1ebce18b7b488ef24b2379ed5bcd5b37cb38816bc + languageName: node + linkType: hard + "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -30605,6 +33855,18 @@ __metadata: languageName: node linkType: hard +"open@npm:10.2.0": + version: 10.2.0 + resolution: "open@npm:10.2.0" + dependencies: + default-browser: ^5.2.1 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + wsl-utils: ^0.1.0 + checksum: 64e2e1fb1dc5ab82af06c990467237b8fd349b1b9ecc6324d12df337a005d039cec11f758abea148be68878ccd616977005682c48ef3c5c7ba48bd3e5d6a3dbb + languageName: node + linkType: hard + "open@npm:^6.2.0": version: 6.4.0 resolution: "open@npm:6.4.0" @@ -30691,6 +33953,23 @@ __metadata: languageName: node linkType: hard +"ora@npm:9.0.0": + version: 9.0.0 + resolution: "ora@npm:9.0.0" + dependencies: + chalk: ^5.6.2 + cli-cursor: ^5.0.0 + cli-spinners: ^3.2.0 + is-interactive: ^2.0.0 + is-unicode-supported: ^2.1.0 + log-symbols: ^7.0.1 + stdin-discarder: ^0.2.2 + string-width: ^8.1.0 + strip-ansi: ^7.1.2 + checksum: 4efc9c3caa45b552bae4c9755c586eb4f39b824e456d77ec380539529439ca95f3acf9626119131f1ca76618c176088996023e257f5b82e1b86a509990f4545a + languageName: node + linkType: hard + "ora@npm:^3.4.0": version: 3.4.0 resolution: "ora@npm:3.4.0" @@ -30705,6 +33984,16 @@ __metadata: languageName: node linkType: hard +"os-name@npm:6.1.0": + version: 6.1.0 + resolution: "os-name@npm:6.1.0" + dependencies: + macos-release: ^3.3.0 + windows-release: ^6.1.0 + checksum: d69a2060bea01dc502bd9a08802f43bebce85e95adde7740d0629a8522c16a92c05e0ee052819cac49f82aa61324ff038a3b79e015e26f122bbc08b40aa4ead3 + languageName: node + linkType: hard + "os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" @@ -30809,6 +34098,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 8c92d533acf82f0d12f7e196edccff773f384098bbb048acdd55a08778ce4fc8889d8f1bde72969487bd96f9c63212698d79744c20bedfce36c5b00b46d369f8 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -30860,6 +34156,13 @@ __metadata: languageName: node linkType: hard +"package-json-from-dist@npm:^1.0.1": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + languageName: node + linkType: hard + "pako@npm:^1.0.11, pako@npm:~1.0.2, pako@npm:~1.0.5": version: 1.0.11 resolution: "pako@npm:1.0.11" @@ -30949,6 +34252,17 @@ __metadata: languageName: node linkType: hard +"parse-json@npm:^8.0.0": + version: 8.3.0 + resolution: "parse-json@npm:8.3.0" + dependencies: + "@babel/code-frame": ^7.26.2 + index-to-position: ^1.1.0 + type-fest: ^4.39.1 + checksum: 23812dd66a8ceedfeb0fd8a92c96b88b18bc1030cf1f07cd29146b711a208ef91ac995cf14517422f908fa930f84324086bf22fdcc1013029776cc01d589bae4 + languageName: node + linkType: hard + "parse-listing@npm:^1.1.3": version: 1.1.3 resolution: "parse-listing@npm:1.1.3" @@ -30963,6 +34277,15 @@ __metadata: languageName: node linkType: hard +"parse-path@npm:^7.0.0": + version: 7.1.0 + resolution: "parse-path@npm:7.1.0" + dependencies: + protocols: ^2.0.0 + checksum: 1da6535a967b14911837bba98e5f8d16acb415b28753ff6225e3121dce71167a96c79278fbb631d695210dadae37462a9eff40d93b9c659cf1ce496fd5db9bb6 + languageName: node + linkType: hard + "parse-png@npm:^2.1.0": version: 2.1.0 resolution: "parse-png@npm:2.1.0" @@ -30979,6 +34302,16 @@ __metadata: languageName: node linkType: hard +"parse-url@npm:^9.2.0": + version: 9.2.0 + resolution: "parse-url@npm:9.2.0" + dependencies: + "@types/parse-path": ^7.0.0 + parse-path: ^7.0.0 + checksum: 765d4beac7de59c88007018e2a4b95ed8ff96cdcd0ff510b1ad00ab3d17f63949c7664218685394fe35af52061516c5efbba520fb760d7104b8238a6196f28c4 + languageName: node + linkType: hard + "parse5-htmlparser2-tree-adapter@npm:^7.1.0": version: 7.1.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" @@ -31049,7 +34382,7 @@ __metadata: languageName: node linkType: hard -"path-browserify@npm:1.0.1": +"path-browserify@npm:1.0.1, path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 @@ -31173,6 +34506,13 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^6.0.0": + version: 6.0.0 + resolution: "path-type@npm:6.0.0" + checksum: b9f6eaf7795c48d5c9bc4c6bc3ac61315b8d36975a73497ab2e02b764c0836b71fb267ea541863153f633a069a1c2ed3c247cb781633842fc571c655ac57c00e + languageName: node + linkType: hard + "pathe@npm:^1.1.0, pathe@npm:^1.1.1": version: 1.1.1 resolution: "pathe@npm:1.1.1" @@ -31228,6 +34568,13 @@ __metadata: languageName: node linkType: hard +"perfect-debounce@npm:^2.0.0": + version: 2.0.0 + resolution: "perfect-debounce@npm:2.0.0" + checksum: b22938a06d0cb2fe202a79bf75447cf759229d206abdbecb199df6925b9ca2143e0629b7f5c03a583a54a4744bc8f6d897eb5ff1dc892220b7564bda55f58e55 + languageName: node + linkType: hard + "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -31286,6 +34633,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 6817fb74eb745a71445debe1029768de55fd59a42b75606f478ee1d0dc1aa6e78b711d041a7c9d5550e042642029b7f373dc1a43b224c4b7f12d23436735dba0 + languageName: node + linkType: hard + "pidtree@npm:^0.6.0, pidtree@npm:~0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -31407,6 +34761,17 @@ __metadata: languageName: node linkType: hard +"pkg-types@npm:^2.3.0": + version: 2.3.0 + resolution: "pkg-types@npm:2.3.0" + dependencies: + confbox: ^0.2.2 + exsolve: ^1.0.7 + pathe: ^2.0.3 + checksum: 33c30b442662a0f2b62fd16f39ae2beeb4cdf3511699e574765b7451e179937847de6e696bbab50bfbd41d2c2e4a99b61ebc7078abf91ea8573a7f16cc11d26a + languageName: node + linkType: hard + "pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" @@ -31589,6 +34954,13 @@ __metadata: languageName: node linkType: hard +"presentable-error@npm:^0.0.1": + version: 0.0.1 + resolution: "presentable-error@npm:0.0.1" + checksum: 013809ee7a47ced847a8d860e9b89a56cdd8c4f1ad04ad8da1e58fd60843f77f497d204146bb15aaa9793d3b94ad8626eed01256fc9eb5839a545af2000a5fa4 + languageName: node + linkType: hard + "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -31616,7 +34988,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.5.3": +"prettier@npm:^3.5.3, prettier@npm:^3.6.2": version: 3.6.2 resolution: "prettier@npm:3.6.2" bin: @@ -31813,6 +35185,13 @@ __metadata: languageName: node linkType: hard +"protocols@npm:^2.0.0, protocols@npm:^2.0.1": + version: 2.0.2 + resolution: "protocols@npm:2.0.2" + checksum: 031cc068eb800468a50eb7c1e1c528bf142fb8314f5df9b9ea3c3f9df1697a19f97b9915b1229cef694d156812393172d9c3051ef7878d26eaa8c6faa5cccec4 + languageName: node + linkType: hard + "proxy-addr@npm:^2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -31823,7 +35202,7 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:^6.5.0": +"proxy-agent@npm:6.5.0, proxy-agent@npm:^6.5.0": version: 6.5.0 resolution: "proxy-agent@npm:6.5.0" dependencies: @@ -32201,6 +35580,16 @@ __metadata: languageName: node linkType: hard +"rc9@npm:^2.1.2": + version: 2.1.2 + resolution: "rc9@npm:2.1.2" + dependencies: + defu: ^6.1.4 + destr: ^2.0.3 + checksum: aaa8f962a9a6a89981e2da75dad71117fe0f856bb55fecf793cd42ee0badc1cb92e6bb7cd25a9473e2d3c968ac29e507384ce52c4e76bbd63ac5649d3d7c2ab3 + languageName: node + linkType: hard + "rc@npm:^1.2.7, rc@npm:~1.2.7": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -32234,7 +35623,7 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:^6.1.1": +"react-devtools-core@npm:^6.1.1, react-devtools-core@npm:^6.1.5": version: 6.1.5 resolution: "react-devtools-core@npm:6.1.5" dependencies: @@ -32459,6 +35848,38 @@ __metadata: languageName: node linkType: hard +"react-native-builder-bob@npm:^0.40.13": + version: 0.40.13 + resolution: "react-native-builder-bob@npm:0.40.13" + dependencies: + "@babel/core": ^7.25.2 + "@babel/plugin-transform-flow-strip-types": ^7.26.5 + "@babel/plugin-transform-strict-mode": ^7.24.7 + "@babel/preset-env": ^7.25.2 + "@babel/preset-react": ^7.24.7 + "@babel/preset-typescript": ^7.24.7 + arktype: ^2.1.15 + babel-plugin-syntax-hermes-parser: ^0.28.0 + browserslist: ^4.20.4 + cross-spawn: ^7.0.3 + dedent: ^0.7.0 + del: ^6.1.1 + escape-string-regexp: ^4.0.0 + fs-extra: ^10.1.0 + glob: ^8.0.3 + is-git-dirty: ^2.0.1 + json5: ^2.2.1 + kleur: ^4.1.4 + prompts: ^2.4.2 + react-native-monorepo-config: ^0.1.8 + which: ^2.0.2 + yargs: ^17.5.1 + bin: + bob: bin/bob + checksum: 3140749ce4c2b4362502b2074ef2a6de92e03ab1a49bdbfc8058fbea0335a000d0554d012d9ce857b18bc395a2d6796c011d922725089e4688d6760f0b56b519 + languageName: node + linkType: hard + "react-native-chart-kit@npm:6.12.0": version: 6.12.0 resolution: "react-native-chart-kit@npm:6.12.0" @@ -32795,6 +36216,62 @@ __metadata: languageName: node linkType: hard +"react-native-monorepo-config@npm:^0.1.8": + version: 0.1.10 + resolution: "react-native-monorepo-config@npm:0.1.10" + dependencies: + escape-string-regexp: ^5.0.0 + fast-glob: ^3.3.3 + checksum: 9b1c6fefb4d67e4a9f3f11554d33072c2112f56d578b8e9b68becc3457383e4f487f31af00d9e85cd43f0b23996c1b22e10cbec57e80c3fb2e4557a0e3db176d + languageName: node + linkType: hard + +"react-native-nitro-avalabs-crypto@workspace:*, react-native-nitro-avalabs-crypto@workspace:packages/react-native-nitro-avalabs-crypto": + version: 0.0.0-use.local + resolution: "react-native-nitro-avalabs-crypto@workspace:packages/react-native-nitro-avalabs-crypto" + dependencies: + "@commitlint/config-conventional": ^19.8.1 + "@eslint/compat": ^1.3.2 + "@eslint/eslintrc": ^3.3.1 + "@eslint/js": ^9.35.0 + "@evilmartians/lefthook": ^1.12.3 + "@react-native/babel-preset": 0.81.1 + "@react-native/eslint-config": ^0.81.1 + "@release-it/conventional-changelog": ^10.0.1 + "@types/jest": ^29.5.14 + "@types/react": ^19.1.0 + commitlint: ^19.8.1 + del-cli: ^6.0.0 + eslint: ^9.35.0 + eslint-config-prettier: ^10.1.8 + eslint-plugin-prettier: ^5.5.4 + jest: ^29.7.0 + nitrogen: ^0.30.2 + prettier: ^3.6.2 + react: 19.1.0 + react-native: 0.81.1 + react-native-builder-bob: ^0.40.13 + react-native-nitro-modules: ^0.30.2 + release-it: ^19.0.4 + turbo: ^2.5.6 + typescript: ^5.9.2 + peerDependencies: + react: "*" + react-native: "*" + react-native-nitro-modules: ^0.30.2 + languageName: unknown + linkType: soft + +"react-native-nitro-modules@npm:^0.30.2": + version: 0.30.2 + resolution: "react-native-nitro-modules@npm:0.30.2" + peerDependencies: + react: "*" + react-native: "*" + checksum: da06b99c7f2def27c43da39a9eef2535b36bef48ef4cd45f49c0180fa735a0407a6f2feb6a30d39c4645a849230827e391ebc23e74236bde98a6f6176c6b291a + languageName: node + linkType: hard + "react-native-os@npm:1.2.6": version: 1.2.6 resolution: "react-native-os@npm:1.2.6" @@ -32822,12 +36299,12 @@ __metadata: languageName: node linkType: hard -"react-native-performance@npm:5.1.2": - version: 5.1.2 - resolution: "react-native-performance@npm:5.1.2" +"react-native-performance@npm:^6.0.0": + version: 6.0.0 + resolution: "react-native-performance@npm:6.0.0" peerDependencies: react-native: "*" - checksum: e0ea6616ba75a13028271c8c5cd29a9eecb35c806db2b412baa160d6ce428c0ba8e9bc0c762856b4c8bebd92b5aea925532731a4dc19591ad15af575163cccd8 + checksum: b73c648b1982e2a2f38b94a45c6caeaf089d93fb7a563bd5ec2d9f07e8c5e1ba7f44edc78778d78e0946a4b0bdd78d075b35584c28856b3c7c1b8042344e3cfc languageName: node linkType: hard @@ -33045,13 +36522,6 @@ __metadata: languageName: node linkType: hard -"react-native-share@npm:12.0.9": - version: 12.0.9 - resolution: "react-native-share@npm:12.0.9" - checksum: 837e7162d3e9b44bb225029d08abebc9b064c4dee54ebad5bbe017fba5c9f1be02451dd87d96f937d79bfe2b2e6424cb638ec469cdafb33b4a7d4ef069bfa60a - languageName: node - linkType: hard - "react-native-sound@npm:0.12.0": version: 0.12.0 resolution: "react-native-sound@npm:0.12.0" @@ -33168,7 +36638,7 @@ react-native-webview@ava-labs/react-native-webview: peerDependencies: react: "*" react-native: "*" - checksum: df3e07107bec2bab08ffe837b81a8e9d4b8f8a3940833dead94a6d994aa38253cfd5d4d9484ad24efe3bf2b89a6697fd6bf0750785e168b58f5ed5f74ff8383a + checksum: 92b1d7e77f26519681b361c1fccb0c1ddd885f0e0e930046fe9a430eaf62358e86e84065eba18313d8c50d41597c4caae7ea6042cde0293556e8fc1184b9ca8e languageName: node linkType: hard @@ -33237,6 +36707,56 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"react-native@npm:0.81.1": + version: 0.81.1 + resolution: "react-native@npm:0.81.1" + dependencies: + "@jest/create-cache-key-function": ^29.7.0 + "@react-native/assets-registry": 0.81.1 + "@react-native/codegen": 0.81.1 + "@react-native/community-cli-plugin": 0.81.1 + "@react-native/gradle-plugin": 0.81.1 + "@react-native/js-polyfills": 0.81.1 + "@react-native/normalize-colors": 0.81.1 + "@react-native/virtualized-lists": 0.81.1 + abort-controller: ^3.0.0 + anser: ^1.4.9 + ansi-regex: ^5.0.0 + babel-jest: ^29.7.0 + babel-plugin-syntax-hermes-parser: 0.29.1 + base64-js: ^1.5.1 + commander: ^12.0.0 + flow-enums-runtime: ^0.0.6 + glob: ^7.1.1 + invariant: ^2.2.4 + jest-environment-node: ^29.7.0 + memoize-one: ^5.0.0 + metro-runtime: ^0.83.1 + metro-source-map: ^0.83.1 + nullthrows: ^1.1.1 + pretty-format: ^29.7.0 + promise: ^8.3.0 + react-devtools-core: ^6.1.5 + react-refresh: ^0.14.0 + regenerator-runtime: ^0.13.2 + scheduler: 0.26.0 + semver: ^7.1.3 + stacktrace-parser: ^0.1.10 + whatwg-fetch: ^3.0.0 + ws: ^6.2.3 + yargs: ^17.6.2 + peerDependencies: + "@types/react": ^19.1.0 + react: ^19.1.0 + peerDependenciesMeta: + "@types/react": + optional: true + bin: + react-native: cli.js + checksum: 5a85faa6f8d66faff6dd8b7c1f1e8999816d114331b6b49fbb1cddd938777428445e8976579805053844d59f8a45868fb7f4030b2062c5cb2768a5121543c4f8 + languageName: node + linkType: hard + "react-reconciler@npm:0.31.0": version: 0.31.0 resolution: "react-reconciler@npm:0.31.0" @@ -33412,6 +36932,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"react@npm:19.1.0": + version: 19.1.0 + resolution: "react@npm:19.1.0" + checksum: c0905f8cfb878b0543a5522727e5ed79c67c8111dc16ceee135b7fe19dce77b2c1c19293513061a8934e721292bfc1517e0487e262d1906f306bdf95fa54d02f + languageName: node + linkType: hard + "react@npm:^18.2.0": version: 18.3.1 resolution: "react@npm:18.3.1" @@ -33488,6 +37015,17 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"read-package-up@npm:^11.0.0": + version: 11.0.0 + resolution: "read-package-up@npm:11.0.0" + dependencies: + find-up-simple: ^1.0.0 + read-pkg: ^9.0.0 + type-fest: ^4.6.0 + checksum: 535b7554d47fae5fb5c2e7aceebd48b5de4142cdfe7b21f942fa9a0f56db03d3b53cce298e19438e1149292279c285e6ba6722eca741d590fd242519c4bdbc17 + languageName: node + linkType: hard + "read-pkg-up@npm:^10.0.0, read-pkg-up@npm:^10.1.0": version: 10.1.0 resolution: "read-pkg-up@npm:10.1.0" @@ -33523,6 +37061,19 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"read-pkg@npm:^9.0.0": + version: 9.0.1 + resolution: "read-pkg@npm:9.0.1" + dependencies: + "@types/normalize-package-data": ^2.4.3 + normalize-package-data: ^6.0.0 + parse-json: ^8.0.0 + type-fest: ^4.6.0 + unicorn-magic: ^0.1.0 + checksum: 5544bea2a58c6e5706db49a96137e8f0768c69395f25363f934064fbba00bdcdaa326fcd2f4281741df38cf81dbf27b76138240dc6de0ed718cf650475e0de3c + languageName: node + linkType: hard + "readable-stream@npm:4.5.2": version: 4.5.2 resolution: "readable-stream@npm:4.5.2" @@ -33563,7 +37114,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": +"readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -33932,6 +37483,39 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"release-it@npm:^19.0.4": + version: 19.0.5 + resolution: "release-it@npm:19.0.5" + dependencies: + "@nodeutils/defaults-deep": 1.1.0 + "@octokit/rest": 22.0.0 + "@phun-ky/typeof": 2.0.3 + async-retry: 1.3.3 + c12: 3.3.0 + ci-info: ^4.3.0 + eta: 4.0.1 + git-url-parse: 16.1.0 + inquirer: 12.9.6 + issue-parser: 7.0.1 + lodash.merge: 4.6.2 + mime-types: 3.0.1 + new-github-release-url: 2.0.0 + open: 10.2.0 + ora: 9.0.0 + os-name: 6.1.0 + proxy-agent: 6.5.0 + semver: 7.7.2 + tinyglobby: 0.2.15 + undici: 6.21.3 + url-join: 5.0.0 + wildcard-match: 5.1.4 + yargs-parser: 21.1.1 + bin: + release-it: bin/release-it.js + checksum: 7a3a29c10c6c1cf96db0310f4ea3bdf684567b6c5796a2715536a376be3ec6bd6a0d4c7c85918556f6792221947867eff71ae8e1d486d75736657a34bd6e923c + languageName: node + linkType: hard + "request@npm:^2.72.0": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -34078,6 +37662,19 @@ react-native-webview@ava-labs/react-native-webview: linkType: hard "resolve@npm:^1.10.0": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" + dependencies: + is-core-module: ^2.16.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 6d5baa2156b95a65ac431e7642e21106584e9f4194da50871cae8bc1bbd2b53bb7cee573c92543d83bb999620b224a087f62379d800ed1ccb189da6df5d78d50 + languageName: node + linkType: hard + +"resolve@npm:^1.22.10": version: 1.22.10 resolution: "resolve@npm:1.22.10" dependencies: @@ -34126,6 +37723,19 @@ react-native-webview@ava-labs/react-native-webview: linkType: hard "resolve@patch:resolve@^1.10.0#~builtin": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#~builtin::version=1.22.11&hash=c3c19d" + dependencies: + is-core-module: ^2.16.1 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 1462da84ac3410d7c2e12e4f5f25c1423d8a174c3b4245c43eafea85e7bbe6af3eb7ec10a4850b5e518e8531608604742b8cbd761e1acd7ad1035108b7c98013 + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.22.10#~builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=c3c19d" dependencies: @@ -34206,6 +37816,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"retry@npm:0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 47c4d5be674f7c13eee4cfe927345023972197dbbdfba5d3af7e461d13b44de1bfd663bfc80d2f601f8ef3fc8164c16dd99655a221921954a65d044a2fc1233b + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -34257,14 +37874,14 @@ react-native-webview@ava-labs/react-native-webview: linkType: hard "rimraf@npm:^6.0.1": - version: 6.0.1 - resolution: "rimraf@npm:6.0.1" + version: 6.1.0 + resolution: "rimraf@npm:6.1.0" dependencies: - glob: ^11.0.0 - package-json-from-dist: ^1.0.0 + glob: ^11.0.3 + package-json-from-dist: ^1.0.1 bin: rimraf: dist/esm/bin.mjs - checksum: 8ba5b84131c1344e9417cb7e8c05d8368bb73cbe5dd4c1d5eb49fc0b558209781658d18c450460e30607d0b7865bb067482839a2f343b186b07ae87715837e66 + checksum: 2b5bc6ab8bac86a921b783ca7f6f6601bf09b0a894d1717e59b139b56f698f732ba954ec52fea397fd29d379b571315dfe097b31ace44c87cda2a17e23096925 languageName: node linkType: hard @@ -34401,6 +38018,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"run-applescript@npm:^7.0.0": + version: 7.1.0 + resolution: "run-applescript@npm:7.1.0" + checksum: 8659fb5f2717b2b37a68cbfe5f678254cf24b5a82a6df3372b180c80c7c137dcd757a4166c3887e459f59a090ca414e8ea7ca97cf3ee5123db54b3b4006d7b7a + languageName: node + linkType: hard + "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" @@ -34601,6 +38225,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"scheduler@npm:0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: c63a9f1c0e5089b537231cff6c11f75455b5c8625ae09535c1d7cd0a1b0c77ceecdd9f1074e5e063da5d8dc11e73e8033dcac3361791088be08a6e60c0283ed9 + languageName: node + linkType: hard + "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -35326,6 +38957,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"slash@npm:^5.1.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 70434b34c50eb21b741d37d455110258c42d2cf18c01e6518aeb7299f3c6e626330c889c0c552b5ca2ef54a8f5a74213ab48895f0640717cacefeef6830a1ba4 + languageName: node + linkType: hard + "slice-ansi@npm:^2.0.0": version: 2.1.0 resolution: "slice-ansi@npm:2.1.0" @@ -35720,6 +39358,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"stdin-discarder@npm:^0.2.2": + version: 0.2.2 + resolution: "stdin-discarder@npm:0.2.2" + checksum: 642ffd05bd5b100819d6b24a613d83c6e3857c6de74eb02fc51506fa61dc1b0034665163831873868157c4538d71e31762bcf319be86cea04c3aba5336470478 + languageName: node + linkType: hard + "stop-iteration-iterator@npm:^1.1.0": version: 1.1.0 resolution: "stop-iteration-iterator@npm:1.1.0" @@ -35794,7 +39439,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"streamx@npm:^2.15.0": +"streamx@npm:^2.13.0, streamx@npm:^2.15.0": version: 2.16.1 resolution: "streamx@npm:2.16.1" dependencies: @@ -35913,6 +39558,16 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"string-width@npm:^8.1.0": + version: 8.1.0 + resolution: "string-width@npm:8.1.0" + dependencies: + get-east-asian-width: ^1.3.0 + strip-ansi: ^7.1.0 + checksum: 51ee97c4ffee7b94f8a2ee785fac14f81ec9809b9fcec9a4db44e25c717c263af0cc4387c111aef76195c0718dc43766f3678c07fb542294fb0244f7bfbde883 + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.12": version: 4.0.12 resolution: "string.prototype.matchall@npm:4.0.12" @@ -36107,6 +39762,15 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"strip-ansi@npm:^7.1.2": + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" + dependencies: + ansi-regex: ^6.0.1 + checksum: db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -36293,6 +39957,15 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"synckit@npm:^0.11.7": + version: 0.11.11 + resolution: "synckit@npm:0.11.11" + dependencies: + "@pkgr/core": ^0.2.9 + checksum: bc896d4320525501495654766e6b0aa394e522476ea0547af603bdd9fd7e9b65dcd6e3a237bc7eb3ab7e196376712f228bf1bf6ed1e1809f4b32dc9baf7ad413 + languageName: node + linkType: hard + "table-layout@npm:^1.0.2": version: 1.0.2 resolution: "table-layout@npm:1.0.2" @@ -36313,18 +39986,35 @@ react-native-webview@ava-labs/react-native-webview: linkType: hard "tar-fs@npm:^2.0.0": - version: 2.1.4 - resolution: "tar-fs@npm:2.1.4" + version: 2.1.1 + resolution: "tar-fs@npm:2.1.1" dependencies: chownr: ^1.1.1 mkdirp-classic: ^0.5.2 pump: ^3.0.0 tar-stream: ^2.1.4 - checksum: a9e18e2e6114b8ac2568d7c2b42d006b1fe30d83957e4e75ba2361a889c2fc54e54236476782d06494e081358a393feacdf19311df12b3056c8a64dc1f7ed309 + checksum: f5b9a70059f5b2969e65f037b4e4da2daf0fa762d3d232ffd96e819e3f94665dbbbe62f76f084f1acb4dbdcce16c6e4dac08d12ffc6d24b8d76720f4d9cf032d languageName: node linkType: hard -"tar-fs@npm:^3.0.4, tar-fs@npm:^3.0.6, tar-fs@npm:^3.1.1": +"tar-fs@npm:^3.0.4": + version: 3.0.5 + resolution: "tar-fs@npm:3.0.5" + dependencies: + bare-fs: ^2.1.1 + bare-path: ^2.1.0 + pump: ^3.0.0 + tar-stream: ^3.1.5 + dependenciesMeta: + bare-fs: + optional: true + bare-path: + optional: true + checksum: e31c7e3e525fec0afecdec1cac58071809e396187725f2eba442f08a4c5649c8cd6b7ce25982f9a91bb0f055628df47c08177dd2ea4f5dafd3c22f42f8da8f00 + languageName: node + linkType: hard + +"tar-fs@npm:^3.0.6, tar-fs@npm:^3.1.1": version: 3.1.1 resolution: "tar-fs@npm:3.1.1" dependencies: @@ -36407,7 +40097,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"teen_process@npm:3.0.1, teen_process@npm:^3.0.0": +"teen_process@npm:3.0.1": version: 3.0.1 resolution: "teen_process@npm:3.0.1" dependencies: @@ -36433,6 +40123,18 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"teen_process@npm:^3.0.0": + version: 3.0.2 + resolution: "teen_process@npm:3.0.2" + dependencies: + bluebird: ^3.7.2 + lodash: ^4.17.21 + shell-quote: ^1.8.1 + source-map-support: ^0.x + checksum: adffb84d81f0a1cf54e6548b9013b0d1f25055009eeb69d68e81aa7f08b252444171d539e833f98b59f3d1808caf9a3293d670497c97f993cf41951b70cde8ab + languageName: node + linkType: hard + "telejson@npm:^7.2.0": version: 7.2.0 resolution: "telejson@npm:7.2.0" @@ -36519,6 +40221,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"text-extensions@npm:^2.0.0": + version: 2.4.0 + resolution: "text-extensions@npm:2.4.0" + checksum: 9bdbc9959e004ccc86a6ec076d6c5bb6765978263e9d0d5febb640d7675c09919ea912f3fe9d50b68c3c7c43cc865610a7cb24954343abb31f74c205fbae4e45 + languageName: node + linkType: hard + "text-hex@npm:1.0.x": version: 1.0.0 resolution: "text-hex@npm:1.0.0" @@ -36576,7 +40285,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"through@npm:^2.3.6, through@npm:~2.3.4": +"through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:~2.3.4": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -36618,6 +40327,23 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"tinyexec@npm:^1.0.0, tinyexec@npm:^1.0.1": + version: 1.0.1 + resolution: "tinyexec@npm:1.0.1" + checksum: 40f5219abf891884863b085ebe5e8c8bf95bde802f6480f279588b355835ad1604fa01eada2afe90063b48b53cd4b0be5c37393980e23f06fd10689d92fb9586 + languageName: node + linkType: hard + +"tinyglobby@npm:0.2.15, tinyglobby@npm:^0.2.14": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: ^6.5.0 + picomatch: ^4.0.3 + checksum: 0e33b8babff966c6ab86e9b825a350a6a98a63700fa0bb7ae6cf36a7770a508892383adc272f7f9d17aaf46a9d622b455e775b9949a3f951eaaf5dfb26331d44 + languageName: node + linkType: hard + "tinyrainbow@npm:^1.2.0": version: 1.2.0 resolution: "tinyrainbow@npm:1.2.0" @@ -36899,6 +40625,16 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"ts-morph@npm:^27.0.0": + version: 27.0.2 + resolution: "ts-morph@npm:27.0.2" + dependencies: + "@ts-morph/common": ~0.28.1 + code-block-writer: ^13.0.3 + checksum: 1ed2e89257d6f48fdce49bf51e1767787579220197efaa31ac25971c656c9a8a5a6bdd123042d16f83674eec119e4462a06f716187aec0b5e4740888ab5b73b7 + languageName: node + linkType: hard + "ts-node@npm:10.9.2": version: 10.9.2 resolution: "ts-node@npm:10.9.2" @@ -37034,6 +40770,77 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"turbo-darwin-64@npm:2.5.8": + version: 2.5.8 + resolution: "turbo-darwin-64@npm:2.5.8" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"turbo-darwin-arm64@npm:2.5.8": + version: 2.5.8 + resolution: "turbo-darwin-arm64@npm:2.5.8" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"turbo-linux-64@npm:2.5.8": + version: 2.5.8 + resolution: "turbo-linux-64@npm:2.5.8" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"turbo-linux-arm64@npm:2.5.8": + version: 2.5.8 + resolution: "turbo-linux-arm64@npm:2.5.8" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"turbo-windows-64@npm:2.5.8": + version: 2.5.8 + resolution: "turbo-windows-64@npm:2.5.8" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"turbo-windows-arm64@npm:2.5.8": + version: 2.5.8 + resolution: "turbo-windows-arm64@npm:2.5.8" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"turbo@npm:^2.5.6": + version: 2.5.8 + resolution: "turbo@npm:2.5.8" + dependencies: + turbo-darwin-64: 2.5.8 + turbo-darwin-arm64: 2.5.8 + turbo-linux-64: 2.5.8 + turbo-linux-arm64: 2.5.8 + turbo-windows-64: 2.5.8 + turbo-windows-arm64: 2.5.8 + dependenciesMeta: + turbo-darwin-64: + optional: true + turbo-darwin-arm64: + optional: true + turbo-linux-64: + optional: true + turbo-linux-arm64: + optional: true + turbo-windows-64: + optional: true + turbo-windows-arm64: + optional: true + bin: + turbo: bin/turbo + checksum: f1d6d84e828f7f2d41ae7598507267c7ed8de22307507a304da8353ce4e47cf38c1c7c26e6249c1247ea7702eebd6c062b6fcf037c565b2a94417690956c8cb5 + languageName: node + linkType: hard + "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -37078,7 +40885,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"type-fest@npm:4.41.0, type-fest@npm:^4.2.0, type-fest@npm:^4.31.0, type-fest@npm:^4.41.0": +"type-fest@npm:4.41.0, type-fest@npm:^4.2.0, type-fest@npm:^4.31.0, type-fest@npm:^4.39.1, type-fest@npm:^4.41.0, type-fest@npm:^4.6.0": version: 4.41.0 resolution: "type-fest@npm:4.41.0" checksum: 7055c0e3eb188425d07403f1d5dc175ca4c4f093556f26871fe22041bc93d137d54bef5851afa320638ca1379106c594f5aa153caa654ac1a7f22c71588a4e80 @@ -37122,7 +40929,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"type-fest@npm:^2.19.0, type-fest@npm:~2.19": +"type-fest@npm:^2.19.0, type-fest@npm:^2.5.1, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 @@ -37365,7 +41172,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"typescript@npm:^5.8.3": +"typescript@npm:^5.8.3, typescript@npm:^5.9.2": version: 5.9.3 resolution: "typescript@npm:5.9.3" bin: @@ -37395,7 +41202,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"typescript@patch:typescript@^5.8.3#~builtin": +"typescript@patch:typescript@^5.8.3#~builtin, typescript@patch:typescript@^5.9.2#~builtin": version: 5.9.3 resolution: "typescript@patch:typescript@npm%3A5.9.3#~builtin::version=5.9.3&hash=29ae49" bin: @@ -37477,6 +41284,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: a05fa2006bf4606051c10fc7968f08ce7b28fa646befafa282813aeb1ac1a56f65cb1b577ca7851af2726198d59475bb49b11776036257b843eaacee2860a4ec + languageName: node + linkType: hard + "uncrypto@npm:^0.1.3": version: 0.1.3 resolution: "uncrypto@npm:0.1.3" @@ -37519,10 +41333,10 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"undici-types@npm:~7.14.0": - version: 7.14.0 - resolution: "undici-types@npm:7.14.0" - checksum: bd28cb36b33a51359f02c27b84bfe8563cdad57bdab0aa6ac605ce64d51aff49fd0aa4cb2d3b043caaa93c3ec42e96b5757df5d2d9bcc06a5f3e71899c765035 +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 1ef68fc6c5bad200c8b6f17de8e5bc5cfdcadc164ba8d7208cd087cfa8583d922d8316a7fd76c9a658c22b4123d3ff847429185094484fbc65377d695c905857 languageName: node linkType: hard @@ -37533,6 +41347,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"undici@npm:6.21.3": + version: 6.21.3 + resolution: "undici@npm:6.21.3" + checksum: a2af0601deece36acbcc11ef722f36ad3c1e035d3065b9fbb36987487f7b69904046fa95c18f228a872ca45441f156fcaacd948fc920b0a97d0c1ab78ea63c04 + languageName: node + linkType: hard + "undici@npm:^6.18.2": version: 6.21.0 resolution: "undici@npm:6.21.0" @@ -37605,6 +41426,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"unicorn-magic@npm:^0.1.0": + version: 0.1.0 + resolution: "unicorn-magic@npm:0.1.0" + checksum: 48c5882ca3378f380318c0b4eb1d73b7e3c5b728859b060276e0a490051d4180966beeb48962d850fd0c6816543bcdfc28629dcd030bb62a286a2ae2acb5acb6 + languageName: node + linkType: hard + "unicorn-magic@npm:^0.3.0": version: 0.3.0 resolution: "unicorn-magic@npm:0.3.0" @@ -37639,6 +41467,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"universal-user-agent@npm:^7.0.0, universal-user-agent@npm:^7.0.2": + version: 7.0.3 + resolution: "universal-user-agent@npm:7.0.3" + checksum: c497e85f8b11eb8fa4dce584d7a39cc98710164959f494cafc3c269b51abb20fff269951838efd7424d15f6b3d001507f3cb8b52bb5676fdb642019dfd17e63e + languageName: node + linkType: hard + "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -37765,6 +41600,20 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.3": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: ^3.2.0 + picocolors: ^1.1.1 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 7b6d8d08c34af25ee435bccac542bedcb9e57c710f3c42421615631a80aa6dd28b0a81c9d2afbef53799d482fb41453f714b8a7a0a8003e3b4ec8fb1abb819af + languageName: node + linkType: hard + "uqr@npm:^0.1.2": version: 0.1.2 resolution: "uqr@npm:0.1.2" @@ -37781,6 +41630,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"url-join@npm:5.0.0": + version: 5.0.0 + resolution: "url-join@npm:5.0.0" + checksum: 5921384a8ad4395b49ce4b50aa26efbc429cebe0bc8b3660ad693dd12fd859747b5369be0443e60e53a7850b2bc9d7d0687bcb94386662b40e743596bbf38101 + languageName: node + linkType: hard + "url@npm:0.11.4": version: 0.11.4 resolution: "url@npm:0.11.4" @@ -38914,6 +42770,22 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"wildcard-match@npm:5.1.4": + version: 5.1.4 + resolution: "wildcard-match@npm:5.1.4" + checksum: 96e8c13f26b7ae508c694ceb6721640707df55f22045870fbd3b7d8f58529d3616e8e59fb6992524db5e8b323c9fe7c3e92d92b5ae36707529d1f4f170c00e23 + languageName: node + linkType: hard + +"windows-release@npm:^6.1.0": + version: 6.1.0 + resolution: "windows-release@npm:6.1.0" + dependencies: + execa: ^8.0.1 + checksum: 2af39c94d5e4e250c3239e70177f3a97291c505e364b85a7ae63ca9d06c91496e8bd3a75c55e03184d9c27e58c0a0fa21a4a8457ac72cc560d8796a75f12d0a3 + languageName: node + linkType: hard + "winston-transport@npm:^4.9.0": version: 4.9.0 resolution: "winston-transport@npm:4.9.0" @@ -39167,6 +43039,15 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"wsl-utils@npm:^0.1.0": + version: 0.1.0 + resolution: "wsl-utils@npm:0.1.0" + dependencies: + is-wsl: ^3.1.0 + checksum: de4c92187e04c3c27b4478f410a02e81c351dc85efa3447bf1666f34fc80baacd890a6698ec91995631714086992036013286aea3d77e6974020d40a08e00aec + languageName: node + linkType: hard + "xcode@npm:^3.0.1": version: 3.0.1 resolution: "xcode@npm:3.0.1" @@ -39369,7 +43250,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yaml@npm:2.8.1": +"yaml@npm:2.8.1, yaml@npm:^2.6.1": version: 2.8.1 resolution: "yaml@npm:2.8.1" bin: @@ -39403,6 +43284,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + "yargs-parser@npm:22.0.0, yargs-parser@npm:^22.0.0": version: 22.0.0 resolution: "yargs-parser@npm:22.0.0" @@ -39427,13 +43315,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c - languageName: node - linkType: hard - "yargs-unparser@npm:^2.0.0": version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" @@ -39461,7 +43342,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yargs@npm:18.0.0": +"yargs@npm:18.0.0, yargs@npm:^18.0.0": version: 18.0.0 resolution: "yargs@npm:18.0.0" dependencies: @@ -39617,6 +43498,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"zod@npm:^4.0.5": + version: 4.1.12 + resolution: "zod@npm:4.1.12" + checksum: 91174acc7d2ca5572ad522643474ddd60640cf6877b5d76e5d583eb25e3c4072c6f5eb92ab94f231ec5ce61c6acdfc3e0166de45fb1005b1ea54986b026b765f + languageName: node + linkType: hard + "zustand@npm:5.0.6": version: 5.0.6 resolution: "zustand@npm:5.0.6" From 9ff511c91b20d42d5fe8dda4e5e36db17a965828 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 4 Nov 2025 22:19:23 +0100 Subject: [PATCH 02/21] revert: Revert watchListCacheClient changes --- .../watchlist/watchListCacheClient.ts | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts b/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts index 825b7149a0..f592deb315 100644 --- a/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts +++ b/packages/core-mobile/app/services/watchlist/watchListCacheClient.ts @@ -14,40 +14,41 @@ if (!Config.PROXY_URL) const baseUrl = `${Config.PROXY_URL}/watchlist` -// Zodios endpoint definitions -const endpoints = [ - { - method: 'get', - path: '/price', - alias: 'simplePrice', - response: SimplePriceResponseSchema - }, - { - method: 'get', - path: '/tokens', - parameters: [{ name: 'currency', type: 'Query', schema: string() }], - alias: 'tokens', - response: array(TopTokenSchema) - }, - { - method: 'get', - path: '/trending', - alias: 'trending', - response: array(TrendingTokenSchema) - } -] as const - // Infer types from schemas for typings export type SimplePriceResponse = z.infer export type TopToken = z.infer export type TrendingToken = z.infer // Dev (validated) and Prod (raw) clients -const devClient = new Zodios(baseUrl, endpoints, { - axiosConfig: { - headers: { 'Content-Type': 'application/json' } +const devClient = new Zodios( + baseUrl, + [ + { + method: 'get', + path: '/price', + alias: 'simplePrice', + response: SimplePriceResponseSchema + }, + { + method: 'get', + path: '/tokens', + parameters: [{ name: 'currency', type: 'Query', schema: string() }], + alias: 'tokens', + response: array(TopTokenSchema) + }, + { + method: 'get', + path: '/trending', + alias: 'trending', + response: array(TrendingTokenSchema) + } + ], + { + axiosConfig: { + headers: { 'Content-Type': 'application/json' } + } } -}) +) const prodClient = axios.create({ baseURL: baseUrl, @@ -55,7 +56,7 @@ const prodClient = axios.create({ }) // Force validation on/off -const useValidation = __DEV__ //in normal use +const useValidation = __DEV__ //in normal use export const watchListCacheClient = { /** @@ -93,4 +94,4 @@ export const watchListCacheClient = { const { data } = await prodClient.get('/trending') return data } -} \ No newline at end of file +} From 087548eb3c1e5c53adb3b0ac6a65cf9090dc2a8a Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 4 Nov 2025 22:26:29 +0100 Subject: [PATCH 03/21] feat: Adjust allowCommands configuration --- packages/core-mobile/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 9de3760fe6..32e8a82625 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -362,7 +362,9 @@ "@wdio/cli>tsx>esbuild": true, "appium": true, "appium-xcuitest-driver>appium-ios-remotexpc>appium-ios-tuntap": false, - "appium>@appium/support>sharp": true + "appium>@appium/support>sharp": true, + "react-native-nitro-modules": true, + "react-native-nitro-avalabs-crypto>react-native-nitro-modules": true } }, "react-native": { From cdf70155a302d0f0a84b242341c59d2e2464df18 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 4 Nov 2025 22:30:36 +0100 Subject: [PATCH 04/21] revert: Put back react-native-share package --- packages/core-mobile/package.json | 1 + yarn.lock | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 32e8a82625..644a34e393 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -211,6 +211,7 @@ "react-native-safe-area-context": "5.5.2", "react-native-screens": "4.15.4", "react-native-sensors": "7.3.6", + "react-native-share": "12.0.9", "react-native-sound": "0.12.0", "react-native-svg": "15.11.2", "react-native-tab-view": "4.0.5", diff --git a/yarn.lock b/yarn.lock index 6c5437790d..94e0c846dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -633,6 +633,7 @@ __metadata: react-native-safe-area-context: 5.5.2 react-native-screens: 4.15.4 react-native-sensors: 7.3.6 + react-native-share: 12.0.9 react-native-sound: 0.12.0 react-native-svg: 15.11.2 react-native-svg-transformer: 1.5.1 @@ -36522,6 +36523,13 @@ __metadata: languageName: node linkType: hard +"react-native-share@npm:12.0.9": + version: 12.0.9 + resolution: "react-native-share@npm:12.0.9" + checksum: 837e7162d3e9b44bb225029d08abebc9b064c4dee54ebad5bbe017fba5c9f1be02451dd87d96f937d79bfe2b2e6424cb638ec469cdafb33b4a7d4ef069bfa60a + languageName: node + linkType: hard + "react-native-sound@npm:0.12.0": version: 0.12.0 resolution: "react-native-sound@npm:0.12.0" From 0b737344d33ce1f28163a34321a14490c62dec8b Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 4 Nov 2025 22:45:28 +0100 Subject: [PATCH 05/21] revert: Rollback react-native version --- .../package.json | 2 +- yarn.lock | 366 +----------------- 2 files changed, 5 insertions(+), 363 deletions(-) diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json index 74214a4cd0..ee313692ea 100644 --- a/packages/react-native-nitro-avalabs-crypto/package.json +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -79,7 +79,7 @@ "nitrogen": "^0.30.2", "prettier": "^3.6.2", "react": "19.1.0", - "react-native": "0.81.1", + "react-native": "0.79.5", "react-native-builder-bob": "^0.40.13", "react-native-nitro-modules": "^0.30.2", "release-it": "^19.0.4", diff --git a/yarn.lock b/yarn.lock index 94e0c846dd..966dba7a23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12707,13 +12707,6 @@ __metadata: languageName: node linkType: hard -"@react-native/assets-registry@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/assets-registry@npm:0.81.1" - checksum: 9657f2cfd82d3699d5753a214a48c3f3403514eab441021afd2c4f2c0f58625be72eb77015d480cbe87ac46bcb48ed73f1b0de1f4ef7f361e40d24a029ce96b9 - languageName: node - linkType: hard - "@react-native/babel-plugin-codegen@npm:0.79.5": version: 0.79.5 resolution: "@react-native/babel-plugin-codegen@npm:0.79.5" @@ -12897,29 +12890,6 @@ __metadata: languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/community-cli-plugin@npm:0.81.1" - dependencies: - "@react-native/dev-middleware": 0.81.1 - debug: ^4.4.0 - invariant: ^2.2.4 - metro: ^0.83.1 - metro-config: ^0.83.1 - metro-core: ^0.83.1 - semver: ^7.1.3 - peerDependencies: - "@react-native-community/cli": "*" - "@react-native/metro-config": "*" - peerDependenciesMeta: - "@react-native-community/cli": - optional: true - "@react-native/metro-config": - optional: true - checksum: 03cb31126df95a9ea61dcea74304bc7a84e87d1aa1e04cfe61f1a3636658be91709352ed0a006009a23d1feaa1e4a20df8143b9588773325de3aa06f392b2e3b - languageName: node - linkType: hard - "@react-native/debugger-frontend@npm:0.79.5": version: 0.79.5 resolution: "@react-native/debugger-frontend@npm:0.79.5" @@ -12927,13 +12897,6 @@ __metadata: languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/debugger-frontend@npm:0.81.1" - checksum: d36f75a0c7c5536d0192cc5534f039926036c0056478d6e09e53c722d015a89bfd19caa98a2c93746364cb086490f5c973d1b1ae84ebe62c45f8bac16a00d7f5 - languageName: node - linkType: hard - "@react-native/dev-middleware@npm:0.79.5": version: 0.79.5 resolution: "@react-native/dev-middleware@npm:0.79.5" @@ -12953,25 +12916,6 @@ __metadata: languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/dev-middleware@npm:0.81.1" - dependencies: - "@isaacs/ttlcache": ^1.4.1 - "@react-native/debugger-frontend": 0.81.1 - chrome-launcher: ^0.15.2 - chromium-edge-launcher: ^0.2.0 - connect: ^3.6.5 - debug: ^4.4.0 - invariant: ^2.2.4 - nullthrows: ^1.1.1 - open: ^7.0.3 - serve-static: ^1.16.2 - ws: ^6.2.3 - checksum: e158914574e9d0af0b3c69425472398c9c8cbc8f91c85c9ef78c95711f04b3188c9efb725ddbf5a5a95b77de2128519c1dbad3bcd5fd831b8b5988f6ffb75e34 - languageName: node - linkType: hard - "@react-native/eslint-config@npm:0.79.5": version: 0.79.5 resolution: "@react-native/eslint-config@npm:0.79.5" @@ -13039,13 +12983,6 @@ __metadata: languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/gradle-plugin@npm:0.81.1" - checksum: 70f35565880989d7aea5cb4cb7e44986f1b465908f5536291b1089ac67bd0f09d3072e0412281546075e0d128a066f664df9d60987fd402cc957599add126891 - languageName: node - linkType: hard - "@react-native/js-polyfills@npm:0.79.5": version: 0.79.5 resolution: "@react-native/js-polyfills@npm:0.79.5" @@ -13053,13 +12990,6 @@ __metadata: languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/js-polyfills@npm:0.81.1" - checksum: e0f099f1ad7c99d84162c86a40499a2830036aadb00dd2fd025a177be28d2fed096a6070fe0d1cd3c5d6e0b708b89a18493a7335b9d458fc7501c94be3116393 - languageName: node - linkType: hard - "@react-native/metro-babel-transformer@npm:0.79.5": version: 0.79.5 resolution: "@react-native/metro-babel-transformer@npm:0.79.5" @@ -13100,13 +13030,6 @@ __metadata: languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/normalize-colors@npm:0.81.1" - checksum: 4717307f611e9bdc11d7b5d53426fa21e35c8ec5ba0ef2b71b943b3dbb168a147da8ed01253421886a0054a6ed7f6550937a15ae0f2c1afa4f623098640e161f - languageName: node - linkType: hard - "@react-native/normalize-colors@npm:^0.73.0": version: 0.73.2 resolution: "@react-native/normalize-colors@npm:0.73.2" @@ -13138,23 +13061,6 @@ __metadata: languageName: node linkType: hard -"@react-native/virtualized-lists@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/virtualized-lists@npm:0.81.1" - dependencies: - invariant: ^2.2.4 - nullthrows: ^1.1.1 - peerDependencies: - "@types/react": ^19.1.0 - react: "*" - react-native: "*" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 9073000e1d3b78bb9a1209ecc5c8795e6ff4e1eba4385a39bd639a441d25415163d0044ecd10e962024a22744ce680af3bac4b7721871c5790e1bf490f9b8cab - languageName: node - linkType: hard - "@react-navigation/bottom-tabs@npm:7.4.7": version: 7.4.7 resolution: "@react-navigation/bottom-tabs@npm:7.4.7" @@ -27515,13 +27421,6 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.32.0": - version: 0.32.0 - resolution: "hermes-estree@npm:0.32.0" - checksum: 7b0606a8d2cf4593634d01b0eae0764c0e4703bc5cd73cbb0547fb8dda9445a27a83345117c08eef64f6bdab1287e3c5a4e3001deed465a715d26f4e918c8b22 - languageName: node - linkType: hard - "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -27549,15 +27448,6 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.32.0": - version: 0.32.0 - resolution: "hermes-parser@npm:0.32.0" - dependencies: - hermes-estree: 0.32.0 - checksum: 7ec172ec763ee5ba1d01f273084ab4c7ad7a543d1ed11e887ea3a9eba7c0b83854dde08e835e38f29b74146b5ce17e67d556774324a63f8afe16fb57021bfdcb - languageName: node - linkType: hard - "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -31731,18 +31621,6 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.83.3": - version: 0.83.3 - resolution: "metro-babel-transformer@npm:0.83.3" - dependencies: - "@babel/core": ^7.25.2 - flow-enums-runtime: ^0.0.6 - hermes-parser: 0.32.0 - nullthrows: ^1.1.1 - checksum: dd178409d1718dae12dfffb6572ebc5bb78f1e0d7e93dce829c945957f8a686cb1b4c466c69585d7b982b3937fbea28d5c53a80691f2fc66717a0bcc800bc5b8 - languageName: node - linkType: hard - "metro-cache-key@npm:0.82.5": version: 0.82.5 resolution: "metro-cache-key@npm:0.82.5" @@ -31752,15 +31630,6 @@ __metadata: languageName: node linkType: hard -"metro-cache-key@npm:0.83.3": - version: 0.83.3 - resolution: "metro-cache-key@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: a6f9d2bf8b810f57d330d6f8f1ebf029e1224f426c5895f73d9bc1007482684048bfc7513a855626ee7f3ae72ca46e1b08cf983aefbfa84321bb7c0cef4ba4ae - languageName: node - linkType: hard - "metro-cache@npm:0.82.5": version: 0.82.5 resolution: "metro-cache@npm:0.82.5" @@ -31773,18 +31642,6 @@ __metadata: languageName: node linkType: hard -"metro-cache@npm:0.83.3": - version: 0.83.3 - resolution: "metro-cache@npm:0.83.3" - dependencies: - exponential-backoff: ^3.1.1 - flow-enums-runtime: ^0.0.6 - https-proxy-agent: ^7.0.5 - metro-core: 0.83.3 - checksum: 95606275411d85de071fd95171a9548406cd1154320850a554bf00207804f7844ed252f9750a802d6612ade839c579b23bd87927ae173f43c368e8f5d900149d - languageName: node - linkType: hard - "metro-config@npm:0.82.5, metro-config@npm:^0.82.0": version: 0.82.5 resolution: "metro-config@npm:0.82.5" @@ -31801,22 +31658,6 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-config@npm:0.83.3" - dependencies: - connect: ^3.6.5 - flow-enums-runtime: ^0.0.6 - jest-validate: ^29.7.0 - metro: 0.83.3 - metro-cache: 0.83.3 - metro-core: 0.83.3 - metro-runtime: 0.83.3 - yaml: ^2.6.1 - checksum: a14b77668a9712abbcebe5bf6a0081f0fd46caf8d37405174f261765abcd44d7a99910533fcc05edde3de10f9b22820cc9910c7dee2b01e761692a0a322f2608 - languageName: node - linkType: hard - "metro-core@npm:0.82.5, metro-core@npm:^0.82.0": version: 0.82.5 resolution: "metro-core@npm:0.82.5" @@ -31828,17 +31669,6 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-core@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - lodash.throttle: ^4.1.1 - metro-resolver: 0.83.3 - checksum: d06871313310cd718094ecbae805bcacea3f325340f6dff3c5044b62457c4690dd729cdb938349bdd3c41efa6f28032ae07696467ef006d5509fec9045c1966f - languageName: node - linkType: hard - "metro-file-map@npm:0.82.5": version: 0.82.5 resolution: "metro-file-map@npm:0.82.5" @@ -31856,23 +31686,6 @@ __metadata: languageName: node linkType: hard -"metro-file-map@npm:0.83.3": - version: 0.83.3 - resolution: "metro-file-map@npm:0.83.3" - dependencies: - debug: ^4.4.0 - fb-watchman: ^2.0.0 - flow-enums-runtime: ^0.0.6 - graceful-fs: ^4.2.4 - invariant: ^2.2.4 - jest-worker: ^29.7.0 - micromatch: ^4.0.4 - nullthrows: ^1.1.1 - walker: ^1.0.7 - checksum: 0dea599206e93b6e8628be2aa98452d4dae16e805b810759ec8b50cebcd83f2d053f7e5865196d464f3793f86b3b5003830c6713f91bf62fa406a4af7c93a776 - languageName: node - linkType: hard - "metro-minify-terser@npm:0.82.5": version: 0.82.5 resolution: "metro-minify-terser@npm:0.82.5" @@ -31883,16 +31696,6 @@ __metadata: languageName: node linkType: hard -"metro-minify-terser@npm:0.83.3": - version: 0.83.3 - resolution: "metro-minify-terser@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - terser: ^5.15.0 - checksum: 1de88b70b7c903147807baa46497491a87600594fd0868b6538bbb9d7785242cabfbe8bccf36cc2285d0e17be72445b512d00c496952a159572545f3e6bcb199 - languageName: node - linkType: hard - "metro-resolver@npm:0.82.5": version: 0.82.5 resolution: "metro-resolver@npm:0.82.5" @@ -31902,15 +31705,6 @@ __metadata: languageName: node linkType: hard -"metro-resolver@npm:0.83.3": - version: 0.83.3 - resolution: "metro-resolver@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: de2ae5ced6239b004a97712f98934c6e830870d11614e2dba48250930214581f0746df8a4f0f1cb71060fe21c2cf919d3359106ad4f375c2500ba08e10922896 - languageName: node - linkType: hard - "metro-runtime@npm:0.82.5, metro-runtime@npm:^0.82.0": version: 0.82.5 resolution: "metro-runtime@npm:0.82.5" @@ -31921,16 +31715,6 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-runtime@npm:0.83.3" - dependencies: - "@babel/runtime": ^7.25.0 - flow-enums-runtime: ^0.0.6 - checksum: dcbdc5502020d1e20cee1a3a8019323ab2f3ca2aa2d6ddb2b7a2b8547835a20b84fe4afc23c397f788584e108c70411db93df2f61322b44a4f0f119275052d03 - languageName: node - linkType: hard - "metro-source-map@npm:0.82.5, metro-source-map@npm:^0.82.0": version: 0.82.5 resolution: "metro-source-map@npm:0.82.5" @@ -31949,7 +31733,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": +"metro-source-map@npm:0.83.3": version: 0.83.3 resolution: "metro-source-map@npm:0.83.3" dependencies: @@ -32013,20 +31797,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-plugins@npm:0.83.3": - version: 0.83.3 - resolution: "metro-transform-plugins@npm:0.83.3" - dependencies: - "@babel/core": ^7.25.2 - "@babel/generator": ^7.25.0 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.3 - flow-enums-runtime: ^0.0.6 - nullthrows: ^1.1.1 - checksum: 6f92b9dfa53bdb63e79038bbd4d68791379ab26cf874679e64563618c578eeed3a828795debf8076ffd518431dff53191990784fb619046bcc03fff114b0cb21 - languageName: node - linkType: hard - "metro-transform-worker@npm:0.82.5": version: 0.82.5 resolution: "metro-transform-worker@npm:0.82.5" @@ -32048,27 +31818,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-worker@npm:0.83.3": - version: 0.83.3 - resolution: "metro-transform-worker@npm:0.83.3" - dependencies: - "@babel/core": ^7.25.2 - "@babel/generator": ^7.25.0 - "@babel/parser": ^7.25.3 - "@babel/types": ^7.25.2 - flow-enums-runtime: ^0.0.6 - metro: 0.83.3 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-minify-terser: 0.83.3 - metro-source-map: 0.83.3 - metro-transform-plugins: 0.83.3 - nullthrows: ^1.1.1 - checksum: fcb25ebc1ce703d830ef60c9af87325f996af4c3946325ab957b65ca59d12d181fe6c527c9ba1f932cd954d23a400052293117fe56f9a2727dfbc0a118e7bb27 - languageName: node - linkType: hard - "metro@npm:0.82.5, metro@npm:^0.82.0": version: 0.82.5 resolution: "metro@npm:0.82.5" @@ -32119,56 +31868,6 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.3, metro@npm:^0.83.1": - version: 0.83.3 - resolution: "metro@npm:0.83.3" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/core": ^7.25.2 - "@babel/generator": ^7.25.0 - "@babel/parser": ^7.25.3 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.3 - "@babel/types": ^7.25.2 - accepts: ^1.3.7 - chalk: ^4.0.0 - ci-info: ^2.0.0 - connect: ^3.6.5 - debug: ^4.4.0 - error-stack-parser: ^2.0.6 - flow-enums-runtime: ^0.0.6 - graceful-fs: ^4.2.4 - hermes-parser: 0.32.0 - image-size: ^1.0.2 - invariant: ^2.2.4 - jest-worker: ^29.7.0 - jsc-safe-url: ^0.2.2 - lodash.throttle: ^4.1.1 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-config: 0.83.3 - metro-core: 0.83.3 - metro-file-map: 0.83.3 - metro-resolver: 0.83.3 - metro-runtime: 0.83.3 - metro-source-map: 0.83.3 - metro-symbolicate: 0.83.3 - metro-transform-plugins: 0.83.3 - metro-transform-worker: 0.83.3 - mime-types: ^2.1.27 - nullthrows: ^1.1.1 - serialize-error: ^2.1.0 - source-map: ^0.5.6 - throat: ^5.0.0 - ws: ^7.5.10 - yargs: ^17.6.2 - bin: - metro: src/cli.js - checksum: 306d8c06b5a1a45e18df6e41f494bbc8b439700985429284eea7b3c3c82108e3c3795d859a8ab3ed7a85793d64e3160519be9aa84c6418d6ed37bd5ae4500b57 - languageName: node - linkType: hard - "micro-eth-signer@npm:0.7.2": version: 0.7.2 resolution: "micro-eth-signer@npm:0.7.2" @@ -35624,7 +35323,7 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:^6.1.1, react-devtools-core@npm:^6.1.5": +"react-devtools-core@npm:^6.1.1": version: 6.1.5 resolution: "react-devtools-core@npm:6.1.5" dependencies: @@ -36250,7 +35949,7 @@ __metadata: nitrogen: ^0.30.2 prettier: ^3.6.2 react: 19.1.0 - react-native: 0.81.1 + react-native: 0.79.5 react-native-builder-bob: ^0.40.13 react-native-nitro-modules: ^0.30.2 release-it: ^19.0.4 @@ -36715,56 +36414,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"react-native@npm:0.81.1": - version: 0.81.1 - resolution: "react-native@npm:0.81.1" - dependencies: - "@jest/create-cache-key-function": ^29.7.0 - "@react-native/assets-registry": 0.81.1 - "@react-native/codegen": 0.81.1 - "@react-native/community-cli-plugin": 0.81.1 - "@react-native/gradle-plugin": 0.81.1 - "@react-native/js-polyfills": 0.81.1 - "@react-native/normalize-colors": 0.81.1 - "@react-native/virtualized-lists": 0.81.1 - abort-controller: ^3.0.0 - anser: ^1.4.9 - ansi-regex: ^5.0.0 - babel-jest: ^29.7.0 - babel-plugin-syntax-hermes-parser: 0.29.1 - base64-js: ^1.5.1 - commander: ^12.0.0 - flow-enums-runtime: ^0.0.6 - glob: ^7.1.1 - invariant: ^2.2.4 - jest-environment-node: ^29.7.0 - memoize-one: ^5.0.0 - metro-runtime: ^0.83.1 - metro-source-map: ^0.83.1 - nullthrows: ^1.1.1 - pretty-format: ^29.7.0 - promise: ^8.3.0 - react-devtools-core: ^6.1.5 - react-refresh: ^0.14.0 - regenerator-runtime: ^0.13.2 - scheduler: 0.26.0 - semver: ^7.1.3 - stacktrace-parser: ^0.1.10 - whatwg-fetch: ^3.0.0 - ws: ^6.2.3 - yargs: ^17.6.2 - peerDependencies: - "@types/react": ^19.1.0 - react: ^19.1.0 - peerDependenciesMeta: - "@types/react": - optional: true - bin: - react-native: cli.js - checksum: 5a85faa6f8d66faff6dd8b7c1f1e8999816d114331b6b49fbb1cddd938777428445e8976579805053844d59f8a45868fb7f4030b2062c5cb2768a5121543c4f8 - languageName: node - linkType: hard - "react-reconciler@npm:0.31.0": version: 0.31.0 resolution: "react-reconciler@npm:0.31.0" @@ -38233,13 +37882,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"scheduler@npm:0.26.0": - version: 0.26.0 - resolution: "scheduler@npm:0.26.0" - checksum: c63a9f1c0e5089b537231cff6c11f75455b5c8625ae09535c1d7cd0a1b0c77ceecdd9f1074e5e063da5d8dc11e73e8033dcac3361791088be08a6e60c0283ed9 - languageName: node - linkType: hard - "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -43258,7 +42900,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yaml@npm:2.8.1, yaml@npm:^2.6.1": +"yaml@npm:2.8.1": version: 2.8.1 resolution: "yaml@npm:2.8.1" bin: From ce105112658287b3124318d27e46263d2ae27670 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 4 Nov 2025 22:57:22 +0100 Subject: [PATCH 06/21] feat: Update Podfile.lock --- packages/core-mobile/ios/Podfile.lock | 28 +++++++++++++++++++ .../core-mobile/ios/PrivacyInfo.xcprivacy | 16 +++++------ 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/packages/core-mobile/ios/Podfile.lock b/packages/core-mobile/ios/Podfile.lock index e28db207e0..2cf42be3e4 100644 --- a/packages/core-mobile/ios/Podfile.lock +++ b/packages/core-mobile/ios/Podfile.lock @@ -3330,6 +3330,30 @@ PODS: - ReactCommon/turbomodule/core - Sentry/HybridSDK (= 8.57.0) - Yoga + - RNShare (12.0.9): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNSound (0.12.0): - DoubleConversion - glog @@ -3581,6 +3605,7 @@ DEPENDENCIES: - RNScreens (from `../node_modules/react-native-screens`) - RNSensors (from `../node_modules/react-native-sensors`) - "RNSentry (from `../node_modules/@sentry/react-native`)" + - RNShare (from `../node_modules/react-native-share`) - RNSound (from `../node_modules/react-native-sound`) - RNSVG (from `../node_modules/react-native-svg`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -3942,6 +3967,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-sensors" RNSentry: :path: "../node_modules/@sentry/react-native" + RNShare: + :path: "../node_modules/react-native-share" RNSound: :path: "../node_modules/react-native-sound" RNSVG: @@ -4141,6 +4168,7 @@ SPEC CHECKSUMS: RNScreens: f0678748c5310b49a3f920f1485f5ec477afd345 RNSensors: 111159597ac51505df10413c61b28bcd28e88983 RNSentry: 0f61ae3c111d9129a978aeedd1fa05d0cd2307a9 + RNShare: 43faaefd287ef344e8379caeaca12d112f713295 RNSound: 72c4886fb80b8a0e8c40131099223e09422aa8b4 RNSVG: 794f269526df9ddc1f79b3d1a202b619df0368e3 SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 diff --git a/packages/core-mobile/ios/PrivacyInfo.xcprivacy b/packages/core-mobile/ios/PrivacyInfo.xcprivacy index bdea2127c1..02a8a056e8 100644 --- a/packages/core-mobile/ios/PrivacyInfo.xcprivacy +++ b/packages/core-mobile/ios/PrivacyInfo.xcprivacy @@ -6,22 +6,22 @@ NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPICategoryFileTimestamp NSPrivacyAccessedAPITypeReasons - CA92.1 - 1C8F.1 - C56D.1 + C617.1 + 0A2A.1 + 3B52.1 NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPICategoryUserDefaults NSPrivacyAccessedAPITypeReasons - C617.1 - 0A2A.1 - 3B52.1 + CA92.1 + 1C8F.1 + C56D.1 From 48160405a8c5db5075aa519c6195f7f593fa22c6 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Mon, 10 Nov 2025 22:21:32 +0100 Subject: [PATCH 07/21] Remove kt definition --- .../nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt deleted file mode 100644 index 840758562a..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCrypto.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.margelo.nitro.nitroavalabscrypto - -import com.facebook.proguard.annotations.DoNotStrip - -@DoNotStrip -class NitroAvalabsCrypto : HybridNitroAvalabsCryptoSpec() { - override fun multiply(a: Double, b: Double): Double { - return a * b - } -} From 2f2e95972b1e24fce80921c09ae67c3e30178f4d Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Mon, 10 Nov 2025 22:26:05 +0100 Subject: [PATCH 08/21] revert: Revert ruby version changes --- packages/core-mobile/.ruby-version | 2 +- packages/core-mobile/Gemfile | 2 +- packages/core-mobile/Gemfile.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core-mobile/.ruby-version b/packages/core-mobile/.ruby-version index 15a2799817..be94e6f53d 100644 --- a/packages/core-mobile/.ruby-version +++ b/packages/core-mobile/.ruby-version @@ -1 +1 @@ -3.3.0 +3.2.2 diff --git a/packages/core-mobile/Gemfile b/packages/core-mobile/Gemfile index 4bc14d5d0f..767cd0a6ee 100644 --- a/packages/core-mobile/Gemfile +++ b/packages/core-mobile/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby '3.3.0' +ruby '3.2.2' gem 'cocoapods', '1.16.2' gem 'activesupport', '7.0.8' diff --git a/packages/core-mobile/Gemfile.lock b/packages/core-mobile/Gemfile.lock index d48ebf1122..b6cd641b5b 100644 --- a/packages/core-mobile/Gemfile.lock +++ b/packages/core-mobile/Gemfile.lock @@ -108,7 +108,7 @@ DEPENDENCIES mutex_m RUBY VERSION - ruby 3.3.0p0 + ruby 3.2.2p53 BUNDLED WITH 2.4.10 From 215bd03c55960c9d3124caf7d7ebe2c539220a07 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 11 Nov 2025 21:34:36 +0100 Subject: [PATCH 09/21] feat: Cleanup tracer logic --- packages/core-mobile/PerformanceTracer.ts | 262 ------------------ .../app/new/common/components/PinScreen.tsx | 2 - .../assets/components/AssetsScreen.tsx | 3 - .../assets/components/TokenListView.tsx | 3 +- .../app/new/routes/loginWithPinOrBiometry.tsx | 2 - packages/core-mobile/index.js | 4 - packages/core-mobile/ios/Podfile.lock | 28 -- packages/core-mobile/package.json | 2 - yarn.lock | 29 -- 9 files changed, 1 insertion(+), 334 deletions(-) delete mode 100644 packages/core-mobile/PerformanceTracer.ts diff --git a/packages/core-mobile/PerformanceTracer.ts b/packages/core-mobile/PerformanceTracer.ts deleted file mode 100644 index caa35ca0e5..0000000000 --- a/packages/core-mobile/PerformanceTracer.ts +++ /dev/null @@ -1,262 +0,0 @@ -// PerformanceTracker.js - -// eslint-disable-next-line @discordapp/discord/no-native-alert -import {Alert} from 'react-native'; -import performance, {PerformanceObserver} from 'react-native-performance'; - -/** - * We expect the app (or react-native-performance) to emit exactly these four - * “react-native-mark” entries automatically at startup: - * - * ‣ nativeLaunchStart - * ‣ nativeLaunchEnd - * ‣ runJsBundleStart - * ‣ runJsBundleEnd - * - * In addition, the user will manually call markTTI() at the moment they - * consider the UI fully interactive. That “tti” mark is a plain `performance.mark('tti')`. - * - * Once we know all three “end”‐marks exist— i.e.: - * • nativeLaunchEnd - * • runJsBundleEnd - * • tti - * —then we fire off three measurements and immediately show an Alert. - */ - -const REQUIRED_FLAGS = { - sawNativeLaunchEnd: false, - sawRunJsBundleEnd: false, - sawTTI: false, - sawTTIRender: false, - sawAuthIsDone: false, - sawAppReady: false, -}; - -// Only show the final Alert once: -let hasFiredAlert = false; - -// Utility: once all three flags are true, measure & alert exactly once. -function tryMeasureAndAlertReactNativeMarks() { - if (hasFiredAlert) { - return; - } - - const rnObserver = new PerformanceObserver((list) => { - for (const entry of list.getEntries()) { - if (entry.name === 'nativeLaunchEnd') { - REQUIRED_FLAGS.sawNativeLaunchEnd = true; - } else if (entry.name === 'runJsBundleEnd') { - REQUIRED_FLAGS.sawRunJsBundleEnd = true; - } - } - -}); - -// Start observing RIGHT AWAY, buffered = true so we catch any marks that -// happened *before* this script was imported. -rnObserver.observe({ - type: 'react-native-mark', - buffered: true, -}); - - const con = console - con.log('REQUIRED_FLAGS', REQUIRED_FLAGS) - - const {sawNativeLaunchEnd, sawRunJsBundleEnd, sawTTI, sawTTIRender, sawAuthIsDone, sawAppReady} = REQUIRED_FLAGS; - if (!sawNativeLaunchEnd || !sawRunJsBundleEnd || !sawTTI || !sawTTIRender || !sawAuthIsDone || !sawAppReady) { - const con = console; con.log('Not all required flags seen yet:', REQUIRED_FLAGS); - return; - } - - // By the time we get here, we know: - // • performance.getEntriesByName('nativeLaunchEnd') exists - // • performance.getEntriesByName('runJsBundleEnd') exists - // • performance.getEntriesByName('tti') exists - // - // Now we perform our three measures, *inside* the PO callbacks, - // so we don't risk calling `measure(...)` prematurely. - - // 1) nativeLaunch = nativeLaunchEnd – nativeLaunchStart - performance.measure('nativeLaunch', 'nativeLaunchStart', 'nativeLaunchEnd'); - - performance.measure('beforeJsBundle', 'nativeLaunchStart', 'runJsBundleStart'); - - // 2) runJsBundle = runJsBundleEnd – runJsBundleStart - performance.measure('runJsBundle', 'runJsBundleStart', 'runJsBundleEnd'); - - // 3) timeToInteractive = tti – runJsBundleEnd - performance.measure('timeToInteractive', 'runJsBundleStart', 'tti'); - - performance.measure('timeToRender', 'authIsDone', 'ttiRender'); - - performance.measure('timeAfterAuthIsDone', 'authIsDone', 'appReady'); - - // Extract those three measurements: - const beforeJsBundleEntry = performance.getEntriesByName('beforeJsBundle').pop(); - const nativeLaunchEntry = performance.getEntriesByName('nativeLaunch').pop(); - const runJsEntry = performance.getEntriesByName('runJsBundle').pop(); - const ttiEntry = performance.getEntriesByName('timeToInteractive').pop(); - const ttiRender = performance.getEntriesByName('timeToRender').pop(); - const timeAfterAuthIsDone = performance.getEntriesByName('timeAfterAuthIsDone').pop(); - - const nativeLaunchMs = nativeLaunchEntry ? nativeLaunchEntry.duration.toFixed(2) : 'n/a'; - const runJsMs = runJsEntry ? runJsEntry.duration.toFixed(2) : 'n/a'; - const ttiMs = ttiEntry ? ttiEntry.duration.toFixed(2) : 'n/a'; - const ttiRenderMs = ttiRender ? ttiRender.duration.toFixed(2) : 'n/a'; - const beforeJsBundleMs = beforeJsBundleEntry ? beforeJsBundleEntry.duration.toFixed(2) : 'n/a'; - const timeAfterAuthIsDoneMs = timeAfterAuthIsDone ? timeAfterAuthIsDone.duration.toFixed(2) : 'n/a'; - - Alert.alert( - 'Startup Metrics (non-static)', - `• nativeLaunch: ${nativeLaunchMs} ms\n` - + `• runJsBundle: ${runJsMs} ms\n` - + `• timeToPinlock: ${ttiMs} ms\n` - + `• beforeJsBundleEval: ${beforeJsBundleMs} ms\n` - + `• TimeToRenderTokenItem: ${ttiRenderMs} ms\n` - + `• TimeToLayoutTokenItem: ${timeAfterAuthIsDoneMs} ms`, - ); - - hasFiredAlert = true; -} - -let rnObserver = null; -let genericObserver = null; - -export const observe = () => { - const con = console - con.log('Starting PerformanceTracer observe()') - // OBSERVER #1: listen for “react-native-mark” entries - // -------------------------------- - // This catches both - // • “nativeLaunchEnd” - // • “runJsBundleEnd” - // which are logged internally by React Native or react-native-performance - // as soon as JS bundle has finished evaluation. - rnObserver = new PerformanceObserver((list) => { - const con = console - const marks = performance.getEntriesByType('react-native-mark') - con.log('RN MARK ENTRIES:', marks.length) - - - for (const entry of marks) { - console.log('RN MARK:', entry.name) - if (entry.name === 'nativeLaunchEnd') { - REQUIRED_FLAGS.sawNativeLaunchEnd = true; - } else if (entry.name === 'runJsBundleEnd') { - REQUIRED_FLAGS.sawRunJsBundleEnd = true; - } - } - tryMeasureAndAlertReactNativeMarks(); - }); - - // Start observing RIGHT AWAY, buffered = true so we catch any marks that - // happened *before* this script was imported. - rnObserver.observe({ - type: 'react-native-mark', - buffered: true, - }); - -// OBSERVER #2: listen for plain “mark” entries -// -------------------------------- -// This will catch the user‐invoked TTI mark: -// performance.mark('tti') - genericObserver = new PerformanceObserver((list) => { - for (const entry of list.getEntries()) { - if (entry.name === 'tti') { - REQUIRED_FLAGS.sawTTI = true; - } - } - tryMeasureAndAlertReactNativeMarks(); - }); - - genericObserver.observe({type: 'mark', buffered: true}); -} - -/** - * Call this the moment your UI is fully interactive. For example: - * - * import { markTTI } from './PerformanceTracker'; - * // …later, after your top‐level navigation has rendered: - * markTTI(); - */ -export function markTTIFinal(timestamp?: number) { - if (REQUIRED_FLAGS.sawTTI) { - return; - } - if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { - // eslint-disable-next-line no-console - console.warn('Performance API not available—cannot mark TTI.'); - return; - } - - // Create the “tti” mark. OBSERVER #2 will catch it. - - if (timestamp) { - performance.mark('tti', { - startTime: timestamp - }); - } else { - performance.mark('tti'); - } - - // In case the other two “react-native-mark” entries have already come and gone, - // we force-set this flag and try one more time to measure+alert: - REQUIRED_FLAGS.sawTTI = true; - tryMeasureAndAlertReactNativeMarks(); -} - -export function markTIIRender(timestamp?: number) { - if (REQUIRED_FLAGS.sawTTIRender) { - return; - } - if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { - // eslint-disable-next-line no-console - console.warn('Performance API not available—cannot mark TTI.'); - return; - } - - - // Create the “tti” mark. OBSERVER #2 will catch it. - if (timestamp) { - performance.mark('ttiRender', { - startTime: timestamp - }); - } else { - performance.mark('ttiRender'); - } - - // In case the other two “react-native-mark” entries have already come and gone, - // we force-set this flag and try one more time to measure+alert: - REQUIRED_FLAGS.sawTTIRender = true; - tryMeasureAndAlertReactNativeMarks(); -} - -export function markAuthIsDone() { - if (REQUIRED_FLAGS.sawAuthIsDone) { - return; - } - if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { - // eslint-disable-next-line no-console - console.warn('Performance API not available—cannot mark AuthIsDone.'); - return; - } - - performance.mark('authIsDone'); - REQUIRED_FLAGS.sawAuthIsDone = true; - tryMeasureAndAlertReactNativeMarks(); -} - -export function markAppReady() { - if (REQUIRED_FLAGS.sawAppReady) { - return; - } - if (typeof performance === 'undefined' || typeof performance.mark !== 'function') { - // eslint-disable-next-line no-console - console.warn('Performance API not available—cannot mark AppReady.'); - return; - } - - performance.mark('appReady'); - REQUIRED_FLAGS.sawAppReady = true; - tryMeasureAndAlertReactNativeMarks(); -} diff --git a/packages/core-mobile/app/new/common/components/PinScreen.tsx b/packages/core-mobile/app/new/common/components/PinScreen.tsx index 726bfebe3a..82b5ed1a0a 100644 --- a/packages/core-mobile/app/new/common/components/PinScreen.tsx +++ b/packages/core-mobile/app/new/common/components/PinScreen.tsx @@ -38,7 +38,6 @@ import BiometricsSDK, { BiometricType } from 'utils/BiometricsSDK' import Logger from 'utils/Logger' import { commonStorage } from 'utils/mmkv' import { StorageKey } from 'resources/Constants' -import { markAuthIsDone } from '../../../../PerformanceTracer' export const PinScreen = ({ onForgotPin, @@ -80,7 +79,6 @@ export const PinScreen = ({ } const handleLoginSuccess = useCallback(() => { - markAuthIsDone() handleStartLoading() pinInputRef.current?.blur() isProcessing.value = true diff --git a/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx b/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx index 085c7cd881..b3ede833d2 100644 --- a/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx +++ b/packages/core-mobile/app/new/features/portfolio/assets/components/AssetsScreen.tsx @@ -27,7 +27,6 @@ import { useIsAllBalancesErrorForAccount } from 'features/portfolio/hooks/useIsA import { useAssetsFilterAndSort } from '../hooks/useAssetsFilterAndSort' import { EmptyState } from './EmptyState' import { TokenListItem } from './TokenListItem' -import { markTIIRender } from '../../../../../../PerformanceTracer' interface Props { containerStyle: ViewStyle @@ -90,8 +89,6 @@ const AssetsScreen: FC = ({ (item: LocalTokenWithBalance, index: number): JSX.Element => { const isLeftColumn = index % numColumns === 0 - markTIIRender(); - const style = isGridView ? { marginLeft: isLeftColumn ? 8 : 0, diff --git a/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx b/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx index 85c108b1bb..5283a23ad2 100644 --- a/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx +++ b/packages/core-mobile/app/new/features/portfolio/assets/components/TokenListView.tsx @@ -17,7 +17,6 @@ import { SubTextNumber } from 'common/components/SubTextNumber' import { UNKNOWN_AMOUNT } from 'consts/amount' import { TokenListViewProps } from '../types' import { LogoWithNetwork } from './LogoWithNetwork' -import { markAppReady } from '../../../../../../PerformanceTracer' export const TokenListView = ({ token, @@ -54,7 +53,7 @@ export const TokenListView = ({ } return ( - + { const router = useRouter() @@ -19,7 +18,6 @@ const LoginWithPinOrBiometry = (): JSX.Element => { return ( {markTTIFinal()}} shouldAvoidKeyboard hideHeaderBackground scrollEnabled={false} diff --git a/packages/core-mobile/index.js b/packages/core-mobile/index.js index 4163bd6931..38a27a1f0a 100644 --- a/packages/core-mobile/index.js +++ b/packages/core-mobile/index.js @@ -1,7 +1,3 @@ -//import './profiler' -import { observe } from './PerformanceTracer' -observe(); - import { enableFreeze } from 'react-native-screens' enableFreeze(true) diff --git a/packages/core-mobile/ios/Podfile.lock b/packages/core-mobile/ios/Podfile.lock index 65bd9afda2..5c9f520db5 100644 --- a/packages/core-mobile/ios/Podfile.lock +++ b/packages/core-mobile/ios/Podfile.lock @@ -2209,30 +2209,6 @@ PODS: - React-Codegen - React-Core - ReactCommon/turbomodule/core - - react-native-performance (6.0.0): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - Yoga - react-native-quick-base64 (2.1.2): - DoubleConversion - glog @@ -3537,7 +3513,6 @@ DEPENDENCIES: - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-pager-view (from `../node_modules/react-native-pager-view`) - react-native-passkey (from `../node_modules/react-native-passkey`) - - react-native-performance (from `../node_modules/react-native-performance`) - react-native-quick-base64 (from `../node_modules/react-native-quick-base64`) - react-native-quick-crypto (from `../node_modules/react-native-quick-crypto`) - react-native-restart (from `../node_modules/react-native-restart`) @@ -3831,8 +3806,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-pager-view" react-native-passkey: :path: "../node_modules/react-native-passkey" - react-native-performance: - :path: "../node_modules/react-native-performance" react-native-quick-base64: :path: "../node_modules/react-native-quick-base64" react-native-quick-crypto: @@ -4100,7 +4073,6 @@ SPEC CHECKSUMS: react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 react-native-pager-view: f238ed7fb53458bd03366944a33686f067c83e9a react-native-passkey: 3aac247c18127443ef4a002b59d8e12dc7e99f2e - react-native-performance: 83bf66f3ada75bb7b0cd69735ac7d51e8f3ca81d react-native-quick-base64: 651d972291fd5d9902869636a1b3c46820324490 react-native-quick-crypto: 71b622aa0a231ac068759f5eef37982ad5eae58c react-native-restart: 0bc732f4461709022a742bb29bcccf6bbc5b4863 diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 9e23ae61c5..f696704eb2 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -85,7 +85,6 @@ "@react-buoy/storage": "0.1.33", "@react-native-async-storage/async-storage": "2.1.2", "@react-native-clipboard/clipboard": "1.15.0", - "@react-native-community/cli-tools": "^20.0.2", "@react-native-community/datetimepicker": "8.4.1", "@react-native-community/netinfo": "11.4.1", "@react-native-community/slider": "4.5.6", @@ -204,7 +203,6 @@ "react-native-os": "1.2.6", "react-native-pager-view": "6.7.1", "react-native-passkey": "3.1.0", - "react-native-performance": "^6.0.0", "react-native-permissions": "4.1.5", "react-native-popable": "0.4.3", "react-native-popover-view": "6.1.0", diff --git a/yarn.lock b/yarn.lock index b91d5a8087..2680af70c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -451,7 +451,6 @@ __metadata: "@react-native-community/cli": 18.0.0 "@react-native-community/cli-platform-android": 18.0.0 "@react-native-community/cli-platform-ios": 18.0.0 - "@react-native-community/cli-tools": ^20.0.2 "@react-native-community/datetimepicker": 8.4.1 "@react-native-community/netinfo": 11.4.1 "@react-native-community/slider": 4.5.6 @@ -626,7 +625,6 @@ __metadata: react-native-os: 1.2.6 react-native-pager-view: 6.7.1 react-native-passkey: 3.1.0 - react-native-performance: ^6.0.0 react-native-permissions: 4.1.5 react-native-popable: 0.4.3 react-native-popover-view: 6.1.0 @@ -12611,24 +12609,6 @@ __metadata: languageName: node linkType: hard -"@react-native-community/cli-tools@npm:^20.0.2": - version: 20.0.2 - resolution: "@react-native-community/cli-tools@npm:20.0.2" - dependencies: - "@vscode/sudo-prompt": ^9.0.0 - appdirsjs: ^1.2.4 - chalk: ^4.1.2 - execa: ^5.0.0 - find-up: ^5.0.0 - launch-editor: ^2.9.1 - mime: ^2.4.1 - ora: ^5.4.1 - prompts: ^2.4.2 - semver: ^7.5.2 - checksum: cc6d765e1778b982ee173b757a9e30f47173c185484321d4909ecf0dcf6441b7eb4a8d7ede44f1b3e8d3052ce2b97247ea4f2171eb523a5289f795220f7d6a4c - languageName: node - linkType: hard - "@react-native-community/cli-types@npm:18.0.0": version: 18.0.0 resolution: "@react-native-community/cli-types@npm:18.0.0" @@ -36107,15 +36087,6 @@ __metadata: languageName: node linkType: hard -"react-native-performance@npm:^6.0.0": - version: 6.0.0 - resolution: "react-native-performance@npm:6.0.0" - peerDependencies: - react-native: "*" - checksum: b73c648b1982e2a2f38b94a45c6caeaf089d93fb7a563bd5ec2d9f07e8c5e1ba7f44edc78778d78e0946a4b0bdd78d075b35584c28856b3c7c1b8042344e3cfc - languageName: node - linkType: hard - "react-native-permissions@npm:4.1.5": version: 4.1.5 resolution: "react-native-permissions@npm:4.1.5" From d5f41ab7a4283274be0d383960f809a30d0b1413 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 11 Nov 2025 21:34:58 +0100 Subject: [PATCH 10/21] ci: Add setup yarn command --- packages/react-native-nitro-avalabs-crypto/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json index ee313692ea..eb740382ce 100644 --- a/packages/react-native-nitro-avalabs-crypto/package.json +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -39,7 +39,8 @@ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib", "prepare": "bob build", "nitrogen": "nitrogen", - "release": "release-it --only-version" + "release": "release-it --only-version", + "setup": "nitrogen" }, "keywords": [ "react-native", From bda4068a99e6609735a65eacc9918d289c5cb59e Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Wed, 19 Nov 2025 22:16:40 +0100 Subject: [PATCH 11/21] feat: Bring latest changes --- .../@noble-curves-npm-1.9.7-2b9efc8ab4.patch | 9 - bitrise.yml | 3 + package.json | 22 +- packages/core-mobile/android/app/build.gradle | 1 - .../android/app/src/main/AndroidManifest.xml | 2 +- .../main/java/com/avaxwallet/MainActivity.kt | 2 +- .../java/com/avaxwallet/MainApplication.kt | 3 +- .../core-mobile/android/gradle.properties | 2 +- packages/core-mobile/ios/Podfile.lock | 36 +- packages/core-mobile/metro.config.js | 16 +- packages/core-mobile/package.json | 19 +- packages/core-mobile/simplePatch.sh | 73 - .../.editorconfig | 15 - .../.gitattributes | 3 - .../.gitignore | 16 +- .../react-native-nitro-avalabs-crypto/.nvmrc | 1 - .../CODE_OF_CONDUCT.md | 133 - .../CONTRIBUTING.md | 147 - .../react-native-nitro-avalabs-crypto/LICENSE | 20 - .../NitroAvalabsCrypto.podspec | 13 +- .../README.md | 63 +- .../android/CMakeLists.txt | 62 +- .../android/build.gradle | 327 +- .../android/fix-prefab.gradle | 51 + .../android/gradle.properties | 8 +- .../android/src/main/cpp/cpp-adapter.cpp | 2 +- .../NitroAvalabsCryptoPackage.kt | 14 +- .../babel.config.js | 13 +- .../cpp/CryptoHybrid.cpp | 32 +- .../cpp/CryptoHybrid.hpp | 32 +- .../eslint.config.mjs | 29 - .../lefthook.yml | 14 - .../nitro.json | 21 +- .../package.json | 194 +- .../react-native.config.js | 16 + .../src/Crypto.ts | 380 +- .../src/__tests__/index.test.tsx | 1 - .../src/index.ts | 1 + .../src/specs/Crypto.nitro.ts | 38 +- .../tsconfig.build.json | 4 - .../tsconfig.json | 23 +- .../turbo.json | 42 - yarn.lock | 4201 ++++------------- 43 files changed, 1440 insertions(+), 4664 deletions(-) delete mode 100755 packages/core-mobile/simplePatch.sh delete mode 100644 packages/react-native-nitro-avalabs-crypto/.editorconfig delete mode 100644 packages/react-native-nitro-avalabs-crypto/.gitattributes delete mode 100644 packages/react-native-nitro-avalabs-crypto/.nvmrc delete mode 100644 packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md delete mode 100644 packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md delete mode 100644 packages/react-native-nitro-avalabs-crypto/LICENSE create mode 100644 packages/react-native-nitro-avalabs-crypto/android/fix-prefab.gradle delete mode 100644 packages/react-native-nitro-avalabs-crypto/eslint.config.mjs delete mode 100644 packages/react-native-nitro-avalabs-crypto/lefthook.yml create mode 100644 packages/react-native-nitro-avalabs-crypto/react-native.config.js delete mode 100644 packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx create mode 100644 packages/react-native-nitro-avalabs-crypto/src/index.ts delete mode 100644 packages/react-native-nitro-avalabs-crypto/tsconfig.build.json delete mode 100644 packages/react-native-nitro-avalabs-crypto/turbo.json diff --git a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch index 85963a6638..7053d9f0c2 100644 --- a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch +++ b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch @@ -45,16 +45,7 @@ index a7a912fa46128bbc36eeefe67e6ba16855992917..7716bccc380e5d0e8eccbd7e4a2294b7 */ function getPublicKey(secretKey, isCompressed = true) { - return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); -+ // const con = console; -+ // con.log(" aaaaa Getting public key for secret key!"); -+ // con.log("aaaaa Getting public key for secret key:", secretKey.toString('hex')); -+ //const res = Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); + const nativeRes = getPublicKeyFromNativeLib(secretKey, isCompressed); -+ -+ -+ // con.log("aaaaa native res", nativeRes.toString('hex')); -+ // con.log("aaaaa JS res", res.toString('hex')); -+ + return nativeRes; } function keygen(seed) { diff --git a/bitrise.yml b/bitrise.yml index 2acf96bef2..6fe90a86a5 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -215,6 +215,9 @@ workflows: - pipeline_intermediate_files: "$BITRISE_DEPLOY_DIR/app-external-e2e-bitrise-signed.apk:BITRISE_APK_PATH\n$BITRISE_DEPLOY_DIR/app-external-e2e-androidTest-bitrise-signed.apk:BITRISE_TEST_APK_PATH\t" _build-ios: steps: + - brew-install@1: + inputs: + - packages: autoconf automake libtool - restore-cocoapods-cache@1: {} - script@1: title: Copy Gemfile to iOS folder diff --git a/package.json b/package.json index 8b0326ad56..196ecfe700 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "tsc": "yarn workspaces foreach -p run tsc", "test": "yarn workspaces foreach -p run test", "core": "yarn workspace @avalabs/core-mobile", + "crypto": "yarn workspace react-native-nitro-avalabs-crypto", "k2": "yarn workspace @avalabs/k2-alpine" }, "devDependencies": { @@ -57,21 +58,6 @@ "@walletconnect/sign-client@2.16.1": "patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch", "@walletconnect/utils@2.17.2": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", "@walletconnect/utils@2.16.1": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", - "@noble/curves@1.9.7": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@^1.7.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@^1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@1.2.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@1.4.2": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@~1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@^1.4.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@~1.4.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@~1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@1.1.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@~1.2.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@~1.1.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", - "@noble/curves@^1.8.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", "@bitcoinerlab/secp256k1@1.2.0": "patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch", "@bitcoinerlab/secp256k1@^1.0.5": "patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch" }, @@ -79,5 +65,9 @@ "node": ">=20.18.0", "yarn": ">=3.6.4" }, - "packageManager": "yarn@3.6.4" + "packageManager": "yarn@3.6.4", + "dependencies": { + "nitrogen": "0.31.6", + "react-native-nitro-modules": "0.31.6" + } } diff --git a/packages/core-mobile/android/app/build.gradle b/packages/core-mobile/android/app/build.gradle index 0ce3ed7d0b..c00d53b8fe 100644 --- a/packages/core-mobile/android/app/build.gradle +++ b/packages/core-mobile/android/app/build.gradle @@ -128,7 +128,6 @@ android { } release { - signingConfig signingConfigs.debug minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } diff --git a/packages/core-mobile/android/app/src/main/AndroidManifest.xml b/packages/core-mobile/android/app/src/main/AndroidManifest.xml index 37afe82b0f..f6bba54513 100644 --- a/packages/core-mobile/android/app/src/main/AndroidManifest.xml +++ b/packages/core-mobile/android/app/src/main/AndroidManifest.xml @@ -35,7 +35,7 @@ android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" /> - + diff --git a/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainActivity.kt b/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainActivity.kt index 9a8879a576..a492ff7bb5 100644 --- a/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainActivity.kt +++ b/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainActivity.kt @@ -1,5 +1,6 @@ package com.avaxwallet +import android.content.Intent import android.os.Bundle import android.view.WindowManager import androidx.appcompat.app.AppCompatDelegate @@ -10,7 +11,6 @@ import com.facebook.react.defaults.DefaultReactActivityDelegate import com.zoontek.rnbootsplash.RNBootSplash import expo.modules.ReactActivityDelegateWrapper import io.branch.rnbranch.* -import android.content.Intent class MainActivity : ReactActivity() { diff --git a/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt b/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt index e52caecb9d..800a1c71f1 100644 --- a/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt +++ b/packages/core-mobile/android/app/src/main/java/com/avaxwallet/MainApplication.kt @@ -46,9 +46,10 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - RootedCheck.precompute(this); + RootedCheck.precompute(this) increaseWindowCursorSize() + RNBranchModule.getAutoInstance(this); // Manually set user agent to our format. This helps avoid getting identified as a bot and rate limited by cloudflare diff --git a/packages/core-mobile/android/gradle.properties b/packages/core-mobile/android/gradle.properties index c09aafee22..855e34849e 100644 --- a/packages/core-mobile/android/gradle.properties +++ b/packages/core-mobile/android/gradle.properties @@ -11,7 +11,7 @@ # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -org.gradle.jvmargs=-Xmx8096m -XX:MaxMetaspaceSize=4096m +org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/packages/core-mobile/ios/Podfile.lock b/packages/core-mobile/ios/Podfile.lock index 5c9f520db5..cfad5fedfa 100644 --- a/packages/core-mobile/ios/Podfile.lock +++ b/packages/core-mobile/ios/Podfile.lock @@ -533,7 +533,7 @@ PODS: - nanopb/encode (= 3.30910.0) - nanopb/decode (3.30910.0) - nanopb/encode (3.30910.0) - - NitroAvalabsCrypto (0.1.0): + - NitroAvalabsCrypto (0.0.1): - DoubleConversion - glog - hermes-engine @@ -559,7 +559,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - NitroModules (0.30.2): + - NitroModules (0.31.6): - DoubleConversion - glog - hermes-engine @@ -2209,6 +2209,30 @@ PODS: - React-Codegen - React-Core - ReactCommon/turbomodule/core + - react-native-performance (5.1.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - react-native-quick-base64 (2.1.2): - DoubleConversion - glog @@ -3513,6 +3537,7 @@ DEPENDENCIES: - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-pager-view (from `../node_modules/react-native-pager-view`) - react-native-passkey (from `../node_modules/react-native-passkey`) + - react-native-performance (from `../node_modules/react-native-performance`) - react-native-quick-base64 (from `../node_modules/react-native-quick-base64`) - react-native-quick-crypto (from `../node_modules/react-native-quick-crypto`) - react-native-restart (from `../node_modules/react-native-restart`) @@ -3806,6 +3831,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-pager-view" react-native-passkey: :path: "../node_modules/react-native-passkey" + react-native-performance: + :path: "../node_modules/react-native-performance" react-native-quick-base64: :path: "../node_modules/react-native-quick-base64" react-native-quick-crypto: @@ -4019,8 +4046,8 @@ SPEC CHECKSUMS: lottie-react-native: 8bc11e10576d1a3f77f4e0ae5b70503c5c890a09 MultiplatformBleAdapter: b1fddd0d499b96b607e00f0faa8e60648343dc1d nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - NitroAvalabsCrypto: 04b9f004efee45b190f5f55edb4695e20bcdb1ea - NitroModules: a0e083750af37516a6b356ccf3373716eb1d01a1 + NitroAvalabsCrypto: 1e5e1dbdc072022443c355b70d6d598841bf8557 + NitroModules: 9d7909d32350449193e913985cbd69160bff8ead OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c OpenTelemetrySwiftApi: aaee576ed961e0c348af78df58b61300e95bd104 PLCrashReporter: db59ef96fa3d25f3650040d02ec2798cffee75f2 @@ -4073,6 +4100,7 @@ SPEC CHECKSUMS: react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 react-native-pager-view: f238ed7fb53458bd03366944a33686f067c83e9a react-native-passkey: 3aac247c18127443ef4a002b59d8e12dc7e99f2e + react-native-performance: 4194ce7222056671d8f0ce10e96a8fead7278550 react-native-quick-base64: 651d972291fd5d9902869636a1b3c46820324490 react-native-quick-crypto: 71b622aa0a231ac068759f5eef37982ad5eae58c react-native-restart: 0bc732f4461709022a742bb29bcccf6bbc5b4863 diff --git a/packages/core-mobile/metro.config.js b/packages/core-mobile/metro.config.js index 77056a4474..362d3fed55 100644 --- a/packages/core-mobile/metro.config.js +++ b/packages/core-mobile/metro.config.js @@ -1,12 +1,15 @@ +const path = require('path') const { mergeConfig } = require('@react-native/metro-config') const { getSentryExpoConfig } = require('@sentry/react-native/metro') const merge = require('lodash.merge') -const path = require('path') // Workspace paths (adjust if your monorepo depth is different) const projectRoot = __dirname const workspaceRoot = path.resolve(projectRoot, '..', '..') -const nitroCryptoPath = path.resolve(workspaceRoot, 'packages/react-native-nitro-avalabs-crypto') +const nitroCryptoPath = path.resolve( + workspaceRoot, + 'packages/react-native-nitro-avalabs-crypto' +) const monorepoConfig = require('./metro.monorepo.config') const defaultConfig = getSentryExpoConfig(__dirname) @@ -31,21 +34,18 @@ const baseConfig = { }), babelTransformerPath: require.resolve('react-native-svg-transformer') }, - watchFolders: [ - workspaceRoot, - nitroCryptoPath, - ], + watchFolders: [workspaceRoot, nitroCryptoPath], resolver: { // mute warnings about circular dependencies requireCycleIgnorePatterns: [/^app\/.*/, /^node_modules\/.*/], extraNodeModules: { stream: require.resolve('./node_modules/stream-browserify'), '@noble/hashes': require.resolve('./node_modules/@noble/hashes'), - "react-native-nitro-avalabs-crypto": nitroCryptoPath + 'react-native-nitro-avalabs-crypto': nitroCryptoPath }, nodeModulesPaths: [ path.resolve(workspaceRoot, 'node_modules'), - path.resolve(projectRoot, 'node_modules'), + path.resolve(projectRoot, 'node_modules') ], // TODO: should this be a temporary fix? unstable_enablePackageExports: false, diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 6ea8ba6b00..cdd9ede7f6 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -23,22 +23,22 @@ "appium": "wdio run ./e2e-appium/wdio.conf.ts" }, "dependencies": { - "@avalabs/avalanche-module": "1.10.2", + "@avalabs/avalanche-module": "1.11.0", "@avalabs/avalanchejs": "5.1.0-alpha.2", - "@avalabs/bitcoin-module": "1.10.2", - "@avalabs/bridge-unified": "4.0.3", + "@avalabs/bitcoin-module": "1.11.0", + "@avalabs/bridge-unified": "4.3.0", "@avalabs/core-bridge-sdk": "3.1.0-alpha.61", "@avalabs/core-chains-sdk": "3.1.0-alpha.61", "@avalabs/core-coingecko-sdk": "3.1.0-alpha.61", "@avalabs/core-gasless-sdk": "3.1.0-alpha.61", "@avalabs/core-utils-sdk": "3.1.0-alpha.61", "@avalabs/core-wallets-sdk": "3.1.0-alpha.61", - "@avalabs/evm-module": "1.10.2", + "@avalabs/evm-module": "1.11.0", "@avalabs/glacier-sdk": "3.1.0-alpha.58", "@avalabs/k2-alpine": "workspace:*", - "@avalabs/svm-module": "1.10.2", + "@avalabs/svm-module": "1.11.0", "@avalabs/types": "3.1.0-alpha.58", - "@avalabs/vm-module-types": "1.10.2", + "@avalabs/vm-module-types": "1.11.0", "@babel/runtime": "7.25.7", "@bitcoinerlab/secp256k1": "1.2.0", "@blockaid/client": "0.48.0", @@ -116,7 +116,7 @@ "@walletconnect/utils": "2.17.2", "@zodios/core": "10.9.6", "assert": "2.1.0", - "axios": "1.12.1", + "axios": "1.12.2", "base-64": "1.0.0", "big.js": "6.2.2", "bip174": "2.1.0", @@ -161,7 +161,6 @@ "lodash.merge": "4.6.2", "lottie-react-native": "7.2.2", "lru-cache": "11.0.2", - "metro-symbolicate": "^0.83.3", "moment": "2.30.1", "path-browserify": "1.0.1", "qrcode-reader": "1.0.4", @@ -199,10 +198,11 @@ "react-native-mmkv": "3.2.0", "react-native-modal-datetime-picker": "18.0.0", "react-native-nitro-avalabs-crypto": "workspace:*", - "react-native-nitro-modules": "^0.30.2", + "react-native-nitro-modules": "0.31.6", "react-native-os": "1.2.6", "react-native-pager-view": "6.7.1", "react-native-passkey": "3.1.0", + "react-native-performance": "5.1.2", "react-native-permissions": "4.1.5", "react-native-popable": "0.4.3", "react-native-popover-view": "6.1.0", @@ -371,6 +371,7 @@ "appium-xcuitest-driver>appium-ios-remotexpc>appium-ios-tuntap": false, "appium>@appium/support>sharp": true, "react-native-nitro-modules": true, + "react-native-nitro-avalabs-crypto": true, "react-native-nitro-avalabs-crypto>react-native-nitro-modules": true } }, diff --git a/packages/core-mobile/simplePatch.sh b/packages/core-mobile/simplePatch.sh deleted file mode 100755 index b504f4d5a4..0000000000 --- a/packages/core-mobile/simplePatch.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env bash -set -e - -usage() { - echo "usage: $0 [-v ] [--locator ]" - echo "examples:" - echo " $0 @walletconnect/core" - echo " $0 @walletconnect/utils -v 2.16.1" - echo " $0 @walletconnect/utils --locator @walletconnect/utils@npm:2.16.1" - exit 1 -} - -[[ $# -ge 1 ]] || usage -PKG="$1"; shift || true - -VER="" -LOC="" -while [[ $# -gt 0 ]]; do - case "$1" in - -v|--version) VER="${2:-}"; shift 2 ;; - --locator) LOC="${2:-}"; shift 2 ;; - -h|--help) usage ;; - *) echo "unknown arg: $1"; usage ;; - esac -done - -# If --locator given, use it verbatim. Else build from PKG + optional -v. -if [[ -n "$LOC" ]]; then - PATCH_ARG="$LOC" -else - if [[ -n "$VER" ]]; then - # Yarn Berry expects protocol when multiple versions exist - PATCH_ARG="${PKG%@*}@npm:${VER}" - else - PATCH_ARG="$PKG" - fi -fi - -# Resolve node_modules path (supports @scope/name and optional @version) -if [[ "$PKG" == @*/* ]]; then - SCOPE="${PKG%%/*}" # @scope - REST="${PKG#*/}" # name[@version] - NAME="${REST%%@*}" # name - PKG_DIR="node_modules/$SCOPE/$NAME" -else - NAME="${PKG%%@*}" - PKG_DIR="node_modules/$NAME" -fi - -echo "→ yarn patch $PATCH_ARG" -OUT="$(yarn patch "$PATCH_ARG" 2>&1 | tee /dev/stderr)" - -# Handle the “multiple candidate packages found” case nicely -if grep -q "Multiple candidate packages found" <<<"$OUT"; then - echo "❌ Multiple versions installed. Try:" - echo " yarn why ${PKG%@*}" - echo " then re-run with:" - echo " $0 ${PKG%@*} --locator ${PKG%@*}@npm:" - exit 1 -fi - -TMP_DIR="$(sed -nE 's/.*edit the following folder: (.*)$/\1/p' <<<"$OUT" | tail -n1)" -[[ -d "$TMP_DIR" ]] || { echo "❌ Failed to get yarn patch temp dir"; exit 1; } -[[ -d "$PKG_DIR" ]] || { echo "❌ Package dir not found: $PKG_DIR"; exit 1; } - -echo "→ Copying $PKG_DIR → $TMP_DIR" -cp -a "$PKG_DIR"/. "$TMP_DIR"/ - -echo "→ yarn patch-commit" -# NOTE: On Yarn Berry, -s takes NO message string -yarn patch-commit -s "$TMP_DIR" - -echo "✅ Patch created under .yarn/patches" diff --git a/packages/react-native-nitro-avalabs-crypto/.editorconfig b/packages/react-native-nitro-avalabs-crypto/.editorconfig deleted file mode 100644 index 65365be68e..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# editorconfig.org - -root = true - -[*] - -indent_style = space -indent_size = 2 - -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/packages/react-native-nitro-avalabs-crypto/.gitattributes b/packages/react-native-nitro-avalabs-crypto/.gitattributes deleted file mode 100644 index e27f70fa49..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -*.pbxproj -text -# specific for windows script files -*.bat text eol=crlf diff --git a/packages/react-native-nitro-avalabs-crypto/.gitignore b/packages/react-native-nitro-avalabs-crypto/.gitignore index 9b33822c02..a1de08b78f 100644 --- a/packages/react-native-nitro-avalabs-crypto/.gitignore +++ b/packages/react-native-nitro-avalabs-crypto/.gitignore @@ -28,7 +28,6 @@ DerivedData *.ipa *.xcuserstate project.xcworkspace -**/.xcode.env.local # Android/IJ # @@ -78,13 +77,14 @@ android/keystores/debug.keystore # generated by bob lib/ -# React Native Codegen -ios/generated -android/generated +# caches +.eslintcache +.cache +*.tsbuildinfo -# React Native Nitro Modules +# Nitro Modules nitrogen/ -ios/secp-out/ -ios/secp256k1-src/ -ios/secp-build/ +ios/secp256k1-src +ios/secp-build +ios/secp-out diff --git a/packages/react-native-nitro-avalabs-crypto/.nvmrc b/packages/react-native-nitro-avalabs-crypto/.nvmrc deleted file mode 100644 index c004e356d6..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v22.20.0 diff --git a/packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md b/packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md deleted file mode 100644 index 45d257b29a..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,133 +0,0 @@ - -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -[INSERT CONTACT METHOD]. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md b/packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md deleted file mode 100644 index 52e6493549..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/CONTRIBUTING.md +++ /dev/null @@ -1,147 +0,0 @@ -# Contributing - -Contributions are always welcome, no matter how large or small! - -We want this community to be friendly and respectful to each other. Please follow it in all your interactions with the project. Before contributing, please read the [code of conduct](./CODE_OF_CONDUCT.md). - -## Development workflow - -This project is a monorepo managed using [Yarn workspaces](https://yarnpkg.com/features/workspaces). It contains the following packages: - -- The library package in the root directory. -- An example app in the `example/` directory. - -To get started with the project, make sure you have the correct version of [Node.js](https://nodejs.org/) installed. See the [`.nvmrc`](./.nvmrc) file for the version used in this project. - -Run `yarn` in the root directory to install the required dependencies for each package: - -```sh -yarn -``` - -> Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development without manually migrating. - -This project uses Nitro Modules. If you're not familiar with how Nitro works, make sure to check the [Nitro Modules Docs](https://nitro.margelo.com/). - -You need to run [Nitrogen](https://nitro.margelo.com/docs/nitrogen) to generate the boilerplate code required for this project. The example app will not build without this step. - -Run **Nitrogen** in following cases: - -- When you make changes to any `*.nitro.ts` files. -- When running the project for the first time (since the generated files are not committed to the repository). - -To invoke **Nitrogen**, use the following command: - -```sh -yarn nitrogen -``` - -The [example app](/example/) demonstrates usage of the library. You need to run it to test any changes you make. - -It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app. - -If you want to use Android Studio or Xcode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/NitroAvalabsCryptoExample.xcworkspace` in Xcode and find the source files at `Pods > Development Pods > react-native-nitro-avalabs-crypto`. - -To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `react-native-nitro-avalabs-crypto` under `Android`. - -You can use various commands from the root directory to work with the project. - -To start the packager: - -```sh -yarn example start -``` - -To run the example app on Android: - -```sh -yarn example android -``` - -To run the example app on iOS: - -```sh -yarn example ios -``` - -To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this: - -```sh -Running "NitroAvalabsCryptoExample" with {"fabric":true,"initialProps":{"concurrentRoot":true},"rootTag":1} -``` - -Note the `"fabric":true` and `"concurrentRoot":true` properties. - -Make sure your code passes TypeScript and ESLint. Run the following to verify: - -```sh -yarn typecheck -yarn lint -``` - -To fix formatting errors, run the following: - -```sh -yarn lint --fix -``` - -Remember to add tests for your change if possible. Run the unit tests by: - -```sh -yarn test -``` - -### Commit message convention - -We follow the [conventional commits specification](https://www.conventionalcommits.org/en) for our commit messages: - -- `fix`: bug fixes, e.g. fix crash due to deprecated method. -- `feat`: new features, e.g. add new method to the module. -- `refactor`: code refactor, e.g. migrate from class components to hooks. -- `docs`: changes into documentation, e.g. add usage example for the module. -- `test`: adding or updating tests, e.g. add integration tests using detox. -- `chore`: tooling changes, e.g. change CI config. - -Our pre-commit hooks verify that your commit message matches this format when committing. - -### Linting and tests - -[ESLint](https://eslint.org/), [Prettier](https://prettier.io/), [TypeScript](https://www.typescriptlang.org/) - -We use [TypeScript](https://www.typescriptlang.org/) for type checking, [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) for linting and formatting the code, and [Jest](https://jestjs.io/) for testing. - -Our pre-commit hooks verify that the linter and tests pass when committing. - -### Publishing to npm - -We use [release-it](https://github.com/release-it/release-it) to make it easier to publish new versions. It handles common tasks like bumping version based on semver, creating tags and releases etc. - -To publish new versions, run the following: - -```sh -yarn release -``` - -### Scripts - -The `package.json` file contains various scripts for common tasks: - -- `yarn`: setup project by installing dependencies. -- `yarn typecheck`: type-check files with TypeScript. -- `yarn lint`: lint files with ESLint. -- `yarn test`: run unit tests with Jest. -- `yarn example start`: start the Metro server for the example app. -- `yarn example android`: run the example app on Android. -- `yarn example ios`: run the example app on iOS. - -### Sending a pull request - -> **Working on your first pull request?** You can learn how from this _free_ series: [How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github). - -When you're sending a pull request: - -- Prefer small pull requests focused on one change. -- Verify that linters and tests are passing. -- Review the documentation to make sure it looks good. -- Follow the pull request template when opening a pull request. -- For pull requests that change the API or implementation, discuss with maintainers first by opening an issue. diff --git a/packages/react-native-nitro-avalabs-crypto/LICENSE b/packages/react-native-nitro-avalabs-crypto/LICENSE deleted file mode 100644 index 59f91e3931..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -MIT License - -Copyright (c) 2025 TurboSzymon -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec b/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec index 80dc7532dd..1f5600e4a8 100644 --- a/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec +++ b/packages/react-native-nitro-avalabs-crypto/NitroAvalabsCrypto.podspec @@ -10,12 +10,15 @@ Pod::Spec.new do |s| s.license = package["license"] s.authors = package["author"] - s.platforms = { :ios => min_ios_version_supported } - s.source = { :git => "https://github.com/Szymon20000/react-native-nitro-avalabs-crypto.git", :tag => "#{s.version}" } + s.platforms = { :ios => min_ios_version_supported, :visionos => 1.0 } + s.source = { :git => "https://github.com/mrousavy/nitro.git", :tag => "#{s.version}" } s.source_files = [ + # Implementation (Swift) "ios/**/*.{swift}", + # Autolinking/Registration (Objective-C++) "ios/**/*.{m,mm}", + # Implementation (C++ objects) "cpp/**/*.{hpp,cpp}", ] @@ -25,7 +28,8 @@ Pod::Spec.new do |s| load 'nitrogen/generated/ios/NitroAvalabsCrypto+autolinking.rb' add_nitrogen_files(s) - # ----------------------------------------------------------------- + + # ----------------------------------------------------------------- # Build script – produces secp256k1.xcframework # ----------------------------------------------------------------- s.script_phases = [{ @@ -62,6 +66,5 @@ Pod::Spec.new do |s| 'OTHER_LDFLAGS' => '$(inherited) -lsecp256k1' } - s.static_framework = true install_modules_dependencies(s) -end \ No newline at end of file +end diff --git a/packages/react-native-nitro-avalabs-crypto/README.md b/packages/react-native-nitro-avalabs-crypto/README.md index 85149d1eeb..ba8d1d8693 100644 --- a/packages/react-native-nitro-avalabs-crypto/README.md +++ b/packages/react-native-nitro-avalabs-crypto/README.md @@ -1,39 +1,38 @@ -# react-native-nitro-avalabs-crypto - -Avalabs' React Native crypto libray - -## Installation - - -```sh -npm install react-native-nitro-avalabs-crypto react-native-nitro-modules - -> `react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/). -``` +# react-native-nitro-template +This is a template for Nitro Modules. ## Usage - -```js -import { multiply } from 'react-native-nitro-avalabs-crypto'; - -// ... - -const result = multiply(3, 7); -``` - +Clone this repo, and change all `$$*$$` names according to your `nitro.json` file. ## Contributing -- [Development workflow](CONTRIBUTING.md#development-workflow) -- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request) -- [Code of conduct](CODE_OF_CONDUCT.md) - -## License - -MIT - ---- - -Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob) +Contribute a change to this template to update it for newer React Native versions. + +## Structure + +- [`android/`](android): All your `android`-specific implementations. + - [`build.gradle`](android/build.gradle): The gradle build file. This contains four important pieces: + 1. Standard react-native library boilerplate code + 2. Configures Kotlin (`apply plugin: 'org.jetbrains.kotlin.android'`) + 3. Adds all Nitrogen files (`apply from: '.../NitroAvalabsCrypto+autolinking.gradle'`) + 4. Triggers the native C++ build (via CMake/`externalNativeBuild`) + - [`CMakeLists.txt`](android/CMakeLists.txt): The CMake build file to build C++ code. This contains four important pieces: + 1. Creates a library called `NitroAvalabsCrypto` (same as in `nitro.json`) + 2. Adds all Nitrogen files (`include(.../NitroAvalabsCrypto+autolinking.cmake)`) + 3. Adds all custom C++ files (only `HybridTestObjectCpp.cpp`) + 4. Adds a `cpp-adapter.cpp` file, which autolinks all C++ HybridObjects (only `HybridTestObjectCpp`) + - [`src/main/java/com/margelo/nitro/nitroavalabscrypto/`](android/src/main/java/com/margelo/nitro/nitroavalabscrypto/): All Kotlin implementations. + - [`NitroAvalabsCryptoPackage.kt`](android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt): The react-native package. You need this because the react-native CLI only adds libraries if they have a `*Package.kt` file. In here, you can autolink all Kotlin HybridObjects. +- [`cpp/`](cpp): All your cross-platform implementations. (only `HybridTestObjectCpp.cpp`) +- [`ios/`](ios): All your iOS-specific implementations. +- [`nitrogen/`](nitrogen): All files generated by nitrogen. You should commit this folder to git. +- [`src/`](src): The TypeScript codebase. This defines all HybridObjects and loads them at runtime. + - [`specs/`](src/specs): All HybridObject types. Nitrogen will run on all `*.nitro.ts` files. +- [`nitro.json`](nitro.json): The configuration file for nitrogen. This will define all native namespaces, as well as the library name. +- [`NitroAvalabsCrypto.podspec`](NitroAvalabsCrypto.podspec): The iOS podspec build file to build the iOS code. This contains three important pieces: + 1. Specifies the Pod's name. This must be identical to the name specified in `nitro.json`. + 2. Adds all of your `.swift` or `.cpp` files (implementations). + 3. Adds all Nitrogen files (`add_nitrogen_files(s)`) +- [`package.json`](package.json): The npm package.json file. `react-native-nitro-modules` should be a `peerDependency`. diff --git a/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt b/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt index 9c4385a8b4..d490a48009 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt +++ b/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt @@ -1,57 +1,29 @@ -project(nitroavalabscrypto) +project(NitroAvalabsCrypto) cmake_minimum_required(VERSION 3.9.0) -set(PACKAGE_NAME nitroavalabscrypto) -set(CMAKE_VERBOSE_MAKEFILE ON) -set(CMAKE_CXX_STANDARD 20) +set (PACKAGE_NAME NitroAvalabsCrypto) +set (CMAKE_VERBOSE_MAKEFILE ON) +set (CMAKE_CXX_STANDARD 20) # Define C++ library and add all sources -file(GLOB CPP_SOURCES "../cpp/*.cpp" "../cpp/*.hpp") -add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp ${CPP_SOURCES}) +add_library(${PACKAGE_NAME} SHARED + src/main/cpp/cpp-adapter.cpp +) -# Add Nitrogen specs -include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/nitroavalabscrypto+autolinking.cmake) +# Add Nitrogen specs :) +include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.cmake) # Set up local includes -include_directories("src/main/cpp" "../cpp") - -# Debug variables -message("SECP256K1_ANDROID_ROOT: ${SECP256K1_ANDROID_ROOT}") -message("ANDROID_ABI: ${ANDROID_ABI}") -message("SECP256K1_LIB_DIR: ${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib") -file(GLOB LIB_FILES "${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib/*") -message("Files in SECP256K1_LIB_DIR: ${LIB_FILES}") - -# Check for secp256k1 variables -if(NOT DEFINED SECP256K1_INCLUDE_DIR OR NOT DEFINED SECP256K1_ANDROID_ROOT) - message(FATAL_ERROR "SECP256K1 vars not provided. Ensure Gradle passes -DSECP256K1_INCLUDE_DIR and -DSECP256K1_ANDROID_ROOT.") -endif() - -# Set the library path directly -set(SECP256K1_LIB_DIR "${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib") -file(REAL_PATH "${SECP256K1_LIB_DIR}" RESOLVED_LIB_DIR) -message("Resolved SECP256K1_LIB_DIR: ${RESOLVED_LIB_DIR}") -set(SECP256K1_LIB "${RESOLVED_LIB_DIR}/libsecp256k1.so") -if(NOT EXISTS "${SECP256K1_LIB}") - message(FATAL_ERROR "libsecp256k1.so does not exist at ${SECP256K1_LIB}") -else() - file(SIZE "${SECP256K1_LIB}" LIB_SIZE) - message("libsecp256k1.so size: ${LIB_SIZE} bytes") - if(LIB_SIZE EQUAL 0) - message(FATAL_ERROR "libsecp256k1.so is empty at ${SECP256K1_LIB}") - endif() - message("Manually set libsecp256k1.so at: ${SECP256K1_LIB}") -endif() - -# Add headers for secp256k1 -include_directories("${SECP256K1_INCLUDE_DIR}") +include_directories( + "src/main/cpp" + "../cpp" +) find_library(LOG_LIB log) # Link all libraries together target_link_libraries( - ${PACKAGE_NAME} - ${LOG_LIB} - ${SECP256K1_LIB} - android -) \ No newline at end of file + ${PACKAGE_NAME} + ${LOG_LIB} + android # <-- Android core +) diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle index 47b9bf3b18..a9ab28b6fb 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/build.gradle +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -1,17 +1,11 @@ buildscript { - ext.getExtOrDefault = {name -> - return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['NitroAvalabsCrypto_' + name] - } - repositories { google() mavenCentral() } dependencies { - classpath "com.android.tools.build:gradle:8.7.2" - // noinspection DifferentKotlinGradleVersion - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}" + classpath "com.android.tools.build:gradle:8.13.0" } } @@ -20,286 +14,42 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -apply plugin: "com.android.library" -apply plugin: "kotlin-android" -apply from: '../nitrogen/generated/android/nitroavalabscrypto+autolinking.gradle' - -apply plugin: "com.facebook.react" - -def getExtOrIntegerDefault(name) { - return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroAvalabsCrypto_" + name]).toInteger() +def isNewArchitectureEnabled() { + return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" } -// === secp256k1 Android build wiring (headers + .so per ABI) === -ext { - SECP_OUTPUTS_INCLUDE_DIR = "$buildDir/outputs/include" - SECP_OUTPUTS_ROOT = "$buildDir/outputs/android" // /lib/libsecp256k1.so -} +apply plugin: "com.android.library" +apply plugin: 'org.jetbrains.kotlin.android' +apply from: '../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.gradle' +apply from: "./fix-prefab.gradle" -ext { - secpRepoUrl = 'https://github.com/bitcoin-core/secp256k1.git' - secpTag = 'v0.7.0' - secpCommit = '' - workDir = file("$buildDir/secp256k1") - installRoot = file("$buildDir/secp-android") - outputsRoot = file(SECP_OUTPUTS_ROOT) - outputsIncludeDir = file(SECP_OUTPUTS_INCLUDE_DIR) - enableModules = (project.findProperty('secpModules') ?: '') // e.g., ecdh,recovery,schnorrsig,extrakeys - // Use the same API level for all ABIs; default to max(minSdkVersion, 21). Override with -PsecpApi. - secpApi = (project.findProperty('secpApi') ?: Math.max(getExtOrIntegerDefault("minSdkVersion"), 21)).toString() +if (isNewArchitectureEnabled()) { + apply plugin: "com.facebook.react" } -import org.apache.tools.ant.taskdefs.condition.Os - -def isMac() { Os.isFamily(Os.FAMILY_MAC) } - -def findNdkRoot() { - ['ANDROID_NDK_HOME','ANDROID_NDK_ROOT','ANDROID_NDK'].collect { System.getenv(it) } - .find { it && file(it).exists() } ?: - { -> - def home = System.getenv('HOME') - def ndkBundle = file("$home/Library/Android/sdk/ndk-bundle") - if (ndkBundle.exists()) return ndkBundle - def ndkMulti = file("$home/Library/Android/sdk/ndk") - if (ndkMulti.exists()) { - def versions = ndkMulti.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> a.name <=> b.name } - if (versions && !versions.isEmpty()) return versions.last() - } - throw new GradleException("Android NDK not found. Set ANDROID_NDK_HOME / ANDROID_NDK_ROOT / ANDROID_NDK.") - }.call() +def getExtOrDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["NitroAvalabsCrypto_" + name] } -def ndkRoot = file(findNdkRoot()) - -def hostTag = ['darwin-arm64','darwin-x86_64'].find { new File(ndkRoot, "toolchains/llvm/prebuilt/${it}").exists() } ?: - new File(ndkRoot, "toolchains/llvm/prebuilt").listFiles()?.find { it.isDirectory() }?.name -if (!hostTag) throw new GradleException("Cannot locate NDK llvm/prebuilt host tag under ${ndkRoot}.") - -def toolBin = file("${ndkRoot}/toolchains/llvm/prebuilt/${hostTag}/bin") - -def abiMatrix = { - [ - 'armeabi-v7a': [ host:'arm-linux-androideabi', target:'armv7a-linux-androideabi', api: secpApi ], - 'arm64-v8a' : [ host:'aarch64-linux-android', target:'aarch64-linux-android', api: secpApi ], - 'x86' : [ host:'i686-linux-android', target:'i686-linux-android', api: secpApi ], - 'x86_64' : [ host:'x86_64-linux-android', target:'x86_64-linux-android', api: secpApi ], - ] -}.call() - -def moduleFlagsString = { - def map = [ - ecdh : '--enable-module-ecdh', - recovery : '--enable-module-recovery', - extrakeys : '--enable-module-extrakeys', - schnorrsig: '--enable-module-schnorrsig', - ] - (enableModules ?: '').split(',').collect { it.trim() }.findAll { it }.collect { map[it] ?: '' }.findAll { it }.join(' ') -}.call() - -// Fetch repo at pinned tag or commit (incremental) -tasks.register('fetchSecp256k1') { - inputs.property('repoUrl', secpRepoUrl) - inputs.property('tag', secpTag) - inputs.property('commit', secpCommit) - outputs.dir(workDir) - doLast { - if (!workDir.exists()) { - workDir.mkdirs() - } - - // Determine ref to check out: prefer tag, then commit, else default branch - def ref = (secpTag ?: secpCommit ?: '').trim() - if (ref) { - // --- Try Git first (annotated tags need refs/tags/) --- - def ok = true - try { - exec { workingDir workDir; commandLine 'git', 'init'; ignoreExitValue true } - exec { workingDir workDir; commandLine 'git', 'remote', 'remove', 'origin'; ignoreExitValue true } - exec { workingDir workDir; commandLine 'git', 'remote', 'add', 'origin', secpRepoUrl; ignoreExitValue true } - exec { workingDir workDir; commandLine 'git', 'fetch', '--tags', '--prune', 'origin' } - def co1 = exec { workingDir workDir; commandLine 'git', 'checkout', "refs/tags/${ref}"; ignoreExitValue true } - if (co1.exitValue != 0) { - def co2 = exec { workingDir workDir; commandLine 'git', 'checkout', ref; ignoreExitValue true } - if (co2.exitValue != 0) ok = false - } - } catch (Exception e) { - ok = false - } - - if (!ok) { - // --- Fallback: download release tarball --- - def url = "https://github.com/bitcoin-core/secp256k1/archive/refs/tags/${ref}.tar.gz" - def tarFile = file("${buildDir}/secp256k1-${ref}.tar.gz") - def refNoV = ref.startsWith('v') ? ref.substring(1) : ref - def extractDir = file("${buildDir}/secp256k1-${refNoV}") - - println "[secp] Git checkout failed for '${ref}', falling back to tarball: ${url}" - def curlRes = exec { commandLine 'curl', '-fL', '-o', tarFile.absolutePath, url; ignoreExitValue true } - if (curlRes.exitValue != 0) { - throw new GradleException("Failed to download ${url}. Try setting -PsecpTag to a valid release (e.g., v0.6.0).") - } - // Ensure clean target - if (extractDir.exists()) extractDir.deleteDir() - exec { commandLine 'tar', '-xzf', tarFile.absolutePath, '-C', buildDir.absolutePath } - - if (!extractDir.exists()) { - throw new GradleException("Expected extracted folder ${extractDir} not found after untar. Tag '${ref}' may be invalid.") - } - // Move to workDir - if (workDir.exists() && workDir.listFiles()?.length) workDir.deleteDir() - extractDir.renameTo(workDir) - println "[secp] Extracted to ${workDir}" - } else { - println "[secp] Checked out ${ref} via git" - } - } else { - // No explicit ref: clone/update default branch best-effort - if (!new File(workDir, '.git').exists()) { - exec { commandLine 'git', 'clone', secpRepoUrl, workDir.absolutePath } - } else { - exec { workingDir workDir; commandLine 'git', 'pull', '--ff-only', 'origin'; ignoreExitValue true } - } - } - } -} - -// Per-ABI configure/build (incremental) - -def abis = ['armeabi-v7a','arm64-v8a','x86','x86_64'] - -abis.each { abi -> - def meta = abiMatrix[abi] - def ccTrip = "${meta.target}${meta.api}-clang" - def arTool = "${meta.host}-ar" - def ranlibTool = "${meta.host}-ranlib" - def stripTool = "${meta.host}-strip" - - def installDir = file("${installRoot}/${abi}") - def stagedLib = file("${outputsRoot}/${abi}/lib/libsecp256k1.so") - def libDirOut = stagedLib.parentFile - def stampFile = file("${buildDir}/stamps/secp_${abi}.stamp") - - tasks.register("configureSecp_${abi}") { - dependsOn 'fetchSecp256k1' - - inputs.property('host', meta.host) - inputs.property('target', meta.target) - inputs.property('api', meta.api) - inputs.property('commit', secpCommit) - inputs.property('modules', enableModules) - inputs.property('ndkRoot', ndkRoot.absolutePath) - inputs.property('hostTag', hostTag) - inputs.files(fileTree(dir: workDir, includes: ['configure.ac','Makefile.am','autogen.sh'])).withPathSensitivity(PathSensitivity.RELATIVE) - outputs.file(stampFile) - - onlyIf { !(stampFile.exists() && stagedLib.exists()) } - - doLast { - outputsIncludeDir.mkdirs() - installDir.mkdirs() - libDirOut.mkdirs() - file("${buildDir}/stamps").mkdirs() - - exec { workingDir workDir; commandLine 'bash', '-lc', './autogen.sh' } - - println "[secp:${abi}] Using API level ${meta.api} (unified)" - - exec { - workingDir workDir - environment 'CC', new File(toolBin, ccTrip).absolutePath - // Use LLVM binutils with libtool-friendly flags (NDK r25+) - environment 'AR', new File(toolBin, 'llvm-ar').absolutePath - environment 'ARFLAGS', 'crs' - environment 'RANLIB', new File(toolBin, 'llvm-ranlib').absolutePath - environment 'NM', new File(toolBin, 'llvm-nm').absolutePath - environment 'STRIP', new File(toolBin, stripTool).absolutePath - // Safer CFLAGS for cross builds - environment 'CFLAGS', "-fPIC -O2 --sysroot=${new File(ndkRoot, 'toolchains/llvm/prebuilt/' + hostTag + '/sysroot').absolutePath}" - environment 'LDFLAGS', '' - // Link against Android log for __android_log_print and enable optional configure logging - environment 'LIBS', '-llog' - // On macOS, libtool is glibtool/gnulibtool; autogen.sh already glibtoolize's, but keep these for safety - environment 'LIBTOOLIZE', 'glibtoolize' - environment 'LIBTOOL', 'glibtool' - commandLine 'bash', '-lc', ([ - './configure', - "--host=${meta.host}", - '--enable-shared', - '--disable-static', - '--with-pic', - '--disable-benchmark', - '--disable-tests', - "--prefix=${installDir.absolutePath}", - moduleFlagsString - ].findAll { it }.join(' ')) - } - - stampFile.text = "configured:${abi}:${secpCommit}:${enableModules}:${meta.api}:${hostTag}:${ndkRoot}" - } - } - - tasks.register("buildSecp_${abi}") { - dependsOn "configureSecp_${abi}" - - inputs.file(file("${workDir}/Makefile")) - inputs.property('commit', secpCommit) - inputs.property('modules', enableModules) - outputs.file(stagedLib) - - onlyIf { !stagedLib.exists() } - - doLast { - def jobs = project.findProperty('jobs') ?: Runtime.runtime.availableProcessors() - exec { - workingDir workDir - environment 'LIBS', '-llog' - commandLine 'bash', '-lc', "make -j${jobs} && make install" - } - - libDirOut.mkdirs() - copy { - from file("${installDir}/lib") - include 'libsecp256k1.so*' - into libDirOut - } - - if (!outputsIncludeDir.exists() || outputsIncludeDir.listFiles() == null || outputsIncludeDir.listFiles().length == 0) { - copy { - from file("${installDir}/include") - into outputsIncludeDir - } - } - println "[${abi}] staged -> ${stagedLib}" - } - } +def getExtOrIntegerDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroAvalabsCrypto_" + name]).toInteger() } -// Aggregate task - tasks.register('buildSecpAllAndroid') { - group = 'build' - description = 'Build secp256k1 Android .so for all ABIs and stage headers (incremental)' - dependsOn abis.collect { "buildSecp_${it}" } - } - -// Clean helper - tasks.register('cleanSecpAndroid') { - doLast { delete workDir, installRoot, outputsRoot, outputsIncludeDir, file("${buildDir}/stamps") } - } - android { namespace "com.margelo.nitro.nitroavalabscrypto" + ndkVersion getExtOrDefault("ndkVersion") compileSdkVersion getExtOrIntegerDefault("compileSdkVersion") defaultConfig { minSdkVersion getExtOrIntegerDefault("minSdkVersion") targetSdkVersion getExtOrIntegerDefault("targetSdkVersion") + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() externalNativeBuild { cmake { - cppFlags "-frtti -fexceptions -Wall -fstack-protector-all" - arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", - "-DSECP256K1_INCLUDE_DIR=${SECP_OUTPUTS_INCLUDE_DIR}", "-DSECP256K1_ANDROID_ROOT=${SECP_OUTPUTS_ROOT}" + cppFlags "-frtti -fexceptions -Wall -Wextra -fstack-protector-all" + arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON" abiFilters (*reactNativeArchitectures()) buildTypes { @@ -348,7 +98,7 @@ android { buildTypes { release { - minifyEnabled false + minifyEnabled true } } @@ -357,34 +107,17 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } sourceSets { main { - java.srcDirs += [ - "generated/java", - "generated/jni" - ] - } - } -} - -// Ensure native build tasks run after secp outputs are prepared (AGP 8.x safe) -afterEvaluate { - def secpTask = tasks.named('buildSecpAllAndroid') - - tasks.configureEach { t -> - def n = t.name - if (n.startsWith('externalNativeBuild') || - n.startsWith('configureCMake') || - n.startsWith('buildCMake') || - n.startsWith('generateJsonModel') || - n.startsWith('prefabGenerate')) { - t.dependsOn(secpTask) - t.doFirst { - println "[secp] '${n}' dependsOn buildSecpAllAndroid" + if (isNewArchitectureEnabled()) { + java.srcDirs += [ + // React Codegen files + "${project.buildDir}/generated/source/codegen/java" + ] } } } @@ -395,10 +128,14 @@ repositories { google() } -def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { - implementation "com.facebook.react:react-android" - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + // For < 0.71, this will be from the local maven repo + // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin + //noinspection GradleDynamicVersion + implementation "com.facebook.react:react-native:+" + + // Add a dependency on NitroModules implementation project(":react-native-nitro-modules") } + diff --git a/packages/react-native-nitro-avalabs-crypto/android/fix-prefab.gradle b/packages/react-native-nitro-avalabs-crypto/android/fix-prefab.gradle new file mode 100644 index 0000000000..d6c010ef78 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/android/fix-prefab.gradle @@ -0,0 +1,51 @@ +tasks.configureEach { task -> + // Make sure that we generate our prefab publication file only after having built the native library + // so that not a header publication file, but a full configuration publication will be generated, which + // will include the .so file + + def prefabConfigurePattern = ~/^prefab(.+)ConfigurePackage$/ + def matcher = task.name =~ prefabConfigurePattern + if (matcher.matches()) { + def variantName = matcher[0][1] + task.outputs.upToDateWhen { false } + task.dependsOn("externalNativeBuild${variantName}") + } +} + +afterEvaluate { + def abis = reactNativeArchitectures() + rootProject.allprojects.each { proj -> + if (proj === rootProject) return + + def dependsOnThisLib = proj.configurations.findAll { it.canBeResolved }.any { config -> + config.dependencies.any { dep -> + dep.group == project.group && dep.name == project.name + } + } + if (!dependsOnThisLib && proj != project) return + + if (!proj.plugins.hasPlugin('com.android.application') && !proj.plugins.hasPlugin('com.android.library')) { + return + } + + def variants = proj.android.hasProperty('applicationVariants') ? proj.android.applicationVariants : proj.android.libraryVariants + // Touch the prefab_config.json files to ensure that in ExternalNativeJsonGenerator.kt we will re-trigger the prefab CLI to + // generate a libnameConfig.cmake file that will contain our native library (.so). + // See this condition: https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/ExternalNativeJsonGenerator.kt;l=207-219?q=createPrefabBuildSystemGlue + variants.all { variant -> + def variantName = variant.name + abis.each { abi -> + def searchDir = new File(proj.projectDir, ".cxx/${variantName}") + if (!searchDir.exists()) return + def matches = [] + searchDir.eachDir { randomDir -> + def prefabFile = new File(randomDir, "${abi}/prefab_config.json") + if (prefabFile.exists()) matches << prefabFile + } + matches.each { prefabConfig -> + prefabConfig.setLastModified(System.currentTimeMillis()) + } + } + } + } +} diff --git a/packages/react-native-nitro-avalabs-crypto/android/gradle.properties b/packages/react-native-nitro-avalabs-crypto/android/gradle.properties index be949285b4..270c644849 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/gradle.properties +++ b/packages/react-native-nitro-avalabs-crypto/android/gradle.properties @@ -1,5 +1,5 @@ -NitroAvalabsCrypto_kotlinVersion=2.0.21 -NitroAvalabsCrypto_minSdkVersion=24 -NitroAvalabsCrypto_targetSdkVersion=34 -NitroAvalabsCrypto_compileSdkVersion=35 +NitroAvalabsCrypto_kotlinVersion=2.1.20 +NitroAvalabsCrypto_minSdkVersion=23 +NitroAvalabsCrypto_targetSdkVersion=36 +NitroAvalabsCrypto_compileSdkVersion=36 NitroAvalabsCrypto_ndkVersion=27.1.12297006 diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp b/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp index 13054444aa..4de74b7369 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp +++ b/packages/react-native-nitro-avalabs-crypto/android/src/main/cpp/cpp-adapter.cpp @@ -1,5 +1,5 @@ #include -#include "nitroavalabscryptoOnLoad.hpp" +#include "NitroAvalabsCryptoOnLoad.hpp" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { return margelo::nitro::nitroavalabscrypto::initialize(vm); diff --git a/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt index 1a4a17346a..9895a37372 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt +++ b/packages/react-native-nitro-avalabs-crypto/android/src/main/java/com/margelo/nitro/nitroavalabscrypto/NitroAvalabsCryptoPackage.kt @@ -1,22 +1,18 @@ package com.margelo.nitro.nitroavalabscrypto -import com.facebook.react.TurboReactPackage import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.module.model.ReactModuleInfoProvider +import com.facebook.react.BaseReactPackage -class NitroAvalabsCryptoPackage : TurboReactPackage() { - override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? { - return null - } +class NitroAvalabsCryptoPackage : BaseReactPackage() { + override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? = null - override fun getReactModuleInfoProvider(): ReactModuleInfoProvider { - return ReactModuleInfoProvider { HashMap() } - } + override fun getReactModuleInfoProvider(): ReactModuleInfoProvider = ReactModuleInfoProvider { HashMap() } companion object { init { - System.loadLibrary("nitroavalabscrypto") + NitroAvalabsCryptoOnLoad.initializeNative() } } } diff --git a/packages/react-native-nitro-avalabs-crypto/babel.config.js b/packages/react-native-nitro-avalabs-crypto/babel.config.js index 0c05fd6963..3e0218e68f 100644 --- a/packages/react-native-nitro-avalabs-crypto/babel.config.js +++ b/packages/react-native-nitro-avalabs-crypto/babel.config.js @@ -1,12 +1,3 @@ module.exports = { - overrides: [ - { - exclude: /\/node_modules\//, - presets: ['module:react-native-builder-bob/babel-preset'], - }, - { - include: /\/node_modules\//, - presets: ['module:@react-native/babel-preset'], - }, - ], -}; + presets: ['module:@react-native/babel-preset'], +} diff --git a/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp index e9b5ae3a2a..860dbf184f 100644 --- a/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp +++ b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.cpp @@ -52,7 +52,7 @@ std::vector CryptoHybrid::hexToBytes(const std::string& h) { return out; } -std::vector CryptoHybrid::bytesFromVariant(const std::variant>& v) { +std::vector CryptoHybrid::bytesFromVariant(const BufferOrString& v) { if (std::holds_alternative(v)) { return hexToBytes(std::get(v)); } else { @@ -63,7 +63,7 @@ std::vector CryptoHybrid::bytesFromVariant(const std::variant CryptoHybrid::require32(const std::variant>& v, const char* what) { +std::array CryptoHybrid::require32(const BufferOrString& v, const char* what) { auto bytes = bytesFromVariant(v); if (bytes.size() != 32) { throw std::invalid_argument(std::string(what) + " must be 32 bytes"); @@ -137,8 +137,8 @@ std::shared_ptr CryptoHybrid::getPublicKeyFromArrayBuffer(const std /* ------------------------ pointAddScalar: P + t·G ------------------------- */ std::shared_ptr CryptoHybrid::pointAddScalar( - const std::variant>& publicKey, - const std::variant>& tweak, + const BufferOrString& publicKey, + const BufferOrString& tweak, std::optional isCompressed ) { bool comp = isCompressed.value_or(true); @@ -159,8 +159,8 @@ std::shared_ptr CryptoHybrid::pointAddScalar( /* Assumption: message is a 32-byte digest (e.g., SHA-256). */ std::shared_ptr CryptoHybrid::sign( - const std::variant>& secretKey, - const std::variant>& message + const BufferOrString& secretKey, + const BufferOrString& message ) { auto sk = require32(secretKey, "secretKey"); auto msg32 = require32(message, "message"); @@ -184,9 +184,9 @@ std::shared_ptr CryptoHybrid::sign( } bool CryptoHybrid::verify( - const std::variant>& publicKey, - const std::variant>& message, - const std::variant>& signature + const BufferOrString& publicKey, + const BufferOrString& message, + const BufferOrString& signature ) { auto pkBytes = bytesFromVariant(publicKey); auto msg32 = require32(message, "message"); @@ -219,9 +219,9 @@ bool CryptoHybrid::verify( or 33/65-byte normal EC key (we’ll convert to xonly). */ std::shared_ptr CryptoHybrid::signSchnorr( - const std::variant>& secretKey, - const std::variant>& messageHash, - const std::variant>& auxRand + const BufferOrString& secretKey, + const BufferOrString& messageHash, + const BufferOrString& auxRand ) { auto sk = require32(secretKey, "secretKey"); auto msg32 = require32(messageHash, "messageHash"); @@ -286,9 +286,9 @@ std::shared_ptr CryptoHybrid::signSchnorr( } bool CryptoHybrid::verifySchnorr( - const std::variant>& publicKey, - const std::variant>& messageHash, - const std::variant>& signature + const BufferOrString& publicKey, + const BufferOrString& messageHash, + const BufferOrString& signature ) { auto msg32 = require32(messageHash, "messageHash"); auto sig = bytesFromVariant(signature); @@ -313,4 +313,4 @@ bool CryptoHybrid::verifySchnorr( return secp256k1_schnorrsig_verify(ctx(), sig.data(), msg32.data(), 32, &xpk) == 1; } -} // namespace margelo::nitro::nitroavalabscrypto \ No newline at end of file +} // namespace margelo::nitro::nitroavalabscrypto diff --git a/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp index d9a04edac8..f163271c17 100644 --- a/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp +++ b/packages/react-native-nitro-avalabs-crypto/cpp/CryptoHybrid.hpp @@ -23,6 +23,8 @@ class CryptoHybrid final : public HybridCryptoSpec { // Per your spec’s note: explicitly call HybridObject(TAG) in ctor CryptoHybrid() : HybridObject(TAG) {} ~CryptoHybrid() override = default; + + typedef std::variant, std::string> BufferOrString; // ---- Spec methods ---- std::shared_ptr getPublicKey( @@ -32,29 +34,29 @@ class CryptoHybrid final : public HybridCryptoSpec { std::shared_ptr getPublicKeyFromString(const std::string& secretKey, std::optional isCompressed) override; std::shared_ptr getPublicKeyFromArrayBuffer(const std::shared_ptr& secretKey, std::optional isCompressed) override; std::shared_ptr pointAddScalar( - const std::variant>& publicKey, - const std::variant>& tweak, + const BufferOrString& publicKey, + const BufferOrString& tweak, std::optional isCompressed) override; std::shared_ptr sign( - const std::variant>& secretKey, - const std::variant>& message) override; + const BufferOrString& secretKey, + const BufferOrString& message) override; bool verify( - const std::variant>& publicKey, - const std::variant>& message, - const std::variant>& signature) override; + const BufferOrString& publicKey, + const BufferOrString& message, + const BufferOrString& signature) override; std::shared_ptr signSchnorr( - const std::variant>& secretKey, - const std::variant>& messageHash, - const std::variant>& auxRand + const BufferOrString& secretKey, + const BufferOrString& messageHash, + const BufferOrString& auxRand ) override; bool verifySchnorr( - const std::variant>& publicKey, - const std::variant>& messageHash, - const std::variant>& signature) override; + const BufferOrString& publicKey, + const BufferOrString& messageHash, + const BufferOrString& signature) override; protected: @@ -67,8 +69,8 @@ class CryptoHybrid final : public HybridCryptoSpec { // helpers static std::vector hexToBytes(const std::string& hex); - static std::vector bytesFromVariant(const std::variant>& v); - static std::array require32(const std::variant>& v, const char* what); + static std::vector bytesFromVariant(const BufferOrString& v); + static std::array require32(const BufferOrString& v, const char* what); static std::vector serializePubkey(const secp256k1_pubkey& pk, bool compressed); static secp256k1_pubkey parsePubkey(const std::vector& in); static std::shared_ptr toAB(const std::vector& v); diff --git a/packages/react-native-nitro-avalabs-crypto/eslint.config.mjs b/packages/react-native-nitro-avalabs-crypto/eslint.config.mjs deleted file mode 100644 index 16b00bbcd9..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/eslint.config.mjs +++ /dev/null @@ -1,29 +0,0 @@ -import { fixupConfigRules } from '@eslint/compat'; -import { FlatCompat } from '@eslint/eslintrc'; -import js from '@eslint/js'; -import prettier from 'eslint-plugin-prettier'; -import { defineConfig } from 'eslint/config'; -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const compat = new FlatCompat({ - baseDirectory: __dirname, - recommendedConfig: js.configs.recommended, - allConfig: js.configs.all, -}); - -export default defineConfig([ - { - extends: fixupConfigRules(compat.extends('@react-native', 'prettier')), - plugins: { prettier }, - rules: { - 'react/react-in-jsx-scope': 'off', - 'prettier/prettier': 'error', - }, - }, - { - ignores: ['node_modules/', 'lib/'], - }, -]); diff --git a/packages/react-native-nitro-avalabs-crypto/lefthook.yml b/packages/react-native-nitro-avalabs-crypto/lefthook.yml deleted file mode 100644 index 9695c1295c..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/lefthook.yml +++ /dev/null @@ -1,14 +0,0 @@ -pre-commit: - parallel: true - commands: - lint: - glob: "*.{js,ts,jsx,tsx}" - run: npx eslint {staged_files} - types: - glob: "*.{js,ts, jsx, tsx}" - run: npx tsc -commit-msg: - parallel: true - commands: - commitlint: - run: npx commitlint --edit diff --git a/packages/react-native-nitro-avalabs-crypto/nitro.json b/packages/react-native-nitro-avalabs-crypto/nitro.json index bb2b7099cb..67b8daa9c6 100644 --- a/packages/react-native-nitro-avalabs-crypto/nitro.json +++ b/packages/react-native-nitro-avalabs-crypto/nitro.json @@ -1,16 +1,19 @@ { - "cxxNamespace": ["nitroavalabscrypto"], + "$schema": "https://nitro.margelo.com/nitro.schema.json", + "cxxNamespace": [ + "nitroavalabscrypto" + ], "ios": { "iosModuleName": "NitroAvalabsCrypto" }, "android": { - "androidNamespace": ["nitroavalabscrypto"], - "androidCxxLibName": "nitroavalabscrypto" + "androidNamespace": [ + "nitroavalabscrypto" + ], + "androidCxxLibName": "NitroAvalabsCrypto" }, - "autolinking": { - "Crypto": { - "cpp": "CryptoHybrid" - } - }, - "ignorePaths": ["node_modules"] + "autolinking": {}, + "ignorePaths": [ + "**/node_modules" + ] } diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json index eb740382ce..c489c7880c 100644 --- a/packages/react-native-nitro-avalabs-crypto/package.json +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -1,164 +1,110 @@ { "name": "react-native-nitro-avalabs-crypto", - "version": "0.1.0", - "description": "Avalabs' React Native crypto libray", - "main": "./src/index.tsx", - "exports": { - ".": { - "source": "./src/index.tsx", - "default": "./src/index.tsx" - }, - "./package.json": "./package.json" - }, + "version": "0.0.1", + "description": "react-native-nitro-avalabs-crypto", + "main": "lib/index", + "module": "lib/index", + "types": "lib/index.d.ts", + "react-native": "src/index", + "source": "src/index", "files": [ "src", + "react-native.config.js", "lib", - "android", - "ios", - "cpp", "nitrogen", + "android/build.gradle", + "android/gradle.properties", + "android/fix-prefab.gradle", + "android/CMakeLists.txt", + "android/src", + "ios/**/*.h", + "ios/**/*.m", + "ios/**/*.mm", + "ios/**/*.cpp", + "ios/**/*.swift", + "app.plugin.js", "nitro.json", "*.podspec", - "react-native.config.js", - "!ios/build", - "!android/build", - "!android/gradle", - "!android/gradlew", - "!android/gradlew.bat", - "!android/local.properties", - "!**/__tests__", - "!**/__fixtures__", - "!**/__mocks__", - "!**/.*" + "README.md" ], "scripts": { - "example": "yarn workspace react-native-nitro-avalabs-crypto-example", - "test": "jest", - "typecheck": "tsc", - "lint": "eslint \"**/*.{js,ts,tsx}\"", - "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib", - "prepare": "bob build", - "nitrogen": "nitrogen", - "release": "release-it --only-version", - "setup": "nitrogen" + "postinstall": "tsc || exit 0;", + "typecheck": "tsc --noEmit", + "clean": "rm -rf android/build node_modules/**/android/build lib", + "lint": "eslint \"**/*.{js,ts,tsx}\" --fix", + "lint-ci": "eslint \"**/*.{js,ts,tsx}\" -f @jamesacarr/github-actions", + "typescript": "tsc", + "specs": "tsc --noEmit false && nitrogen --logLevel=\"debug\"", + "setup": "npx nitrogen" }, "keywords": [ "react-native", - "ios", - "android" + "nitro" ], "repository": { "type": "git", - "url": "git+https://github.com/Szymon20000/react-native-nitro-avalabs-crypto.git" + "url": "git+https://github.com/mrousavy/nitro.git" }, - "author": "TurboSzymon (https://github.com/Szymon20000)", + "author": "Marc Rousavy (https://github.com/mrousavy)", "license": "MIT", "bugs": { - "url": "https://github.com/Szymon20000/react-native-nitro-avalabs-crypto/issues" + "url": "https://github.com/mrousavy/nitro/issues" }, - "homepage": "https://github.com/Szymon20000/react-native-nitro-avalabs-crypto#readme", + "homepage": "https://github.com/mrousavy/nitro#readme", "publishConfig": { "registry": "https://registry.npmjs.org/" }, "devDependencies": { - "@commitlint/config-conventional": "^19.8.1", - "@eslint/compat": "^1.3.2", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.35.0", - "@evilmartians/lefthook": "^1.12.3", - "@react-native/babel-preset": "0.81.1", - "@react-native/eslint-config": "^0.81.1", - "@release-it/conventional-changelog": "^10.0.1", - "@types/jest": "^29.5.14", - "@types/react": "^19.1.0", - "commitlint": "^19.8.1", - "del-cli": "^6.0.0", - "eslint": "^9.35.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "jest": "^29.7.0", - "nitrogen": "^0.30.2", - "prettier": "^3.6.2", - "react": "19.1.0", - "react-native": "0.79.5", - "react-native-builder-bob": "^0.40.13", - "react-native-nitro-modules": "^0.30.2", - "release-it": "^19.0.4", - "turbo": "^2.5.6", - "typescript": "^5.9.2" + "@react-native/babel-preset": "0.79.5", + "@react-native/eslint-config": "0.82.0", + "@types/react": "19.1.03", + "eslint": "8.57.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-prettier": "5.2.1", + "nitrogen": "*", + "prettier": "3.3.3", + "react": "19.1.1", + "react-native": "0.82.0", + "react-native-nitro-modules": "0.31.6", + "typescript": "^5.8.3" }, "peerDependencies": { "react": "*", "react-native": "*", - "react-native-nitro-modules": "^0.30.2" + "react-native-nitro-modules": "*" }, - "packageManager": "yarn@3.6.1", - "jest": { - "preset": "react-native", - "modulePathIgnorePatterns": [ - "/example/node_modules", - "/lib/" - ] - }, - "commitlint": { + "eslintConfig": { + "root": true, "extends": [ - "@commitlint/config-conventional" - ] - }, - "release-it": { - "git": { - "commitMessage": "chore: release ${version}", - "tagName": "v${version}" - }, - "npm": { - "publish": true - }, - "github": { - "release": true - }, - "plugins": { - "@release-it/conventional-changelog": { - "preset": { - "name": "angular" + "@react-native", + "prettier" + ], + "plugins": [ + "prettier" + ], + "rules": { + "prettier/prettier": [ + "warn", + { + "quoteProps": "consistent", + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false } - } + ] } }, + "eslintIgnore": [ + "node_modules/", + "lib/" + ], "prettier": { "quoteProps": "consistent", "singleQuote": true, "tabWidth": 2, "trailingComma": "es5", - "useTabs": false - }, - "react-native-builder-bob": { - "source": "src", - "output": "lib", - "targets": [ - [ - "custom", - { - "script": "nitrogen", - "clean": "nitrogen/" - } - ], - [ - "module", - { - "esm": true - } - ], - [ - "typescript", - { - "project": "tsconfig.build.json" - } - ] - ] - }, - "create-react-native-library": { - "languages": "kotlin-swift", - "type": "nitro-module", - "version": "0.54.6" + "useTabs": false, + "semi": false } } diff --git a/packages/react-native-nitro-avalabs-crypto/react-native.config.js b/packages/react-native-nitro-avalabs-crypto/react-native.config.js new file mode 100644 index 0000000000..3fdf8eaadc --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/react-native.config.js @@ -0,0 +1,16 @@ +// https://github.com/react-native-community/cli/blob/main/docs/dependencies.md + +module.exports = { + dependency: { + platforms: { + /** + * @type {import('@react-native-community/cli-types').IOSDependencyParams} + */ + ios: {}, + /** + * @type {import('@react-native-community/cli-types').AndroidDependencyParams} + */ + android: {}, + }, + }, +} diff --git a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts index 05dda5b357..1dca4ca8ed 100644 --- a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts +++ b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts @@ -1,72 +1,79 @@ -import { NitroModules } from 'react-native-nitro-modules'; -import type { Crypto } from './specs/Crypto.nitro'; +import { NitroModules } from 'react-native-nitro-modules' +import type { Crypto } from './specs/Crypto.nitro' -const con = console; +const con = console // Native hybrid object -const NativeCrypto = NitroModules.createHybridObject('Crypto'); +const NativeCrypto = NitroModules.createHybridObject('Crypto') /** Strip 0x, validate, and normalize hex to even length (left-pad with one '0' if needed). */ function normalizeHex(hex: string): string { - let h = hex.startsWith('0x') || hex.startsWith('0X') ? hex.slice(2) : hex; - if (!/^[0-9a-fA-F]*$/.test(h)) throw new TypeError('Invalid hex string'); - if (h.length % 2) h = '0' + h; - return h.toLowerCase(); + let h = hex.startsWith('0x') || hex.startsWith('0X') ? hex.slice(2) : hex + if (!/^[0-9a-fA-F]*$/.test(h)) throw new TypeError('Invalid hex string') + if (h.length % 2) h = '0' + h + return h.toLowerCase() } /** Convert hex string to a fresh ArrayBuffer. */ function hexToArrayBuffer(hex: string): ArrayBuffer { - const h = normalizeHex(hex); - const len = h.length / 2; - const out = new Uint8Array(len); + const h = normalizeHex(hex) + const len = h.length / 2 + const out = new Uint8Array(len) for (let i = 0; i < len; i++) { - out[i] = parseInt(h.slice(i * 2, i * 2 + 2), 16); + out[i] = parseInt(h.slice(i * 2, i * 2 + 2), 16) } - return out.buffer; + return out.buffer } /** Convert a Uint8Array or ArrayBuffer to a tight ArrayBuffer view. */ -function toArrayBuffer(input: Uint8Array | ArrayBuffer): ArrayBuffer { - if (input instanceof ArrayBuffer) return input; +function toArrayBuffer( + input: Uint8Array | ArrayBuffer +): ArrayBuffer | SharedArrayBuffer { + if (input instanceof ArrayBuffer) return input // Make a tight copy that respects byteOffset/byteLength - return input.buffer.slice(input.byteOffset, input.byteOffset + input.byteLength); + return input.buffer.slice( + input.byteOffset, + input.byteOffset + input.byteLength + ) } /** Accepts string (hex), ArrayBuffer, or Uint8Array and returns ArrayBuffer */ -function hexLikeToArrayBuffer(input: string | ArrayBuffer | Uint8Array): ArrayBuffer { - if (typeof input === 'string') return hexToArrayBuffer(input); - if (input instanceof ArrayBuffer) return input; - if (input instanceof Uint8Array) return toArrayBuffer(input); - throw new TypeError('Expected hex string, ArrayBuffer, or Uint8Array'); +function hexLikeToArrayBuffer( + input: string | ArrayBuffer | Uint8Array +): ArrayBuffer | SharedArrayBuffer { + if (typeof input === 'string') return hexToArrayBuffer(input) + if (input instanceof ArrayBuffer) return input + if (input instanceof Uint8Array) return toArrayBuffer(input) + throw new TypeError('Expected hex string, ArrayBuffer, or Uint8Array') } /** Ensure a 32-byte buffer */ function ensure32(name: string, ab: ArrayBuffer): ArrayBuffer { - if (ab.byteLength !== 32) throw new TypeError(`${name} must be 32 bytes`); - return ab; + if (ab.byteLength !== 32) throw new TypeError(`${name} must be 32 bytes`) + return ab } /** bigint → 32-byte ArrayBuffer (left-padded). Throws if it doesn't fit. */ function bigintToArrayBuffer32(n: bigint): ArrayBuffer { - if (n < 0n) throw new TypeError('Secret key must be non-negative'); - const out = new Uint8Array(32); - let i = 31; - let v = n; + if (n < 0n) throw new TypeError('Secret key must be non-negative') + const out = new Uint8Array(32) + let i = 31 + let v = n while (v > 0n) { - if (i < 0) throw new RangeError('bigint does not fit into 32 bytes'); - out[i] = Number(v & 0xffn); - v >>= 8n; - i--; + if (i < 0) throw new RangeError('bigint does not fit into 32 bytes') + out[i] = Number(v & 0xffn) + v >>= 8n + i-- } - return out.buffer; + return out.buffer } /** bigint → 64-char hex string (left-padded). Throws if it doesn't fit. */ function bigintToHex64(n: bigint): string { - if (n < 0n) throw new TypeError('Secret key must be non-negative'); - let hex = n.toString(16); - if (hex.length > 64) throw new RangeError('bigint does not fit into 32 bytes'); - return hex.padStart(64, '0').toLowerCase(); + if (n < 0n) throw new TypeError('Secret key must be non-negative') + let hex = n.toString(16) + if (hex.length > 64) throw new RangeError('bigint does not fit into 32 bytes') + return hex.padStart(64, '0').toLowerCase() } /** @@ -77,60 +84,78 @@ export function getPublicKey( secretKey: Uint8Array | ArrayBuffer | string | bigint, isCompressed = true ): Uint8Array { - con.log('[Crypto] getPublicKey called with', typeof secretKey, isCompressed); - let ab: ArrayBuffer | undefined; - let hex: string | undefined; + con.log('[Crypto] getPublicKey called with', typeof secretKey, isCompressed) + let ab: ArrayBuffer | undefined + let hex: string | undefined if (typeof secretKey === 'bigint') { - con.log('[Crypto] Secret is bigint'); + con.log('[Crypto] Secret is bigint') // Prefer zero-copy native path via ArrayBuffer - ab = bigintToArrayBuffer32(secretKey); + ab = bigintToArrayBuffer32(secretKey) // hex fallback available if needed: hex = bigintToHex64(secretKey); } else if (typeof secretKey === 'string') { - con.log('[Crypto] Secret is string', secretKey.slice(0, 10) + '...'); - hex = normalizeHex(secretKey); + con.log('[Crypto] Secret is string', secretKey.slice(0, 10) + '...') + hex = normalizeHex(secretKey) } else { - con.log('[Crypto] Secret is buffer-like', secretKey instanceof Uint8Array, secretKey instanceof ArrayBuffer); - ab = toArrayBuffer(secretKey); + con.log( + '[Crypto] Secret is buffer-like', + secretKey instanceof Uint8Array, + secretKey instanceof ArrayBuffer + ) + ab = toArrayBuffer(secretKey) } - let outBuf: ArrayBuffer; + let outBuf: ArrayBuffer if (ab && typeof NativeCrypto.getPublicKeyFromArrayBuffer === 'function') { - con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromArrayBuffer'); - outBuf = NativeCrypto.getPublicKeyFromArrayBuffer(ab, isCompressed); + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromArrayBuffer') + outBuf = NativeCrypto.getPublicKeyFromArrayBuffer(ab, isCompressed) } else if (hex && typeof NativeCrypto.getPublicKeyFromString === 'function') { - con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromString'); + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromString') // Native returns ArrayBuffer already — no conversion needed - outBuf = NativeCrypto.getPublicKeyFromString(hex, isCompressed); - } else if (hex && typeof NativeCrypto.getPublicKeyFromArrayBuffer === 'function') { - con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromArrayBuffer'); - outBuf = NativeCrypto.getPublicKeyFromArrayBuffer(hexToArrayBuffer(hex), isCompressed); + outBuf = NativeCrypto.getPublicKeyFromString(hex, isCompressed) + } else if ( + hex && + typeof NativeCrypto.getPublicKeyFromArrayBuffer === 'function' + ) { + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromArrayBuffer') + outBuf = NativeCrypto.getPublicKeyFromArrayBuffer( + hexToArrayBuffer(hex), + isCompressed + ) } else if (ab && typeof NativeCrypto.getPublicKeyFromString === 'function') { - con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromString'); + con.log('[Crypto] Calling NativeCrypto.getPublicKeyFromString') // fallback: convert buffer to hex and use string method; native returns ArrayBuffer - const bytes = new Uint8Array(ab); - let h = ''; - for (let i = 0; i < bytes.length; i++) h += bytes[i].toString(16).padStart(2, '0'); - outBuf = NativeCrypto.getPublicKeyFromString(h, isCompressed); + const bytes = new Uint8Array(ab) + let h = '' + for (let i = 0; i < bytes.length; i++) + h += bytes[i]?.toString(16).padStart(2, '0') + outBuf = NativeCrypto.getPublicKeyFromString(h, isCompressed) } else { - throw new Error('Native Crypto hybrid does not expose the expected methods.'); + throw new Error( + 'Native Crypto hybrid does not expose the expected methods.' + ) } - con.log('[Crypto] Native call succeeded, result byteLength:', outBuf?.byteLength); - con.log('[Crypto] Returning Uint8Array with length', outBuf?.byteLength); + con.log( + '[Crypto] Native call succeeded, result byteLength:', + outBuf?.byteLength + ) + con.log('[Crypto] Returning Uint8Array with length', outBuf?.byteLength) try { - const res = new Uint8Array(outBuf); - con.log('[Crypto] getPublicKey completed'); - return res; + const res = new Uint8Array(outBuf) + con.log('[Crypto] getPublicKey completed') + return res } catch (error) { - con.error('[Crypto] getPublicKey failed', error); - throw error; + con.error('[Crypto] getPublicKey failed', error) + throw error } } // Optionally re-export the native methods (typed) if you want direct access: -export const getPublicKeyFromArrayBuffer = NativeCrypto.getPublicKeyFromArrayBuffer.bind(NativeCrypto); -export const getPublicKeyFromString = NativeCrypto.getPublicKeyFromString.bind(NativeCrypto); +export const getPublicKeyFromArrayBuffer = + NativeCrypto.getPublicKeyFromArrayBuffer.bind(NativeCrypto) +export const getPublicKeyFromString = + NativeCrypto.getPublicKeyFromString.bind(NativeCrypto) /** Add scalar*G to existing public key (P + t*G). Returns Uint8Array. */ export function pointAddScalar( @@ -138,110 +163,116 @@ export function pointAddScalar( tweak: string | ArrayBuffer | Uint8Array, isCompressed = true ): Uint8Array { - con.log('[Crypto] pointAddScalar called'); - const pkAB = hexLikeToArrayBuffer(publicKey as any); - const twAB = hexLikeToArrayBuffer(tweak as any); - const out = NativeCrypto.pointAddScalar(pkAB, twAB, isCompressed); - return new Uint8Array(out); + con.log('[Crypto] pointAddScalar called') + const pkAB = hexLikeToArrayBuffer(publicKey as unknown as string) + const twAB = hexLikeToArrayBuffer(tweak as unknown as string) + const out = NativeCrypto.pointAddScalar(pkAB, twAB, isCompressed) + return new Uint8Array(out) } /** ECDSA sign. Message must be a 32-byte digest. Returns DER signature bytes. */ function isDerSignature(u8: Uint8Array): boolean { - return u8.length >= 8 && u8[0] === 0x30; + return u8.length >= 8 && u8[0] === 0x30 } /** Convert 32-byte big-endian integer to minimal DER INTEGER (with zero prefix if high bit set). */ function be32ToDerInt(src: Uint8Array): Uint8Array { // Strip leading zeros - let i = 0; - while (i < src.length - 1 && src[i] === 0) i++; - let v = src.subarray(i); + let i = 0 + while (i < src.length - 1 && src[i] === 0) i++ + let v = src.subarray(i) // If high bit set, prepend 0x00 to force positive if (v[0] & 0x80) { - const out = new Uint8Array(v.length + 1); - out[0] = 0x00; - out.set(v, 1); - return out; + const out = new Uint8Array(v.length + 1) + out[0] = 0x00 + out.set(v, 1) + return out } - return v; + return v } /** Convert a 64-byte compact ECDSA signature (r||s) to DER sequence. */ function compact64ToDer(sig64: Uint8Array): Uint8Array { - if (sig64.length !== 64) throw new TypeError('compact ECDSA signature must be 64 bytes'); - const r = sig64.subarray(0, 32); - const s = sig64.subarray(32, 64); - const rDer = be32ToDerInt(r); - const sDer = be32ToDerInt(s); - const len = 2 + rDer.length + 2 + sDer.length; // 0x02 rLen r 0x02 sLen s - const out = new Uint8Array(2 + 2 + rDer.length + 2 + sDer.length); - let p = 0; - out[p++] = 0x30; // SEQUENCE - out[p++] = len; - out[p++] = 0x02; // INTEGER - out[p++] = rDer.length; - out.set(rDer, p); p += rDer.length; - out[p++] = 0x02; // INTEGER - out[p++] = sDer.length; - out.set(sDer, p); - return out; + if (sig64.length !== 64) + throw new TypeError('compact ECDSA signature must be 64 bytes') + const r = sig64.subarray(0, 32) + const s = sig64.subarray(32, 64) + const rDer = be32ToDerInt(r) + const sDer = be32ToDerInt(s) + const len = 2 + rDer.length + 2 + sDer.length // 0x02 rLen r 0x02 sLen s + const out = new Uint8Array(2 + 2 + rDer.length + 2 + sDer.length) + let p = 0 + out[p++] = 0x30 // SEQUENCE + out[p++] = len + out[p++] = 0x02 // INTEGER + out[p++] = rDer.length + out.set(rDer, p) + p += rDer.length + out[p++] = 0x02 // INTEGER + out[p++] = sDer.length + out.set(sDer, p) + return out } export function sign( secretKey: string | ArrayBuffer | Uint8Array, message: string | ArrayBuffer | Uint8Array ): Uint8Array { - con.log('[Crypto] sign called'); - const skAB = hexLikeToArrayBuffer(secretKey as any); - const msgAB = hexLikeToArrayBuffer(message as any); - if (msgAB.byteLength !== 32) throw new TypeError('ECDSA message must be 32 bytes'); - const out = NativeCrypto.sign(skAB, msgAB); - let sig = new Uint8Array(out); + con.log('[Crypto] sign called') + const skAB = hexLikeToArrayBuffer(secretKey as any) + const msgAB = hexLikeToArrayBuffer(message as any) + if (msgAB.byteLength !== 32) + throw new TypeError('ECDSA message must be 32 bytes') + const out = NativeCrypto.sign(skAB, msgAB) + let sig = new Uint8Array(out) // Normalize to compact(64) – many JS libs expect r||s if (isDerSignature(sig)) { - con.log('[Crypto] sign: converting DER signature to compact(64)'); - sig = derToCompact64(sig); + con.log('[Crypto] sign: converting DER signature to compact(64)') + sig = derToCompact64(sig) } else if (sig.length !== 64) { - throw new TypeError(`ECDSA signature has unexpected length: ${sig.length}`); + throw new TypeError(`ECDSA signature has unexpected length: ${sig.length}`) } - return sig; + return sig } /** Parse minimal ASN.1 DER ECDSA signature and return {r,s} raw big-endian bytes (unpadded). */ function parseDerEcdsa(sig: Uint8Array): { r: Uint8Array; s: Uint8Array } { - if (sig.length < 8 || sig[0] !== 0x30) throw new TypeError('Invalid DER: no SEQ'); - let p = 1; - let len = sig[p++]; + if (sig.length < 8 || sig[0] !== 0x30) + throw new TypeError('Invalid DER: no SEQ') + let p = 1 + let len = sig[p++] if (len & 0x80) { - const n = len & 0x7f; - if (n === 0 || n > 2) throw new TypeError('Invalid DER: long len too big'); - if (p + n > sig.length) throw new TypeError('Invalid DER: length overflow'); - len = 0; - for (let i = 0; i < n; i++) len = (len << 8) | sig[p++]; + const n = len & 0x7f + if (n === 0 || n > 2) throw new TypeError('Invalid DER: long len too big') + if (p + n > sig.length) throw new TypeError('Invalid DER: length overflow') + len = 0 + for (let i = 0; i < n; i++) len = (len << 8) | sig[p++] } - if (p + len !== sig.length) throw new TypeError('Invalid DER: len mismatch'); - if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing r INTEGER'); - let rLen = sig[p++]; - if (p + rLen > sig.length) throw new TypeError('Invalid DER: r overflow'); - let r = sig.subarray(p, p + rLen); p += rLen; - if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing s INTEGER'); - let sLen = sig[p++]; - if (p + sLen > sig.length) throw new TypeError('Invalid DER: s overflow'); - let s = sig.subarray(p, p + sLen); + if (p + len !== sig.length) throw new TypeError('Invalid DER: len mismatch') + if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing r INTEGER') + let rLen = sig[p++] + if (p + rLen > sig.length) throw new TypeError('Invalid DER: r overflow') + let r = sig.subarray(p, p + rLen) + p += rLen + if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing s INTEGER') + let sLen = sig[p++] + if (p + sLen > sig.length) throw new TypeError('Invalid DER: s overflow') + let s = sig.subarray(p, p + sLen) // Strip an optional leading 0x00 that enforces positive INTEGER - if (r.length > 0 && r[0] === 0x00) r = r.subarray(1); - if (s.length > 0 && s[0] === 0x00) s = s.subarray(1); - return { r, s }; + if (r.length > 0 && r[0] === 0x00) r = r.subarray(1) + if (s.length > 0 && s[0] === 0x00) s = s.subarray(1) + return { r, s } } /** Convert DER ECDSA signature to compact 64-byte (r||s). */ function derToCompact64(sigDer: Uint8Array): Uint8Array { - const { r, s } = parseDerEcdsa(sigDer); - if (r.length > 32 || s.length > 32) throw new TypeError('Invalid DER: r/s too long'); - const out = new Uint8Array(64); - out.set(r, 32 - r.length); - out.set(s, 64 - s.length); - return out; + const { r, s } = parseDerEcdsa(sigDer) + if (r.length > 32 || s.length > 32) + throw new TypeError('Invalid DER: r/s too long') + const out = new Uint8Array(64) + out.set(r, 32 - r.length) + out.set(s, 64 - s.length) + return out } /** ECDSA verify. Message must be a 32-byte digest. Accepts DER or compact(64B) signature. */ @@ -252,55 +283,68 @@ export function verify( message: string | ArrayBuffer | Uint8Array, signature: string | ArrayBuffer | Uint8Array ): boolean { - con.log('[Crypto] verify called'); - const pkAB = hexLikeToArrayBuffer(publicKey as any); - const msgAB = hexLikeToArrayBuffer(message as any); - const sigAB0 = hexLikeToArrayBuffer(signature as any); - if (msgAB.byteLength !== 32) throw new TypeError('ECDSA message must be 32 bytes'); + con.log('[Crypto] verify called') + const pkAB = hexLikeToArrayBuffer(publicKey as any) + const msgAB = hexLikeToArrayBuffer(message as any) + const sigAB0 = hexLikeToArrayBuffer(signature as any) + if (msgAB.byteLength !== 32) + throw new TypeError('ECDSA message must be 32 bytes') // Normalize signature to DER if it is compact-64 - let sigU8 = new Uint8Array(sigAB0); + let sigU8 = new Uint8Array(sigAB0) if (!isDerSignature(sigU8)) { if (sigU8.length === 64) { - con.log('[Crypto] verify: converting compact(64) signature to DER'); - sigU8 = compact64ToDer(sigU8); + con.log('[Crypto] verify: converting compact(64) signature to DER') + sigU8 = compact64ToDer(sigU8) } else { - con.log('[Crypto] verify: non-DER signature with unexpected length', sigU8.length); + con.log( + '[Crypto] verify: non-DER signature with unexpected length', + sigU8.length + ) } } - return NativeCrypto.verify(pkAB, msgAB, sigU8.buffer); + return NativeCrypto.verify(pkAB, msgAB, sigU8.buffer) } /** Schnorr sign (BIP-340). messageHash must be 32 bytes. Returns 64-byte signature. */ /** Schnorr sign (BIP-340). messageHash must be 32 bytes. Returns 64-byte signature. */ export function signSchnorr( messageHash: string | ArrayBuffer | Uint8Array, - secretKey: string | ArrayBuffer | Uint8Array, - auxRand?: string | ArrayBuffer | Uint8Array + secretKey: string | ArrayBuffer | Uint8Array, + auxRand?: string | ArrayBuffer | Uint8Array ): Uint8Array { con.log('[Crypto] signSchnorr called (msg, sk, aux). args=', { msgType: typeof messageHash, skType: typeof secretKey, hasAux: auxRand !== undefined, - }); + }) - const msgAB = ensure32('Schnorr messageHash', hexLikeToArrayBuffer(messageHash as any)); - const skAB = ensure32('Schnorr secretKey', hexLikeToArrayBuffer(secretKey as any)); + const msgAB = ensure32( + 'Schnorr messageHash', + hexLikeToArrayBuffer(messageHash as any) + ) + const skAB = ensure32( + 'Schnorr secretKey', + hexLikeToArrayBuffer(secretKey as any) + ) - let auxAB: ArrayBuffer; + let auxAB: ArrayBuffer if (auxRand === undefined) { - con.log('[Crypto] signSchnorr: using zero-filled auxRand'); - auxAB = new Uint8Array(32).buffer; + con.log('[Crypto] signSchnorr: using zero-filled auxRand') + auxAB = new Uint8Array(32).buffer } else { - auxAB = ensure32('Schnorr auxRand', hexLikeToArrayBuffer(auxRand as any)); - con.log('[Crypto] signSchnorr: auxRand provided, byteLength=', (auxAB as ArrayBuffer).byteLength); + auxAB = ensure32('Schnorr auxRand', hexLikeToArrayBuffer(auxRand as any)) + con.log( + '[Crypto] signSchnorr: auxRand provided, byteLength=', + (auxAB as ArrayBuffer).byteLength + ) } // Native expects (secretKey, messageHash, auxRand) - const out = NativeCrypto.signSchnorr(skAB, msgAB, auxAB); - const sig = new Uint8Array(out); - con.log('[Crypto] signSchnorr: native returned', sig.length, 'bytes'); - return sig; + const out = NativeCrypto.signSchnorr(skAB, msgAB, auxAB) + const sig = new Uint8Array(out) + con.log('[Crypto] signSchnorr: native returned', sig.length, 'bytes') + return sig } /** Schnorr verify (BIP-340). messageHash must be 32 bytes. Signature must be 64 bytes. */ export function verifySchnorr( @@ -308,11 +352,13 @@ export function verifySchnorr( messageHash: string | ArrayBuffer | Uint8Array, signature: string | ArrayBuffer | Uint8Array ): boolean { - con.log('[Crypto] verifySchnorr called'); - const pkAB = hexLikeToArrayBuffer(publicKey as any); - const msgAB = hexLikeToArrayBuffer(messageHash as any); - const sigAB = hexLikeToArrayBuffer(signature as any); - if (msgAB.byteLength !== 32) throw new TypeError('Schnorr messageHash must be 32 bytes'); - if (sigAB.byteLength !== 64) throw new TypeError('Schnorr signature must be 64 bytes'); - return NativeCrypto.verifySchnorr(pkAB, msgAB, sigAB); -} \ No newline at end of file + con.log('[Crypto] verifySchnorr called') + const pkAB = hexLikeToArrayBuffer(publicKey as any) + const msgAB = hexLikeToArrayBuffer(messageHash as any) + const sigAB = hexLikeToArrayBuffer(signature as any) + if (msgAB.byteLength !== 32) + throw new TypeError('Schnorr messageHash must be 32 bytes') + if (sigAB.byteLength !== 64) + throw new TypeError('Schnorr signature must be 64 bytes') + return NativeCrypto.verifySchnorr(pkAB, msgAB, sigAB) +} diff --git a/packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx b/packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx deleted file mode 100644 index bf84291a5e..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/src/__tests__/index.test.tsx +++ /dev/null @@ -1 +0,0 @@ -it.todo('write a test'); diff --git a/packages/react-native-nitro-avalabs-crypto/src/index.ts b/packages/react-native-nitro-avalabs-crypto/src/index.ts new file mode 100644 index 0000000000..9d864a6ee5 --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/src/index.ts @@ -0,0 +1 @@ +// TODO: Export all HybridObjects here for the user diff --git a/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts b/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts index 3400729eea..eb4465b75c 100644 --- a/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts +++ b/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts @@ -1,13 +1,15 @@ -// /Users/szymonkapala/work/avalabs/core-mobile/packages/react-native-nitro-avalabs-crypto/src/specs/Crypto.nitro.ts -import type { HybridObject } from 'react-native-nitro-modules'; +import type { HybridObject } from 'react-native-nitro-modules' // Use ArrayBuffer in specs (Nitro’s zero-copy binary type) -export type HexLike = string | ArrayBuffer; +export type HexLike = string | ArrayBuffer -export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { +export interface Crypto extends HybridObject<{ ios: 'c++'; android: 'c++' }> { // existing methods - getPublicKeyFromString(secretKey: string, isCompressed?: boolean): ArrayBuffer; - getPublicKeyFromArrayBuffer(secretKey: ArrayBuffer, isCompressed?: boolean): ArrayBuffer; + getPublicKeyFromString(secretKey: string, isCompressed?: boolean): ArrayBuffer + getPublicKeyFromArrayBuffer( + secretKey: ArrayBuffer, + isCompressed?: boolean + ): ArrayBuffer // NEW additions: /** @@ -17,7 +19,11 @@ export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { * @param isCompressed optional boolean * @returns ArrayBuffer for resulting public key */ - pointAddScalar(publicKey: HexLike, tweak: HexLike, isCompressed?: boolean): ArrayBuffer; + pointAddScalar( + publicKey: HexLike, + tweak: HexLike, + isCompressed?: boolean + ): ArrayBuffer /** * Generic sign (e.g., ECDSA) using secret key. @@ -25,7 +31,7 @@ export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { * @param message Hex string or ArrayBuffer * @returns ArrayBuffer representing signature */ - sign(secretKey: HexLike, message: HexLike): ArrayBuffer; + sign(secretKey: HexLike, message: HexLike): ArrayBuffer /** * Generic verify (e.g., ECDSA) using public key. @@ -34,7 +40,7 @@ export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { * @param signature Hex string or ArrayBuffer * @returns boolean */ - verify(publicKey: HexLike, message: HexLike, signature: HexLike): boolean; + verify(publicKey: HexLike, message: HexLike, signature: HexLike): boolean /** * Schnorr sign using secret key. @@ -42,7 +48,11 @@ export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { * @param message Hash Hex string or ArrayBuffer (32 bytes) * @returns ArrayBuffer for Schnorr signature */ - signSchnorr(secretKey: HexLike, messageHash: HexLike, auxRand: HexLike): ArrayBuffer; + signSchnorr( + secretKey: HexLike, + messageHash: HexLike, + auxRand: HexLike + ): ArrayBuffer /** * Schnorr verify using public key. @@ -51,5 +61,9 @@ export interface Crypto extends HybridObject<{ ios: 'c++', android: 'c++' }> { * @param signature Hex string or ArrayBuffer * @returns boolean */ - verifySchnorr(publicKey: HexLike, messageHash: HexLike, signature: HexLike): boolean; -} \ No newline at end of file + verifySchnorr( + publicKey: HexLike, + messageHash: HexLike, + signature: HexLike + ): boolean +} diff --git a/packages/react-native-nitro-avalabs-crypto/tsconfig.build.json b/packages/react-native-nitro-avalabs-crypto/tsconfig.build.json deleted file mode 100644 index 3c0636adf2..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig", - "exclude": ["example", "lib"] -} diff --git a/packages/react-native-nitro-avalabs-crypto/tsconfig.json b/packages/react-native-nitro-avalabs-crypto/tsconfig.json index 0178044002..d041602323 100644 --- a/packages/react-native-nitro-avalabs-crypto/tsconfig.json +++ b/packages/react-native-nitro-avalabs-crypto/tsconfig.json @@ -1,19 +1,20 @@ { + "include": [ + "src" + ], "compilerOptions": { - "rootDir": ".", - "paths": { - "react-native-nitro-avalabs-crypto": ["./src/index"] - }, + "composite": true, + "outDir": "lib", + "rootDir": "src", "allowUnreachableCode": false, "allowUnusedLabels": false, - "customConditions": ["react-native-strict-api"], "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "jsx": "react-jsx", - "lib": ["ESNext"], - "module": "ESNext", - "moduleResolution": "bundler", - "noEmit": true, + "jsx": "react", + "lib": ["esnext"], + "module": "esnext", + "moduleResolution": "node", + "noEmit": false, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, "noImplicitUseStrict": false, @@ -24,7 +25,7 @@ "resolveJsonModule": true, "skipLibCheck": true, "strict": true, - "target": "ESNext", + "target": "esnext", "verbatimModuleSyntax": true } } diff --git a/packages/react-native-nitro-avalabs-crypto/turbo.json b/packages/react-native-nitro-avalabs-crypto/turbo.json deleted file mode 100644 index c4d78c4961..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/turbo.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "globalDependencies": [".nvmrc", ".yarnrc.yml"], - "globalEnv": ["NODE_ENV"], - "tasks": { - "build:android": { - "env": ["ANDROID_HOME", "ORG_GRADLE_PROJECT_newArchEnabled"], - "inputs": [ - "package.json", - "android", - "!android/build", - "src/*.ts", - "src/*.tsx", - "example/package.json", - "example/android", - "!example/android/.gradle", - "!example/android/build", - "!example/android/app/build" - ], - "outputs": [] - }, - "build:ios": { - "env": [ - "RCT_NEW_ARCH_ENABLED", - "RCT_USE_RN_DEP", - "RCT_USE_PREBUILT_RNCORE" - ], - "inputs": [ - "package.json", - "*.podspec", - "ios", - "src/*.ts", - "src/*.tsx", - "example/package.json", - "example/ios", - "!example/ios/build", - "!example/ios/Pods" - ], - "outputs": [] - } - } -} diff --git a/yarn.lock b/yarn.lock index 08696ca5cf..2f680a6a2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -225,34 +225,9 @@ __metadata: languageName: node linkType: hard -"@ark/regex@npm:0.0.0": - version: 0.0.0 - resolution: "@ark/regex@npm:0.0.0" - dependencies: - "@ark/util": 0.50.0 - checksum: b89d50a610393a4025a0e2cb4444c16c4f2fb16708ee6e4afe36160ee3503c3a7a5df8a7477bbf4b75099509329fc62f388f64819002d2f93642b2188618b5e5 - languageName: node - linkType: hard - -"@ark/schema@npm:0.50.0": - version: 0.50.0 - resolution: "@ark/schema@npm:0.50.0" - dependencies: - "@ark/util": 0.50.0 - checksum: 6a080104865ec4a0be91d6bffab95f69923f4a85b6087f67cf04555b30b65544084eeebbfa4cf9759ec27b964b0fc4dc7e19603b055b472a096463f13c084343 - languageName: node - linkType: hard - -"@ark/util@npm:0.50.0": - version: 0.50.0 - resolution: "@ark/util@npm:0.50.0" - checksum: 50aa1d506bbf70ef502f0f424370ab831fcb891f5a71fdec51c46d06c504eab751ccfa2920bbeae7c97d22bcfc71c755a29121489984eacf052040c61c696fc9 - languageName: node - linkType: hard - -"@avalabs/avalanche-module@npm:1.10.2": - version: 1.10.2 - resolution: "@avalabs/avalanche-module@npm:1.10.2" +"@avalabs/avalanche-module@npm:1.11.0": + version: 1.11.0 + resolution: "@avalabs/avalanche-module@npm:1.11.0" dependencies: "@avalabs/avalanchejs": 5.1.0-alpha.2 "@avalabs/core-chains-sdk": 3.1.0-alpha.61 @@ -262,12 +237,12 @@ __metadata: "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 "@avalabs/glacier-sdk": 3.1.0-alpha.61 "@avalabs/types": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.10.2 + "@avalabs/vm-module-types": 1.11.0 "@metamask/rpc-errors": 6.3.0 big.js: 6.2.1 bn.js: 5.2.1 zod: 3.23.8 - checksum: c2e078c1abbb7e51c402e30f14ccf2ccd4d8289b550a85ff1fbb94a71c071f1f20347cac1e0f6cc0363c8bd924ad0a27c5140d57f15a9e6e56fdc2cce0e15dee + checksum: d401fb16a61dfb099fa36a01887baa1d2026edec22f35c363e9ebe2d384a8a085d47d0e0aa5bfcd92e4503417d24399053294bf82a92cf3004f067183645a67c languageName: node linkType: hard @@ -284,26 +259,26 @@ __metadata: languageName: node linkType: hard -"@avalabs/bitcoin-module@npm:1.10.2": - version: 1.10.2 - resolution: "@avalabs/bitcoin-module@npm:1.10.2" +"@avalabs/bitcoin-module@npm:1.11.0": + version: 1.11.0 + resolution: "@avalabs/bitcoin-module@npm:1.11.0" dependencies: "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 "@avalabs/core-utils-sdk": 3.1.0-alpha.61 "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.10.2 + "@avalabs/vm-module-types": 1.11.0 "@metamask/rpc-errors": 6.3.0 big.js: 6.2.1 bitcoinjs-lib: 5.2.0 bn.js: 5.2.1 zod: 3.23.8 - checksum: 8a15403bc82e20f258718f50329c3dc3ac7e466ade3346d14edecc9ef118f2b8a4dd42cb46bbd7066f440bd055e3930aa386c07c9829da8755df5f944584791f + checksum: b926cad8665c9b24578ba665078c42f11466f7721b1b5be40e7936ad17a501b16b2ae05f313497da5cb7abf1be1aebf575bdceb4d2eb5265f7af1428982a1864 languageName: node linkType: hard -"@avalabs/bridge-unified@npm:4.0.3": - version: 4.0.3 - resolution: "@avalabs/bridge-unified@npm:4.0.3" +"@avalabs/bridge-unified@npm:4.3.0": + version: 4.3.0 + resolution: "@avalabs/bridge-unified@npm:4.3.0" dependencies: "@noble/hashes": 1.5.0 "@scure/base": 1.1.9 @@ -313,7 +288,7 @@ __metadata: lodash: 4.17.21 viem: 2.11.1 zod: 3.23.8 - checksum: 72fdd9ba42e46ec4fe20d4ce19401c6f399b10060f0cdeb2040650afbeebb901868d78a22915aad3ba499608fbfe951d8e5515969e52d352e706ed2fdd3e0a21 + checksum: d0a532a9339f7506ad08ce8011dd950252eadc819e3c1f42aa00374f1bf1b42152b192e58f3ee2b89e81dd7d9f3a3a289a7d8de00361bd5c5d422d6d8d8519f6 languageName: node linkType: hard @@ -375,23 +350,23 @@ __metadata: version: 0.0.0-use.local resolution: "@avalabs/core-mobile@workspace:packages/core-mobile" dependencies: - "@avalabs/avalanche-module": 1.10.2 + "@avalabs/avalanche-module": 1.11.0 "@avalabs/avalanchejs": 5.1.0-alpha.2 - "@avalabs/bitcoin-module": 1.10.2 - "@avalabs/bridge-unified": 4.0.3 + "@avalabs/bitcoin-module": 1.11.0 + "@avalabs/bridge-unified": 4.3.0 "@avalabs/core-bridge-sdk": 3.1.0-alpha.61 "@avalabs/core-chains-sdk": 3.1.0-alpha.61 "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 "@avalabs/core-gasless-sdk": 3.1.0-alpha.61 "@avalabs/core-utils-sdk": 3.1.0-alpha.61 "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 - "@avalabs/evm-module": 1.10.2 + "@avalabs/evm-module": 1.11.0 "@avalabs/glacier-sdk": 3.1.0-alpha.58 "@avalabs/k2-alpine": "workspace:*" - "@avalabs/svm-module": 1.10.2 + "@avalabs/svm-module": 1.11.0 "@avalabs/tsconfig-mobile": "workspace:*" "@avalabs/types": 3.1.0-alpha.58 - "@avalabs/vm-module-types": 1.10.2 + "@avalabs/vm-module-types": 1.11.0 "@babel/core": 7.28.0 "@babel/plugin-proposal-nullish-coalescing-operator": 7.18.6 "@babel/plugin-syntax-object-rest-spread": 7.8.3 @@ -518,7 +493,7 @@ __metadata: appium-uiautomator2-driver: 5.0.3 appium-xcuitest-driver: 10.1.2 assert: 2.1.0 - axios: 1.12.1 + axios: 1.12.2 babel-jest: 30.1.2 babel-loader: 9.2.1 babel-plugin-inline-dotenv: 1.7.0 @@ -574,7 +549,6 @@ __metadata: lodash.merge: 4.6.2 lottie-react-native: 7.2.2 lru-cache: 11.0.2 - metro-symbolicate: ^0.83.3 mocha: 11.7.2 moment: 2.30.1 msw: 1.3.2 @@ -621,10 +595,11 @@ __metadata: react-native-mmkv: 3.2.0 react-native-modal-datetime-picker: 18.0.0 react-native-nitro-avalabs-crypto: "workspace:*" - react-native-nitro-modules: ^0.30.2 + react-native-nitro-modules: 0.31.6 react-native-os: 1.2.6 react-native-pager-view: 6.7.1 react-native-passkey: 3.1.0 + react-native-performance: 5.1.2 react-native-permissions: 4.1.5 react-native-popable: 0.4.3 react-native-popover-view: 6.1.0 @@ -748,9 +723,9 @@ __metadata: languageName: node linkType: hard -"@avalabs/evm-module@npm:1.10.2": - version: 1.10.2 - resolution: "@avalabs/evm-module@npm:1.10.2" +"@avalabs/evm-module@npm:1.11.0": + version: 1.11.0 + resolution: "@avalabs/evm-module@npm:1.11.0" dependencies: "@avalabs/core-chains-sdk": 3.1.0-alpha.61 "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 @@ -759,7 +734,7 @@ __metadata: "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 "@avalabs/glacier-sdk": 3.1.0-alpha.61 "@avalabs/types": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.10.2 + "@avalabs/vm-module-types": 1.11.0 "@blockaid/client": 0.48.0 "@metamask/rpc-errors": 6.3.0 "@openzeppelin/contracts": 4.9.6 @@ -769,7 +744,7 @@ __metadata: zod: 3.23.8 peerDependencies: ethers: 6.13.5 - checksum: 644d947e2bb27d68f184d50c3e9bd5f7652a9e9d95b4f4df578948188cd58c94e7836411933ccc4227fa0a6968d7dff83d1f4e3f560788ff0253a9a18bb89b1c + checksum: 34e4a2e838f35bbe8a669c7529df366da3b279aa2bc69543ae97136af3e146883841944735d841526776d67d25de1f672cd299c075bc577f85503f55d28639df languageName: node linkType: hard @@ -875,15 +850,15 @@ __metadata: languageName: unknown linkType: soft -"@avalabs/svm-module@npm:1.10.2": - version: 1.10.2 - resolution: "@avalabs/svm-module@npm:1.10.2" +"@avalabs/svm-module@npm:1.11.0": + version: 1.11.0 + resolution: "@avalabs/svm-module@npm:1.11.0" dependencies: "@avalabs/core-chains-sdk": 3.1.0-alpha.61 "@avalabs/core-coingecko-sdk": 3.1.0-alpha.61 "@avalabs/core-utils-sdk": 3.1.0-alpha.61 "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 - "@avalabs/vm-module-types": 1.10.2 + "@avalabs/vm-module-types": 1.11.0 "@blockaid/client": 0.48.0 "@metamask/rpc-errors": 6.3.0 "@scure/base": 1.2.4 @@ -894,7 +869,7 @@ __metadata: "@wallet-standard/base": 1.1.0 "@wallet-standard/features": 1.1.0 zod: 3.23.8 - checksum: 7c540707ebd1a16758b06e0bb2de8af3a103fa43b6ffacd878d0b4c89b0188ef4bc68fa5c345be083fdd4c8f08408cc773244dbaaf676a9534103576c5e65518 + checksum: 239cb64e19336ac983385116b65369bbaa014975aab042cb459a5971b5c767175138fe8daebb3694855da08c2fb30a935e5a83026880e03ee1d8b7deb203b53f languageName: node linkType: hard @@ -918,9 +893,9 @@ __metadata: languageName: node linkType: hard -"@avalabs/vm-module-types@npm:1.10.2": - version: 1.10.2 - resolution: "@avalabs/vm-module-types@npm:1.10.2" +"@avalabs/vm-module-types@npm:1.11.0": + version: 1.11.0 + resolution: "@avalabs/vm-module-types@npm:1.11.0" dependencies: "@avalabs/core-wallets-sdk": 3.1.0-alpha.61 "@avalabs/glacier-sdk": 3.1.0-alpha.61 @@ -931,7 +906,7 @@ __metadata: zod: 3.23.8 peerDependencies: ethers: 6.13.5 - checksum: 25ae229261bf20eadff489192c09f0d11d090cb4e3a3cfc82aa3bd45ce7153534221d80b424f8d539ec955ca72e48e0ea824f7764e0117c0281aaa33cda5d790 + checksum: 895948b9d2a1bae2e2cf11f8c3ce8f6fb2c7a7858da0f71243ac97eaa48ed514f7a76c8e7cc314fc47f1bcfb318b58e07b0127cbd8d0ebb7311b71724066968e languageName: node linkType: hard @@ -1048,13 +1023,6 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.27.7, @babel/compat-data@npm:^7.28.0": - version: 7.28.4 - resolution: "@babel/compat-data@npm:7.28.4" - checksum: 9f6f5289bbe5a29e3f9c737577a797205a91f19371b50af8942257d9cb590d44eb950154e4f2a3d5de4105f97a49d6fbc8daebe0db1e6eee04f5a4bf73536bfc - languageName: node - linkType: hard - "@babel/core@npm:7.28.0": version: 7.28.0 resolution: "@babel/core@npm:7.28.0" @@ -1321,15 +1289,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.27.1, @babel/helper-annotate-as-pure@npm:^7.27.3": - version: 7.27.3 - resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" - dependencies: - "@babel/types": ^7.27.3 - checksum: 63863a5c936ef82b546ca289c9d1b18fabfc24da5c4ee382830b124e2e79b68d626207febc8d4bffc720f50b2ee65691d7d12cc0308679dee2cd6bdc926b7190 - languageName: node - linkType: hard - "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.25.7": version: 7.25.7 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.25.7" @@ -1405,7 +1364,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": +"@babel/helper-compilation-targets@npm:^7.27.2": version: 7.27.2 resolution: "@babel/helper-compilation-targets@npm:7.27.2" dependencies: @@ -1488,23 +1447,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.27.1, @babel/helper-create-class-features-plugin@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-create-class-features-plugin@npm:7.28.3" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.3 - "@babel/helper-member-expression-to-functions": ^7.27.1 - "@babel/helper-optimise-call-expression": ^7.27.1 - "@babel/helper-replace-supers": ^7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - "@babel/traverse": ^7.28.3 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 6d918e5e9c88ad1a262ab7b1a3caede1bbf95f8276c96846d8b0c1af251c85a0c868a9f1bbbaebdeb199e44dfd0e10fbe22935e56bedd1aa41ba4a7162bfa86c - languageName: node - linkType: hard - "@babel/helper-create-regexp-features-plugin@npm:^7.18.6": version: 7.22.15 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" @@ -1557,19 +1499,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - regexpu-core: ^6.2.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 2ede6bbad0016a9262fd281ce8f1a5d69e6179dcec4ea282830e924c29a29b66b0544ecb92e4ef4acdaf2c4c990931d7dc442dbcd6a8bcec4bad73923ef70934 - languageName: node - linkType: hard - "@babel/helper-define-polyfill-provider@npm:^0.6.2": version: 0.6.2 resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" @@ -1585,21 +1514,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.5": - version: 0.6.5 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" - dependencies: - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-plugin-utils": ^7.27.1 - debug: ^4.4.1 - lodash.debounce: ^4.0.8 - resolve: ^1.22.10 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 9fd3b09b209c8ed0d3d8bc1f494f1368b9e1f6e46195af4ce948630fe97d7dafde4882eedace270b319bf6555ddf35e220c77505f6d634f621766cdccbba0aae - languageName: node - linkType: hard - "@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" @@ -1672,16 +1586,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" - dependencies: - "@babel/traverse": ^7.27.1 - "@babel/types": ^7.27.1 - checksum: b13a3d120015a6fd2f6e6c2ff789cd12498745ef028710cba612cfb751b91ace700c3f96c1689228d1dcb41e9d4cf83d6dff8627dcb0c8da12d79440e783c6b8 - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-module-imports@npm:7.22.15" @@ -1802,29 +1706,29 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" +"@babel/helper-module-transforms@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-module-transforms@npm:7.27.3" dependencies: "@babel/helper-module-imports": ^7.27.1 "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.28.3 + "@babel/traverse": ^7.27.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: 7cf7b79da0fa626d6c84bfc7b35c079a2559caecaa2ff645b0f1db0d741507aa4df6b5b98a3283e8ac4e89094af271d805bf5701e5c4f916e622797b7c8cbb18 + checksum: c611d42d3cb7ba23b1a864fcf8d6cde0dc99e876ca1c9a67e4d7919a70706ded4aaa45420de2bf7f7ea171e078e59f0edcfa15a56d74b9485e151b95b93b946e languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.27.3": - version: 7.27.3 - resolution: "@babel/helper-module-transforms@npm:7.27.3" +"@babel/helper-module-transforms@npm:^7.28.3": + version: 7.28.3 + resolution: "@babel/helper-module-transforms@npm:7.28.3" dependencies: "@babel/helper-module-imports": ^7.27.1 "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.27.3 + "@babel/traverse": ^7.28.3 peerDependencies: "@babel/core": ^7.0.0 - checksum: c611d42d3cb7ba23b1a864fcf8d6cde0dc99e876ca1c9a67e4d7919a70706ded4aaa45420de2bf7f7ea171e078e59f0edcfa15a56d74b9485e151b95b93b946e + checksum: 7cf7b79da0fa626d6c84bfc7b35c079a2559caecaa2ff645b0f1db0d741507aa4df6b5b98a3283e8ac4e89094af271d805bf5701e5c4f916e622797b7c8cbb18 languageName: node linkType: hard @@ -1864,15 +1768,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" - dependencies: - "@babel/types": ^7.27.1 - checksum: 0fb7ee824a384529d6b74f8a58279f9b56bfe3cce332168067dddeab2552d8eeb56dc8eaf86c04a3a09166a316cb92dfc79c4c623cd034ad4c563952c98b464f - languageName: node - linkType: hard - "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" @@ -1941,19 +1836,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-wrap-function": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 0747397ba013f87dbf575454a76c18210d61c7c9af0f697546b4bcac670b54ddc156330234407b397f0c948738c304c228e0223039bc45eab4fbf46966a5e8cc - languageName: node - linkType: hard - "@babel/helper-replace-supers@npm:^7.22.9": version: 7.22.20 resolution: "@babel/helper-replace-supers@npm:7.22.20" @@ -2006,19 +1888,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-replace-supers@npm:7.27.1" - dependencies: - "@babel/helper-member-expression-to-functions": ^7.27.1 - "@babel/helper-optimise-call-expression": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 3690266c304f21008690ba68062f889a363583cabc13c3d033b94513953147af3e0a3fdb48fa1bb9fa3734b64e221fc65e5222ab70837f02321b7225f487c6ef - languageName: node - linkType: hard - "@babel/helper-simple-access@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-simple-access@npm:7.22.5" @@ -2087,16 +1956,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" - dependencies: - "@babel/traverse": ^7.27.1 - "@babel/types": ^7.27.1 - checksum: 4f380c5d0e0769fa6942a468b0c2d7c8f0c438f941aaa88f785f8752c103631d0904c7b4e76207a3b0e6588b2dec376595370d92ca8f8f1b422c14a69aa146d4 - languageName: node - linkType: hard - "@babel/helper-split-export-declaration@npm:^7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" @@ -2247,17 +2106,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.27.1": - version: 7.28.3 - resolution: "@babel/helper-wrap-function@npm:7.28.3" - dependencies: - "@babel/template": ^7.27.2 - "@babel/traverse": ^7.28.3 - "@babel/types": ^7.28.2 - checksum: 0ebdfdc918fdd0c1cf6ff15ba4c664974d0cdf21a017af560d58b00c379df3bf2e55f13a44fe3225668bca169da174f6cb97a96c4e987fb728fdb8f9a39db302 - languageName: node - linkType: hard - "@babel/helpers@npm:^7.23.2": version: 7.23.2 resolution: "@babel/helpers@npm:7.23.2" @@ -2453,18 +2301,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 72f24b9487e445fa61cf8be552aad394a648c2bb445c38d39d1df003186d9685b87dd8d388c950f438ea0ca44c82099d9c49252fb681c719cc72edf02bbe0304 - languageName: node - linkType: hard - "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.7" @@ -2476,17 +2312,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: eb7f4146dc01f1198ce559a90b077e58b951a07521ec414e3c7d4593bf6c4ab5c2af22242a7e9fec085e20299e0ba6ea97f44a45e84ab148141bf9eb959ad25e - languageName: node - linkType: hard - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.7" @@ -2498,17 +2323,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 621cfddfcc99a81e74f8b6f9101fd260b27500cb1a568e3ceae9cc8afe9aee45ac3bca3900a2b66c612b1a2366d29ef67d4df5a1c975be727eaad6906f98c2c6 - languageName: node - linkType: hard - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.7" @@ -2522,19 +2336,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - "@babel/plugin-transform-optional-chaining": ^7.27.1 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: f07aa80272bd7a46b7ba11a4644da6c9b6a5a64e848dfaffdad6f02663adefd512e1aaebe664c4dd95f7ed4f80c872c7f8db8d8e34b47aae0930b412a28711a0 - languageName: node - linkType: hard - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.7" @@ -2547,18 +2348,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.28.3" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.28.3 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: c810e5d36030df6861ced35f0adbda7b4b41ac3e984422b32bee906564fd49374435f0a7a1a42eb0a9e6a5170c255f0ab31c163d5fc51fa5a816aa0420311029 - languageName: node - linkType: hard - "@babel/plugin-proposal-decorators@npm:^7.12.9": version: 7.24.7 resolution: "@babel/plugin-proposal-decorators@npm:7.24.7" @@ -2714,17 +2503,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-flow@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 - languageName: node - linkType: hard - "@babel/plugin-syntax-import-assertions@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.7" @@ -2736,18 +2514,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fb661d630808d67ecb85eabad25aac4e9696a20464bad4c4a6a0d3d40e4dc22557d47e9be3d591ec06429cf048cfe169b8891c373606344d51c4f3ac0f91d6d0 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": version: 7.27.1 resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: @@ -2835,17 +2602,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a - languageName: node - linkType: hard - "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -2967,17 +2723,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 - languageName: node - linkType: hard - "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -3023,17 +2768,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62c2cc0ae2093336b1aa1376741c5ed245c0987d9e4b4c5313da4a38155509a7098b5acce582b6781cc0699381420010da2e3086353344abe0a6a0ec38961eb7 - languageName: node - linkType: hard - "@babel/plugin-transform-async-generator-functions@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.4" @@ -3062,19 +2796,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.0" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-remap-async-to-generator": ^7.27.1 - "@babel/traverse": ^7.28.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 174aaccd7a8386fd7f32240c3f65a93cf60dcc5f6a2123cfbff44c0d22b424cd41de3a0c6d136b6a2fa60a8ca01550c261677284cb18a0daeab70730b2265f1d - languageName: node - linkType: hard - "@babel/plugin-transform-async-to-generator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" @@ -3101,19 +2822,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" - dependencies: - "@babel/helper-module-imports": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-remap-async-to-generator": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d79d7a7ae7d416f6a48200017d027a6ba94c09c7617eea8b4e9c803630f00094c1a4fc32bf20ce3282567824ce3fcbda51653aac4003c71ea4e681b331338979 - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoped-functions@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.25.7" @@ -3125,17 +2833,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7fb4988ca80cf1fc8345310d5edfe38e86b3a72a302675cdd09404d5064fe1d1fe1283ebe658ad2b71445ecef857bfb29a748064306b5f6c628e0084759c2201 - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoping@npm:^7.25.0": version: 7.25.0 resolution: "@babel/plugin-transform-block-scoping@npm:7.25.0" @@ -3158,17 +2855,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.28.0": - version: 7.28.4 - resolution: "@babel/plugin-transform-block-scoping@npm:7.28.4" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f62eae907c0b4f85b9cc024da949697e57d17f2107ca4a240011174762d4c546b856ccbd5ba83ecb4bc9eb50150ea46558d551a5b05d3f25aace88a65fa4e04 - languageName: node - linkType: hard - "@babel/plugin-transform-class-properties@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" @@ -3205,18 +2891,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 475a6e5a9454912fe1bdc171941976ca10ea4e707675d671cdb5ce6b6761d84d1791ac61b6bca81a2e5f6430cb7b9d8e4b2392404110e69c28207a754e196294 - languageName: node - linkType: hard - "@babel/plugin-transform-class-static-block@npm:7.25.7, @babel/plugin-transform-class-static-block@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-class-static-block@npm:7.25.7" @@ -3230,18 +2904,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/plugin-transform-class-static-block@npm:7.28.3" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.28.3 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 9b2feaacbf29637ab35a3aae1df35a1129adec5400a1767443739557fb0d3bf8278bf0ec90aacf43dec9a7dd91428d01375020b70528713e1bc36a72776a104c - languageName: node - linkType: hard - "@babel/plugin-transform-classes@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-classes@npm:7.25.9" @@ -3290,22 +2952,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.28.3": - version: 7.28.4 - resolution: "@babel/plugin-transform-classes@npm:7.28.4" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.3 - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-globals": ^7.28.0 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-replace-supers": ^7.27.1 - "@babel/traverse": ^7.28.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f412e00c86584a9094cc0a2f3dd181b8108a4dced477d609c5406beddd5bf79d05a7ea74db508dc4dcb37172f042d5ef98d3d6311ade61c7ea6fbbbb70f5ec29 - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" @@ -3330,18 +2976,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/template": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 48bd20f7d631b08c51155751bf75b698d4a22cca36f41c22921ab92e53039c9ec5c3544e5282e18692325ef85d2e4a18c27e12c62b5e20c26fb0c92447e35224 - languageName: node - linkType: hard - "@babel/plugin-transform-destructuring@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-destructuring@npm:7.24.8" @@ -3364,18 +2998,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.28.0" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.28.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5b464d6a03c6eaa1327b60ffc1630ca977db0256938b34e281e65c81c965680e930a6bac043272942d6d4bbd7d1eddded0b7231779429ba51275e092e7367859 - languageName: node - linkType: hard - "@babel/plugin-transform-dotall-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.7" @@ -3388,18 +3010,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2173e5b13f403538ffc6bd57b190cedf4caf320abc13a99e5b2721864e7148dbd3bd7c82d92377136af80432818f665fdd9a1fd33bc5549a4c91e24e5ce2413c - languageName: node - linkType: hard - "@babel/plugin-transform-duplicate-keys@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.7" @@ -3411,17 +3021,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ef2112d658338e3ff0827f39a53c0cfa211f1cbbe60363bca833a5269df389598ec965e7283600b46533c39cdca82307d0d69c0f518290ec5b00bb713044715b - languageName: node - linkType: hard - "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.7" @@ -3434,18 +3033,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 2a109613535e6ac79240dced71429e988affd6a5b3d0cd0f563c8d6c208c51ce7bf2c300bc1150502376b26a51f279119b3358f1c0f2d2f8abca3bcd62e1ae46 - languageName: node - linkType: hard - "@babel/plugin-transform-dynamic-import@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.7" @@ -3458,29 +3045,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7a9fbc8d17148b7f11a1d1ca3990d2c2cd44bd08a45dcaf14f20a017721235b9044b20e6168b6940282bb1b48fb78e6afbdfb9dd9d82fde614e15baa7d579932 - languageName: node - linkType: hard - -"@babel/plugin-transform-explicit-resource-management@npm:^7.28.0": - version: 7.28.0 - resolution: "@babel/plugin-transform-explicit-resource-management@npm:7.28.0" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.28.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a44140097ed4854883c426613f4e8763237cd0fdab1c780514f4315f6c148d6b528d7a57fe6fdec4dbce28a21b70393ef3507b72dfec2e30bfc8d7db1ff19474 - languageName: node - linkType: hard - "@babel/plugin-transform-exponentiation-operator@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.25.7" @@ -3493,17 +3057,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4ff4a0f30babc457a5ae8564deda209599627c2ce647284a0e8e66f65b44f6d968cf77761a4cc31b45b61693f0810479248c79e681681d8ccb39d0c52944c1fd - languageName: node - linkType: hard - "@babel/plugin-transform-export-namespace-from@npm:7.25.7, @babel/plugin-transform-export-namespace-from@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.7" @@ -3516,7 +3069,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.25.9, @babel/plugin-transform-export-namespace-from@npm:^7.27.1": +"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": version: 7.27.1 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" dependencies: @@ -3539,18 +3092,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.26.5": - version: 7.27.1 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-syntax-flow": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0885028866fadefef35292d5a27f878d6a12b6f83778f8731481d4503b49c258507882a7de2aafda9b62d5f6350042f1a06355b998d5ed5e85d693bfcb77b939 - languageName: node - linkType: hard - "@babel/plugin-transform-for-of@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-for-of@npm:7.24.7" @@ -3575,18 +3116,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-for-of@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c9224e08de5d80b2c834383d4359aa9e519db434291711434dd996a4f86b7b664ad67b45d65459b7ec11fa582e3e11a3c769b8a8ca71594bdd4e2f0503f84126 - languageName: node - linkType: hard - "@babel/plugin-transform-function-name@npm:^7.25.1": version: 7.25.1 resolution: "@babel/plugin-transform-function-name@npm:7.25.1" @@ -3613,19 +3142,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-function-name@npm:7.27.1" - dependencies: - "@babel/helper-compilation-targets": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 26a2a183c3c52a96495967420a64afc5a09f743a230272a131668abf23001e393afa6371e6f8e6c60f4182bea210ed31d1caf866452d91009c1daac345a52f23 - languageName: node - linkType: hard - "@babel/plugin-transform-json-strings@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-json-strings@npm:7.25.7" @@ -3638,17 +3154,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2c05a02f63b49f47069271b3405a66c3c8038de5b995b0700b1bd9a5e2bb3e67abd01e4604629302a521f4d8122a4233944aefa16559fd4373d256cc5d3da57f - languageName: node - linkType: hard - "@babel/plugin-transform-literals@npm:^7.25.2": version: 7.25.2 resolution: "@babel/plugin-transform-literals@npm:7.25.2" @@ -3671,17 +3176,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-literals@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a76d12ab19f32dd139964aea7da48cecdb7de0b75e207e576f0f700121fe92367d788f328bf4fb44b8261a0f605c97b44e62ae61cddbb67b14e94c88b411f95 - languageName: node - linkType: hard - "@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" @@ -3706,17 +3200,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2757955d81d65cc4701c17b83720745f6858f7a1d1d58117e379c204f47adbeb066b778596b6168bdbf4a22c229aab595d79a9abc261d0c6bfd62d4419466e73 - languageName: node - linkType: hard - "@babel/plugin-transform-member-expression-literals@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.7" @@ -3728,17 +3211,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 804121430a6dcd431e6ffe99c6d1fbbc44b43478113b79c677629e7f877b4f78a06b69c6bfb2747fd84ee91879fe2eb32e4620b53124603086cf5b727593ebe8 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-amd@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-modules-amd@npm:7.25.7" @@ -3751,18 +3223,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" - dependencies: - "@babel/helper-module-transforms": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8bb36d448e438d5d30f4faf19120e8c18aa87730269e65d805bf6032824d175ed738057cc392c2c8a650028f1ae0f346cad8d6b723f31a037b586e2092a7be18 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-commonjs@npm:^7.23.0": version: 7.23.0 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" @@ -3814,18 +3274,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" - dependencies: - "@babel/helper-module-transforms": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bc45c1beff9b145c982bd6a614af338893d38bce18a9df7d658c9084e0d8114b286dcd0e015132ae7b15dd966153cb13321e4800df9766d0ddd892d22bf09d2a - languageName: node - linkType: hard - "@babel/plugin-transform-modules-systemjs@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.7" @@ -3840,20 +3288,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" - dependencies: - "@babel/helper-module-transforms": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-validator-identifier": ^7.27.1 - "@babel/traverse": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7c17a8973676c18525d87f277944616596f1b154cc2b9263bfd78ecdbf5f4288ec46c7f58017321ca3e3d6dfeb96875467b95311a39719b475d42a157525d87f - languageName: node - linkType: hard - "@babel/plugin-transform-modules-umd@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-modules-umd@npm:7.25.7" @@ -3866,18 +3300,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" - dependencies: - "@babel/helper-module-transforms": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b007dd89231f2eeccf1c71a85629bcb692573303977a4b1c5f19a835ea6b5142c18ef07849bc6d752b874a11bc0ddf3c67468b77c8ee8310290b688a4f01ef31 - languageName: node - linkType: hard - "@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" @@ -3902,18 +3324,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: a711c92d9753df26cefc1792481e5cbff4fe4f32b383d76b25e36fa865d8023b1b9aa6338cf18f5c0e864c71a7fbe8115e840872ccd61a914d9953849c68de7d - languageName: node - linkType: hard - "@babel/plugin-transform-new-target@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-new-target@npm:7.25.7" @@ -3925,17 +3335,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-new-target@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 32c8078d843bda001244509442d68fd3af088d7348ba883f45c262b2c817a27ffc553b0d78e7f7a763271b2ece7fac56151baad7a91fb21f5bb1d2f38e5acad7 - languageName: node - linkType: hard - "@babel/plugin-transform-nullish-coalescing-operator@npm:^7.0.0-0": version: 7.26.6 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.26.6" @@ -3971,17 +3370,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c6b3730748782d2178cc30f5cc37be7d7666148260f3f2dfc43999908bdd319bdfebaaf19cf04ac1f9dee0f7081093d3fa730cda5ae1b34bcd73ce406a78be7 - languageName: node - linkType: hard - "@babel/plugin-transform-numeric-separator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" @@ -4006,17 +3394,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 049b958911de86d32408cd78017940a207e49c054ae9534ab53a32a57122cc592c0aae3c166d6f29bd1a7d75cc779d71883582dd76cb28b2fbb493e842d8ffca - languageName: node - linkType: hard - "@babel/plugin-transform-object-rest-spread@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" @@ -4045,21 +3422,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.28.0": - version: 7.28.4 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.28.4" - dependencies: - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.28.0 - "@babel/plugin-transform-parameters": ^7.27.7 - "@babel/traverse": ^7.28.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2063672ba4ac457a64b5c0c982439c7b08b4c70f0e743792b98240db5a05f1c063918d8366c92d4d6b2572e2e3452b300a23980b6668e4f54ff349f60d47ec48 - languageName: node - linkType: hard - "@babel/plugin-transform-object-super@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-object-super@npm:7.25.7" @@ -4072,18 +3434,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-object-super@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-replace-supers": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 46b819cb9a6cd3cfefe42d07875fee414f18d5e66040366ae856116db560ad4e16f3899a0a7fddd6773e0d1458444f94b208b67c0e3b6977a27ea17a5c13dbf6 - languageName: node - linkType: hard - "@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" @@ -4108,17 +3458,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f4356b04cf21a98480f9788ea50f1f13ee88e89bb6393ba4b84d1f39a4a84c7928c9a4328e8f4c5b6deb218da68a8fd17bf4f46faec7653ddc20ffaaa5ba49f4 - languageName: node - linkType: hard - "@babel/plugin-transform-optional-chaining@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" @@ -4157,18 +3496,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c4428d31f182d724db6f10575669aad3dbccceb0dea26aa9071fa89f11b3456278da3097fcc78937639a13c105a82cd452dc0218ce51abdbcf7626a013b928a5 - languageName: node - linkType: hard - "@babel/plugin-transform-parameters@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-parameters@npm:7.24.7" @@ -4191,17 +3518,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.27.7": - version: 7.27.7 - resolution: "@babel/plugin-transform-parameters@npm:7.27.7" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d51f195e1d6ac5d9fce583e9a70a5bfe403e62386e5eb06db9fbc6533f895a98ff7e7c3dcaa311a8e6fa7a9794466e81cdabcba6af9f59d787fb767bfe7868b4 - languageName: node - linkType: hard - "@babel/plugin-transform-private-methods@npm:7.25.7, @babel/plugin-transform-private-methods@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-private-methods@npm:7.25.7" @@ -4226,18 +3542,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c76f8f6056946466116e67eb9d8014a2d748ade2062636ab82045c1dac9c233aff10e597777bc5af6f26428beb845ceb41b95007abef7d0484da95789da56662 - languageName: node - linkType: hard - "@babel/plugin-transform-private-property-in-object@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" @@ -4266,19 +3570,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: af539af1bd423aa46b9da83d649be716494ca80783841f47094b6741fa24e11141446027fd152ddff791dede9d4a76d0d5eb467402a2e584d7f5ea90e2673c7e - languageName: node - linkType: hard - "@babel/plugin-transform-property-literals@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-property-literals@npm:7.25.7" @@ -4290,17 +3581,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7caec27d5ed8870895c9faf4f71def72745d69da0d8e77903146a4e135fd7bed5778f5f9cebb36c5fba86338e6194dd67a08c033fc84b4299b7eceab6d9630cb - languageName: node - linkType: hard - "@babel/plugin-transform-react-display-name@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-display-name@npm:7.24.7" @@ -4312,17 +3592,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.27.1": - version: 7.28.0 - resolution: "@babel/plugin-transform-react-display-name@npm:7.28.0" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 268b1a9192974439d17949e170b01cac2a2aa003c844e2fe3b8361146f42f66487178cffdfa8ce862aa9e6c814bc37f879a70300cb3f067815d15fa6aad04e6d - languageName: node - linkType: hard - "@babel/plugin-transform-react-jsx-development@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.24.7" @@ -4334,17 +3603,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1" - dependencies: - "@babel/plugin-transform-react-jsx": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b88865d5b8c018992f2332da939faa15c4d4a864c9435a5937beaff3fe43781432cc42e0a5d5631098e0bd4066fc33f5fa72203b388b074c3545fe7aaa21e474 - languageName: node - linkType: hard - "@babel/plugin-transform-react-jsx-self@npm:^7.24.7": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" @@ -4397,21 +3655,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-module-imports": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/plugin-syntax-jsx": ^7.27.1 - "@babel/types": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 960d36e5d11ba68e4fbf1e2b935c153cb6ea7b0004f838aaee8baf7de30462b8f0562743a39ce3c370cc70b8f79d3c549104a415a615b2b0055b71fd025df0f3 - languageName: node - linkType: hard - "@babel/plugin-transform-react-pure-annotations@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.7" @@ -4424,18 +3667,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6f591c5e85a1ab0685d4a25afe591fe8d11dc0b73c677cf9560ff8d540d036a1cce9efcb729fc9092def4d854dc304ffdc063a89a9247900b69c516bf971a4c - languageName: node - linkType: hard - "@babel/plugin-transform-regenerator@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" @@ -4460,29 +3691,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.28.3": - version: 7.28.4 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.4" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2aa99b3a7b254a109e913fabbe1fb320ff40723988fde0e225212b7ef20f523a399a6e45077258b176c29715493b2a853cf7c130811692215adf33e5af99782b - languageName: node - linkType: hard - -"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f6cb385fe0e798bff7e9b20cf5912bf40e180895ff3610b1ccdce260f3c20daaebb3a99dc087c8168a99151cd3e16b94f4689fd5a4b01cf1834b45c133e620b2 - languageName: node - linkType: hard - "@babel/plugin-transform-reserved-words@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-reserved-words@npm:7.25.7" @@ -4494,17 +3702,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dea0b66742d2863b369c06c053e11e15ba785892ea19cccf7aef3c1bdaa38b6ab082e19984c5ea7810d275d9445c5400fcc385ad71ce707ed9256fadb102af3b - languageName: node - linkType: hard - "@babel/plugin-transform-runtime@npm:^7.24.7": version: 7.25.9 resolution: "@babel/plugin-transform-runtime@npm:7.25.9" @@ -4554,17 +3751,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fbba6e2aef0b69681acb68202aa249c0598e470cc0853d7ff5bd0171fd6a7ec31d77cfabcce9df6360fc8349eded7e4a65218c32551bd3fc0caaa1ac899ac6d4 - languageName: node - linkType: hard - "@babel/plugin-transform-spread@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-spread@npm:7.24.7" @@ -4589,18 +3775,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-spread@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 58b08085ee9c29955ac3b68d61c1a79728d44d19a69cb5eb669794aeaf54c57c6647af7b979c1297e81ede3d08b3ddcb1936ef39a533f28ff3e399a9be54dab1 - languageName: node - linkType: hard - "@babel/plugin-transform-sticky-regex@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" @@ -4623,28 +3797,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e1414a502efba92c7974681767e365a8cda6c5e9e5f33472a9eaa0ce2e75cea0a9bef881ff8dda37c7810ad902f98d3c00ead92a3ac3b73a79d011df85b5a189 - languageName: node - linkType: hard - -"@babel/plugin-transform-strict-mode@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/plugin-transform-strict-mode@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0c5bbc9f913b2cea1a1f5697bac320f11575016eed2eee16d2430af5ddceff5382ad3f1b70bf7158ff458db38568a903fab03b308150753453354785365667ec - languageName: node - linkType: hard - "@babel/plugin-transform-template-literals@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-template-literals@npm:7.25.9" @@ -4667,17 +3819,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 93aad782503b691faef7c0893372d5243df3219b07f1f22cfc32c104af6a2e7acd6102c128439eab15336d048f1b214ca134b87b0630d8cd568bf447f78b25ce - languageName: node - linkType: hard - "@babel/plugin-transform-typeof-symbol@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.25.7" @@ -4689,17 +3830,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ed8048c8de72c60969a64cf2273cc6d9275d8fa8db9bd25a1268273a00fb9cbd79931140311411bda1443aa56cb3961fb911d1795abacde7f0482f1d8fdf0356 - languageName: node - linkType: hard - "@babel/plugin-transform-typescript@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-typescript@npm:7.22.15" @@ -4744,21 +3874,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.27.1": - version: 7.28.0 - resolution: "@babel/plugin-transform-typescript@npm:7.28.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.27.3 - "@babel/helper-create-class-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 - "@babel/plugin-syntax-typescript": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 14c1024bcd57fcd469d90cf0c15c3cd4e771e2eb2cd9afee3aa79b59c8ed103654f7c5c71cdb3bfe31c1d0cb08bfad8c80f5aa1d24b4b454bd21301d5925533d - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-escapes@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.7" @@ -4770,17 +3885,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d817154bc10758ddd85b716e0bc1af1a1091e088400289ab6b78a1a4d609907ce3d2f1fd51a6fd0e0c8ecbb5f8e3aab4957e0747776d132d2379e85c3ef0520a - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-property-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.7" @@ -4793,18 +3897,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5d99c89537d1ebaac3f526c04b162cf95a47d363d4829f78c6701a2c06ab78a48da66a94f853f85f44a3d72153410ba923e072bed4b7166fa097f503eb14131d - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-regex@npm:^7.0.0-0": version: 7.25.9 resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" @@ -4841,18 +3933,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a34d89a2b75fb78e66d97c3dc90d4877f7e31f43316b52176f95a5dee20e9bb56ecf158eafc42a001676ddf7b393d9e67650bad6b32f5405780f25fb83cd68e3 - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-sets-regex@npm:^7.25.7": version: 7.25.7 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.7" @@ -4865,18 +3945,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.27.1 - "@babel/helper-plugin-utils": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 295126074c7388ab05c82ef3ed0907a1ee4666bbdd763477ead9aba6eb2c74bdf65669416861ac93d337a4a27640963bb214acadc2697275ce95aab14868d57f - languageName: node - linkType: hard - "@babel/preset-env@npm:7.25.7": version: 7.25.7 resolution: "@babel/preset-env@npm:7.25.7" @@ -4970,86 +4038,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.25.2": - version: 7.28.3 - resolution: "@babel/preset-env@npm:7.28.3" - dependencies: - "@babel/compat-data": ^7.28.0 - "@babel/helper-compilation-targets": ^7.27.2 - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-validator-option": ^7.27.1 - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.27.1 - "@babel/plugin-bugfix-safari-class-field-initializer-scope": ^7.27.1 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.27.1 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.27.1 - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.28.3 - "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-import-assertions": ^7.27.1 - "@babel/plugin-syntax-import-attributes": ^7.27.1 - "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.27.1 - "@babel/plugin-transform-async-generator-functions": ^7.28.0 - "@babel/plugin-transform-async-to-generator": ^7.27.1 - "@babel/plugin-transform-block-scoped-functions": ^7.27.1 - "@babel/plugin-transform-block-scoping": ^7.28.0 - "@babel/plugin-transform-class-properties": ^7.27.1 - "@babel/plugin-transform-class-static-block": ^7.28.3 - "@babel/plugin-transform-classes": ^7.28.3 - "@babel/plugin-transform-computed-properties": ^7.27.1 - "@babel/plugin-transform-destructuring": ^7.28.0 - "@babel/plugin-transform-dotall-regex": ^7.27.1 - "@babel/plugin-transform-duplicate-keys": ^7.27.1 - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": ^7.27.1 - "@babel/plugin-transform-dynamic-import": ^7.27.1 - "@babel/plugin-transform-explicit-resource-management": ^7.28.0 - "@babel/plugin-transform-exponentiation-operator": ^7.27.1 - "@babel/plugin-transform-export-namespace-from": ^7.27.1 - "@babel/plugin-transform-for-of": ^7.27.1 - "@babel/plugin-transform-function-name": ^7.27.1 - "@babel/plugin-transform-json-strings": ^7.27.1 - "@babel/plugin-transform-literals": ^7.27.1 - "@babel/plugin-transform-logical-assignment-operators": ^7.27.1 - "@babel/plugin-transform-member-expression-literals": ^7.27.1 - "@babel/plugin-transform-modules-amd": ^7.27.1 - "@babel/plugin-transform-modules-commonjs": ^7.27.1 - "@babel/plugin-transform-modules-systemjs": ^7.27.1 - "@babel/plugin-transform-modules-umd": ^7.27.1 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.27.1 - "@babel/plugin-transform-new-target": ^7.27.1 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.27.1 - "@babel/plugin-transform-numeric-separator": ^7.27.1 - "@babel/plugin-transform-object-rest-spread": ^7.28.0 - "@babel/plugin-transform-object-super": ^7.27.1 - "@babel/plugin-transform-optional-catch-binding": ^7.27.1 - "@babel/plugin-transform-optional-chaining": ^7.27.1 - "@babel/plugin-transform-parameters": ^7.27.7 - "@babel/plugin-transform-private-methods": ^7.27.1 - "@babel/plugin-transform-private-property-in-object": ^7.27.1 - "@babel/plugin-transform-property-literals": ^7.27.1 - "@babel/plugin-transform-regenerator": ^7.28.3 - "@babel/plugin-transform-regexp-modifiers": ^7.27.1 - "@babel/plugin-transform-reserved-words": ^7.27.1 - "@babel/plugin-transform-shorthand-properties": ^7.27.1 - "@babel/plugin-transform-spread": ^7.27.1 - "@babel/plugin-transform-sticky-regex": ^7.27.1 - "@babel/plugin-transform-template-literals": ^7.27.1 - "@babel/plugin-transform-typeof-symbol": ^7.27.1 - "@babel/plugin-transform-unicode-escapes": ^7.27.1 - "@babel/plugin-transform-unicode-property-regex": ^7.27.1 - "@babel/plugin-transform-unicode-regex": ^7.27.1 - "@babel/plugin-transform-unicode-sets-regex": ^7.27.1 - "@babel/preset-modules": 0.1.6-no-external-plugins - babel-plugin-polyfill-corejs2: ^0.4.14 - babel-plugin-polyfill-corejs3: ^0.13.0 - babel-plugin-polyfill-regenerator: ^0.6.5 - core-js-compat: ^3.43.0 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c4e70f69b727d21eedd4de201ac082e951482f2d28a388e401e7937fd6f15bc1a49a63c12f59e87a18d237ac037a5b29d983f3bb82f1196d6444ae5b605ac6e2 - languageName: node - linkType: hard - "@babel/preset-modules@npm:0.1.6-no-external-plugins": version: 0.1.6-no-external-plugins resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" @@ -5079,22 +4067,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/preset-react@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-validator-option": ^7.27.1 - "@babel/plugin-transform-react-display-name": ^7.27.1 - "@babel/plugin-transform-react-jsx": ^7.27.1 - "@babel/plugin-transform-react-jsx-development": ^7.27.1 - "@babel/plugin-transform-react-pure-annotations": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 00bc146f9c742eed804c598d3f31b7d889c1baf8c768989b7f84a93ca527dd1518d3b86781e89ca45cae6dbee136510d3a121658e01416c5578aecf751517bb5 - languageName: node - linkType: hard - "@babel/preset-typescript@npm:7.25.7": version: 7.25.7 resolution: "@babel/preset-typescript@npm:7.25.7" @@ -5140,21 +4112,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.24.7": - version: 7.27.1 - resolution: "@babel/preset-typescript@npm:7.27.1" - dependencies: - "@babel/helper-plugin-utils": ^7.27.1 - "@babel/helper-validator-option": ^7.27.1 - "@babel/plugin-syntax-jsx": ^7.27.1 - "@babel/plugin-transform-modules-commonjs": ^7.27.1 - "@babel/plugin-transform-typescript": ^7.27.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 38020f1b23e88ec4fbffd5737da455d8939244bddfb48a2516aef93fb5947bd9163fb807ce6eff3e43fa5ffe9113aa131305fef0fb5053998410bbfcfe6ce0ec - languageName: node - linkType: hard - "@babel/regjsgen@npm:^0.8.0": version: 0.8.0 resolution: "@babel/regjsgen@npm:0.8.0" @@ -5278,7 +4235,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": +"@babel/template@npm:^7.27.2": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -5588,197 +4545,6 @@ __metadata: languageName: node linkType: hard -"@commitlint/cli@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/cli@npm:19.8.1" - dependencies: - "@commitlint/format": ^19.8.1 - "@commitlint/lint": ^19.8.1 - "@commitlint/load": ^19.8.1 - "@commitlint/read": ^19.8.1 - "@commitlint/types": ^19.8.1 - tinyexec: ^1.0.0 - yargs: ^17.0.0 - bin: - commitlint: ./cli.js - checksum: 0ad393d0a7be57044c9822de065f35375fe0c2331f9a6c044ce20f0316aa3ab1a1b679040ba130ff60b180d54738c26d81d7afb47d9da355ba25161b1a5a91dd - languageName: node - linkType: hard - -"@commitlint/config-conventional@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/config-conventional@npm:19.8.1" - dependencies: - "@commitlint/types": ^19.8.1 - conventional-changelog-conventionalcommits: ^7.0.2 - checksum: f17e855b7293391655b7d05cf2e0ed43f5d03e48ad050a19c2a21ef1fc6516e8b9f2a386ed53ce93a2d2edc4464fc5081319710bd9134ec6feb6ccfcb2e7616c - languageName: node - linkType: hard - -"@commitlint/config-validator@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/config-validator@npm:19.8.1" - dependencies: - "@commitlint/types": ^19.8.1 - ajv: ^8.11.0 - checksum: 26eee15c1c0564fc8857b4bbc4f06305a32e049a724ede73753f66fc15316eb79a5dde4c8e2765bd75952a27b138cd80cffc49491281f122b834f8467c658d80 - languageName: node - linkType: hard - -"@commitlint/ensure@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/ensure@npm:19.8.1" - dependencies: - "@commitlint/types": ^19.8.1 - lodash.camelcase: ^4.3.0 - lodash.kebabcase: ^4.1.1 - lodash.snakecase: ^4.1.1 - lodash.startcase: ^4.4.0 - lodash.upperfirst: ^4.3.1 - checksum: af342f61b246c301937cc03477c64b86ca6dea47de23f94d237181d346d020ec23c8a458f56aec8bfe9cdcb80a06adcc34964f32c05a2649282a959ce6fae39d - languageName: node - linkType: hard - -"@commitlint/execute-rule@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/execute-rule@npm:19.8.1" - checksum: a39d9a87c0962c290e4f7d7438e8fca7642384a5aa97ec84c0b3dbbf91dc048496dd25447ba3dbec37b00006eec1951f8f22f30a98448e90e22d44d585d8a68f - languageName: node - linkType: hard - -"@commitlint/format@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/format@npm:19.8.1" - dependencies: - "@commitlint/types": ^19.8.1 - chalk: ^5.3.0 - checksum: 5af80e489c1470e20519780867145492c145690bd8e6b0dc049f53d317b045fa39ba012faed2715307e105ca439e6b16bdd4fe9c39c146d38bb5d93f1542fc5f - languageName: node - linkType: hard - -"@commitlint/is-ignored@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/is-ignored@npm:19.8.1" - dependencies: - "@commitlint/types": ^19.8.1 - semver: ^7.6.0 - checksum: a70631bb7825ed49f2d6164c7547d025ca184a5e65eb7b1bd63f041ae7aa9189991c2dbef18b1160951aeb59595307b75d5ba151ea10e0de4d36f22709b9c877 - languageName: node - linkType: hard - -"@commitlint/lint@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/lint@npm:19.8.1" - dependencies: - "@commitlint/is-ignored": ^19.8.1 - "@commitlint/parse": ^19.8.1 - "@commitlint/rules": ^19.8.1 - "@commitlint/types": ^19.8.1 - checksum: adf5fb6e68c9b6301243dce251be47884e4c2d6ee1f43e6aa0a31a054d2bd85880b4f2941781e13290e3b88b4f6da4b9b1978b9117444a8c89beb6f310e95951 - languageName: node - linkType: hard - -"@commitlint/load@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/load@npm:19.8.1" - dependencies: - "@commitlint/config-validator": ^19.8.1 - "@commitlint/execute-rule": ^19.8.1 - "@commitlint/resolve-extends": ^19.8.1 - "@commitlint/types": ^19.8.1 - chalk: ^5.3.0 - cosmiconfig: ^9.0.0 - cosmiconfig-typescript-loader: ^6.1.0 - lodash.isplainobject: ^4.0.6 - lodash.merge: ^4.6.2 - lodash.uniq: ^4.5.0 - checksum: e78c997ef529f80f8b62f686e553d0f2cb33d88b8b907d2e3890195851cd783fd44bd780addaa49f1cceb12ed073c10bb10e11dc082f51e4fdc54640f5ac1cca - languageName: node - linkType: hard - -"@commitlint/message@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/message@npm:19.8.1" - checksum: e365590dd539fe2519a15bd99ee8499c3ffbd80852839783ae6fd0b65feef08b26d2134a4e9ea32e006c2b3aa04447a38b011e73975b4fc3d7c7380a0fbf2377 - languageName: node - linkType: hard - -"@commitlint/parse@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/parse@npm:19.8.1" - dependencies: - "@commitlint/types": ^19.8.1 - conventional-changelog-angular: ^7.0.0 - conventional-commits-parser: ^5.0.0 - checksum: f6264bb30399b420a875532905e18049b4ab6f24d79f42d20fa06e64b9f355649ac18a33874e02643f0a826f3cec69423d6bc96cf852fa692338603ce910a95f - languageName: node - linkType: hard - -"@commitlint/read@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/read@npm:19.8.1" - dependencies: - "@commitlint/top-level": ^19.8.1 - "@commitlint/types": ^19.8.1 - git-raw-commits: ^4.0.0 - minimist: ^1.2.8 - tinyexec: ^1.0.0 - checksum: ee0f42e2e5a3ade673b2d14f3b2056a86804afe7d09b6703d51b41edc099b33b9c09dc715b30d7113879999381a198d78b4fcbc649785ed3beb9c3f7d1dc2bb2 - languageName: node - linkType: hard - -"@commitlint/resolve-extends@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/resolve-extends@npm:19.8.1" - dependencies: - "@commitlint/config-validator": ^19.8.1 - "@commitlint/types": ^19.8.1 - global-directory: ^4.0.1 - import-meta-resolve: ^4.0.0 - lodash.mergewith: ^4.6.2 - resolve-from: ^5.0.0 - checksum: d1415e1bff196a2f1ee18e2ba41764cb2855adda2e8221bb0d20d8d365c9a4777ad99b8babd0959aec8ac6fe8de6be7b928d5e3c38cb458c92c73a195b52bff7 - languageName: node - linkType: hard - -"@commitlint/rules@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/rules@npm:19.8.1" - dependencies: - "@commitlint/ensure": ^19.8.1 - "@commitlint/message": ^19.8.1 - "@commitlint/to-lines": ^19.8.1 - "@commitlint/types": ^19.8.1 - checksum: dc3a90b4561369991b851224c5cc1c0e2297c68ce148e21a7a5893a0556fffced192d59bf491a6c80270da012840fafdb34d991b7048170f4b2e7b0122211cee - languageName: node - linkType: hard - -"@commitlint/to-lines@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/to-lines@npm:19.8.1" - checksum: 47f33d5e0d77aa0cc2fc14daa3e73661c64c9cffb5fc9c723714ced4fcfc758bf5ba2e084143fa55bc512ad896d115b9983a308a97a005200484f04f2ed0fd90 - languageName: node - linkType: hard - -"@commitlint/top-level@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/top-level@npm:19.8.1" - dependencies: - find-up: ^7.0.0 - checksum: c875b6c1be495675c77d86e80419d27fd5eb70fc061ef412d041541219c3222d9c4dbd6f0353247d49e9b2cd6d86a7ffc9df1ba20f96c77726c1f9a0edeeb8fe - languageName: node - linkType: hard - -"@commitlint/types@npm:^19.8.1": - version: 19.8.1 - resolution: "@commitlint/types@npm:19.8.1" - dependencies: - "@types/conventional-commits-parser": ^5.0.0 - chalk: ^5.3.0 - checksum: d1943a5789a02c75b0c72755673ab8d50c850b025abb7806b7eef83b373591948f5d1d9cd22022f89302a256546934d797445913c5c495d8e92711cf17b0fbf0 - languageName: node - linkType: hard - "@config-plugins/detox@npm:11.0.0": version: 11.0.0 resolution: "@config-plugins/detox@npm:11.0.0" @@ -5811,24 +4577,6 @@ __metadata: languageName: node linkType: hard -"@conventional-changelog/git-client@npm:^1.0.0": - version: 1.0.1 - resolution: "@conventional-changelog/git-client@npm:1.0.1" - dependencies: - "@types/semver": ^7.5.5 - semver: ^7.5.2 - peerDependencies: - conventional-commits-filter: ^5.0.0 - conventional-commits-parser: ^6.0.0 - peerDependenciesMeta: - conventional-commits-filter: - optional: true - conventional-commits-parser: - optional: true - checksum: 4be45d4d1335878772fe0ad6e279970569c9526b544af3f58d31d70199f40c8051459a22f02d87c458a7c95f0ba68cd9a839da19504c5c40045c5b0691354305 - languageName: node - linkType: hard - "@craftzdog/react-native-buffer@npm:^6.0.5": version: 6.0.5 resolution: "@craftzdog/react-native-buffer@npm:6.0.5" @@ -6293,6 +5041,17 @@ __metadata: languageName: node linkType: hard +"@eslint-community/eslint-utils@npm:^4.7.0": + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: ae9b98eea006d1354368804b0116b8b45017a4e47b486d1b9cfa048a8ed3dc69b9b074eb2b2acb14034e6897c24048fd42b6a6816d9dc8bb9daad79db7d478d2 + languageName: node + linkType: hard + "@eslint-community/regexpp@npm:^4.10.0": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" @@ -6307,29 +5066,6 @@ __metadata: languageName: node linkType: hard -"@eslint/compat@npm:^1.3.2": - version: 1.4.0 - resolution: "@eslint/compat@npm:1.4.0" - dependencies: - "@eslint/core": ^0.16.0 - peerDependencies: - eslint: ^8.40 || 9 - peerDependenciesMeta: - eslint: - optional: true - checksum: 090882a61e3c8fa1911ff796f9cf13ed645139760cdecb2444dcb6c75a0d2f2a379e62b1e83586a13ece2280ed8a3acea9cc125acb99bc68012575918ac8f26d - languageName: node - linkType: hard - -"@eslint/core@npm:^0.16.0": - version: 0.16.0 - resolution: "@eslint/core@npm:0.16.0" - dependencies: - "@types/json-schema": ^7.0.15 - checksum: 5c08dbf08aa27a6e057003a05a29f483038b70e59f9ac7af26938d0fa4627383c95768e2154835260607de34975e8f407c10762af9a005ed348cd8039cc6aede - languageName: node - linkType: hard - "@eslint/eslintrc@npm:^2.1.2": version: 2.1.2 resolution: "@eslint/eslintrc@npm:2.1.2" @@ -6347,23 +5083,6 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.1": - version: 3.3.1 - resolution: "@eslint/eslintrc@npm:3.3.1" - dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^10.0.1 - globals: ^14.0.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: 8241f998f0857abf5a615072273b90b1244d75c1c45d217c6a8eb444c6e12bbb5506b4879c14fb262eb72b7d8e3d2f0542da2db1a7f414a12496ebb790fb4d62 - languageName: node - linkType: hard - "@eslint/js@npm:8.50.0": version: 8.50.0 resolution: "@eslint/js@npm:8.50.0" @@ -6371,13 +5090,6 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:^9.35.0": - version: 9.37.0 - resolution: "@eslint/js@npm:9.37.0" - checksum: 916f2ff7f70eadaa3a1c3f7d6d375fccfb676723484e1c54c5d63ff8a462746090097b73d21f4cb876ff2276d04af3f1c4c9e9a93729a9305213ca3aaa75008c - languageName: node - linkType: hard - "@ethereumjs/common@npm:4.4.0, @ethereumjs/common@npm:^4.4.0": version: 4.4.0 resolution: "@ethereumjs/common@npm:4.4.0" @@ -6895,16 +5607,6 @@ __metadata: languageName: node linkType: hard -"@evilmartians/lefthook@npm:^1.12.3": - version: 1.13.6 - resolution: "@evilmartians/lefthook@npm:1.13.6" - bin: - lefthook: bin/index.js - checksum: 6cceca3e874015678f50818ae14a74d959816cfaba6638f8852d007332404d6819b15c71538985a3650a1ef057aa6975c17fadfe43ece7a0da1aeb9faaf02946 - conditions: (os=darwin | os=linux | os=win32) & (cpu=x64 | cpu=arm64 | cpu=ia32) - languageName: node - linkType: hard - "@expo/cli@npm:0.24.20": version: 0.24.20 resolution: "@expo/cli@npm:0.24.20" @@ -8045,13 +6747,6 @@ __metadata: languageName: node linkType: hard -"@hutson/parse-repository-url@npm:^5.0.0": - version: 5.0.0 - resolution: "@hutson/parse-repository-url@npm:5.0.0" - checksum: 8adce66fd62e339382191f32a90708fab4c65560124b67a06262c57815706944a2f894d33f9bd8dd97180fd80accc0c3d1d5b5138ab86ed10ee071cb487d5983 - languageName: node - linkType: hard - "@img/colour@npm:^1.0.0": version: 1.0.0 resolution: "@img/colour@npm:1.0.0" @@ -8260,7 +6955,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/ansi@npm:^1.0.0, @inquirer/ansi@npm:^1.0.1": +"@inquirer/ansi@npm:^1.0.1": version: 1.0.1 resolution: "@inquirer/ansi@npm:1.0.1" checksum: 0dda65720736f3e730715f3778e0e90f039ebd1382c277495a4d1cdbd2b2863095aa7291cd8ea7d3c0618bdee04a375db6e10a7bae5fb904df0b632a1c7774f9 @@ -8300,7 +6995,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/core@npm:^10.2.2, @inquirer/core@npm:^10.3.0": +"@inquirer/core@npm:^10.3.0": version: 10.3.0 resolution: "@inquirer/core@npm:10.3.0" dependencies: @@ -8421,7 +7116,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/prompts@npm:^7.8.6, @inquirer/prompts@npm:^7.9.0": +"@inquirer/prompts@npm:^7.9.0": version: 7.9.0 resolution: "@inquirer/prompts@npm:7.9.0" dependencies: @@ -8495,7 +7190,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^3.0.8, @inquirer/type@npm:^3.0.9": +"@inquirer/type@npm:^3.0.9": version: 3.0.9 resolution: "@inquirer/type@npm:3.0.9" peerDependencies: @@ -10648,21 +9343,57 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.9.7": - version: 1.9.7 - resolution: "@noble/curves@npm:1.9.7" +"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0": + version: 1.1.0 + resolution: "@noble/curves@npm:1.1.0" dependencies: - "@noble/hashes": 1.8.0 - checksum: 65acad44ac6944ab96471109087d6cfcbcaa251faad6295961be9a5ace220634f4b7c74a96d1ee2274ad3880ea953d8e8259893ed8c906c831ef29f5c04ec9cc + "@noble/hashes": 1.3.1 + checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5 languageName: node linkType: hard -"@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::locator=mobile-monorepo%40workspace%3A.": +"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" + dependencies: + "@noble/hashes": 1.3.2 + checksum: bb798d7a66d8e43789e93bc3c2ddff91a1e19fdb79a99b86cd98f1e5eff0ee2024a2672902c2576ef3577b6f282f3b5c778bebd55761ddbb30e36bf275e83dd0 + languageName: node + linkType: hard + +"@noble/curves@npm:1.3.0, @noble/curves@npm:~1.3.0": + version: 1.3.0 + resolution: "@noble/curves@npm:1.3.0" + dependencies: + "@noble/hashes": 1.3.3 + checksum: b65342ee66c4a440eee2978524412eabba9a9efdd16d6370e15218c6a7d80bddf35e66bb57ed52c0dfd32cb9a717b439ab3a72db618f1a0066dfebe3fd12a421 + languageName: node + linkType: hard + +"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": + version: 1.4.2 + resolution: "@noble/curves@npm:1.4.2" + dependencies: + "@noble/hashes": 1.4.0 + checksum: c475a83c4263e2c970eaba728895b9b5d67e0ca880651e9c6e3efdc5f6a4f07ceb5b043bf71c399fc80fada0b8706e69d0772bffdd7b9de2483b988973a34cba + languageName: node + linkType: hard + +"@noble/curves@npm:1.6.0, @noble/curves@npm:~1.6.0": + version: 1.6.0 + resolution: "@noble/curves@npm:1.6.0" + dependencies: + "@noble/hashes": 1.5.0 + checksum: 258f3feb2a6098cf35521562ecb7d452fd728e8a008ff9f1ef435184f9d0c782ceb8f7b7fa8df3317c3be7a19f53995ee124cd05c8080b130bd42e3cb072f24d + languageName: node + linkType: hard + +"@noble/curves@npm:1.9.7, @noble/curves@npm:^1.4.0, @noble/curves@npm:^1.6.0, @noble/curves@npm:^1.7.0, @noble/curves@npm:^1.8.0": version: 1.9.7 - resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=033597&locator=mobile-monorepo%40workspace%3A." + resolution: "@noble/curves@npm:1.9.7" dependencies: "@noble/hashes": 1.8.0 - checksum: 31dc3dc0070b44d4fb6d3ecbc7d4f996b146dc79385b80ed33eee03334450b177174c71a8e1a787ce4b8b451310fd9962a55099f573617f35361e30f5e1c2427 + checksum: 65acad44ac6944ab96471109087d6cfcbcaa251faad6295961be9a5ace220634f4b7c74a96d1ee2274ad3880ea953d8e8259893ed8c906c831ef29f5c04ec9cc languageName: node linkType: hard @@ -10721,15 +9452,6 @@ __metadata: languageName: node linkType: hard -"@nodeutils/defaults-deep@npm:1.1.0": - version: 1.1.0 - resolution: "@nodeutils/defaults-deep@npm:1.1.0" - dependencies: - lodash: ^4.15.0 - checksum: 205ff2a4ae2a00c2c640317f888c075bd6429206e26b6c9c99bb691fa05c23274fda2a1023d97fad0ee06ca82232cc058c7c1e06350a37cda5a58fe5aff00c5c - languageName: node - linkType: hard - "@notifee/react-native@npm:9.1.8": version: 9.1.8 resolution: "@notifee/react-native@npm:9.1.8" @@ -10823,130 +9545,6 @@ __metadata: languageName: node linkType: hard -"@octokit/auth-token@npm:^6.0.0": - version: 6.0.0 - resolution: "@octokit/auth-token@npm:6.0.0" - checksum: 9c23be526c7f8e282aa7ccec6f3a72a1beec44eae736327e9ba78419fa28ba75e2c686e9eac75f35ce99bdb55eff9605f7ef7588a9d4f4e18ad5ed16a5d887ab - languageName: node - linkType: hard - -"@octokit/core@npm:^7.0.2": - version: 7.0.5 - resolution: "@octokit/core@npm:7.0.5" - dependencies: - "@octokit/auth-token": ^6.0.0 - "@octokit/graphql": ^9.0.2 - "@octokit/request": ^10.0.4 - "@octokit/request-error": ^7.0.1 - "@octokit/types": ^15.0.0 - before-after-hook: ^4.0.0 - universal-user-agent: ^7.0.0 - checksum: 7b5780b708f2cefd94ddb1727cd2e03cbd198f25389e42fad7bf5822cf45f3fa4df1a6da1f01d5cd0b2c3586ec3f8bacf121dd5aa163eba10e5c8cf1d71bd5db - languageName: node - linkType: hard - -"@octokit/endpoint@npm:^11.0.1": - version: 11.0.1 - resolution: "@octokit/endpoint@npm:11.0.1" - dependencies: - "@octokit/types": ^15.0.0 - universal-user-agent: ^7.0.2 - checksum: 0ef3b6c7eabde9c6d086ca17737037dbf372081541e7bc75cc7ba3feaf31c6fc8478b2b715465619819710725caccd9c8b09e55ecf76baebba61e48b246bb22b - languageName: node - linkType: hard - -"@octokit/graphql@npm:^9.0.2": - version: 9.0.2 - resolution: "@octokit/graphql@npm:9.0.2" - dependencies: - "@octokit/request": ^10.0.4 - "@octokit/types": ^15.0.0 - universal-user-agent: ^7.0.0 - checksum: 21480658ca60af50378110b79c512d23fbdf00f1c34c429be50f51ef39b9bf831f20a4f3f0d2e02e00097307a327ce6088a1fe93abb061100f797234f0ee5d67 - languageName: node - linkType: hard - -"@octokit/openapi-types@npm:^26.0.0": - version: 26.0.0 - resolution: "@octokit/openapi-types@npm:26.0.0" - checksum: 4a569f87bd5163b3973a411511ae2410d548555228790baa0d4f70ad77dbe7d5df1cf542d09768b2bbab227eae1f0fa6eaade00d351d2fce1da76deb0e646db5 - languageName: node - linkType: hard - -"@octokit/plugin-paginate-rest@npm:^13.0.1": - version: 13.2.0 - resolution: "@octokit/plugin-paginate-rest@npm:13.2.0" - dependencies: - "@octokit/types": ^15.0.0 - peerDependencies: - "@octokit/core": ">=6" - checksum: 8638d49b7126b64b19b3336d5471763076cf446203d9d1194353c8c3d2ff17dcc8fa72894ad4b208236d5ab154d1a73e066cd87a893aebd7fc36da40b1e63366 - languageName: node - linkType: hard - -"@octokit/plugin-request-log@npm:^6.0.0": - version: 6.0.0 - resolution: "@octokit/plugin-request-log@npm:6.0.0" - peerDependencies: - "@octokit/core": ">=6" - checksum: 8a79973b1429bfead9113c4117f418aaef5ff368795daded3415ba14623d97d5fc08d1e822dbd566ecc9f041119e1a48a11853a9c48d9eb1caa62baa79c17f83 - languageName: node - linkType: hard - -"@octokit/plugin-rest-endpoint-methods@npm:^16.0.0": - version: 16.1.0 - resolution: "@octokit/plugin-rest-endpoint-methods@npm:16.1.0" - dependencies: - "@octokit/types": ^15.0.0 - peerDependencies: - "@octokit/core": ">=6" - checksum: 676a08e20dcde32029af93c65b80d18a60604c5945f4cf12e2773611968da5de3db5916dd249070796603fc2ed26b7e5e3924299c77c4d78216fba943284887b - languageName: node - linkType: hard - -"@octokit/request-error@npm:^7.0.1": - version: 7.0.1 - resolution: "@octokit/request-error@npm:7.0.1" - dependencies: - "@octokit/types": ^15.0.0 - checksum: f99dffa4e257a4cb3724c633c26e5334af881c54669ee0013de96b846bb327ac77e68b36459be183817b84f6f7518e6b70c9e7926b5547a9665b2607b1afddd6 - languageName: node - linkType: hard - -"@octokit/request@npm:^10.0.4": - version: 10.0.5 - resolution: "@octokit/request@npm:10.0.5" - dependencies: - "@octokit/endpoint": ^11.0.1 - "@octokit/request-error": ^7.0.1 - "@octokit/types": ^15.0.0 - fast-content-type-parse: ^3.0.0 - universal-user-agent: ^7.0.2 - checksum: beab7ab902055577b281130c73559397674c524ebe8b4bec137db56b04309b87907e44a7bfad040f60362e042cc376a2a4043d6b52e6a57aa5eafa4b712b7cda - languageName: node - linkType: hard - -"@octokit/rest@npm:22.0.0": - version: 22.0.0 - resolution: "@octokit/rest@npm:22.0.0" - dependencies: - "@octokit/core": ^7.0.2 - "@octokit/plugin-paginate-rest": ^13.0.1 - "@octokit/plugin-request-log": ^6.0.0 - "@octokit/plugin-rest-endpoint-methods": ^16.0.0 - checksum: 6a7eff019c0889b23c0820831936e5dc8fa7643bdf0e98ba073b36a10f5602b9f283ca2c74ec8172b8529d0647dfa4a7857dcd81ca028b303937f26750a6c7f6 - languageName: node - linkType: hard - -"@octokit/types@npm:^15.0.0": - version: 15.0.0 - resolution: "@octokit/types@npm:15.0.0" - dependencies: - "@octokit/openapi-types": ^26.0.0 - checksum: f98075b9c4ff19ec4c84e314ea5d953a55bd526fdcff858d993da930e5dc8633c51405f99c2a8c89ecabf5949b494bb160cfeaed7e1ff94fa439c85b2301cc2b - languageName: node - linkType: hard - "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" @@ -11144,13 +9742,6 @@ __metadata: languageName: node linkType: hard -"@phun-ky/typeof@npm:2.0.3": - version: 2.0.3 - resolution: "@phun-ky/typeof@npm:2.0.3" - checksum: e5084843eed665327028c770733e2ced44613ec5ebcc48a398fe9ce11e278d160e311b3077f093e2017ab09e100413e6df380daabeb0e193d47e01cb605d6260 - languageName: node - linkType: hard - "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -11158,10 +9749,10 @@ __metadata: languageName: node linkType: hard -"@pkgr/core@npm:^0.2.9": - version: 0.2.9 - resolution: "@pkgr/core@npm:0.2.9" - checksum: bb2fb86977d63f836f8f5b09015d74e6af6488f7a411dcd2bfdca79d76b5a681a9112f41c45bdf88a9069f049718efc6f3900d7f1de66a2ec966068308ae517f +"@pkgr/core@npm:^0.1.0": + version: 0.1.2 + resolution: "@pkgr/core@npm:0.1.2" + checksum: 5160ec9f2e3232da681824a42583ef80e637ae6143339bd1db176848efd244dd71d177ccb7fd729261d8dcaf88486ce701d39500d873ed5caf16e8c281e9e28a languageName: node linkType: hard @@ -12813,6 +11404,13 @@ __metadata: languageName: node linkType: hard +"@react-native/assets-registry@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/assets-registry@npm:0.82.0" + checksum: 21416e3f4c088aeb56bd9f19ce88950ee629d7b4d044f36fde63757d9fbe2a81b4688538ae7d81bb046d922cfc3c4e1f51a2815fcfb7f0af2bb380f7e8c1bde8 + languageName: node + linkType: hard + "@react-native/babel-plugin-codegen@npm:0.79.5": version: 0.79.5 resolution: "@react-native/babel-plugin-codegen@npm:0.79.5" @@ -12823,16 +11421,6 @@ __metadata: languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/babel-plugin-codegen@npm:0.81.1" - dependencies: - "@babel/traverse": ^7.25.3 - "@react-native/codegen": 0.81.1 - checksum: 39ce6fae08dbc22751883f77a0f19d7bfe4b91f224ff3ebbf618879606edc208584cea37e1875aa900d96cf43ea2df199458d8182adacbff35b6b34ee54de48a - languageName: node - linkType: hard - "@react-native/babel-preset@npm:0.79.5": version: 0.79.5 resolution: "@react-native/babel-preset@npm:0.79.5" @@ -12888,61 +11476,6 @@ __metadata: languageName: node linkType: hard -"@react-native/babel-preset@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/babel-preset@npm:0.81.1" - dependencies: - "@babel/core": ^7.25.2 - "@babel/plugin-proposal-export-default-from": ^7.24.7 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-default-from": ^7.24.7 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-transform-arrow-functions": ^7.24.7 - "@babel/plugin-transform-async-generator-functions": ^7.25.4 - "@babel/plugin-transform-async-to-generator": ^7.24.7 - "@babel/plugin-transform-block-scoping": ^7.25.0 - "@babel/plugin-transform-class-properties": ^7.25.4 - "@babel/plugin-transform-classes": ^7.25.4 - "@babel/plugin-transform-computed-properties": ^7.24.7 - "@babel/plugin-transform-destructuring": ^7.24.8 - "@babel/plugin-transform-flow-strip-types": ^7.25.2 - "@babel/plugin-transform-for-of": ^7.24.7 - "@babel/plugin-transform-function-name": ^7.25.1 - "@babel/plugin-transform-literals": ^7.25.2 - "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 - "@babel/plugin-transform-modules-commonjs": ^7.24.8 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 - "@babel/plugin-transform-numeric-separator": ^7.24.7 - "@babel/plugin-transform-object-rest-spread": ^7.24.7 - "@babel/plugin-transform-optional-catch-binding": ^7.24.7 - "@babel/plugin-transform-optional-chaining": ^7.24.8 - "@babel/plugin-transform-parameters": ^7.24.7 - "@babel/plugin-transform-private-methods": ^7.24.7 - "@babel/plugin-transform-private-property-in-object": ^7.24.7 - "@babel/plugin-transform-react-display-name": ^7.24.7 - "@babel/plugin-transform-react-jsx": ^7.25.2 - "@babel/plugin-transform-react-jsx-self": ^7.24.7 - "@babel/plugin-transform-react-jsx-source": ^7.24.7 - "@babel/plugin-transform-regenerator": ^7.24.7 - "@babel/plugin-transform-runtime": ^7.24.7 - "@babel/plugin-transform-shorthand-properties": ^7.24.7 - "@babel/plugin-transform-spread": ^7.24.7 - "@babel/plugin-transform-sticky-regex": ^7.24.7 - "@babel/plugin-transform-typescript": ^7.25.2 - "@babel/plugin-transform-unicode-regex": ^7.24.7 - "@babel/template": ^7.25.0 - "@react-native/babel-plugin-codegen": 0.81.1 - babel-plugin-syntax-hermes-parser: 0.29.1 - babel-plugin-transform-flow-enums: ^0.0.2 - react-refresh: ^0.14.0 - peerDependencies: - "@babel/core": "*" - checksum: 085e58eddf6a4cc1875e0d20d73a973fde6a5748d8f9bd2bbf5ec6b6df046654650eebdd3d7231654430d4f3be69ef9f6e1326111d5c6974e84df78c1841c548 - languageName: node - linkType: hard - "@react-native/codegen@npm:0.79.5": version: 0.79.5 resolution: "@react-native/codegen@npm:0.79.5" @@ -12958,20 +11491,20 @@ __metadata: languageName: node linkType: hard -"@react-native/codegen@npm:0.81.1": - version: 0.81.1 - resolution: "@react-native/codegen@npm:0.81.1" +"@react-native/codegen@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/codegen@npm:0.82.0" dependencies: "@babel/core": ^7.25.2 "@babel/parser": ^7.25.3 glob: ^7.1.1 - hermes-parser: 0.29.1 + hermes-parser: 0.32.0 invariant: ^2.2.4 nullthrows: ^1.1.1 yargs: ^17.6.2 peerDependencies: "@babel/core": "*" - checksum: 9c938c7567922cd7778d707d4c73a4bb856f03bac91a3b6ce76bbcf0e7211b3db4e937d572d5ec5e238f41bfa8d21f99eb63f12feeed2e536d41b6069aa25459 + checksum: 939092807e511d2cd9c3110230644135deace8eaf80f389985549be3713ce8783168e51e9fc7037ce0f71c3f2a3261410f0abf37341e9675c820b2f70459c62b languageName: node linkType: hard @@ -12996,6 +11529,29 @@ __metadata: languageName: node linkType: hard +"@react-native/community-cli-plugin@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/community-cli-plugin@npm:0.82.0" + dependencies: + "@react-native/dev-middleware": 0.82.0 + debug: ^4.4.0 + invariant: ^2.2.4 + metro: ^0.83.1 + metro-config: ^0.83.1 + metro-core: ^0.83.1 + semver: ^7.1.3 + peerDependencies: + "@react-native-community/cli": "*" + "@react-native/metro-config": "*" + peerDependenciesMeta: + "@react-native-community/cli": + optional: true + "@react-native/metro-config": + optional: true + checksum: b62e337a88edab5c57cd4d50442184766950d91b27afdea9886f79e09609d09461d32e042caf9adcdcb325467cdaac04384296940da755261e6d138a255e65c6 + languageName: node + linkType: hard + "@react-native/debugger-frontend@npm:0.79.5": version: 0.79.5 resolution: "@react-native/debugger-frontend@npm:0.79.5" @@ -13003,6 +11559,23 @@ __metadata: languageName: node linkType: hard +"@react-native/debugger-frontend@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/debugger-frontend@npm:0.82.0" + checksum: 2f7a9e97eded22e093e8d8475efbfa571a139e01239e9917839bab23f564620f7ae84abe9589780f4aaf54ae059af0a0a896664c382a1ccd80ce2373c61de91a + languageName: node + linkType: hard + +"@react-native/debugger-shell@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/debugger-shell@npm:0.82.0" + dependencies: + cross-spawn: ^7.0.6 + fb-dotslash: 0.5.8 + checksum: 2b0be80d3d6a1d794edb6cade641dec10b8b34634cdb05ff7be864d95bf53d4ed801b9f8e3b03999bbc138b41e0b9669fe6cd641c25bfdcdfcada3f4fa4a47f7 + languageName: node + linkType: hard + "@react-native/dev-middleware@npm:0.79.5": version: 0.79.5 resolution: "@react-native/dev-middleware@npm:0.79.5" @@ -13022,6 +11595,26 @@ __metadata: languageName: node linkType: hard +"@react-native/dev-middleware@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/dev-middleware@npm:0.82.0" + dependencies: + "@isaacs/ttlcache": ^1.4.1 + "@react-native/debugger-frontend": 0.82.0 + "@react-native/debugger-shell": 0.82.0 + chrome-launcher: ^0.15.2 + chromium-edge-launcher: ^0.2.0 + connect: ^3.6.5 + debug: ^4.4.0 + invariant: ^2.2.4 + nullthrows: ^1.1.1 + open: ^7.0.3 + serve-static: ^1.16.2 + ws: ^6.2.3 + checksum: d6b57ed8a96082c99802aa64d4d826f4750996e6259f0b724715f9688de39f41e426d3da5ef4732a595b517f691cc2896b599ebc6fca3e4026f5e72d92fea304 + languageName: node + linkType: hard + "@react-native/eslint-config@npm:0.79.5": version: 0.79.5 resolution: "@react-native/eslint-config@npm:0.79.5" @@ -13045,26 +11638,26 @@ __metadata: languageName: node linkType: hard -"@react-native/eslint-config@npm:^0.81.1": - version: 0.81.4 - resolution: "@react-native/eslint-config@npm:0.81.4" +"@react-native/eslint-config@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/eslint-config@npm:0.82.0" dependencies: "@babel/core": ^7.25.2 "@babel/eslint-parser": ^7.25.1 - "@react-native/eslint-plugin": 0.81.4 - "@typescript-eslint/eslint-plugin": ^7.1.1 - "@typescript-eslint/parser": ^7.1.1 + "@react-native/eslint-plugin": 0.82.0 + "@typescript-eslint/eslint-plugin": ^8.36.0 + "@typescript-eslint/parser": ^8.36.0 eslint-config-prettier: ^8.5.0 eslint-plugin-eslint-comments: ^3.2.0 eslint-plugin-ft-flow: ^2.0.1 - eslint-plugin-jest: ^27.9.0 + eslint-plugin-jest: ^29.0.1 eslint-plugin-react: ^7.30.1 eslint-plugin-react-hooks: ^5.2.0 eslint-plugin-react-native: ^4.0.0 peerDependencies: eslint: ">=8" prettier: ">=2" - checksum: e601fe1298710557916a0ab3c32975ab0e65319c78edaca7369eded6eea4f94ab4a00c1eafd437f93a82baa93cdfbd2a930ceb1b82b4a2e92f51d490184dd1b1 + checksum: 2728a97fa1f784e3ee154e3a00b3b08821cd8d2fef9354a58508076be98be43bd8f8084e95c6a8e23654e583990cb5bcedc70fb10608b63220168ea9176c0c90 languageName: node linkType: hard @@ -13075,10 +11668,10 @@ __metadata: languageName: node linkType: hard -"@react-native/eslint-plugin@npm:0.81.4": - version: 0.81.4 - resolution: "@react-native/eslint-plugin@npm:0.81.4" - checksum: e9c3ada247dfa410ae5f0ed20fb12ec79193a1140ec643d2cf822d472f7951e51247b4b235924faef0763efed73432dcfb203fd4af3c7abd8ccc10442efa6c31 +"@react-native/eslint-plugin@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/eslint-plugin@npm:0.82.0" + checksum: b456cde2911a90745ab811a577535a4c8afe602ff4f706dce6812fd5c2d5de7d2e426e2fc240aac405675065fc622983db83c657f54ca33eeda6d6c6440d8cdc languageName: node linkType: hard @@ -13089,6 +11682,13 @@ __metadata: languageName: node linkType: hard +"@react-native/gradle-plugin@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/gradle-plugin@npm:0.82.0" + checksum: 58cf9e293a4c8b038d262d0e8b1a3c0800793e3103ce0c0437f23318c3ea1a8aeea1747b506edbd4a450fa2b7b0fe5d7501a2e69cd74459ac418f785cf6acca4 + languageName: node + linkType: hard + "@react-native/js-polyfills@npm:0.79.5": version: 0.79.5 resolution: "@react-native/js-polyfills@npm:0.79.5" @@ -13096,6 +11696,13 @@ __metadata: languageName: node linkType: hard +"@react-native/js-polyfills@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/js-polyfills@npm:0.82.0" + checksum: 364a8711a888e0cedf9b624eb594ddcd7e84c7bee63e7e46d7986c8306e91f4ad6673d562ba620ad3267f6d297d9c4a3a0c27e27d5eadd72ba2c14b5aeb3faa9 + languageName: node + linkType: hard + "@react-native/metro-babel-transformer@npm:0.79.5": version: 0.79.5 resolution: "@react-native/metro-babel-transformer@npm:0.79.5" @@ -13136,6 +11743,13 @@ __metadata: languageName: node linkType: hard +"@react-native/normalize-colors@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/normalize-colors@npm:0.82.0" + checksum: 850d79cc62b2230d374aa764e7d550dbeb30f32de1e7c5153a06c9b9231fa87c6331c627831a98469c3c3a3dbbec3a48096c9c78d91da6f12c36fc7acbd62f40 + languageName: node + linkType: hard + "@react-native/normalize-colors@npm:^0.73.0": version: 0.73.2 resolution: "@react-native/normalize-colors@npm:0.73.2" @@ -13167,6 +11781,23 @@ __metadata: languageName: node linkType: hard +"@react-native/virtualized-lists@npm:0.82.0": + version: 0.82.0 + resolution: "@react-native/virtualized-lists@npm:0.82.0" + dependencies: + invariant: ^2.2.4 + nullthrows: ^1.1.1 + peerDependencies: + "@types/react": ^19.1.1 + react: "*" + react-native: "*" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 5188b5d6163aad7dd5f635df940c06702035978b41e69fcb5341e8c8c73f4d8805ff927897512a237416ab71295bac93defd15bed4b0864339a2a32506c9e6a2 + languageName: node + linkType: hard + "@react-navigation/bottom-tabs@npm:7.4.7": version: 7.4.7 resolution: "@react-navigation/bottom-tabs@npm:7.4.7" @@ -13353,21 +11984,6 @@ __metadata: languageName: node linkType: hard -"@release-it/conventional-changelog@npm:^10.0.1": - version: 10.0.1 - resolution: "@release-it/conventional-changelog@npm:10.0.1" - dependencies: - concat-stream: ^2.0.0 - conventional-changelog: ^6.0.0 - conventional-recommended-bump: ^10.0.0 - git-semver-tags: ^8.0.0 - semver: ^7.6.3 - peerDependencies: - release-it: ^18.0.0 || ^19.0.0 - checksum: 9b8a90b3ceaee172cdfb0de248af62182d78966fe43b7d965566513423b5e96e1f1a95849e3a5b2cfc6d06d19ffc64b580aabdfbbbe50e8e491593cd03033016 - languageName: node - linkType: hard - "@reown/walletkit@npm:1.0.0": version: 1.0.0 resolution: "@reown/walletkit@npm:1.0.0" @@ -13839,13 +12455,6 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/merge-streams@npm:^2.1.0": - version: 2.3.0 - resolution: "@sindresorhus/merge-streams@npm:2.3.0" - checksum: e989d53dee68d7e49b4ac02ae49178d561c461144cea83f66fa91ff012d981ad0ad2340cbd13f2fdb57989197f5c987ca22a74eb56478626f04e79df84291159 - languageName: node - linkType: hard - "@sindresorhus/merge-streams@npm:^4.0.0": version: 4.0.0 resolution: "@sindresorhus/merge-streams@npm:4.0.0" @@ -15473,15 +14082,6 @@ __metadata: languageName: node linkType: hard -"@types/conventional-commits-parser@npm:^5.0.0": - version: 5.0.1 - resolution: "@types/conventional-commits-parser@npm:5.0.1" - dependencies: - "@types/node": "*" - checksum: b4eb4f22051d42e7ed9fd3bffe6ea0cf62ae493a3c6c775a16babbad977c934f4c09ec3fa93020894de2073d63cfcd3a27dd5f00984966161da6797dd88a0f0d - languageName: node - linkType: hard - "@types/cookie@npm:^0.4.1": version: 0.4.1 resolution: "@types/cookie@npm:0.4.1" @@ -15929,16 +14529,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.14": - version: 29.5.14 - resolution: "@types/jest@npm:29.5.14" - dependencies: - expect: ^29.0.0 - pretty-format: ^29.0.0 - checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 - languageName: node - linkType: hard - "@types/js-levenshtein@npm:^1.1.1": version: 1.1.3 resolution: "@types/js-levenshtein@npm:1.1.3" @@ -15946,13 +14536,6 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.15": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 - languageName: node - linkType: hard - "@types/json-schema@npm:^7.0.9": version: 7.0.14 resolution: "@types/json-schema@npm:7.0.14" @@ -16123,7 +14706,7 @@ __metadata: languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1, @types/normalize-package-data@npm:^2.4.3": +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": version: 2.4.4 resolution: "@types/normalize-package-data@npm:2.4.4" checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05 @@ -16137,13 +14720,6 @@ __metadata: languageName: node linkType: hard -"@types/parse-path@npm:^7.0.0": - version: 7.0.3 - resolution: "@types/parse-path@npm:7.0.3" - checksum: 21a12c228d38f5a75659dfd7cb127dc2001ed3f6acbd1b2e0575d1348c735594c0bab06a97fe849c151438384829f20ea5971cb045f7ecd37d53c76a9fcb9de3 - languageName: node - linkType: hard - "@types/pbkdf2@npm:^3.0.0": version: 3.1.2 resolution: "@types/pbkdf2@npm:3.1.2" @@ -16231,13 +14807,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.5.5": - version: 7.7.1 - resolution: "@types/semver@npm:7.7.1" - checksum: 76d218e414482a398148d5c28f2bfa017108869f3fc18cda379c9d8d062348f8b9653ae2fa8642d3b5b52e211928fe8be34f22da4e1f08245c84e0e51e040673 - languageName: node - linkType: hard - "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -16439,6 +15008,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:^8.36.0": + version: 8.47.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.47.0" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.47.0 + "@typescript-eslint/type-utils": 8.47.0 + "@typescript-eslint/utils": 8.47.0 + "@typescript-eslint/visitor-keys": 8.47.0 + graphemer: ^1.4.0 + ignore: ^7.0.0 + natural-compare: ^1.4.0 + ts-api-utils: ^2.1.0 + peerDependencies: + "@typescript-eslint/parser": ^8.47.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 25dbfcce58db2cbebf427fdb46e57ff044f7f619688ad290c3910229779dfab26d663212e5b2afab313e8e5e4e2c747685b6707be6bfdef3a8bf954f8fab0eec + languageName: node + linkType: hard + "@typescript-eslint/experimental-utils@npm:^5.0.0": version: 5.62.0 resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" @@ -16485,6 +15075,35 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:^8.36.0": + version: 8.47.0 + resolution: "@typescript-eslint/parser@npm:8.47.0" + dependencies: + "@typescript-eslint/scope-manager": 8.47.0 + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/typescript-estree": 8.47.0 + "@typescript-eslint/visitor-keys": 8.47.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 4fa175b24364f2e894494074fbcdd525e02e39ab1f4d89a95407a822177a2a4e9e75108f747cbda158245c10d61a30bae11583ab4b515df9abbee2551ee468a4 + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/project-service@npm:8.47.0" + dependencies: + "@typescript-eslint/tsconfig-utils": ^8.47.0 + "@typescript-eslint/types": ^8.47.0 + debug: ^4.3.4 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 3e001f98da9df74b7720a75d8cd32d6cf9e15ef57541256f9ec83ae583777994bf267a36e332e05f1c00d7a8d794337e7264d8072e609327364891c10ef94437 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/scope-manager@npm:5.62.0" @@ -16515,6 +15134,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/scope-manager@npm:8.47.0" + dependencies: + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/visitor-keys": 8.47.0 + checksum: 4df9033db772ee211ecf967dad3cf970167cf71e69061690412321d9677043bfb4fb58cbf9e83ffdb25ffbfa714accff7c92f1cdac87cfab376e1f5204b48492 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.47.0, @typescript-eslint/tsconfig-utils@npm:^8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.47.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: dd1e4868d3ea1f4d0f583310e388ab191c0845f43eca4529e7cc9088b6dc58529eee2be3fb1b0a11d4b50f63fa6d212ff921fa58c7aa5ac44129e2caed1998ab + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/type-utils@npm:5.62.0" @@ -16549,6 +15187,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/type-utils@npm:8.47.0" + dependencies: + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/typescript-estree": 8.47.0 + "@typescript-eslint/utils": 8.47.0 + debug: ^4.3.4 + ts-api-utils: ^2.1.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 975655a484750be4c6dabac9fc420916dfa9697a9de921e8f76dc17f3b73e270df6b3d9a9550847b7f94a80842756e4b058bf57ad4420f78fdff022d0e10f217 + languageName: node + linkType: hard + "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" @@ -16570,6 +15224,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.47.0, @typescript-eslint/types@npm:^8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/types@npm:8.47.0" + checksum: 2818d17d2cf383c94f6870a8d4db2be9ec8b41988d58c91fcc9b13af11ec08600a40223c09920cd2e82d1ef5596eb4d9565da1d1b66e0e5967e602b9fb06a335 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" @@ -16626,6 +15287,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.47.0" + dependencies: + "@typescript-eslint/project-service": 8.47.0 + "@typescript-eslint/tsconfig-utils": 8.47.0 + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/visitor-keys": 8.47.0 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^2.1.0 + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: c8d06cc086d4848325513930c759eacb958bc58b3a10124dfe9883e798e8057217e2329975a02c585cb34f91b157171e3d47aa32b82011b5981cf90a9992c7b3 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.62.0, @typescript-eslint/utils@npm:^5.10.0": version: 5.62.0 resolution: "@typescript-eslint/utils@npm:5.62.0" @@ -16658,6 +15339,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.47.0, @typescript-eslint/utils@npm:^8.0.0": + version: 8.47.0 + resolution: "@typescript-eslint/utils@npm:8.47.0" + dependencies: + "@eslint-community/eslint-utils": ^4.7.0 + "@typescript-eslint/scope-manager": 8.47.0 + "@typescript-eslint/types": 8.47.0 + "@typescript-eslint/typescript-estree": 8.47.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 43939de12e12781563c2c679be242786690ec78f2562fcbda96e9cb51f8fc4d6cd9fbb80f871b616d059945c6ef7a54bd942652b56eb23207dc1e7ac55910e83 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.3.0": version: 8.3.0 resolution: "@typescript-eslint/utils@npm:8.3.0" @@ -16702,6 +15398,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.47.0": + version: 8.47.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.47.0" + dependencies: + "@typescript-eslint/types": 8.47.0 + eslint-visitor-keys: ^4.2.1 + checksum: 6aa9234bbe6b44fc9d11304f4f78cf77768d2d8fb2bce5f67132c257b8b1aff569295045eb3cefef6943ede71b305ba109fcdb7170d7276861b5cbbcd8309dae + languageName: node + linkType: hard + "@ungap/structured-clone@npm:^1.3.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" @@ -17530,18 +16236,6 @@ __metadata: languageName: node linkType: hard -"JSONStream@npm:^1.3.5": - version: 1.3.5 - resolution: "JSONStream@npm:1.3.5" - dependencies: - jsonparse: ^1.2.0 - through: ">=2.2.7 <3" - bin: - JSONStream: ./bin.js - checksum: 2605fa124260c61bad38bb65eba30d2f72216a78e94d0ab19b11b4e0327d572b8d530c0c9cc3b0764f727ad26d39e00bf7ebad57781ca6368394d73169c59e46 - languageName: node - linkType: hard - "abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -17700,15 +16394,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" - bin: - acorn: bin/acorn - checksum: 309c6b49aedf1a2e34aaf266de06de04aab6eb097c02375c66fdeb0f64556a6a823540409914fb364d9a11bc30d79d485a2eba29af47992d3490e9886c4391c3 - languageName: node - linkType: hard - "acorn@npm:^8.4.1": version: 8.11.2 resolution: "acorn@npm:8.11.2" @@ -17738,13 +16423,6 @@ __metadata: languageName: node linkType: hard -"add-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "add-stream@npm:1.0.0" - checksum: 3e9e8b0b8f0170406d7c3a9a39bfbdf419ccccb0fd2a396338c0fda0a339af73bf738ad414fc520741de74517acf0dd92b4a36fd3298a47fd5371eee8f2c5a06 - languageName: node - linkType: hard - "aes-js@npm:4.0.0-beta.5": version: 4.0.0-beta.5 resolution: "aes-js@npm:4.0.0-beta.5" @@ -18557,17 +17235,6 @@ __metadata: languageName: node linkType: hard -"arktype@npm:^2.1.15": - version: 2.1.23 - resolution: "arktype@npm:2.1.23" - dependencies: - "@ark/regex": 0.0.0 - "@ark/schema": 0.50.0 - "@ark/util": 0.50.0 - checksum: 5874ef1c0140aff0a99cd88537e11851b4d0a1a49ee7b097eb766c941f9de6bbd04427bbda8023c69171db0ee02c7d99f08e59114b63fa83a93c4130964fb616 - languageName: node - linkType: hard - "arr-union@npm:^3.1.0": version: 3.1.0 resolution: "arr-union@npm:3.1.0" @@ -18619,13 +17286,6 @@ __metadata: languageName: node linkType: hard -"array-ify@npm:^1.0.0": - version: 1.0.0 - resolution: "array-ify@npm:1.0.0" - checksum: c0502015b319c93dd4484f18036bcc4b654eb76a4aa1f04afbcef11ac918859bb1f5d71ba1f0f1141770db9eef1a4f40f1761753650873068010bbf7bcdae4a4 - languageName: node - linkType: hard - "array-includes@npm:^3.1.6": version: 3.1.7 resolution: "array-includes@npm:3.1.7" @@ -18869,15 +17529,6 @@ __metadata: languageName: node linkType: hard -"async-retry@npm:1.3.3": - version: 1.3.3 - resolution: "async-retry@npm:1.3.3" - dependencies: - retry: 0.13.1 - checksum: 38a7152ff7265a9321ea214b9c69e8224ab1febbdec98efbbde6e562f17ff68405569b796b1c5271f354aef8783665d29953f051f68c1fc45306e61aec82fdc4 - languageName: node - linkType: hard - "async@npm:^2.6.0": version: 2.6.4 resolution: "async@npm:2.6.4" @@ -19014,17 +17665,6 @@ __metadata: languageName: node linkType: hard -"axios@npm:1.12.1": - version: 1.12.1 - resolution: "axios@npm:1.12.1" - dependencies: - follow-redirects: ^1.15.6 - form-data: ^4.0.4 - proxy-from-env: ^1.1.0 - checksum: 5160cf4e319ecd22de2bc4ad263881b5fb4cea1dfd9b8032ce349609fff041e0434f14e72bf2571b37ea88d1860f3456a95f3f40f2c14e84edfb6e81e5f27c4d - languageName: node - linkType: hard - "axios@npm:1.12.2": version: 1.12.2 resolution: "axios@npm:1.12.2" @@ -19221,19 +17861,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.14": - version: 0.4.14 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" - dependencies: - "@babel/compat-data": ^7.27.7 - "@babel/helper-define-polyfill-provider": ^0.6.5 - semver: ^6.3.1 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: d654334c1b4390d08282416144b7b6f3d74d2cab44b2bfa2b6405c828882c82907b8b67698dce1be046c218d2d4fe5bf7fb6d01879938f3129dad969e8cfc44d - languageName: node - linkType: hard - "babel-plugin-polyfill-corejs3@npm:^0.10.6": version: 0.10.6 resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" @@ -19246,18 +17873,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.13.0": - version: 0.13.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.13.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.6.5 - core-js-compat: ^3.43.0 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: cf526031acd97ff2124e7c10e15047e6eeb0620d029c687f1dca99916a8fe6cac0e634b84c913db6cb68b7a024f82492ba8fdcc2a6266e7b05bdac2cba0c2434 - languageName: node - linkType: hard - "babel-plugin-polyfill-regenerator@npm:^0.6.1": version: 0.6.2 resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" @@ -19269,17 +17884,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.5": - version: 0.6.5 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.6.5 - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb - languageName: node - linkType: hard - "babel-plugin-react-compiler@npm:latest": version: 1.0.0 resolution: "babel-plugin-react-compiler@npm:1.0.0" @@ -19312,21 +17916,12 @@ __metadata: languageName: node linkType: hard -"babel-plugin-syntax-hermes-parser@npm:0.29.1": - version: 0.29.1 - resolution: "babel-plugin-syntax-hermes-parser@npm:0.29.1" - dependencies: - hermes-parser: 0.29.1 - checksum: bbb1eed253b4255f8c572e1cb2664868d9aa2238363e48a2d1e95e952b2c1d59e86a7051f44956407484df2c9bc6623608740eec10e2095946d241b795262cec - languageName: node - linkType: hard - -"babel-plugin-syntax-hermes-parser@npm:^0.28.0": - version: 0.28.1 - resolution: "babel-plugin-syntax-hermes-parser@npm:0.28.1" +"babel-plugin-syntax-hermes-parser@npm:0.32.0": + version: 0.32.0 + resolution: "babel-plugin-syntax-hermes-parser@npm:0.32.0" dependencies: - hermes-parser: 0.28.1 - checksum: 2cbc921e663463480ead9ccc8bb229a5196032367ba2b5ccb18a44faa3afa84b4dc493297749983b9a837a3d76b0b123664aecc06f9122618c3246f03e076a9d + hermes-parser: 0.32.0 + checksum: ec76abeefabf940e2d571db3b47d022a9be7602286133291e8e047d4855af6a8afc079e4631bc9a56209d751fad54b5199932a55753b1e2b56a719d20e2d5065 languageName: node linkType: hard @@ -19624,15 +18219,6 @@ __metadata: languageName: node linkType: hard -"baseline-browser-mapping@npm:^2.8.9": - version: 2.8.17 - resolution: "baseline-browser-mapping@npm:2.8.17" - bin: - baseline-browser-mapping: dist/cli.js - checksum: 2ff31d36b475b628b551e0b29b2fb1ac36f903b99392da4da208ef718beefdc659b24b612a2922664fcffa1fc9bf733bb52d2e29756dcf09c54d764c64f0b964 - languageName: node - linkType: hard - "basic-auth@npm:~2.0.1": version: 2.0.1 resolution: "basic-auth@npm:2.0.1" @@ -19672,13 +18258,6 @@ __metadata: languageName: node linkType: hard -"before-after-hook@npm:^4.0.0": - version: 4.0.0 - resolution: "before-after-hook@npm:4.0.0" - checksum: a8cbd4d3c48f42f44307ef5966be152b836d2e5908834f2f885ddf104c2e2ba66dbb5e6ef89a37e77371b1d22d5c75b74df1472286c684a037c1a6db43f5617b - languageName: node - linkType: hard - "better-opn@npm:~3.0.2": version: 3.0.2 resolution: "better-opn@npm:3.0.2" @@ -20078,21 +18657,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.4, browserslist@npm:^4.26.3": - version: 4.26.3 - resolution: "browserslist@npm:4.26.3" - dependencies: - baseline-browser-mapping: ^2.8.9 - caniuse-lite: ^1.0.30001746 - electron-to-chromium: ^1.5.227 - node-releases: ^2.0.21 - update-browserslist-db: ^1.1.3 - bin: - browserslist: cli.js - checksum: aa5bbcda9db1eeb9952b4c2f11f9a5a2247da7bcce7fa14d3cc215e67246a93394eda2f86378a41c3f73e6e1a1561bf0e7eade93c5392cb6d37bc66f70d0c53f - languageName: node - linkType: hard - "browserslist@npm:^4.21.9": version: 4.22.1 resolution: "browserslist@npm:4.22.1" @@ -20280,15 +18844,6 @@ __metadata: languageName: node linkType: hard -"bundle-name@npm:^4.1.0": - version: 4.1.0 - resolution: "bundle-name@npm:4.1.0" - dependencies: - run-applescript: ^7.0.0 - checksum: 1d966c8d2dbf4d9d394e53b724ac756c2414c45c01340b37743621f59cc565a435024b394ddcb62b9b335d1c9a31f4640eb648c3fec7f97ee74dc0694c9beb6c - languageName: node - linkType: hard - "bunyamin@npm:^1.5.2": version: 1.6.2 resolution: "bunyamin@npm:1.6.2" @@ -20374,31 +18929,6 @@ __metadata: languageName: node linkType: hard -"c12@npm:3.3.0": - version: 3.3.0 - resolution: "c12@npm:3.3.0" - dependencies: - chokidar: ^4.0.3 - confbox: ^0.2.2 - defu: ^6.1.4 - dotenv: ^17.2.2 - exsolve: ^1.0.7 - giget: ^2.0.0 - jiti: ^2.5.1 - ohash: ^2.0.11 - pathe: ^2.0.3 - perfect-debounce: ^2.0.0 - pkg-types: ^2.3.0 - rc9: ^2.1.2 - peerDependencies: - magicast: ^0.3.5 - peerDependenciesMeta: - magicast: - optional: true - checksum: ec8ca3d5ee15a9e59008350cd1a2120f3bd9fd8c720486c3490d5bcf5c6b2de49b74737211623d5ae7afc4be7f122ee004277fdff7f677d9aac26123e7a6ab6f - languageName: node - linkType: hard - "cacache@npm:^17.0.0": version: 17.1.4 resolution: "cacache@npm:17.1.4" @@ -20605,13 +19135,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001746": - version: 1.0.30001751 - resolution: "caniuse-lite@npm:1.0.30001751" - checksum: d11e25c44e40c21e7b7492a25c9fd60f4c04e94aa265573f7c487666f5e1b5ca3ed09d09560336f959237063616255cb294d415511bb6cf0486eb2cb6a3a4318 - languageName: node - linkType: hard - "canvaskit-wasm@npm:0.40.0": version: 0.40.0 resolution: "canvaskit-wasm@npm:0.40.0" @@ -20665,7 +19188,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.0.1, chalk@npm:^5.1.2, chalk@npm:^5.4.1, chalk@npm:^5.6.2": +"chalk@npm:^5.0.1, chalk@npm:^5.1.2, chalk@npm:^5.4.1": version: 5.6.2 resolution: "chalk@npm:5.6.2" checksum: 4ee2d47a626d79ca27cb5299ecdcce840ef5755e287412536522344db0fc51ca0f6d6433202332c29e2288c6a90a2b31f3bd626bc8c14743b6b6ee28abd3b796 @@ -20785,7 +19308,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1, chokidar@npm:^4.0.3": +"chokidar@npm:^4.0.0, chokidar@npm:^4.0.1": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -20864,13 +19387,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.3.0": - version: 4.3.1 - resolution: "ci-info@npm:4.3.1" - checksum: 66c159d92648e8a07acab0a3a0681bff6ccc39aa44916263208c4d97bbbeedbbc886d7611fd30c21df1aa624ce3c6fcdfde982e74689e3e014e064e1d0805f94 - languageName: node - linkType: hard - "cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": version: 1.0.4 resolution: "cipher-base@npm:1.0.4" @@ -20890,15 +19406,6 @@ __metadata: languageName: node linkType: hard -"citty@npm:^0.1.6": - version: 0.1.6 - resolution: "citty@npm:0.1.6" - dependencies: - consola: ^3.2.3 - checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.2.3 resolution: "cjs-module-lexer@npm:1.2.3" @@ -20954,13 +19461,6 @@ __metadata: languageName: node linkType: hard -"cli-spinners@npm:^3.2.0": - version: 3.3.0 - resolution: "cli-spinners@npm:3.3.0" - checksum: c3b9c31d96c9158f4d7140557fffb8c1caea2169d7b895374dd3c2f159267aa0db3b72f36bfcc3bbe3532a7ed162d07dc5c0dc3117e1c0dfe4d387e1d723d616 - languageName: node - linkType: hard - "cli-truncate@npm:^4.0.0": version: 4.0.0 resolution: "cli-truncate@npm:4.0.0" @@ -21314,18 +19814,6 @@ __metadata: languageName: node linkType: hard -"commitlint@npm:^19.8.1": - version: 19.8.1 - resolution: "commitlint@npm:19.8.1" - dependencies: - "@commitlint/cli": ^19.8.1 - "@commitlint/types": ^19.8.1 - bin: - commitlint: cli.js - checksum: 23e9a34b074361ec66c89573b1eba3ab65e7fe8044e22c3f044db87071817d8fe32e9e63313703c65385f5db1ab8e204eb2b3fa5e5a9481bc2fdef56eab478c1 - languageName: node - linkType: hard - "common-path-prefix@npm:^3.0.0": version: 3.0.0 resolution: "common-path-prefix@npm:3.0.0" @@ -21340,16 +19828,6 @@ __metadata: languageName: node linkType: hard -"compare-func@npm:^2.0.0": - version: 2.0.0 - resolution: "compare-func@npm:2.0.0" - dependencies: - array-ify: ^1.0.0 - dot-prop: ^5.1.0 - checksum: fb71d70632baa1e93283cf9d80f30ac97f003aabee026e0b4426c9716678079ef5fea7519b84d012cbed938c476493866a38a79760564a9e21ae9433e40e6f0d - languageName: node - linkType: hard - "compare-versions@npm:^6.0.0": version: 6.1.1 resolution: "compare-versions@npm:6.1.1" @@ -21425,25 +19903,6 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "concat-stream@npm:2.0.0" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^3.0.2 - typedarray: ^0.0.6 - checksum: d7f75d48f0ecd356c1545d87e22f57b488172811b1181d96021c7c4b14ab8855f5313280263dca44bb06e5222f274d047da3e290a38841ef87b59719bde967c7 - languageName: node - linkType: hard - -"confbox@npm:^0.2.2": - version: 0.2.2 - resolution: "confbox@npm:0.2.2" - checksum: 335bc40d58f2785d2f8c5d45f0224e160dd634d42984ecf75b06addb6fe5f9584502ac9845d6f08f8ec066c8a796fd8b3c9ae9e8c7735047aa141d0e83469ab4 - languageName: node - linkType: hard - "connect@npm:^3.6.5, connect@npm:^3.7.0": version: 3.7.0 resolution: "connect@npm:3.7.0" @@ -21456,7 +19915,7 @@ __metadata: languageName: node linkType: hard -"consola@npm:3.4.2, consola@npm:^3.4.0, consola@npm:^3.4.2": +"consola@npm:3.4.2": version: 3.4.2 resolution: "consola@npm:3.4.2" checksum: 32d1339e0505842f033ca34cb4572a841281caa367f438b785d3b284ab2a06134f009e605908480402c5f57f56c1e3210090c37e6417923416f76ce730d39361 @@ -21493,198 +19952,6 @@ __metadata: languageName: node linkType: hard -"conventional-changelog-angular@npm:^7.0.0": - version: 7.0.0 - resolution: "conventional-changelog-angular@npm:7.0.0" - dependencies: - compare-func: ^2.0.0 - checksum: 2478962ad7ce42878449ba3568347d704f22c5c9af1cd36916b5600734bd7f82c09712a338c649195c44e907f1b0372ce52d6cb51df643f495c89af05ad4bc48 - languageName: node - linkType: hard - -"conventional-changelog-angular@npm:^8.0.0": - version: 8.0.0 - resolution: "conventional-changelog-angular@npm:8.0.0" - dependencies: - compare-func: ^2.0.0 - checksum: 71f492cb4dccd46174430517177054be2e2097f1264c55419a79aa94fe4d163f98aeab7da6836473470fbfc920051a9554f46498989bdd6438648c2d7e32b42c - languageName: node - linkType: hard - -"conventional-changelog-atom@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-atom@npm:5.0.0" - checksum: bc35ec5476b81544b534c3e31ff3a8f59b6484c3fd34c93303e6709c83870ea7f6923e0b97052bbbc118d4cc2d3de4501e9120c9704ff40e86c70e8831040610 - languageName: node - linkType: hard - -"conventional-changelog-codemirror@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-codemirror@npm:5.0.0" - checksum: babb18b6cfc0609b8af5ba679b8c11bdb0efad68b2401e0c014df38f195ebed27a6c16d55ca07081aeae0121dd7293544acf341de6dd3f54ea6bd90a2fbf410a - languageName: node - linkType: hard - -"conventional-changelog-conventionalcommits@npm:^7.0.2": - version: 7.0.2 - resolution: "conventional-changelog-conventionalcommits@npm:7.0.2" - dependencies: - compare-func: ^2.0.0 - checksum: e17ac5970ae09d6e9b0c3a7edaed075b836c0c09c34c514589cbe06554f46ed525067fa8150a8467cc03b1cf9af2073e7ecf48790d4f5ea399921b1cbe313711 - languageName: node - linkType: hard - -"conventional-changelog-conventionalcommits@npm:^8.0.0": - version: 8.0.0 - resolution: "conventional-changelog-conventionalcommits@npm:8.0.0" - dependencies: - compare-func: ^2.0.0 - checksum: af80a3294ec833b6ca6b13874c275952391319dd0ebb771dbcf0b837a2f8504c197e894a3fc5def44574a04daa038a94cae8d00f8222e843bc788b6911a1eff4 - languageName: node - linkType: hard - -"conventional-changelog-core@npm:^8.0.0": - version: 8.0.0 - resolution: "conventional-changelog-core@npm:8.0.0" - dependencies: - "@hutson/parse-repository-url": ^5.0.0 - add-stream: ^1.0.0 - conventional-changelog-writer: ^8.0.0 - conventional-commits-parser: ^6.0.0 - git-raw-commits: ^5.0.0 - git-semver-tags: ^8.0.0 - hosted-git-info: ^7.0.0 - normalize-package-data: ^6.0.0 - read-package-up: ^11.0.0 - read-pkg: ^9.0.0 - checksum: ca295a0c68592fbdd80149a496ccddf4f4e852e88f60826213c22a34c05c825984ce6d305082467268887629aeb4abae0f00e724420896090c78475661dfccda - languageName: node - linkType: hard - -"conventional-changelog-ember@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-ember@npm:5.0.0" - checksum: a1476f149424dbc5b60420c41c1c1691a5b0e86448dca9f86c91474ee54ac404d3d59b3e75beb43da4db3c696a4189366f67c2431c6d8dc2276fad0d2f327a67 - languageName: node - linkType: hard - -"conventional-changelog-eslint@npm:^6.0.0": - version: 6.0.0 - resolution: "conventional-changelog-eslint@npm:6.0.0" - checksum: e508b44ab2acc32430a0ea75a724285eed5034fecade77f9e5aa89a176d31c3ed4cf2d54a111a8cfe0f99bd69e1aeb2a046eeddc7e035605976d4cf61d6ab911 - languageName: node - linkType: hard - -"conventional-changelog-express@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-express@npm:5.0.0" - checksum: f344f057a8756a99637029b912d2c0eb569b68e34983e8948c790bb4bfef40758b2760c0ab720b3943354da3fa76d3d77d8f42f4f4564e07240b574c3bad5d6c - languageName: node - linkType: hard - -"conventional-changelog-jquery@npm:^6.0.0": - version: 6.0.0 - resolution: "conventional-changelog-jquery@npm:6.0.0" - checksum: 845134cf5d15c455f84ac9425c7307608aaa44cc5c27abf2849a35c86c62cc7134307fa67bc412aee0c1d0ef42335423c18aca66a95119c971d9c5b4a1f44c42 - languageName: node - linkType: hard - -"conventional-changelog-jshint@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-jshint@npm:5.0.0" - dependencies: - compare-func: ^2.0.0 - checksum: 9db03b16610f2fbc448646cbb23f1ee28704ffa1175279ee39d51e8e0010bb82000385e662633900220f6834ad84b1ecf8ccbdebcf4ae0d7710a5599de9b0d52 - languageName: node - linkType: hard - -"conventional-changelog-preset-loader@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-changelog-preset-loader@npm:5.0.0" - checksum: 7630c2826b43f8f546f0575b46d3eb8c2ac2b5bcfae60b7d1186e9a87f07b7a689d9463afc125a40ab84a030574c9ce7965dd96e6506323e5a7d1ac2b9f2df19 - languageName: node - linkType: hard - -"conventional-changelog-writer@npm:^8.0.0": - version: 8.2.0 - resolution: "conventional-changelog-writer@npm:8.2.0" - dependencies: - conventional-commits-filter: ^5.0.0 - handlebars: ^4.7.7 - meow: ^13.0.0 - semver: ^7.5.2 - bin: - conventional-changelog-writer: dist/cli/index.js - checksum: 0a7b62fdc06dbe3e8f0feff2c51295ebc03d8046db73111b3c6a595472885551adf9ef2eeb741c43794466e58c1f23a055160c8aef08cacfe769b86ea2b7c611 - languageName: node - linkType: hard - -"conventional-changelog@npm:^6.0.0": - version: 6.0.0 - resolution: "conventional-changelog@npm:6.0.0" - dependencies: - conventional-changelog-angular: ^8.0.0 - conventional-changelog-atom: ^5.0.0 - conventional-changelog-codemirror: ^5.0.0 - conventional-changelog-conventionalcommits: ^8.0.0 - conventional-changelog-core: ^8.0.0 - conventional-changelog-ember: ^5.0.0 - conventional-changelog-eslint: ^6.0.0 - conventional-changelog-express: ^5.0.0 - conventional-changelog-jquery: ^6.0.0 - conventional-changelog-jshint: ^5.0.0 - conventional-changelog-preset-loader: ^5.0.0 - checksum: 78a2a74a19385e45ea69a9ef410de7cc9627cb2bada8b26850ff55999dfc3e5600138ee636dbd0c17159dcdcd81499b64d557d34dfb641d82d1b0d107c684c10 - languageName: node - linkType: hard - -"conventional-commits-filter@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-commits-filter@npm:5.0.0" - checksum: 2345546ea9e40412558d508311d7729b38f8d4c0fd554837c10721a432e8598ec1152320f6b601a9c11c023a31bccbb5a12067736b2227de8591f4de707e11a7 - languageName: node - linkType: hard - -"conventional-commits-parser@npm:^5.0.0": - version: 5.0.0 - resolution: "conventional-commits-parser@npm:5.0.0" - dependencies: - JSONStream: ^1.3.5 - is-text-path: ^2.0.0 - meow: ^12.0.1 - split2: ^4.0.0 - bin: - conventional-commits-parser: cli.mjs - checksum: bb92a0bfe41802330d2d14ddb0f912fd65dd355f1aa294e708f4891aac95c580919a70580b9f26563c24c3335baaed2ce003104394a8fa5ba61eeb3889e45df0 - languageName: node - linkType: hard - -"conventional-commits-parser@npm:^6.0.0": - version: 6.2.0 - resolution: "conventional-commits-parser@npm:6.2.0" - dependencies: - meow: ^13.0.0 - bin: - conventional-commits-parser: dist/cli/index.js - checksum: 57fc957d80d46b575a6ed2b193da8ea84dc85c82c54632ad1de7dcb9f8c22c55bff046827f991944c4bbe446f84b8196dd6b062cd5461f238cf75c719d904e20 - languageName: node - linkType: hard - -"conventional-recommended-bump@npm:^10.0.0": - version: 10.0.0 - resolution: "conventional-recommended-bump@npm:10.0.0" - dependencies: - "@conventional-changelog/git-client": ^1.0.0 - conventional-changelog-preset-loader: ^5.0.0 - conventional-commits-filter: ^5.0.0 - conventional-commits-parser: ^6.0.0 - meow: ^13.0.0 - bin: - conventional-recommended-bump: dist/cli/index.js - checksum: d4a72f48ceec9947bf6f4ae346574262c8c991930a4b8d6d5d43cfd03bcf9531f74200ce60d43a251fd537b5292668f6480c17fe4ed458b4f84418db2be3af85 - languageName: node - linkType: hard - "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -21729,15 +19996,6 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.43.0": - version: 3.46.0 - resolution: "core-js-compat@npm:3.46.0" - dependencies: - browserslist: ^4.26.3 - checksum: 16d381c51e34d38ecc65d429d5a5c1dbd198f70b5a0a6256a3a41dcb8523e07f0a8682f6349298a55ff6e9d039e131d67b07fe863047a28672ae5f10373c57cf - languageName: node - linkType: hard - "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" @@ -21752,19 +20010,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig-typescript-loader@npm:^6.1.0": - version: 6.2.0 - resolution: "cosmiconfig-typescript-loader@npm:6.2.0" - dependencies: - jiti: ^2.6.1 - peerDependencies: - "@types/node": "*" - cosmiconfig: ">=9" - typescript: ">=5" - checksum: 2680bb585de1185aa23ba678cb0426cba1be8fa0a9d286f71c2ce5bd63f23e5b8f726161673a16babb2aa0e7d033fda8774268a025fb63f548d1c75977292212 - languageName: node - linkType: hard - "cosmiconfig@npm:^5.0.5": version: 5.2.1 resolution: "cosmiconfig@npm:5.2.1" @@ -22403,13 +20648,6 @@ __metadata: languageName: node linkType: hard -"dargs@npm:^8.0.0": - version: 8.1.0 - resolution: "dargs@npm:8.1.0" - checksum: 33f1b8f5f08e72c8a28355a87c0e1a9b6a0fec99252ecd9cf4735e65dd5f2e19747c860251ed5747b38e7204c7915fd7a7146aee5aaef5882c69169aae8b1d09 - languageName: node - linkType: hard - "dashdash@npm:^1.12.0": version: 1.14.1 resolution: "dashdash@npm:1.14.1" @@ -22585,7 +20823,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.4.1, debug@npm:^4.4.3": +"debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -22681,13 +20919,6 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 - languageName: node - linkType: hard - "dedent@npm:^1.0.0": version: 1.5.1 resolution: "dedent@npm:1.5.1" @@ -22761,23 +20992,6 @@ __metadata: languageName: node linkType: hard -"default-browser-id@npm:^5.0.0": - version: 5.0.0 - resolution: "default-browser-id@npm:5.0.0" - checksum: 185bfaecec2c75fa423544af722a3469b20704c8d1942794a86e4364fe7d9e8e9f63241a5b769d61c8151993bc65833a5b959026fa1ccea343b3db0a33aa6deb - languageName: node - linkType: hard - -"default-browser@npm:^5.2.1": - version: 5.2.1 - resolution: "default-browser@npm:5.2.1" - dependencies: - bundle-name: ^4.1.0 - default-browser-id: ^5.0.0 - checksum: afab7eff7b7f5f7a94d9114d1ec67273d3fbc539edf8c0f80019879d53aa71e867303c6f6d7cffeb10a6f3cfb59d4f963dba3f9c96830b4540cc7339a1bf9840 - languageName: node - linkType: hard - "defaults@npm:^1.0.3": version: 1.0.4 resolution: "defaults@npm:1.0.4" @@ -22825,13 +21039,6 @@ __metadata: languageName: node linkType: hard -"define-lazy-prop@npm:^3.0.0": - version: 3.0.0 - resolution: "define-lazy-prop@npm:3.0.0" - checksum: 54884f94caac0791bf6395a3ec530ce901cf71c47b0196b8754f3fd17edb6c0e80149c1214429d851873bb0d689dbe08dcedbb2306dc45c8534a5934723851b6 - languageName: node - linkType: hard - "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" @@ -22850,13 +21057,6 @@ __metadata: languageName: node linkType: hard -"defu@npm:^6.1.4": - version: 6.1.4 - resolution: "defu@npm:6.1.4" - checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 - languageName: node - linkType: hard - "degenerator@npm:^5.0.0": version: 5.0.1 resolution: "degenerator@npm:5.0.1" @@ -22868,50 +21068,6 @@ __metadata: languageName: node linkType: hard -"del-cli@npm:^6.0.0": - version: 6.0.0 - resolution: "del-cli@npm:6.0.0" - dependencies: - del: ^8.0.0 - meow: ^13.2.0 - bin: - del: cli.js - del-cli: cli.js - checksum: 83591847823d06a68bd07daa8b92b1092c30ac02acb320b8eff1f265c6ca633657d066070320a7fd7dba3ea4993be32470d557bf33e0ce94e026ee289135eac7 - languageName: node - linkType: hard - -"del@npm:^6.1.1": - version: 6.1.1 - resolution: "del@npm:6.1.1" - dependencies: - globby: ^11.0.1 - graceful-fs: ^4.2.4 - is-glob: ^4.0.1 - is-path-cwd: ^2.2.0 - is-path-inside: ^3.0.2 - p-map: ^4.0.0 - rimraf: ^3.0.2 - slash: ^3.0.0 - checksum: 563288b73b8b19a7261c47fd21a330eeab6e2acd7c6208c49790dfd369127120dd7836cdf0c1eca216b77c94782a81507eac6b4734252d3bef2795cb366996b6 - languageName: node - linkType: hard - -"del@npm:^8.0.0": - version: 8.0.1 - resolution: "del@npm:8.0.1" - dependencies: - globby: ^14.0.2 - is-glob: ^4.0.3 - is-path-cwd: ^3.0.0 - is-path-inside: ^4.0.0 - p-map: ^7.0.2 - presentable-error: ^0.0.1 - slash: ^5.1.0 - checksum: 53ed4a379a68c90e7d6d3bcce09c49229e77de9a946d0a5fc25f45b16c950cb8665986b7d0d0423416c03bfd43e0f31e528c5a19c558fe47449be9d6fae7f846 - languageName: node - linkType: hard - "delaunator@npm:5": version: 5.0.1 resolution: "delaunator@npm:5.0.1" @@ -22985,13 +21141,6 @@ __metadata: languageName: node linkType: hard -"destr@npm:^2.0.3": - version: 2.0.5 - resolution: "destr@npm:2.0.5" - checksum: e6d5b9e922f528527cd98035249b4d34077828debd2be448a33e268ac1f803bd9a53e7cf0f5184ef68a67573b7f0a6033a89913f61eadaf0e180de49b148606e - languageName: node - linkType: hard - "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -23255,15 +21404,6 @@ __metadata: languageName: node linkType: hard -"dot-prop@npm:^5.1.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" - dependencies: - is-obj: ^2.0.0 - checksum: d5775790093c234ef4bfd5fbe40884ff7e6c87573e5339432870616331189f7f5d86575c5b5af2dcf0f61172990f4f734d07844b1f23482fff09e3c4bead05ea - languageName: node - linkType: hard - "dotenv-expand@npm:^10.0.0": version: 10.0.0 resolution: "dotenv-expand@npm:10.0.0" @@ -23294,7 +21434,7 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^17.2.0, dotenv@npm:^17.2.2": +"dotenv@npm:^17.2.0": version: 17.2.3 resolution: "dotenv@npm:17.2.3" checksum: fde23eb88649041ec7a0f6a47bbe59cac3c454fc2007cf2e40b9c984aaf0636347218c56cfbbf067034b0a73f530a2698a19b4058695787eb650ec69fe234624 @@ -23490,13 +21630,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.227": - version: 1.5.237 - resolution: "electron-to-chromium@npm:1.5.237" - checksum: 5905e2808dc6243ced0a83537afbafedec20c063feb6403a678b612a7855d79bc6ecb7d094bdab71f54173cf2ae5d1d8070b0c31572025001c94de62af84f5f8 - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.5.28": version: 1.5.32 resolution: "electron-to-chromium@npm:1.5.32" @@ -24288,7 +22421,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.2, escalade@npm:^3.2.0": +"escalade@npm:^3.1.2": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e @@ -24323,13 +22456,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^5.0.0": - version: 5.0.0 - resolution: "escape-string-regexp@npm:5.0.0" - checksum: 20daabe197f3cb198ec28546deebcf24b3dbb1a5a269184381b3116d12f0532e06007f4bc8da25669d6a7f8efb68db0758df4cd981f57bc5b57f521a3e12c59e - languageName: node - linkType: hard - "escodegen@npm:^2.1.0": version: 2.1.0 resolution: "escodegen@npm:2.1.0" @@ -24541,6 +22667,24 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-jest@npm:^29.0.1": + version: 29.1.0 + resolution: "eslint-plugin-jest@npm:29.1.0" + dependencies: + "@typescript-eslint/utils": ^8.0.0 + peerDependencies: + "@typescript-eslint/eslint-plugin": ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: e66e7e52a35c50307de366166e1e2979cb12356e6033e426008b1bd9b37a466c0856552a6b6c188b3cc6a20790fcd8ea16071f0147fbaed0f68ee3737290c7e0 + languageName: node + linkType: hard + "eslint-plugin-prettier@npm:4.2.1, eslint-plugin-prettier@npm:^4.0.0": version: 4.2.1 resolution: "eslint-plugin-prettier@npm:4.2.1" @@ -24556,23 +22700,23 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:^5.5.4": - version: 5.5.4 - resolution: "eslint-plugin-prettier@npm:5.5.4" +"eslint-plugin-prettier@npm:5.2.1": + version: 5.2.1 + resolution: "eslint-plugin-prettier@npm:5.2.1" dependencies: prettier-linter-helpers: ^1.0.0 - synckit: ^0.11.7 + synckit: ^0.9.1 peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" - eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" + eslint-config-prettier: "*" prettier: ">=3.0.0" peerDependenciesMeta: "@types/eslint": optional: true eslint-config-prettier: optional: true - checksum: 0dd05ed85018ab0e98da80325b7bd4c4ab6dd684398f1270a7c8cf4261df714dd4502ba4c7f85f651aade9989da0a7d2adda03af8873b73b52014141abf385de + checksum: 812f4d1596dcd3a55963212dfbd818a4b38f880741aac75f6869aa740dc5d934060674d3b85d10ff9fec424defa61967dbdef26b8a893a92c9b51880264ed0d9 languageName: node linkType: hard @@ -24793,17 +22937,6 @@ __metadata: languageName: node linkType: hard -"espree@npm:^10.0.1": - version: 10.4.0 - resolution: "espree@npm:10.4.0" - dependencies: - acorn: ^8.15.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^4.2.1 - checksum: 5f9d0d7c81c1bca4bfd29a55270067ff9d575adb8c729a5d7f779c2c7b910bfc68ccf8ec19b29844b707440fc159a83868f22c8e87bbf7cbcb225ed067df6c85 - languageName: node - linkType: hard - "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -24864,13 +22997,6 @@ __metadata: languageName: node linkType: hard -"eta@npm:4.0.1": - version: 4.0.1 - resolution: "eta@npm:4.0.1" - checksum: 8e49f6de198da92739c1bc6b48b67282f7384faa4a89ac3877e4a933f189d8eb4cdce6cb041a9fcf4c3e0e83f63c4102077c43eb77931cad385d581aa993b295 - languageName: node - linkType: hard - "etag@npm:^1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" @@ -25024,23 +23150,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^4.0.3": - version: 4.1.0 - resolution: "execa@npm:4.1.0" - dependencies: - cross-spawn: ^7.0.0 - get-stream: ^5.0.0 - human-signals: ^1.1.1 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.0 - onetime: ^5.1.0 - signal-exit: ^3.0.2 - strip-final-newline: ^2.0.0 - checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 - languageName: node - linkType: hard - "execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" @@ -25058,23 +23167,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^8.0.1, execa@npm:~8.0.1": - version: 8.0.1 - resolution: "execa@npm:8.0.1" - dependencies: - cross-spawn: ^7.0.3 - get-stream: ^8.0.1 - human-signals: ^5.0.0 - is-stream: ^3.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^5.1.0 - onetime: ^6.0.0 - signal-exit: ^4.1.0 - strip-final-newline: ^3.0.0 - checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f - languageName: node - linkType: hard - "execa@npm:^9.6.0": version: 9.6.0 resolution: "execa@npm:9.6.0" @@ -25095,6 +23187,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:~8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^8.0.1 + human-signals: ^5.0.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^4.1.0 + strip-final-newline: ^3.0.0 + checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f + languageName: node + linkType: hard + "exeunt@npm:1.1.0": version: 1.1.0 resolution: "exeunt@npm:1.1.0" @@ -25626,13 +23735,6 @@ __metadata: languageName: node linkType: hard -"exsolve@npm:^1.0.7": - version: 1.0.7 - resolution: "exsolve@npm:1.0.7" - checksum: 3adce048e4b1b08580aaabf38c7f92f78e1a662a1776fc02d7e9500d5ce4a30cd3f8e62206768821aa2c3bc2411a699146ebc5710ccc3d46e91199dbfff89f54 - languageName: node - linkType: hard - "extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -25706,13 +23808,6 @@ __metadata: languageName: node linkType: hard -"fast-content-type-parse@npm:^3.0.0": - version: 3.0.0 - resolution: "fast-content-type-parse@npm:3.0.0" - checksum: 490199423215b8a9c6e24a5a01a0d072af8ebfe24c13deac0a393dcac36b732295dd8cec5a2c4241249ed0fffc6983ba138f3001b13286afefb66360b6715a46 - languageName: node - linkType: hard - "fast-deep-equal@npm:^2.0.1": version: 2.0.1 resolution: "fast-deep-equal@npm:2.0.1" @@ -25774,19 +23869,6 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.3.3": - version: 3.3.3 - resolution: "fast-glob@npm:3.3.3" - dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.8 - checksum: 0704d7b85c0305fd2cef37777337dfa26230fdd072dce9fb5c82a4b03156f3ffb8ed3e636033e65d45d2a5805a4e475825369a27404c0307f2db0c8eb3366fbd - languageName: node - linkType: hard - "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -25876,6 +23958,15 @@ __metadata: languageName: node linkType: hard +"fb-dotslash@npm:0.5.8": + version: 0.5.8 + resolution: "fb-dotslash@npm:0.5.8" + bin: + dotslash: bin/dotslash + checksum: 5678efe96898294e41c983cb8ea28952539566df5f8bfd2913e8e146425d7d9999d2c458bb4f3e0b07b36b5bcd23cada0868d94509c8b2d4b17de8bf0641775a + languageName: node + linkType: hard + "fb-watchman@npm:^2.0.0, fb-watchman@npm:^2.0.2": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" @@ -26081,13 +24172,6 @@ __metadata: languageName: node linkType: hard -"find-up-simple@npm:^1.0.0": - version: 1.0.1 - resolution: "find-up-simple@npm:1.0.1" - checksum: 6e374bffda9f8425314eab47ef79752b6e77dcc95c0ad17d257aef48c32fe07bbc41bcafbd22941c25bb94fffaaaa8e178d928867d844c58100c7fe19ec82f72 - languageName: node - linkType: hard - "find-up@npm:^3.0.0": version: 3.0.0 resolution: "find-up@npm:3.0.0" @@ -26127,17 +24211,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^7.0.0": - version: 7.0.0 - resolution: "find-up@npm:7.0.0" - dependencies: - locate-path: ^7.2.0 - path-exists: ^5.0.0 - unicorn-magic: ^0.1.0 - checksum: e1c63860f9c04355ab2aa19f4be51c1a6e14a7d8cfbd8090e2be6da2a36a76995907cb45337a4b582b19b164388f71d6ab118869dc7bffb2093f2c089ecb95ee - languageName: node - linkType: hard - "find-yarn-workspace-root@npm:^2.0.0": version: 2.0.0 resolution: "find-yarn-workspace-root@npm:2.0.0" @@ -26450,7 +24523,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": +"fs-extra@npm:^10.0.0": version: 10.1.0 resolution: "fs-extra@npm:10.1.0" dependencies: @@ -26707,13 +24780,6 @@ __metadata: languageName: node linkType: hard -"get-east-asian-width@npm:^1.3.0": - version: 1.4.0 - resolution: "get-east-asian-width@npm:1.4.0" - checksum: 1d9a81a8004f4217ebef5d461875047d269e4b57e039558fd65130877cd4da8e3f61e1c4eada0c8b10e2816c7baf7d5fddb7006f561da13bc6f6dd19c1e964a4 - languageName: node - linkType: hard - "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" @@ -26809,7 +24875,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": +"get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: @@ -26913,78 +24979,6 @@ __metadata: languageName: node linkType: hard -"giget@npm:^2.0.0": - version: 2.0.0 - resolution: "giget@npm:2.0.0" - dependencies: - citty: ^0.1.6 - consola: ^3.4.0 - defu: ^6.1.4 - node-fetch-native: ^1.6.6 - nypm: ^0.6.0 - pathe: ^2.0.3 - bin: - giget: dist/cli.mjs - checksum: 9957b75bc52e0c49203208e6d1e40511dacd0654e3f664323997eaeffb8b30080db393a44d206039f12bb5a29250546f574316e0593c42b9daae056f522d1603 - languageName: node - linkType: hard - -"git-raw-commits@npm:^4.0.0": - version: 4.0.0 - resolution: "git-raw-commits@npm:4.0.0" - dependencies: - dargs: ^8.0.0 - meow: ^12.0.1 - split2: ^4.0.0 - bin: - git-raw-commits: cli.mjs - checksum: 95546f4afcb33cf00ff638f7fec55ad61d4d927447737900e1f6fcbbdbb341b3f150908424cc62acb6d9faaea6f1e8f55d0697b899f0589af9d2733afb20abfb - languageName: node - linkType: hard - -"git-raw-commits@npm:^5.0.0": - version: 5.0.0 - resolution: "git-raw-commits@npm:5.0.0" - dependencies: - "@conventional-changelog/git-client": ^1.0.0 - meow: ^13.0.0 - bin: - git-raw-commits: src/cli.js - checksum: 8e2767f3a1d751b9aef0f8e84259c87114f1691a0e90ee915ebff5b2f5f8e72d7ea573ff2930be4286c9e067e85713ae67c0645c02e647c5a9c0f5b00bfd6284 - languageName: node - linkType: hard - -"git-semver-tags@npm:^8.0.0": - version: 8.0.0 - resolution: "git-semver-tags@npm:8.0.0" - dependencies: - "@conventional-changelog/git-client": ^1.0.0 - meow: ^13.0.0 - bin: - git-semver-tags: src/cli.js - checksum: 49ac7dc10d0a025eaac8bbdcfe9b0e9e596701a1b4ee78b16769995bc9f4bb8230741c37471b6534b804896c01a354effe2d252d727544c4dc5c5f314b559305 - languageName: node - linkType: hard - -"git-up@npm:^8.1.0": - version: 8.1.1 - resolution: "git-up@npm:8.1.1" - dependencies: - is-ssh: ^1.4.0 - parse-url: ^9.2.0 - checksum: 3b7c89bcd0c46e09154f3509ac5f69f3c746ec032390b86a34f7e831a3b60c0a976548780682cd490a522dd8eb4ff2a13b1b882ff0e94a35fe6fc317f09042a5 - languageName: node - linkType: hard - -"git-url-parse@npm:16.1.0": - version: 16.1.0 - resolution: "git-url-parse@npm:16.1.0" - dependencies: - git-up: ^8.1.0 - checksum: 386b0e1bf55c2732ae5d9d75a8063a46179c832794a010b0d8952f89e79dbda7bdf1d00ef478a13ab3962bcad1d1f7a1a1de18769de1514ffe1fb11c90a82270 - languageName: node - linkType: hard - "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -27138,15 +25132,6 @@ __metadata: languageName: node linkType: hard -"global-directory@npm:^4.0.1": - version: 4.0.1 - resolution: "global-directory@npm:4.0.1" - dependencies: - ini: 4.1.1 - checksum: 5b4df24438a4e5f21e43fbdd9e54f5e12bb48dce01a0a83b415d8052ce91be2d3a97e0c8f98a535e69649b2190036155e9f0f7d3c62f9318f31bdc3fd4f235f5 - languageName: node - linkType: hard - "global@npm:~4.4.0": version: 4.4.0 resolution: "global@npm:4.4.0" @@ -27173,13 +25158,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 534b8216736a5425737f59f6e6a5c7f386254560c9f41d24a9227d60ee3ad4a9e82c5b85def0e212e9d92162f83a92544be4c7fd4c902cb913736c10e08237ac - languageName: node - linkType: hard - "globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" @@ -27199,7 +25177,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.0.1, globby@npm:^11.1.0": +"globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -27213,20 +25191,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^14.0.2": - version: 14.1.0 - resolution: "globby@npm:14.1.0" - dependencies: - "@sindresorhus/merge-streams": ^2.1.0 - fast-glob: ^3.3.3 - ignore: ^7.0.3 - path-type: ^6.0.0 - slash: ^5.1.0 - unicorn-magic: ^0.3.0 - checksum: b1f27dccc999c010ee7e0ce7c6581fd2326ac86cf0508474d526d699a029b66b35d6fa4361c8b4ad8e80809582af71d5e2080e671cf03c26e98ca67aba8834bd - languageName: node - linkType: hard - "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -27506,6 +25470,13 @@ __metadata: languageName: node linkType: hard +"hermes-compiler@npm:0.0.0": + version: 0.0.0 + resolution: "hermes-compiler@npm:0.0.0" + checksum: 8b6fc8a64c2fa18c9aa6ddb8831c92253b6a2f10adf7d5d8f361b574f07e91b64f0c44b1370665075c33c17dd71c02fd19422124a3d2aa1717c37006ab12a1f0 + languageName: node + linkType: hard + "hermes-estree@npm:0.25.1": version: 0.25.1 resolution: "hermes-estree@npm:0.25.1" @@ -27513,13 +25484,6 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.28.1": - version: 0.28.1 - resolution: "hermes-estree@npm:0.28.1" - checksum: 4f7b4e0491352012a6cb799315a0aae16abdcc894335e901552ee6c64732d0cf06f0913c579036f9f452b7c4ad9bb0b6ab14e510c13bd7e5997385f77633ab00 - languageName: node - linkType: hard - "hermes-estree@npm:0.29.1": version: 0.29.1 resolution: "hermes-estree@npm:0.29.1" @@ -27527,6 +25491,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.32.0": + version: 0.32.0 + resolution: "hermes-estree@npm:0.32.0" + checksum: 7b0606a8d2cf4593634d01b0eae0764c0e4703bc5cd73cbb0547fb8dda9445a27a83345117c08eef64f6bdab1287e3c5a4e3001deed465a715d26f4e918c8b22 + languageName: node + linkType: hard + "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -27536,15 +25507,6 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.28.1": - version: 0.28.1 - resolution: "hermes-parser@npm:0.28.1" - dependencies: - hermes-estree: 0.28.1 - checksum: 0d95280d527e1ad46e8caacd56b24d07e4aec39704de86cf164600f2c4fb00f406dd74a37b2103433ef7ec388a549072da20438e224bd47def21f973c36aab7d - languageName: node - linkType: hard - "hermes-parser@npm:0.29.1": version: 0.29.1 resolution: "hermes-parser@npm:0.29.1" @@ -27554,6 +25516,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.32.0": + version: 0.32.0 + resolution: "hermes-parser@npm:0.32.0" + dependencies: + hermes-estree: 0.32.0 + checksum: 7ec172ec763ee5ba1d01f273084ab4c7ad7a543d1ed11e887ea3a9eba7c0b83854dde08e835e38f29b74146b5ce17e67d556774324a63f8afe16fb57021bfdcb + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -27771,13 +25742,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 - languageName: node - linkType: hard - "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -27911,7 +25875,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^7.0.3": +"ignore@npm:^7.0.0": version: 7.0.5 resolution: "ignore@npm:7.0.5" checksum: d0862bf64d3d58bf34d5fb0a9f725bec9ca5ce8cd1aecc8f28034269e8f69b8009ffd79ca3eda96962a6a444687781cd5efdb8c7c8ddc0a6996e36d31c217f14 @@ -28012,13 +25976,6 @@ __metadata: languageName: node linkType: hard -"index-to-position@npm:^1.1.0": - version: 1.2.0 - resolution: "index-to-position@npm:1.2.0" - checksum: 2026188af74d4f4c19de44ca29116f093daf072ff4f4b8dda61668463bd28b097164d43f819684cb2f65ff749bc0dec14fb3956da0299a36faa68255c4eb6858 - languageName: node - linkType: hard - "indexof@npm:~0.0.1": version: 0.0.1 resolution: "indexof@npm:0.0.1" @@ -28043,13 +26000,6 @@ __metadata: languageName: node linkType: hard -"ini@npm:4.1.1": - version: 4.1.1 - resolution: "ini@npm:4.1.1" - checksum: 0e5909554074fbc31824fa5415b0f604de4a665514c96a897a77bf77353a7ad4743927321270e9d0610a9d510ccd1f3cd77422f7cc80d8f4542dbce75476fb6d - languageName: node - linkType: hard - "ini@npm:^1.3.4, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -28078,26 +26028,6 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:12.9.6": - version: 12.9.6 - resolution: "inquirer@npm:12.9.6" - dependencies: - "@inquirer/ansi": ^1.0.0 - "@inquirer/core": ^10.2.2 - "@inquirer/prompts": ^7.8.6 - "@inquirer/type": ^3.0.8 - mute-stream: ^2.0.0 - run-async: ^4.0.5 - rxjs: ^7.8.2 - peerDependencies: - "@types/node": ">=18" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 5fae189bcc5a71cef91839b396249bbda42579a39c0b1b468b1f79015e9b831703c1ccbdd5e6b3f5f73407c6f9c4917c6728fc8c240f14a8aa97a3de81e95511 - languageName: node - linkType: hard - "inquirer@npm:^12.7.0": version: 12.10.0 resolution: "inquirer@npm:12.10.0" @@ -28260,16 +26190,6 @@ __metadata: languageName: node linkType: hard -"is-absolute@npm:^1.0.0": - version: 1.0.0 - resolution: "is-absolute@npm:1.0.0" - dependencies: - is-relative: ^1.0.0 - is-windows: ^1.0.1 - checksum: 9d16b2605eda3f3ce755410f1d423e327ad3a898bcb86c9354cf63970ed3f91ba85e9828aa56f5d6a952b9fae43d0477770f78d37409ae8ecc31e59ebc279b27 - languageName: node - linkType: hard - "is-arguments@npm:^1.0.4": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" @@ -28414,7 +26334,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.16.0, is-core-module@npm:^2.16.1": +"is-core-module@npm:^2.16.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -28478,15 +26398,6 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^3.0.0": - version: 3.0.0 - resolution: "is-docker@npm:3.0.0" - bin: - is-docker: cli.js - checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 - languageName: node - linkType: hard - "is-extendable@npm:^0.1.1": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" @@ -28572,26 +26483,6 @@ __metadata: languageName: node linkType: hard -"is-git-dirty@npm:^2.0.1": - version: 2.0.2 - resolution: "is-git-dirty@npm:2.0.2" - dependencies: - execa: ^4.0.3 - is-git-repository: ^2.0.0 - checksum: 13c8f58600e1ea0874703c1fa0ca87825119cf05347bb3b0bbbd331eec42b6a0e89519be4dcb173ac8eda84d1ade97fe187df8af10df599f1df8d0267680abdd - languageName: node - linkType: hard - -"is-git-repository@npm:^2.0.0": - version: 2.0.0 - resolution: "is-git-repository@npm:2.0.0" - dependencies: - execa: ^4.0.3 - is-absolute: ^1.0.0 - checksum: 9eba76437998b3239adc6e87ceb9b81f8ef00d6209f8700f2ba523e61359d5b068d11f8f94474bc90f92b39fd3c8261c4d60feb3cd62d18e1838480b0b135b88 - languageName: node - linkType: hard - "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -28601,17 +26492,6 @@ __metadata: languageName: node linkType: hard -"is-inside-container@npm:^1.0.0": - version: 1.0.0 - resolution: "is-inside-container@npm:1.0.0" - dependencies: - is-docker: ^3.0.0 - bin: - is-inside-container: cli.js - checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 - languageName: node - linkType: hard - "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -28619,13 +26499,6 @@ __metadata: languageName: node linkType: hard -"is-interactive@npm:^2.0.0": - version: 2.0.0 - resolution: "is-interactive@npm:2.0.0" - checksum: e8d52ad490bed7ae665032c7675ec07732bbfe25808b0efbc4d5a76b1a1f01c165f332775c63e25e9a03d319ebb6b24f571a9e902669fc1e40b0a60b5be6e26c - languageName: node - linkType: hard - "is-ip@npm:^3.1.0": version: 3.1.0 resolution: "is-ip@npm:3.1.0" @@ -28735,13 +26608,6 @@ __metadata: languageName: node linkType: hard -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: c9916ac8f4621962a42f5e80e7ffdb1d79a3fab7456ceaeea394cd9e0858d04f985a9ace45be44433bf605673c8be8810540fe4cc7f4266fc7526ced95af5a08 - languageName: node - linkType: hard - "is-object@npm:~0.1.2": version: 0.1.2 resolution: "is-object@npm:0.1.2" @@ -28749,34 +26615,13 @@ __metadata: languageName: node linkType: hard -"is-path-cwd@npm:^2.2.0": - version: 2.2.0 - resolution: "is-path-cwd@npm:2.2.0" - checksum: 46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 - languageName: node - linkType: hard - -"is-path-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "is-path-cwd@npm:3.0.0" - checksum: bc34d13b6a03dfca4a3ab6a8a5ba78ae4b24f4f1db4b2b031d2760c60d0913bd16a4b980dcb4e590adfc906649d5f5132684079a3972bd219da49deebb9adea8 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 languageName: node linkType: hard -"is-path-inside@npm:^4.0.0": - version: 4.0.0 - resolution: "is-path-inside@npm:4.0.0" - checksum: 8810fa11c58e6360b82c3e0d6cd7d9c7d0392d3ac9eb10f980b81f9839f40ac6d1d6d6f05d069db0d227759801228f0b072e1b6c343e4469b065ab5fe0b68fe5 - languageName: node - linkType: hard - "is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" @@ -28843,15 +26688,6 @@ __metadata: languageName: node linkType: hard -"is-relative@npm:^1.0.0": - version: 1.0.0 - resolution: "is-relative@npm:1.0.0" - dependencies: - is-unc-path: ^1.0.0 - checksum: 3271a0df109302ef5e14a29dcd5d23d9788e15ade91a40b942b035827ffbb59f7ce9ff82d036ea798541a52913cbf9d2d0b66456340887b51f3542d57b5a4c05 - languageName: node - linkType: hard - "is-set@npm:^2.0.1": version: 2.0.2 resolution: "is-set@npm:2.0.2" @@ -28893,15 +26729,6 @@ __metadata: languageName: node linkType: hard -"is-ssh@npm:^1.4.0": - version: 1.4.1 - resolution: "is-ssh@npm:1.4.1" - dependencies: - protocols: ^2.0.1 - checksum: 005b461ac444398eb8b7cd2f489288e49dd18c8b6cbf1eb20767f9b79f330ab6e3308b2dac8ec6ca2a950d2a368912e0e992e2474bc1b5204693abb6226c1431 - languageName: node - linkType: hard - "is-stream@npm:^2.0.0, is-stream@npm:^2.0.1": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -28962,15 +26789,6 @@ __metadata: languageName: node linkType: hard -"is-text-path@npm:^2.0.0": - version: 2.0.0 - resolution: "is-text-path@npm:2.0.0" - dependencies: - text-extensions: ^2.0.0 - checksum: 3a8725fc7c0d4c7741a97993bc2fecc09a0963660394d3ee76145274366c98ad57c6791d20d4ef829835f573b1137265051c05ecd65fbe72f69bb9ab9e3babbd - languageName: node - linkType: hard - "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": version: 1.1.12 resolution: "is-typed-array@npm:1.1.12" @@ -29005,15 +26823,6 @@ __metadata: languageName: node linkType: hard -"is-unc-path@npm:^1.0.0": - version: 1.0.0 - resolution: "is-unc-path@npm:1.0.0" - dependencies: - unc-path-regex: ^0.1.2 - checksum: e8abfde203f7409f5b03a5f1f8636e3a41e78b983702ef49d9343eb608cdfe691429398e8815157519b987b739bcfbc73ae7cf4c8582b0ab66add5171088eab6 - languageName: node - linkType: hard - "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" @@ -29021,7 +26830,7 @@ __metadata: languageName: node linkType: hard -"is-unicode-supported@npm:^2.0.0, is-unicode-supported@npm:^2.1.0": +"is-unicode-supported@npm:^2.0.0": version: 2.1.0 resolution: "is-unicode-supported@npm:2.1.0" checksum: f254e3da6b0ab1a57a94f7273a7798dd35d1d45b227759f600d0fa9d5649f9c07fa8d3c8a6360b0e376adf916d151ec24fc9a50c5295c58bae7ca54a76a063f9 @@ -29080,13 +26889,6 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.1": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - "is-wsl@npm:^1.1.0": version: 1.1.0 resolution: "is-wsl@npm:1.1.0" @@ -29103,15 +26905,6 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^3.1.0": - version: 3.1.0 - resolution: "is-wsl@npm:3.1.0" - dependencies: - is-inside-container: ^1.0.0 - checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 - languageName: node - linkType: hard - "is@npm:~0.2.6": version: 0.2.7 resolution: "is@npm:0.2.7" @@ -29212,19 +27005,6 @@ __metadata: languageName: node linkType: hard -"issue-parser@npm:7.0.1": - version: 7.0.1 - resolution: "issue-parser@npm:7.0.1" - dependencies: - lodash.capitalize: ^4.2.1 - lodash.escaperegexp: ^4.1.2 - lodash.isplainobject: ^4.0.6 - lodash.isstring: ^4.0.1 - lodash.uniqby: ^4.7.0 - checksum: baf2831baa84c214a8c9f095889476f2ad7a6511fef7d096941ecf4666a822fbce298baac38510c4be782fc562488d4909535e81fb7a28c55779fcc88e3ec595 - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" @@ -30060,15 +27840,6 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.5.1, jiti@npm:^2.6.1": - version: 2.6.1 - resolution: "jiti@npm:2.6.1" - bin: - jiti: lib/jiti-cli.mjs - checksum: 9394e29c5e40d1ca8267923160d8d86706173c9ff30c901097883434b0c4866de2c060427b6a9a5843bb3e42fa3a3c8b5b2228531d3dd4f4f10c5c6af355bb86 - languageName: node - linkType: hard - "joi@npm:^17.2.1": version: 17.13.3 resolution: "joi@npm:17.13.3" @@ -30339,7 +28110,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.1, json5@npm:^2.2.3": +"json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -30399,13 +28170,6 @@ __metadata: languageName: node linkType: hard -"jsonparse@npm:^1.2.0": - version: 1.3.1 - resolution: "jsonparse@npm:1.3.1" - checksum: 6514a7be4674ebf407afca0eda3ba284b69b07f9958a8d3113ef1005f7ec610860c312be067e450c569aab8b89635e332cee3696789c750692bb60daba627f4d - languageName: node - linkType: hard - "jsprim@npm:^1.2.2": version: 1.4.2 resolution: "jsprim@npm:1.4.2" @@ -30520,7 +28284,7 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.1.0, kleur@npm:^4.1.4, kleur@npm:^4.1.5": +"kleur@npm:^4.1.0, kleur@npm:^4.1.5": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 @@ -30990,7 +28754,7 @@ __metadata: languageName: node linkType: hard -"locate-path@npm:^7.1.0, locate-path@npm:^7.2.0": +"locate-path@npm:^7.1.0": version: 7.2.0 resolution: "locate-path@npm:7.2.0" dependencies: @@ -31015,13 +28779,6 @@ __metadata: languageName: node linkType: hard -"lodash.capitalize@npm:^4.2.1": - version: 4.2.1 - resolution: "lodash.capitalize@npm:4.2.1" - checksum: d9195f31d48c105206f1099946d8bbc8ab71435bc1c8708296992a31a992bb901baf120fdcadd773098ac96e62a79e6b023ee7d26a2deb0d6c6aada930e6ad0a - languageName: node - linkType: hard - "lodash.clonedeep@npm:^4.5.0": version: 4.5.0 resolution: "lodash.clonedeep@npm:4.5.0" @@ -31050,13 +28807,6 @@ __metadata: languageName: node linkType: hard -"lodash.escaperegexp@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.escaperegexp@npm:4.1.2" - checksum: 6d99452b1cfd6073175a9b741a9b09ece159eac463f86f02ea3bee2e2092923fce812c8d2bf446309cc52d1d61bf9af51c8118b0d7421388e6cead7bd3798f0f - languageName: node - linkType: hard - "lodash.flatten@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flatten@npm:4.4.0" @@ -31106,20 +28856,13 @@ __metadata: languageName: node linkType: hard -"lodash.isstring@npm:4.0.1, lodash.isstring@npm:^4.0.1": +"lodash.isstring@npm:4.0.1": version: 4.0.1 resolution: "lodash.isstring@npm:4.0.1" checksum: eaac87ae9636848af08021083d796e2eea3d02e80082ab8a9955309569cb3a463ce97fd281d7dc119e402b2e7d8c54a23914b15d2fc7fff56461511dc8937ba0 languageName: node linkType: hard -"lodash.kebabcase@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.kebabcase@npm:4.1.1" - checksum: 5a6c59161914e1bae23438a298c7433e83d935e0f59853fa862e691164696bc07f6dfa4c313d499fbf41ba8d53314e9850416502376705a357d24ee6ca33af78 - languageName: node - linkType: hard - "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" @@ -31134,13 +28877,6 @@ __metadata: languageName: node linkType: hard -"lodash.mergewith@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.mergewith@npm:4.6.2" - checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 - languageName: node - linkType: hard - "lodash.pickby@npm:^4.6.0": version: 4.6.0 resolution: "lodash.pickby@npm:4.6.0" @@ -31148,14 +28884,7 @@ __metadata: languageName: node linkType: hard -"lodash.snakecase@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.snakecase@npm:4.1.1" - checksum: 1685ed3e83dda6eae5a4dcaee161a51cd210aabb3e1c09c57150e7dd8feda19e4ca0d27d0631eabe8d0f4eaa51e376da64e8c018ae5415417c5890d42feb72a8 - languageName: node - linkType: hard - -"lodash.startcase@npm:4.4.0, lodash.startcase@npm:^4.4.0": +"lodash.startcase@npm:4.4.0": version: 4.4.0 resolution: "lodash.startcase@npm:4.4.0" checksum: c03a4a784aca653845fe09d0ef67c902b6e49288dc45f542a4ab345a9c406a6dc194c774423fa313ee7b06283950301c1221dd2a1d8ecb2dac8dfbb9ed5606b5 @@ -31176,27 +28905,6 @@ __metadata: languageName: node linkType: hard -"lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d - languageName: node - linkType: hard - -"lodash.uniqby@npm:^4.7.0": - version: 4.7.0 - resolution: "lodash.uniqby@npm:4.7.0" - checksum: 659264545a95726d1493123345aad8cbf56e17810fa9a0b029852c6d42bc80517696af09d99b23bef1845d10d95e01b8b4a1da578f22aeba7a30d3e0022a4938 - languageName: node - linkType: hard - -"lodash.upperfirst@npm:^4.3.1": - version: 4.3.1 - resolution: "lodash.upperfirst@npm:4.3.1" - checksum: cadec6955900afe1928cc60cdc4923a79c2ef991e42665419cc81630ed9b4f952a1093b222e0141ab31cbc4dba549f97ec28ff67929d71e01861c97188a5fa83 - languageName: node - linkType: hard - "lodash.zip@npm:^4.2.0": version: 4.2.0 resolution: "lodash.zip@npm:4.2.0" @@ -31204,7 +28912,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4, lodash@npm:^4.0.0, lodash@npm:^4.15.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.2.1": +"lodash@npm:4.17.21, lodash@npm:^4, lodash@npm:^4.0.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.2.1": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -31230,16 +28938,6 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^7.0.1": - version: 7.0.1 - resolution: "log-symbols@npm:7.0.1" - dependencies: - is-unicode-supported: ^2.0.0 - yoctocolors: ^2.1.1 - checksum: 0862313d84826b551582e39659b8586c56b65130c5f4f976420e2c23985228334f2a26fc4251ac22bf0a5b415d9430e86bf332557d934c10b036f9a549d63a09 - languageName: node - linkType: hard - "log-update@npm:^6.1.0": version: 6.1.0 resolution: "log-update@npm:6.1.0" @@ -31426,13 +29124,6 @@ __metadata: languageName: node linkType: hard -"macos-release@npm:^3.3.0": - version: 3.4.0 - resolution: "macos-release@npm:3.4.0" - checksum: f4c0cb8b3f93b05d73c502b4bbe2b811c44facfc9bd072c13a30ff2a8ba1cad5d9de517d10be8b31e2b917643245a81587a2eec8300e66a7364419d11402ab02 - languageName: node - linkType: hard - "mafmt@npm:^10.0.0": version: 10.0.0 resolution: "mafmt@npm:10.0.0" @@ -31634,20 +29325,6 @@ __metadata: languageName: node linkType: hard -"meow@npm:^12.0.1": - version: 12.1.1 - resolution: "meow@npm:12.1.1" - checksum: a6f3be85fbe53430ef53ab933dd790c39216eb4dbaabdbef593aa59efb40ecaa417897000175476bc33eed09e4cbce01df7ba53ba91e9a4bd84ec07024cb8914 - languageName: node - linkType: hard - -"meow@npm:^13.0.0, meow@npm:^13.2.0": - version: 13.2.0 - resolution: "meow@npm:13.2.0" - checksum: 79c61dc02ad448ff5c29bbaf1ef42181f1eae9947112c0e23db93e84cbc2708ecda53e54bfc6689f1e55255b2cea26840ec76e57a5773a16ca45f4fe2163ec1c - languageName: node - linkType: hard - "merge-deep@npm:^3.0.1": version: 3.0.3 resolution: "merge-deep@npm:3.0.3" @@ -31727,6 +29404,18 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:0.83.3": + version: 0.83.3 + resolution: "metro-babel-transformer@npm:0.83.3" + dependencies: + "@babel/core": ^7.25.2 + flow-enums-runtime: ^0.0.6 + hermes-parser: 0.32.0 + nullthrows: ^1.1.1 + checksum: dd178409d1718dae12dfffb6572ebc5bb78f1e0d7e93dce829c945957f8a686cb1b4c466c69585d7b982b3937fbea28d5c53a80691f2fc66717a0bcc800bc5b8 + languageName: node + linkType: hard + "metro-cache-key@npm:0.82.5": version: 0.82.5 resolution: "metro-cache-key@npm:0.82.5" @@ -31736,6 +29425,15 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.83.3": + version: 0.83.3 + resolution: "metro-cache-key@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: a6f9d2bf8b810f57d330d6f8f1ebf029e1224f426c5895f73d9bc1007482684048bfc7513a855626ee7f3ae72ca46e1b08cf983aefbfa84321bb7c0cef4ba4ae + languageName: node + linkType: hard + "metro-cache@npm:0.82.5": version: 0.82.5 resolution: "metro-cache@npm:0.82.5" @@ -31748,6 +29446,18 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.83.3": + version: 0.83.3 + resolution: "metro-cache@npm:0.83.3" + dependencies: + exponential-backoff: ^3.1.1 + flow-enums-runtime: ^0.0.6 + https-proxy-agent: ^7.0.5 + metro-core: 0.83.3 + checksum: 95606275411d85de071fd95171a9548406cd1154320850a554bf00207804f7844ed252f9750a802d6612ade839c579b23bd87927ae173f43c368e8f5d900149d + languageName: node + linkType: hard + "metro-config@npm:0.82.5, metro-config@npm:^0.82.0": version: 0.82.5 resolution: "metro-config@npm:0.82.5" @@ -31764,6 +29474,22 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-config@npm:0.83.3" + dependencies: + connect: ^3.6.5 + flow-enums-runtime: ^0.0.6 + jest-validate: ^29.7.0 + metro: 0.83.3 + metro-cache: 0.83.3 + metro-core: 0.83.3 + metro-runtime: 0.83.3 + yaml: ^2.6.1 + checksum: a14b77668a9712abbcebe5bf6a0081f0fd46caf8d37405174f261765abcd44d7a99910533fcc05edde3de10f9b22820cc9910c7dee2b01e761692a0a322f2608 + languageName: node + linkType: hard + "metro-core@npm:0.82.5, metro-core@npm:^0.82.0": version: 0.82.5 resolution: "metro-core@npm:0.82.5" @@ -31775,6 +29501,17 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-core@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + lodash.throttle: ^4.1.1 + metro-resolver: 0.83.3 + checksum: d06871313310cd718094ecbae805bcacea3f325340f6dff3c5044b62457c4690dd729cdb938349bdd3c41efa6f28032ae07696467ef006d5509fec9045c1966f + languageName: node + linkType: hard + "metro-file-map@npm:0.82.5": version: 0.82.5 resolution: "metro-file-map@npm:0.82.5" @@ -31792,6 +29529,23 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.83.3": + version: 0.83.3 + resolution: "metro-file-map@npm:0.83.3" + dependencies: + debug: ^4.4.0 + fb-watchman: ^2.0.0 + flow-enums-runtime: ^0.0.6 + graceful-fs: ^4.2.4 + invariant: ^2.2.4 + jest-worker: ^29.7.0 + micromatch: ^4.0.4 + nullthrows: ^1.1.1 + walker: ^1.0.7 + checksum: 0dea599206e93b6e8628be2aa98452d4dae16e805b810759ec8b50cebcd83f2d053f7e5865196d464f3793f86b3b5003830c6713f91bf62fa406a4af7c93a776 + languageName: node + linkType: hard + "metro-minify-terser@npm:0.82.5": version: 0.82.5 resolution: "metro-minify-terser@npm:0.82.5" @@ -31802,6 +29556,16 @@ __metadata: languageName: node linkType: hard +"metro-minify-terser@npm:0.83.3": + version: 0.83.3 + resolution: "metro-minify-terser@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + terser: ^5.15.0 + checksum: 1de88b70b7c903147807baa46497491a87600594fd0868b6538bbb9d7785242cabfbe8bccf36cc2285d0e17be72445b512d00c496952a159572545f3e6bcb199 + languageName: node + linkType: hard + "metro-resolver@npm:0.82.5": version: 0.82.5 resolution: "metro-resolver@npm:0.82.5" @@ -31811,6 +29575,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.83.3": + version: 0.83.3 + resolution: "metro-resolver@npm:0.83.3" + dependencies: + flow-enums-runtime: ^0.0.6 + checksum: de2ae5ced6239b004a97712f98934c6e830870d11614e2dba48250930214581f0746df8a4f0f1cb71060fe21c2cf919d3359106ad4f375c2500ba08e10922896 + languageName: node + linkType: hard + "metro-runtime@npm:0.82.5, metro-runtime@npm:^0.82.0": version: 0.82.5 resolution: "metro-runtime@npm:0.82.5" @@ -31821,6 +29594,16 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": + version: 0.83.3 + resolution: "metro-runtime@npm:0.83.3" + dependencies: + "@babel/runtime": ^7.25.0 + flow-enums-runtime: ^0.0.6 + checksum: dcbdc5502020d1e20cee1a3a8019323ab2f3ca2aa2d6ddb2b7a2b8547835a20b84fe4afc23c397f788584e108c70411db93df2f61322b44a4f0f119275052d03 + languageName: node + linkType: hard + "metro-source-map@npm:0.82.5, metro-source-map@npm:^0.82.0": version: 0.82.5 resolution: "metro-source-map@npm:0.82.5" @@ -31839,7 +29622,7 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.3": +"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": version: 0.83.3 resolution: "metro-source-map@npm:0.83.3" dependencies: @@ -31873,7 +29656,7 @@ __metadata: languageName: node linkType: hard -"metro-symbolicate@npm:0.83.3, metro-symbolicate@npm:^0.83.3": +"metro-symbolicate@npm:0.83.3": version: 0.83.3 resolution: "metro-symbolicate@npm:0.83.3" dependencies: @@ -31903,6 +29686,20 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.83.3": + version: 0.83.3 + resolution: "metro-transform-plugins@npm:0.83.3" + dependencies: + "@babel/core": ^7.25.2 + "@babel/generator": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.3 + flow-enums-runtime: ^0.0.6 + nullthrows: ^1.1.1 + checksum: 6f92b9dfa53bdb63e79038bbd4d68791379ab26cf874679e64563618c578eeed3a828795debf8076ffd518431dff53191990784fb619046bcc03fff114b0cb21 + languageName: node + linkType: hard + "metro-transform-worker@npm:0.82.5": version: 0.82.5 resolution: "metro-transform-worker@npm:0.82.5" @@ -31924,6 +29721,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.83.3": + version: 0.83.3 + resolution: "metro-transform-worker@npm:0.83.3" + dependencies: + "@babel/core": ^7.25.2 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/types": ^7.25.2 + flow-enums-runtime: ^0.0.6 + metro: 0.83.3 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-minify-terser: 0.83.3 + metro-source-map: 0.83.3 + metro-transform-plugins: 0.83.3 + nullthrows: ^1.1.1 + checksum: fcb25ebc1ce703d830ef60c9af87325f996af4c3946325ab957b65ca59d12d181fe6c527c9ba1f932cd954d23a400052293117fe56f9a2727dfbc0a118e7bb27 + languageName: node + linkType: hard + "metro@npm:0.82.5, metro@npm:^0.82.0": version: 0.82.5 resolution: "metro@npm:0.82.5" @@ -31974,6 +29792,56 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.83.3, metro@npm:^0.83.1": + version: 0.83.3 + resolution: "metro@npm:0.83.3" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/core": ^7.25.2 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.3 + "@babel/types": ^7.25.2 + accepts: ^1.3.7 + chalk: ^4.0.0 + ci-info: ^2.0.0 + connect: ^3.6.5 + debug: ^4.4.0 + error-stack-parser: ^2.0.6 + flow-enums-runtime: ^0.0.6 + graceful-fs: ^4.2.4 + hermes-parser: 0.32.0 + image-size: ^1.0.2 + invariant: ^2.2.4 + jest-worker: ^29.7.0 + jsc-safe-url: ^0.2.2 + lodash.throttle: ^4.1.1 + metro-babel-transformer: 0.83.3 + metro-cache: 0.83.3 + metro-cache-key: 0.83.3 + metro-config: 0.83.3 + metro-core: 0.83.3 + metro-file-map: 0.83.3 + metro-resolver: 0.83.3 + metro-runtime: 0.83.3 + metro-source-map: 0.83.3 + metro-symbolicate: 0.83.3 + metro-transform-plugins: 0.83.3 + metro-transform-worker: 0.83.3 + mime-types: ^2.1.27 + nullthrows: ^1.1.1 + serialize-error: ^2.1.0 + source-map: ^0.5.6 + throat: ^5.0.0 + ws: ^7.5.10 + yargs: ^17.6.2 + bin: + metro: src/cli.js + checksum: 306d8c06b5a1a45e18df6e41f494bbc8b439700985429284eea7b3c3c82108e3c3795d859a8ab3ed7a85793d64e3160519be9aa84c6418d6ed37bd5ae4500b57 + languageName: node + linkType: hard + "micro-eth-signer@npm:0.7.2": version: 0.7.2 resolution: "micro-eth-signer@npm:0.7.2" @@ -32075,15 +29943,6 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:3.0.1, mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": - version: 3.0.1 - resolution: "mime-types@npm:3.0.1" - dependencies: - mime-db: ^1.54.0 - checksum: 8d497ad5cb2dd1210ac7d049b5de94af0b24b45a314961e145b44389344604d54752f03bc00bf880c0da60a214be6fb6d423d318104f02c28d95dd8ebeea4fb4 - languageName: node - linkType: hard - "mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" @@ -32093,6 +29952,15 @@ __metadata: languageName: node linkType: hard +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": + version: 3.0.1 + resolution: "mime-types@npm:3.0.1" + dependencies: + mime-db: ^1.54.0 + checksum: 8d497ad5cb2dd1210ac7d049b5de94af0b24b45a314961e145b44389344604d54752f03bc00bf880c0da60a214be6fb6d423d318104f02c28d95dd8ebeea4fb4 + languageName: node + linkType: hard + "mime@npm:1.6.0, mime@npm:^1.3.4": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -32426,6 +30294,8 @@ __metadata: dependencies: husky: 9.1.6 lint-staged: 15.2.10 + nitrogen: 0.31.6 + react-native-nitro-modules: 0.31.6 languageName: unknown linkType: soft @@ -32787,27 +30657,33 @@ __metadata: languageName: node linkType: hard -"new-github-release-url@npm:2.0.0": - version: 2.0.0 - resolution: "new-github-release-url@npm:2.0.0" +"nitrogen@npm:*": + version: 0.31.8 + resolution: "nitrogen@npm:0.31.8" dependencies: - type-fest: ^2.5.1 - checksum: 3d4ae0f3b775623ceed8e558b6f9850e897aea981a9c937d3ad4e018669c829beccb2c4b5a6af996726ebf86c5b7638368dfc01f3ac2e395d1df29309bc0c5ca + chalk: ^5.3.0 + react-native-nitro-modules: ^0.31.8 + ts-morph: ^27.0.0 + yargs: ^18.0.0 + zod: ^4.0.5 + bin: + nitrogen: lib/index.js + checksum: 00c53f2d7ba5a82f2dd78cc8cb797fa7224b25ec45ac53bb0464abb2a96eea4e8b847a632f3bd11d95b80d3fd54cfdc726121318b0ddd8238d42d23a566efad9 languageName: node linkType: hard -"nitrogen@npm:^0.30.2": - version: 0.30.2 - resolution: "nitrogen@npm:0.30.2" +"nitrogen@npm:0.31.6": + version: 0.31.6 + resolution: "nitrogen@npm:0.31.6" dependencies: chalk: ^5.3.0 - react-native-nitro-modules: ^0.30.2 + react-native-nitro-modules: ^0.31.6 ts-morph: ^27.0.0 yargs: ^18.0.0 zod: ^4.0.5 bin: nitrogen: lib/index.js - checksum: b8692111891d70715b200d1c7adf129fe302cc8d85055ccb60144269970460b747d78caa110eadaee5c10f3cc077da46d53edbbc63ee9a5112a396e3256a2b32 + checksum: 8c0ea6fa929fd8a358e1cca9e6518902b0ebfd11a1b5ad325fd0807aefa4e7ee4231ded3448208b10765a687d32a99f8e35f46e45effaedec176c16ffdf36eed languageName: node linkType: hard @@ -32896,13 +30772,6 @@ __metadata: languageName: node linkType: hard -"node-fetch-native@npm:^1.6.6": - version: 1.6.7 - resolution: "node-fetch-native@npm:1.6.7" - checksum: c564e4f098b2ee5f56569a5f7a3c81b86dd11eb626460c332930fbff180df727bf44067268b2f19e646ac2e87632662dabd362df4b6a93c7bd898a94a3af9cb1 - languageName: node - linkType: hard - "node-fetch@npm:3.3.2, node-fetch@npm:^3.3.2": version: 3.3.2 resolution: "node-fetch@npm:3.3.2" @@ -33036,13 +30905,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.21": - version: 2.0.25 - resolution: "node-releases@npm:2.0.25" - checksum: 9a23149cf3f6778e62440b1f26f91927aff06c3606a29996f3d196c7c0f5e31c17c24c324b5ef1f571cebef6b5a8db9adce9c09381ca271bc6422aac91463f75 - languageName: node - linkType: hard - "node-simctl@npm:^8.0.0": version: 8.0.5 resolution: "node-simctl@npm:8.0.5" @@ -33208,7 +31070,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -33264,21 +31126,6 @@ __metadata: languageName: node linkType: hard -"nypm@npm:^0.6.0": - version: 0.6.2 - resolution: "nypm@npm:0.6.2" - dependencies: - citty: ^0.1.6 - consola: ^3.4.2 - pathe: ^2.0.3 - pkg-types: ^2.3.0 - tinyexec: ^1.0.1 - bin: - nypm: dist/cli.mjs - checksum: 8cbbbfb3ead13d4c05223da4bb47a4341a69e27055631b152ca368c07d470f62e4e44edbb33403d3777359bd06a07d41f616320fc7f4b7f0926aba657cc34d2e - languageName: node - linkType: hard - "oauth-sign@npm:~0.9.0": version: 0.9.0 resolution: "oauth-sign@npm:0.9.0" @@ -33554,13 +31401,6 @@ __metadata: languageName: node linkType: hard -"ohash@npm:^2.0.11": - version: 2.0.11 - resolution: "ohash@npm:2.0.11" - checksum: c8e4d44c410d0c0347c374cfa03832abe4ffe4ba946aaaac0274a6d80d9e64d86a1bd06c6affa8ad83ff85b1ebce18b7b488ef24b2379ed5bcd5b37cb38816bc - languageName: node - linkType: hard - "omggif@npm:^1.0.10, omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -33661,18 +31501,6 @@ __metadata: languageName: node linkType: hard -"open@npm:10.2.0": - version: 10.2.0 - resolution: "open@npm:10.2.0" - dependencies: - default-browser: ^5.2.1 - define-lazy-prop: ^3.0.0 - is-inside-container: ^1.0.0 - wsl-utils: ^0.1.0 - checksum: 64e2e1fb1dc5ab82af06c990467237b8fd349b1b9ecc6324d12df337a005d039cec11f758abea148be68878ccd616977005682c48ef3c5c7ba48bd3e5d6a3dbb - languageName: node - linkType: hard - "open@npm:^6.2.0": version: 6.4.0 resolution: "open@npm:6.4.0" @@ -33759,23 +31587,6 @@ __metadata: languageName: node linkType: hard -"ora@npm:9.0.0": - version: 9.0.0 - resolution: "ora@npm:9.0.0" - dependencies: - chalk: ^5.6.2 - cli-cursor: ^5.0.0 - cli-spinners: ^3.2.0 - is-interactive: ^2.0.0 - is-unicode-supported: ^2.1.0 - log-symbols: ^7.0.1 - stdin-discarder: ^0.2.2 - string-width: ^8.1.0 - strip-ansi: ^7.1.2 - checksum: 4efc9c3caa45b552bae4c9755c586eb4f39b824e456d77ec380539529439ca95f3acf9626119131f1ca76618c176088996023e257f5b82e1b86a509990f4545a - languageName: node - linkType: hard - "ora@npm:^3.4.0": version: 3.4.0 resolution: "ora@npm:3.4.0" @@ -33790,16 +31601,6 @@ __metadata: languageName: node linkType: hard -"os-name@npm:6.1.0": - version: 6.1.0 - resolution: "os-name@npm:6.1.0" - dependencies: - macos-release: ^3.3.0 - windows-release: ^6.1.0 - checksum: d69a2060bea01dc502bd9a08802f43bebce85e95adde7740d0629a8522c16a92c05e0ee052819cac49f82aa61324ff038a3b79e015e26f122bbc08b40aa4ead3 - languageName: node - linkType: hard - "os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" @@ -33904,13 +31705,6 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^7.0.2": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 8c92d533acf82f0d12f7e196edccff773f384098bbb048acdd55a08778ce4fc8889d8f1bde72969487bd96f9c63212698d79744c20bedfce36c5b00b46d369f8 - languageName: node - linkType: hard - "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -34058,17 +31852,6 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^8.0.0": - version: 8.3.0 - resolution: "parse-json@npm:8.3.0" - dependencies: - "@babel/code-frame": ^7.26.2 - index-to-position: ^1.1.0 - type-fest: ^4.39.1 - checksum: 23812dd66a8ceedfeb0fd8a92c96b88b18bc1030cf1f07cd29146b711a208ef91ac995cf14517422f908fa930f84324086bf22fdcc1013029776cc01d589bae4 - languageName: node - linkType: hard - "parse-listing@npm:^1.1.3": version: 1.1.3 resolution: "parse-listing@npm:1.1.3" @@ -34083,15 +31866,6 @@ __metadata: languageName: node linkType: hard -"parse-path@npm:^7.0.0": - version: 7.1.0 - resolution: "parse-path@npm:7.1.0" - dependencies: - protocols: ^2.0.0 - checksum: 1da6535a967b14911837bba98e5f8d16acb415b28753ff6225e3121dce71167a96c79278fbb631d695210dadae37462a9eff40d93b9c659cf1ce496fd5db9bb6 - languageName: node - linkType: hard - "parse-png@npm:^2.1.0": version: 2.1.0 resolution: "parse-png@npm:2.1.0" @@ -34108,16 +31882,6 @@ __metadata: languageName: node linkType: hard -"parse-url@npm:^9.2.0": - version: 9.2.0 - resolution: "parse-url@npm:9.2.0" - dependencies: - "@types/parse-path": ^7.0.0 - parse-path: ^7.0.0 - checksum: 765d4beac7de59c88007018e2a4b95ed8ff96cdcd0ff510b1ad00ab3d17f63949c7664218685394fe35af52061516c5efbba520fb760d7104b8238a6196f28c4 - languageName: node - linkType: hard - "parse5-htmlparser2-tree-adapter@npm:^7.1.0": version: 7.1.0 resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" @@ -34312,13 +32076,6 @@ __metadata: languageName: node linkType: hard -"path-type@npm:^6.0.0": - version: 6.0.0 - resolution: "path-type@npm:6.0.0" - checksum: b9f6eaf7795c48d5c9bc4c6bc3ac61315b8d36975a73497ab2e02b764c0836b71fb267ea541863153f633a069a1c2ed3c247cb781633842fc571c655ac57c00e - languageName: node - linkType: hard - "pathe@npm:^1.1.0, pathe@npm:^1.1.1": version: 1.1.1 resolution: "pathe@npm:1.1.1" @@ -34374,13 +32131,6 @@ __metadata: languageName: node linkType: hard -"perfect-debounce@npm:^2.0.0": - version: 2.0.0 - resolution: "perfect-debounce@npm:2.0.0" - checksum: b22938a06d0cb2fe202a79bf75447cf759229d206abdbecb199df6925b9ca2143e0629b7f5c03a583a54a4744bc8f6d897eb5ff1dc892220b7564bda55f58e55 - languageName: node - linkType: hard - "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -34567,17 +32317,6 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^2.3.0": - version: 2.3.0 - resolution: "pkg-types@npm:2.3.0" - dependencies: - confbox: ^0.2.2 - exsolve: ^1.0.7 - pathe: ^2.0.3 - checksum: 33c30b442662a0f2b62fd16f39ae2beeb4cdf3511699e574765b7451e179937847de6e696bbab50bfbd41d2c2e4a99b61ebc7078abf91ea8573a7f16cc11d26a - languageName: node - linkType: hard - "pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" @@ -34760,13 +32499,6 @@ __metadata: languageName: node linkType: hard -"presentable-error@npm:^0.0.1": - version: 0.0.1 - resolution: "presentable-error@npm:0.0.1" - checksum: 013809ee7a47ced847a8d860e9b89a56cdd8c4f1ad04ad8da1e58fd60843f77f497d204146bb15aaa9793d3b94ad8626eed01256fc9eb5839a545af2000a5fa4 - languageName: node - linkType: hard - "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -34785,6 +32517,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" + bin: + prettier: bin/prettier.cjs + checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e + languageName: node + linkType: hard + "prettier@npm:^2.3.1, prettier@npm:^2.4.1": version: 2.8.8 resolution: "prettier@npm:2.8.8" @@ -34794,7 +32535,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.5.3, prettier@npm:^3.6.2": +"prettier@npm:^3.5.3": version: 3.6.2 resolution: "prettier@npm:3.6.2" bin: @@ -34991,13 +32732,6 @@ __metadata: languageName: node linkType: hard -"protocols@npm:^2.0.0, protocols@npm:^2.0.1": - version: 2.0.2 - resolution: "protocols@npm:2.0.2" - checksum: 031cc068eb800468a50eb7c1e1c528bf142fb8314f5df9b9ea3c3f9df1697a19f97b9915b1229cef694d156812393172d9c3051ef7878d26eaa8c6faa5cccec4 - languageName: node - linkType: hard - "proxy-addr@npm:^2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -35008,7 +32742,7 @@ __metadata: languageName: node linkType: hard -"proxy-agent@npm:6.5.0, proxy-agent@npm:^6.5.0": +"proxy-agent@npm:^6.5.0": version: 6.5.0 resolution: "proxy-agent@npm:6.5.0" dependencies: @@ -35386,16 +33120,6 @@ __metadata: languageName: node linkType: hard -"rc9@npm:^2.1.2": - version: 2.1.2 - resolution: "rc9@npm:2.1.2" - dependencies: - defu: ^6.1.4 - destr: ^2.0.3 - checksum: aaa8f962a9a6a89981e2da75dad71117fe0f856bb55fecf793cd42ee0badc1cb92e6bb7cd25a9473e2d3c968ac29e507384ce52c4e76bbd63ac5649d3d7c2ab3 - languageName: node - linkType: hard - "rc@npm:^1.2.7, rc@npm:~1.2.7": version: 1.2.8 resolution: "rc@npm:1.2.8" @@ -35429,7 +33153,7 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:^6.1.1": +"react-devtools-core@npm:^6.1.1, react-devtools-core@npm:^6.1.5": version: 6.1.5 resolution: "react-devtools-core@npm:6.1.5" dependencies: @@ -35654,38 +33378,6 @@ __metadata: languageName: node linkType: hard -"react-native-builder-bob@npm:^0.40.13": - version: 0.40.13 - resolution: "react-native-builder-bob@npm:0.40.13" - dependencies: - "@babel/core": ^7.25.2 - "@babel/plugin-transform-flow-strip-types": ^7.26.5 - "@babel/plugin-transform-strict-mode": ^7.24.7 - "@babel/preset-env": ^7.25.2 - "@babel/preset-react": ^7.24.7 - "@babel/preset-typescript": ^7.24.7 - arktype: ^2.1.15 - babel-plugin-syntax-hermes-parser: ^0.28.0 - browserslist: ^4.20.4 - cross-spawn: ^7.0.3 - dedent: ^0.7.0 - del: ^6.1.1 - escape-string-regexp: ^4.0.0 - fs-extra: ^10.1.0 - glob: ^8.0.3 - is-git-dirty: ^2.0.1 - json5: ^2.2.1 - kleur: ^4.1.4 - prompts: ^2.4.2 - react-native-monorepo-config: ^0.1.8 - which: ^2.0.2 - yargs: ^17.5.1 - bin: - bob: bin/bob - checksum: 3140749ce4c2b4362502b2074ef2a6de92e03ab1a49bdbfc8058fbea0335a000d0554d012d9ce857b18bc395a2d6796c011d922725089e4688d6760f0b56b519 - languageName: node - linkType: hard - "react-native-chart-kit@npm:6.12.0": version: 6.12.0 resolution: "react-native-chart-kit@npm:6.12.0" @@ -36022,59 +33714,46 @@ __metadata: languageName: node linkType: hard -"react-native-monorepo-config@npm:^0.1.8": - version: 0.1.10 - resolution: "react-native-monorepo-config@npm:0.1.10" - dependencies: - escape-string-regexp: ^5.0.0 - fast-glob: ^3.3.3 - checksum: 9b1c6fefb4d67e4a9f3f11554d33072c2112f56d578b8e9b68becc3457383e4f487f31af00d9e85cd43f0b23996c1b22e10cbec57e80c3fb2e4557a0e3db176d - languageName: node - linkType: hard - "react-native-nitro-avalabs-crypto@workspace:*, react-native-nitro-avalabs-crypto@workspace:packages/react-native-nitro-avalabs-crypto": version: 0.0.0-use.local resolution: "react-native-nitro-avalabs-crypto@workspace:packages/react-native-nitro-avalabs-crypto" dependencies: - "@commitlint/config-conventional": ^19.8.1 - "@eslint/compat": ^1.3.2 - "@eslint/eslintrc": ^3.3.1 - "@eslint/js": ^9.35.0 - "@evilmartians/lefthook": ^1.12.3 - "@react-native/babel-preset": 0.81.1 - "@react-native/eslint-config": ^0.81.1 - "@release-it/conventional-changelog": ^10.0.1 - "@types/jest": ^29.5.14 - "@types/react": ^19.1.0 - commitlint: ^19.8.1 - del-cli: ^6.0.0 - eslint: ^9.35.0 - eslint-config-prettier: ^10.1.8 - eslint-plugin-prettier: ^5.5.4 - jest: ^29.7.0 - nitrogen: ^0.30.2 - prettier: ^3.6.2 - react: 19.1.0 - react-native: 0.79.5 - react-native-builder-bob: ^0.40.13 - react-native-nitro-modules: ^0.30.2 - release-it: ^19.0.4 - turbo: ^2.5.6 - typescript: ^5.9.2 + "@react-native/babel-preset": 0.79.5 + "@react-native/eslint-config": 0.82.0 + "@types/react": 19.1.03 + eslint: 8.57.0 + eslint-config-prettier: 9.1.0 + eslint-plugin-prettier: 5.2.1 + nitrogen: "*" + prettier: 3.3.3 + react: 19.1.1 + react-native: 0.82.0 + react-native-nitro-modules: 0.31.6 + typescript: ^5.8.3 peerDependencies: react: "*" react-native: "*" - react-native-nitro-modules: ^0.30.2 + react-native-nitro-modules: "*" languageName: unknown linkType: soft -"react-native-nitro-modules@npm:^0.30.2": - version: 0.30.2 - resolution: "react-native-nitro-modules@npm:0.30.2" +"react-native-nitro-modules@npm:0.31.6": + version: 0.31.6 + resolution: "react-native-nitro-modules@npm:0.31.6" + peerDependencies: + react: "*" + react-native: "*" + checksum: d9b5074ae30901d5ef305c3771c87a7eb4872b9f0411fbc0c12d51a3be28d016dc21419fedad9119cdba19977ed826c5c5d716601115f306faccce6a3392d8da + languageName: node + linkType: hard + +"react-native-nitro-modules@npm:^0.31.6, react-native-nitro-modules@npm:^0.31.8": + version: 0.31.8 + resolution: "react-native-nitro-modules@npm:0.31.8" peerDependencies: react: "*" react-native: "*" - checksum: da06b99c7f2def27c43da39a9eef2535b36bef48ef4cd45f49c0180fa735a0407a6f2feb6a30d39c4645a849230827e391ebc23e74236bde98a6f6176c6b291a + checksum: 3976b93015011585112c939ba762240b4cd913435de1a5321d18bbb719624fbfcf8ceca68575b5a03528211d02e36982043363fee8d3c874ac358c2f055f7fdf languageName: node linkType: hard @@ -36105,6 +33784,15 @@ __metadata: languageName: node linkType: hard +"react-native-performance@npm:5.1.2": + version: 5.1.2 + resolution: "react-native-performance@npm:5.1.2" + peerDependencies: + react-native: "*" + checksum: e0ea6616ba75a13028271c8c5cd29a9eecb35c806db2b412baa160d6ce428c0ba8e9bc0c762856b4c8bebd92b5aea925532731a4dc19591ad15af575163cccd8 + languageName: node + linkType: hard + "react-native-permissions@npm:4.1.5": version: 4.1.5 resolution: "react-native-permissions@npm:4.1.5" @@ -36442,7 +34130,7 @@ react-native-webview@ava-labs/react-native-webview: peerDependencies: react: "*" react-native: "*" - checksum: 44ee8c8ebc4dc4d3423e9045e1aebac31829eb518824e24f41b2bd10ab1e8343e824e9d912f259bfec7bfa798e96513cc05dbdcdf36087b2a43806f74a3b0fa2 + checksum: 92b1d7e77f26519681b361c1fccb0c1ddd885f0e0e930046fe9a430eaf62358e86e84065eba18313d8c50d41597c4caae7ea6042cde0293556e8fc1184b9ca8e languageName: node linkType: hard @@ -36511,6 +34199,57 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"react-native@npm:0.82.0": + version: 0.82.0 + resolution: "react-native@npm:0.82.0" + dependencies: + "@jest/create-cache-key-function": ^29.7.0 + "@react-native/assets-registry": 0.82.0 + "@react-native/codegen": 0.82.0 + "@react-native/community-cli-plugin": 0.82.0 + "@react-native/gradle-plugin": 0.82.0 + "@react-native/js-polyfills": 0.82.0 + "@react-native/normalize-colors": 0.82.0 + "@react-native/virtualized-lists": 0.82.0 + abort-controller: ^3.0.0 + anser: ^1.4.9 + ansi-regex: ^5.0.0 + babel-jest: ^29.7.0 + babel-plugin-syntax-hermes-parser: 0.32.0 + base64-js: ^1.5.1 + commander: ^12.0.0 + flow-enums-runtime: ^0.0.6 + glob: ^7.1.1 + hermes-compiler: 0.0.0 + invariant: ^2.2.4 + jest-environment-node: ^29.7.0 + memoize-one: ^5.0.0 + metro-runtime: ^0.83.1 + metro-source-map: ^0.83.1 + nullthrows: ^1.1.1 + pretty-format: ^29.7.0 + promise: ^8.3.0 + react-devtools-core: ^6.1.5 + react-refresh: ^0.14.0 + regenerator-runtime: ^0.13.2 + scheduler: 0.26.0 + semver: ^7.1.3 + stacktrace-parser: ^0.1.10 + whatwg-fetch: ^3.0.0 + ws: ^6.2.3 + yargs: ^17.6.2 + peerDependencies: + "@types/react": ^19.1.1 + react: ^19.1.1 + peerDependenciesMeta: + "@types/react": + optional: true + bin: + react-native: cli.js + checksum: 05a4c66a2f54e8ee9d2a8dd4e63b39298cc432672c9d975d1472398562bb8f26424027194e926ee854cf14b331a6c255bd206f00bd87bb2e119b2fc7ac3f8ea7 + languageName: node + linkType: hard + "react-reconciler@npm:0.31.0": version: 0.31.0 resolution: "react-reconciler@npm:0.31.0" @@ -36686,10 +34425,10 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"react@npm:19.1.0": - version: 19.1.0 - resolution: "react@npm:19.1.0" - checksum: c0905f8cfb878b0543a5522727e5ed79c67c8111dc16ceee135b7fe19dce77b2c1c19293513061a8934e721292bfc1517e0487e262d1906f306bdf95fa54d02f +"react@npm:19.1.1": + version: 19.1.1 + resolution: "react@npm:19.1.1" + checksum: f2f18fea5deac87b1167365bd5160bcba64d383c26a37afa905b714ca424f423ef97d8daf53f041ab9ac25a06357fafcf0b5d3b6b84c9d1eace0e621bfeae629 languageName: node linkType: hard @@ -36769,17 +34508,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"read-package-up@npm:^11.0.0": - version: 11.0.0 - resolution: "read-package-up@npm:11.0.0" - dependencies: - find-up-simple: ^1.0.0 - read-pkg: ^9.0.0 - type-fest: ^4.6.0 - checksum: 535b7554d47fae5fb5c2e7aceebd48b5de4142cdfe7b21f942fa9a0f56db03d3b53cce298e19438e1149292279c285e6ba6722eca741d590fd242519c4bdbc17 - languageName: node - linkType: hard - "read-pkg-up@npm:^10.0.0, read-pkg-up@npm:^10.1.0": version: 10.1.0 resolution: "read-pkg-up@npm:10.1.0" @@ -36815,19 +34543,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"read-pkg@npm:^9.0.0": - version: 9.0.1 - resolution: "read-pkg@npm:9.0.1" - dependencies: - "@types/normalize-package-data": ^2.4.3 - normalize-package-data: ^6.0.0 - parse-json: ^8.0.0 - type-fest: ^4.6.0 - unicorn-magic: ^0.1.0 - checksum: 5544bea2a58c6e5706db49a96137e8f0768c69395f25363f934064fbba00bdcdaa326fcd2f4281741df38cf81dbf27b76138240dc6de0ed718cf650475e0de3c - languageName: node - linkType: hard - "readable-stream@npm:4.5.2": version: 4.5.2 resolution: "readable-stream@npm:4.5.2" @@ -36868,7 +34583,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": +"readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -37237,39 +34952,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"release-it@npm:^19.0.4": - version: 19.0.5 - resolution: "release-it@npm:19.0.5" - dependencies: - "@nodeutils/defaults-deep": 1.1.0 - "@octokit/rest": 22.0.0 - "@phun-ky/typeof": 2.0.3 - async-retry: 1.3.3 - c12: 3.3.0 - ci-info: ^4.3.0 - eta: 4.0.1 - git-url-parse: 16.1.0 - inquirer: 12.9.6 - issue-parser: 7.0.1 - lodash.merge: 4.6.2 - mime-types: 3.0.1 - new-github-release-url: 2.0.0 - open: 10.2.0 - ora: 9.0.0 - os-name: 6.1.0 - proxy-agent: 6.5.0 - semver: 7.7.2 - tinyglobby: 0.2.15 - undici: 6.21.3 - url-join: 5.0.0 - wildcard-match: 5.1.4 - yargs-parser: 21.1.1 - bin: - release-it: bin/release-it.js - checksum: 7a3a29c10c6c1cf96db0310f4ea3bdf684567b6c5796a2715536a376be3ec6bd6a0d4c7c85918556f6792221947867eff71ae8e1d486d75736657a34bd6e923c - languageName: node - linkType: hard - "request@npm:^2.72.0": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -37428,19 +35110,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"resolve@npm:^1.22.10": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" - dependencies: - is-core-module: ^2.16.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf - languageName: node - linkType: hard - "resolve@npm:^2.0.0-next.4, resolve@npm:^2.0.0-next.5": version: 2.0.0-next.5 resolution: "resolve@npm:2.0.0-next.5" @@ -37489,19 +35158,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"resolve@patch:resolve@^1.22.10#~builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=c3c19d" - dependencies: - is-core-module: ^2.16.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d - languageName: node - linkType: hard - "resolve@patch:resolve@^2.0.0-next.4#~builtin, resolve@patch:resolve@^2.0.0-next.5#~builtin": version: 2.0.0-next.5 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin::version=2.0.0-next.5&hash=c3c19d" @@ -37570,13 +35226,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"retry@npm:0.13.1": - version: 0.13.1 - resolution: "retry@npm:0.13.1" - checksum: 47c4d5be674f7c13eee4cfe927345023972197dbbdfba5d3af7e461d13b44de1bfd663bfc80d2f601f8ef3fc8164c16dd99655a221921954a65d044a2fc1233b - languageName: node - linkType: hard - "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -37772,13 +35421,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"run-applescript@npm:^7.0.0": - version: 7.1.0 - resolution: "run-applescript@npm:7.1.0" - checksum: 8659fb5f2717b2b37a68cbfe5f678254cf24b5a82a6df3372b180c80c7c137dcd757a4166c3887e459f59a090ca414e8ea7ca97cf3ee5123db54b3b4006d7b7a - languageName: node - linkType: hard - "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" @@ -37979,6 +35621,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"scheduler@npm:0.26.0": + version: 0.26.0 + resolution: "scheduler@npm:0.26.0" + checksum: c63a9f1c0e5089b537231cff6c11f75455b5c8625ae09535c1d7cd0a1b0c77ceecdd9f1074e5e063da5d8dc11e73e8033dcac3361791088be08a6e60c0283ed9 + languageName: node + linkType: hard + "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -38704,13 +36353,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"slash@npm:^5.1.0": - version: 5.1.0 - resolution: "slash@npm:5.1.0" - checksum: 70434b34c50eb21b741d37d455110258c42d2cf18c01e6518aeb7299f3c6e626330c889c0c552b5ca2ef54a8f5a74213ab48895f0640717cacefeef6830a1ba4 - languageName: node - linkType: hard - "slice-ansi@npm:^2.0.0": version: 2.1.0 resolution: "slice-ansi@npm:2.1.0" @@ -39105,13 +36747,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"stdin-discarder@npm:^0.2.2": - version: 0.2.2 - resolution: "stdin-discarder@npm:0.2.2" - checksum: 642ffd05bd5b100819d6b24a613d83c6e3857c6de74eb02fc51506fa61dc1b0034665163831873868157c4538d71e31762bcf319be86cea04c3aba5336470478 - languageName: node - linkType: hard - "stop-iteration-iterator@npm:^1.1.0": version: 1.1.0 resolution: "stop-iteration-iterator@npm:1.1.0" @@ -39305,16 +36940,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"string-width@npm:^8.1.0": - version: 8.1.0 - resolution: "string-width@npm:8.1.0" - dependencies: - get-east-asian-width: ^1.3.0 - strip-ansi: ^7.1.0 - checksum: 51ee97c4ffee7b94f8a2ee785fac14f81ec9809b9fcec9a4db44e25c717c263af0cc4387c111aef76195c0718dc43766f3678c07fb542294fb0244f7bfbde883 - languageName: node - linkType: hard - "string.prototype.matchall@npm:^4.0.12": version: 4.0.12 resolution: "string.prototype.matchall@npm:4.0.12" @@ -39509,15 +37134,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"strip-ansi@npm:^7.1.2": - version: 7.1.2 - resolution: "strip-ansi@npm:7.1.2" - dependencies: - ansi-regex: ^6.0.1 - checksum: db0e3f9654e519c8a33c50fc9304d07df5649388e7da06d3aabf66d29e5ad65d5e6315d8519d409c15b32fa82c1df7e11ed6f8cd50b0e4404463f0c9d77c8d0b - languageName: node - linkType: hard - "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -39704,12 +37320,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"synckit@npm:^0.11.7": - version: 0.11.11 - resolution: "synckit@npm:0.11.11" +"synckit@npm:^0.9.1": + version: 0.9.3 + resolution: "synckit@npm:0.9.3" dependencies: - "@pkgr/core": ^0.2.9 - checksum: bc896d4320525501495654766e6b0aa394e522476ea0547af603bdd9fd7e9b65dcd6e3a237bc7eb3ab7e196376712f228bf1bf6ed1e1809f4b32dc9baf7ad413 + "@pkgr/core": ^0.1.0 + tslib: ^2.6.2 + checksum: 206660ceb8dea064f6ea10a9596914793c24deec2788f8e54617671df35686a46e2353e5b7453fcd539acf454fd654b8f9daed7388a385bee3bac998766592dc languageName: node linkType: hard @@ -39968,13 +37585,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"text-extensions@npm:^2.0.0": - version: 2.4.0 - resolution: "text-extensions@npm:2.4.0" - checksum: 9bdbc9959e004ccc86a6ec076d6c5bb6765978263e9d0d5febb640d7675c09919ea912f3fe9d50b68c3c7c43cc865610a7cb24954343abb31f74c205fbae4e45 - languageName: node - linkType: hard - "text-hex@npm:1.0.x": version: 1.0.0 resolution: "text-hex@npm:1.0.0" @@ -40032,7 +37642,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:~2.3.4": +"through@npm:^2.3.6, through@npm:~2.3.4": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd @@ -40074,14 +37684,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"tinyexec@npm:^1.0.0, tinyexec@npm:^1.0.1": - version: 1.0.1 - resolution: "tinyexec@npm:1.0.1" - checksum: 40f5219abf891884863b085ebe5e8c8bf95bde802f6480f279588b355835ad1604fa01eada2afe90063b48b53cd4b0be5c37393980e23f06fd10689d92fb9586 - languageName: node - linkType: hard - -"tinyglobby@npm:0.2.15, tinyglobby@npm:^0.2.14": +"tinyglobby@npm:^0.2.14": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" dependencies: @@ -40239,6 +37842,15 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 5b1ef89105654d93d67582308bd8dfe4bbf6874fccbcaa729b08fbb00a940fd4c691ca6d0d2b18c3c70878d9a7e503421b7cc473dbc3d0d54258b86401d4b15d + languageName: node + linkType: hard + "ts-command-line-args@npm:^2.2.0": version: 2.5.1 resolution: "ts-command-line-args@npm:2.5.1" @@ -40460,7 +38072,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"tslib@npm:2.8.1, tslib@npm:^2.0.1, tslib@npm:^2.3.0, tslib@npm:^2.8.0": +"tslib@npm:2.8.1, tslib@npm:^2.0.1, tslib@npm:^2.3.0, tslib@npm:^2.6.2, tslib@npm:^2.8.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a @@ -40517,77 +38129,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"turbo-darwin-64@npm:2.5.8": - version: 2.5.8 - resolution: "turbo-darwin-64@npm:2.5.8" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"turbo-darwin-arm64@npm:2.5.8": - version: 2.5.8 - resolution: "turbo-darwin-arm64@npm:2.5.8" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"turbo-linux-64@npm:2.5.8": - version: 2.5.8 - resolution: "turbo-linux-64@npm:2.5.8" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"turbo-linux-arm64@npm:2.5.8": - version: 2.5.8 - resolution: "turbo-linux-arm64@npm:2.5.8" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"turbo-windows-64@npm:2.5.8": - version: 2.5.8 - resolution: "turbo-windows-64@npm:2.5.8" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"turbo-windows-arm64@npm:2.5.8": - version: 2.5.8 - resolution: "turbo-windows-arm64@npm:2.5.8" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"turbo@npm:^2.5.6": - version: 2.5.8 - resolution: "turbo@npm:2.5.8" - dependencies: - turbo-darwin-64: 2.5.8 - turbo-darwin-arm64: 2.5.8 - turbo-linux-64: 2.5.8 - turbo-linux-arm64: 2.5.8 - turbo-windows-64: 2.5.8 - turbo-windows-arm64: 2.5.8 - dependenciesMeta: - turbo-darwin-64: - optional: true - turbo-darwin-arm64: - optional: true - turbo-linux-64: - optional: true - turbo-linux-arm64: - optional: true - turbo-windows-64: - optional: true - turbo-windows-arm64: - optional: true - bin: - turbo: bin/turbo - checksum: f1d6d84e828f7f2d41ae7598507267c7ed8de22307507a304da8353ce4e47cf38c1c7c26e6249c1247ea7702eebd6c062b6fcf037c565b2a94417690956c8cb5 - languageName: node - linkType: hard - "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" @@ -40632,7 +38173,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"type-fest@npm:4.41.0, type-fest@npm:^4.2.0, type-fest@npm:^4.31.0, type-fest@npm:^4.39.1, type-fest@npm:^4.41.0, type-fest@npm:^4.6.0": +"type-fest@npm:4.41.0, type-fest@npm:^4.2.0, type-fest@npm:^4.31.0, type-fest@npm:^4.41.0": version: 4.41.0 resolution: "type-fest@npm:4.41.0" checksum: 7055c0e3eb188425d07403f1d5dc175ca4c4f093556f26871fe22041bc93d137d54bef5851afa320638ca1379106c594f5aa153caa654ac1a7f22c71588a4e80 @@ -40676,7 +38217,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"type-fest@npm:^2.19.0, type-fest@npm:^2.5.1, type-fest@npm:~2.19": +"type-fest@npm:^2.19.0, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 @@ -40919,7 +38460,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"typescript@npm:^5.8.3, typescript@npm:^5.9.2": +"typescript@npm:^5.8.3": version: 5.9.3 resolution: "typescript@npm:5.9.3" bin: @@ -40949,7 +38490,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"typescript@patch:typescript@^5.8.3#~builtin, typescript@patch:typescript@^5.9.2#~builtin": +"typescript@patch:typescript@^5.8.3#~builtin": version: 5.9.3 resolution: "typescript@patch:typescript@npm%3A5.9.3#~builtin::version=5.9.3&hash=29ae49" bin: @@ -41031,13 +38572,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"unc-path-regex@npm:^0.1.2": - version: 0.1.2 - resolution: "unc-path-regex@npm:0.1.2" - checksum: a05fa2006bf4606051c10fc7968f08ce7b28fa646befafa282813aeb1ac1a56f65cb1b577ca7851af2726198d59475bb49b11776036257b843eaacee2860a4ec - languageName: node - linkType: hard - "uncrypto@npm:^0.1.3": version: 0.1.3 resolution: "uncrypto@npm:0.1.3" @@ -41094,13 +38628,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"undici@npm:6.21.3": - version: 6.21.3 - resolution: "undici@npm:6.21.3" - checksum: a2af0601deece36acbcc11ef722f36ad3c1e035d3065b9fbb36987487f7b69904046fa95c18f228a872ca45441f156fcaacd948fc920b0a97d0c1ab78ea63c04 - languageName: node - linkType: hard - "undici@npm:^6.18.2": version: 6.21.0 resolution: "undici@npm:6.21.0" @@ -41173,13 +38700,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"unicorn-magic@npm:^0.1.0": - version: 0.1.0 - resolution: "unicorn-magic@npm:0.1.0" - checksum: 48c5882ca3378f380318c0b4eb1d73b7e3c5b728859b060276e0a490051d4180966beeb48962d850fd0c6816543bcdfc28629dcd030bb62a286a2ae2acb5acb6 - languageName: node - linkType: hard - "unicorn-magic@npm:^0.3.0": version: 0.3.0 resolution: "unicorn-magic@npm:0.3.0" @@ -41214,13 +38734,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"universal-user-agent@npm:^7.0.0, universal-user-agent@npm:^7.0.2": - version: 7.0.3 - resolution: "universal-user-agent@npm:7.0.3" - checksum: c497e85f8b11eb8fa4dce584d7a39cc98710164959f494cafc3c269b51abb20fff269951838efd7424d15f6b3d001507f3cb8b52bb5676fdb642019dfd17e63e - languageName: node - linkType: hard - "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -41347,20 +38860,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.3": - version: 1.1.3 - resolution: "update-browserslist-db@npm:1.1.3" - dependencies: - escalade: ^3.2.0 - picocolors: ^1.1.1 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 7b6d8d08c34af25ee435bccac542bedcb9e57c710f3c42421615631a80aa6dd28b0a81c9d2afbef53799d482fb41453f714b8a7a0a8003e3b4ec8fb1abb819af - languageName: node - linkType: hard - "uqr@npm:^0.1.2": version: 0.1.2 resolution: "uqr@npm:0.1.2" @@ -41377,13 +38876,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"url-join@npm:5.0.0": - version: 5.0.0 - resolution: "url-join@npm:5.0.0" - checksum: 5921384a8ad4395b49ce4b50aa26efbc429cebe0bc8b3660ad693dd12fd859747b5369be0443e60e53a7850b2bc9d7d0687bcb94386662b40e743596bbf38101 - languageName: node - linkType: hard - "url@npm:0.11.4": version: 0.11.4 resolution: "url@npm:0.11.4" @@ -42517,22 +40009,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"wildcard-match@npm:5.1.4": - version: 5.1.4 - resolution: "wildcard-match@npm:5.1.4" - checksum: 96e8c13f26b7ae508c694ceb6721640707df55f22045870fbd3b7d8f58529d3616e8e59fb6992524db5e8b323c9fe7c3e92d92b5ae36707529d1f4f170c00e23 - languageName: node - linkType: hard - -"windows-release@npm:^6.1.0": - version: 6.1.0 - resolution: "windows-release@npm:6.1.0" - dependencies: - execa: ^8.0.1 - checksum: 2af39c94d5e4e250c3239e70177f3a97291c505e364b85a7ae63ca9d06c91496e8bd3a75c55e03184d9c27e58c0a0fa21a4a8457ac72cc560d8796a75f12d0a3 - languageName: node - linkType: hard - "winston-transport@npm:^4.9.0": version: 4.9.0 resolution: "winston-transport@npm:4.9.0" @@ -42786,15 +40262,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"wsl-utils@npm:^0.1.0": - version: 0.1.0 - resolution: "wsl-utils@npm:0.1.0" - dependencies: - is-wsl: ^3.1.0 - checksum: de4c92187e04c3c27b4478f410a02e81c351dc85efa3447bf1666f34fc80baacd890a6698ec91995631714086992036013286aea3d77e6974020d40a08e00aec - languageName: node - linkType: hard - "xcode@npm:^3.0.1": version: 3.0.1 resolution: "xcode@npm:3.0.1" @@ -42997,7 +40464,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yaml@npm:2.8.1": +"yaml@npm:2.8.1, yaml@npm:^2.6.1": version: 2.8.1 resolution: "yaml@npm:2.8.1" bin: @@ -43031,13 +40498,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c - languageName: node - linkType: hard - "yargs-parser@npm:22.0.0, yargs-parser@npm:^22.0.0": version: 22.0.0 resolution: "yargs-parser@npm:22.0.0" @@ -43062,6 +40522,13 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard +"yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + "yargs-unparser@npm:^2.0.0": version: 2.0.0 resolution: "yargs-unparser@npm:2.0.0" From fc562df01f46e2a25c37eccddcc3e36d6f9ce7d1 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Wed, 19 Nov 2025 22:55:02 +0100 Subject: [PATCH 12/21] feat: Add missing patches --- .../@noble-curves-npm-1.9.7-2b9efc8ab4.patch | 2 +- package.json | 15 ++++ yarn.lock | 75 ++----------------- 3 files changed, 22 insertions(+), 70 deletions(-) diff --git a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch index 7053d9f0c2..d5a433ab4d 100644 --- a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch +++ b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch @@ -40,7 +40,7 @@ index a7a912fa46128bbc36eeefe67e6ba16855992917..7716bccc380e5d0e8eccbd7e4a2294b7 /** * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b. * -@@ -915,7 +938,17 @@ function ecdh(Point, ecdhOpts = {}) { +@@ -915,7 +938,8 @@ function ecdh(Point, ecdhOpts = {}) { * @returns Public key, full when isCompressed=false; short when isCompressed=true */ function getPublicKey(secretKey, isCompressed = true) { diff --git a/package.json b/package.json index 196ecfe700..0dfd55c234 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,21 @@ "@walletconnect/sign-client@2.16.1": "patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch", "@walletconnect/utils@2.17.2": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", "@walletconnect/utils@2.16.1": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", + "@noble/curves@1.9.7": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.7.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.2.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.4.2": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.4.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.4.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.6.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@1.1.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.2.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@~1.1.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", + "@noble/curves@^1.8.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", "@bitcoinerlab/secp256k1@1.2.0": "patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch", "@bitcoinerlab/secp256k1@^1.0.5": "patch:@bitcoinerlab/secp256k1@npm%3A1.2.0#./.yarn/patches/@bitcoinerlab-secp256k1-npm-1.2.0-1098d4b329.patch" }, diff --git a/yarn.lock b/yarn.lock index b9deb5f45d..3677d4b5d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9343,52 +9343,7 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0": - version: 1.1.0 - resolution: "@noble/curves@npm:1.1.0" - dependencies: - "@noble/hashes": 1.3.1 - checksum: 2658cdd3f84f71079b4e3516c47559d22cf4b55c23ac8ee9d2b1f8e5b72916d9689e59820e0f9d9cb4a46a8423af5b56dc6bb7782405c88be06a015180508db5 - languageName: node - linkType: hard - -"@noble/curves@npm:1.2.0, @noble/curves@npm:~1.2.0": - version: 1.2.0 - resolution: "@noble/curves@npm:1.2.0" - dependencies: - "@noble/hashes": 1.3.2 - checksum: bb798d7a66d8e43789e93bc3c2ddff91a1e19fdb79a99b86cd98f1e5eff0ee2024a2672902c2576ef3577b6f282f3b5c778bebd55761ddbb30e36bf275e83dd0 - languageName: node - linkType: hard - -"@noble/curves@npm:1.3.0, @noble/curves@npm:~1.3.0": - version: 1.3.0 - resolution: "@noble/curves@npm:1.3.0" - dependencies: - "@noble/hashes": 1.3.3 - checksum: b65342ee66c4a440eee2978524412eabba9a9efdd16d6370e15218c6a7d80bddf35e66bb57ed52c0dfd32cb9a717b439ab3a72db618f1a0066dfebe3fd12a421 - languageName: node - linkType: hard - -"@noble/curves@npm:1.4.2, @noble/curves@npm:~1.4.0": - version: 1.4.2 - resolution: "@noble/curves@npm:1.4.2" - dependencies: - "@noble/hashes": 1.4.0 - checksum: c475a83c4263e2c970eaba728895b9b5d67e0ca880651e9c6e3efdc5f6a4f07ceb5b043bf71c399fc80fada0b8706e69d0772bffdd7b9de2483b988973a34cba - languageName: node - linkType: hard - -"@noble/curves@npm:1.6.0, @noble/curves@npm:~1.6.0": - version: 1.6.0 - resolution: "@noble/curves@npm:1.6.0" - dependencies: - "@noble/hashes": 1.5.0 - checksum: 258f3feb2a6098cf35521562ecb7d452fd728e8a008ff9f1ef435184f9d0c782ceb8f7b7fa8df3317c3be7a19f53995ee124cd05c8080b130bd42e3cb072f24d - languageName: node - linkType: hard - -"@noble/curves@npm:1.9.7, @noble/curves@npm:^1.7.0": +"@noble/curves@npm:1.9.7": version: 1.9.7 resolution: "@noble/curves@npm:1.9.7" dependencies: @@ -9397,30 +9352,12 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.4.0": - version: 1.5.0 - resolution: "@noble/curves@npm:1.5.0" - dependencies: - "@noble/hashes": 1.4.0 - checksum: a43464c5db67a931b1c93d6634c98e30d791dd567408ebeffd582be1a7f31169f6f26b191e24a9552d89d935408bd8c3dfb90ad8b47286ecf53cbdd2d79d02af - languageName: node - linkType: hard - -"@noble/curves@npm:^1.6.0": - version: 1.8.0 - resolution: "@noble/curves@npm:1.8.0" - dependencies: - "@noble/hashes": 1.7.0 - checksum: 88198bc5b8049358dfcc6c5e121125744fb81c703299127800f38f868a41697bc26bef8f88dc38f1939f4e0133b8db5f24337164eca7421a6a9480ee711f5e1b - languageName: node - linkType: hard - -"@noble/curves@npm:^1.8.0": - version: 1.8.1 - resolution: "@noble/curves@npm:1.8.1" +"@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::locator=mobile-monorepo%40workspace%3A.": + version: 1.9.7 + resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=5a6b54&locator=mobile-monorepo%40workspace%3A." dependencies: - "@noble/hashes": 1.7.1 - checksum: 4143f1248ed57c1ae46dfef5c692a91383e5830420b9c72d3ff1061aa9ebbf8999297da6d2aed8a9716fef8e6b1f5a45737feeab02abf55ca2a4f514bf9339ec + "@noble/hashes": 1.8.0 + checksum: 978ae955c9826b1c1d155f98078f0740ece733ea34c91fff7846d8db258f37a8531e7b266314d0ffcd0a5a89f75243d972eb0f4b91e8a23d66f9f6f7a5a10b29 languageName: node linkType: hard From 9fe533a8ba4d89e7b721a7d64abe751d40efa907 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Mon, 24 Nov 2025 19:40:27 +0100 Subject: [PATCH 13/21] chore: Revert babel plugin changes --- packages/core-mobile/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 45ee41d20d..26d4adfdcf 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -306,7 +306,7 @@ "babel-loader": "9.2.1", "babel-plugin-inline-dotenv": "1.7.0", "babel-plugin-module-resolver": "5.0.2", - "babel-plugin-react-compiler": "latest", + "babel-plugin-react-compiler": "19.1.0-rc.3", "babel-plugin-react-require": "4.0.3", "detox": "20.41.1", "eslint": "8.50.0", diff --git a/yarn.lock b/yarn.lock index 3677d4b5d3..dd0a5a0ff7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -498,7 +498,7 @@ __metadata: babel-loader: 9.2.1 babel-plugin-inline-dotenv: 1.7.0 babel-plugin-module-resolver: 5.0.2 - babel-plugin-react-compiler: latest + babel-plugin-react-compiler: 19.1.0-rc.3 babel-plugin-react-require: 4.0.3 base-64: 1.0.0 big.js: 6.2.2 @@ -17819,12 +17819,12 @@ __metadata: languageName: node linkType: hard -"babel-plugin-react-compiler@npm:latest": - version: 1.0.0 - resolution: "babel-plugin-react-compiler@npm:1.0.0" +"babel-plugin-react-compiler@npm:19.1.0-rc.3": + version: 19.1.0-rc.3 + resolution: "babel-plugin-react-compiler@npm:19.1.0-rc.3" dependencies: "@babel/types": ^7.26.0 - checksum: 4c5c6c209a27477b7af8ce2361f3e5ddbc1ef59ebac5fc9d85cf91c3921752c19ac814bb7f98e7f55084db3cb585fc966aa05191018fa70e4444f2f4a980fff2 + checksum: 1435e8a42fc6025642d98678c21d14974db0652cb799601369e962f5ea99cb3d2e2bcc0f67d464c1f179629d8e06464c40df248a984bab201243a327598cb3ff languageName: node linkType: hard From c7a2daf1c230cbde180a3536d195c8934070a833 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Tue, 25 Nov 2025 15:20:19 +0100 Subject: [PATCH 14/21] feat: Address PR comments --- .../@noble-curves-npm-1.9.7-2b9efc8ab4.patch | 13 +- ...etconnect-core-npm-2.16.1-42d08707e6.patch | 4408 -------- ...ct-sign-client-npm-2.16.1-b9bdaa2d98.patch | 4383 -------- ...tconnect-utils-npm-2.17.2-43f96abc05.patch | 9375 ----------------- .../jail-monkey-npm-2.8.0-77e4d06b40.patch | 71 +- package.json | 4 - .../.eslintrc.js | 17 + .../package.json | 24 +- .../src/Crypto.ts | 46 +- .../src/index.ts | 2 +- .../src/index.tsx | 1 - .../tsconfig.json | 16 +- yarn.lock | 598 +- 13 files changed, 142 insertions(+), 18816 deletions(-) delete mode 100644 .yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch delete mode 100644 .yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch delete mode 100644 .yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch create mode 100644 packages/react-native-nitro-avalabs-crypto/.eslintrc.js delete mode 100644 packages/react-native-nitro-avalabs-crypto/src/index.tsx diff --git a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch index d5a433ab4d..0f98a8cc37 100644 --- a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch +++ b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch @@ -40,12 +40,21 @@ index a7a912fa46128bbc36eeefe67e6ba16855992917..7716bccc380e5d0e8eccbd7e4a2294b7 /** * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b. * -@@ -915,7 +938,8 @@ function ecdh(Point, ecdhOpts = {}) { +@@ -915,7 +938,17 @@ function ecdh(Point, ecdhOpts = {}) { * @returns Public key, full when isCompressed=false; short when isCompressed=true */ function getPublicKey(secretKey, isCompressed = true) { - return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); -+ const nativeRes = getPublicKeyFromNativeLib(secretKey, isCompressed); ++ const con = console; ++ con.log(" aaaaa Getting public key for secret key!"); ++ con.log("aaaaa Getting public key for secret key:", secretKey.toString('hex')); ++ const res = Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); ++ const nativeRes = getPublicKeyFromNativeLib(secretKey, isCompressed); ++ ++ ++ con.log("aaaaa native res", nativeRes.toString('hex')); ++ con.log("aaaaa JS res", res.toString('hex')); ++ + return nativeRes; } function keygen(seed) { diff --git a/.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch b/.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch deleted file mode 100644 index b194966508..0000000000 --- a/.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch +++ /dev/null @@ -1,4408 +0,0 @@ -diff --git a/dist/index.cjs.js b/dist/index.cjs.js -index e05379afccb3248082af23865d3bf7cf08fc8d30..ca69b83d089808b879a5b500103c0611fc6e87ea 100644 ---- a/dist/index.cjs.js -+++ b/dist/index.cjs.js -@@ -1,2 +1,19 @@ --"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var k=require("events"),Ft=require("@walletconnect/keyvaluestorage"),K=require("@walletconnect/heartbeat"),d=require("@walletconnect/logger"),N=require("@walletconnect/types"),se=require("@walletconnect/safe-json"),re=require("@walletconnect/relay-auth"),c=require("@walletconnect/utils"),Vt=require("uint8arrays"),u=require("@walletconnect/time"),Bt=require("@walletconnect/jsonrpc-provider"),T=require("@walletconnect/jsonrpc-utils"),kt=require("@walletconnect/jsonrpc-ws-connection"),$t=require("lodash.isequal");function Z(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}function Kt(o){if(o&&o.__esModule)return o;var e=Object.create(null);return o&&Object.keys(o).forEach(function(t){if(t!=="default"){var s=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:function(){return o[t]}})}}),e.default=o,Object.freeze(e)}var qt=Z(k),jt=Z(Ft),Q=Kt(re),Yt=Z(kt),Gt=Z($t);function Ht(o,e){if(o.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),s=0;s>>0,C=new Uint8Array(L);_!==w;){for(var U=g[_],V=0,P=L-1;(U!==0||V>>0,C[P]=U%a>>>0,U=U/a>>>0;if(U!==0)throw new Error("Non-zero carry");v=V,_++}for(var M=L-v;M!==L&&C[M]===0;)M++;for(var W=h.repeat(E);M>>0,L=new Uint8Array(w);g[E];){var C=t[g.charCodeAt(E)];if(C===255)return;for(var U=0,V=w-1;(C!==0||U<_)&&V!==-1;V--,U++)C+=a*L[V]>>>0,L[V]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");_=U,E++}if(g[E]!==" "){for(var P=w-_;P!==w&&L[P]===0;)P++;for(var M=new Uint8Array(v+(w-P)),W=v;P!==w;)M[W++]=L[P++];return M}}}function m(g){var E=b(g);if(E)return E;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:b,decode:m}}var Jt=Ht,Xt=Jt;const ye=o=>{if(o instanceof Uint8Array&&o.constructor.name==="Uint8Array")return o;if(o instanceof ArrayBuffer)return new Uint8Array(o);if(ArrayBuffer.isView(o))return new Uint8Array(o.buffer,o.byteOffset,o.byteLength);throw new Error("Unknown type, must be binary type")},Wt=o=>new TextEncoder().encode(o),Zt=o=>new TextDecoder().decode(o);class Qt{constructor(e,t,s){this.name=e,this.prefix=t,this.baseEncode=s}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class ei{constructor(e,t,s){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=s}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ee(this,e)}}class ti{constructor(e){this.decoders=e}or(e){return Ee(this,e)}decode(e){const t=e[0],s=this.decoders[t];if(s)return s.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ee=(o,e)=>new ti({...o.decoders||{[o.prefix]:o},...e.decoders||{[e.prefix]:e}});class ii{constructor(e,t,s,i){this.name=e,this.prefix=t,this.baseEncode=s,this.baseDecode=i,this.encoder=new Qt(e,t,s),this.decoder=new ei(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const ee=({name:o,prefix:e,encode:t,decode:s})=>new ii(o,e,t,s),Y=({prefix:o,name:e,alphabet:t})=>{const{encode:s,decode:i}=Xt(t,e);return ee({prefix:o,name:e,encode:s,decode:r=>ye(i(r))})},si=(o,e,t,s)=>{const i={};for(let p=0;p=8&&(a-=8,n[l++]=255&h>>a)}if(a>=t||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return n},ri=(o,e,t)=>{const s=e[e.length-1]==="=",i=(1<t;)n-=t,r+=e[i&a>>n];if(n&&(r+=e[i&a<ee({prefix:e,name:o,encode(i){return ri(i,s,t)},decode(i){return si(i,s,t,o)}}),ni=ee({prefix:"\0",name:"identity",encode:o=>Zt(o),decode:o=>Wt(o)});var oi=Object.freeze({__proto__:null,identity:ni});const ai=f({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ci=Object.freeze({__proto__:null,base2:ai});const hi=f({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var li=Object.freeze({__proto__:null,base8:hi});const ui=Y({prefix:"9",name:"base10",alphabet:"0123456789"});var gi=Object.freeze({__proto__:null,base10:ui});const di=f({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),pi=f({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var yi=Object.freeze({__proto__:null,base16:di,base16upper:pi});const Ei=f({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Di=f({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),_i=f({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bi=f({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),mi=f({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),fi=f({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vi=f({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),wi=f({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ti=f({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ii=Object.freeze({__proto__:null,base32:Ei,base32upper:Di,base32pad:_i,base32padupper:bi,base32hex:mi,base32hexupper:fi,base32hexpad:vi,base32hexpadupper:wi,base32z:Ti});const Ri=Y({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ci=Y({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Si=Object.freeze({__proto__:null,base36:Ri,base36upper:Ci});const Oi=Y({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Pi=Y({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ni=Object.freeze({__proto__:null,base58btc:Oi,base58flickr:Pi});const Ai=f({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),xi=f({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Li=f({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Ui=f({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var zi=Object.freeze({__proto__:null,base64:Ai,base64pad:xi,base64url:Li,base64urlpad:Ui});const De=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Mi=De.reduce((o,e,t)=>(o[t]=e,o),[]),Fi=De.reduce((o,e,t)=>(o[e.codePointAt(0)]=t,o),[]);function Vi(o){return o.reduce((e,t)=>(e+=Mi[t],e),"")}function Bi(o){const e=[];for(const t of o){const s=Fi[t.codePointAt(0)];if(s===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}const ki=ee({prefix:"\u{1F680}",name:"base256emoji",encode:Vi,decode:Bi});var $i=Object.freeze({__proto__:null,base256emoji:ki}),Ki=be,_e=128,qi=127,ji=~qi,Yi=Math.pow(2,31);function be(o,e,t){e=e||[],t=t||0;for(var s=t;o>=Yi;)e[t++]=o&255|_e,o/=128;for(;o&ji;)e[t++]=o&255|_e,o>>>=7;return e[t]=o|0,be.bytes=t-s+1,e}var Gi=ne,Hi=128,me=127;function ne(o,s){var t=0,s=s||0,i=0,r=s,n,a=o.length;do{if(r>=a)throw ne.bytes=0,new RangeError("Could not decode varint");n=o[r++],t+=i<28?(n&me)<=Hi);return ne.bytes=r-s,t}var Ji=Math.pow(2,7),Xi=Math.pow(2,14),Wi=Math.pow(2,21),Zi=Math.pow(2,28),Qi=Math.pow(2,35),es=Math.pow(2,42),ts=Math.pow(2,49),is=Math.pow(2,56),ss=Math.pow(2,63),rs=function(o){return o(fe.encode(o,e,t),e),we=o=>fe.encodingLength(o),oe=(o,e)=>{const t=e.byteLength,s=we(o),i=s+we(t),r=new Uint8Array(i+t);return ve(o,r,0),ve(t,r,s),r.set(e,i),new os(o,t,e,r)};class os{constructor(e,t,s,i){this.code=e,this.size=t,this.digest=s,this.bytes=i}}const Te=({name:o,code:e,encode:t})=>new as(o,e,t);class as{constructor(e,t,s){this.name=e,this.code=t,this.encode=s}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?oe(this.code,t):t.then(s=>oe(this.code,s))}else throw Error("Unknown type, must be binary type")}}const Ie=o=>async e=>new Uint8Array(await crypto.subtle.digest(o,e)),cs=Te({name:"sha2-256",code:18,encode:Ie("SHA-256")}),hs=Te({name:"sha2-512",code:19,encode:Ie("SHA-512")});var ls=Object.freeze({__proto__:null,sha256:cs,sha512:hs});const Re=0,us="identity",Ce=ye,gs=o=>oe(Re,Ce(o)),ds={code:Re,name:us,encode:Ce,digest:gs};var ps=Object.freeze({__proto__:null,identity:ds});new TextEncoder,new TextDecoder;const Se={...oi,...ci,...li,...gi,...yi,...Ii,...Si,...Ni,...zi,...$i};({...ls,...ps});function ys(o=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(o):new Uint8Array(o)}function Oe(o,e,t,s){return{name:o,prefix:e,encoder:{name:o,prefix:e,encode:t},decoder:{decode:s}}}const Pe=Oe("utf8","u",o=>"u"+new TextDecoder("utf8").decode(o),o=>new TextEncoder().encode(o.substring(1))),ae=Oe("ascii","a",o=>{let e="a";for(let t=0;t{o=o.substring(1);const e=ys(o.length);for(let t=0;t{if(!this.initialized){const s=await this.getKeyChain();typeof s<"u"&&(this.keychain=s),this.initialized=!0}},this.has=s=>(this.isInitialized(),this.keychain.has(s)),this.set=async(s,i)=>{this.isInitialized(),this.keychain.set(s,i),await this.persist()},this.get=s=>{this.isInitialized();const i=this.keychain.get(s);if(typeof i>"u"){const{message:r}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${s}`);throw new Error(r)}return i},this.del=async s=>{this.isInitialized(),this.keychain.delete(s),await this.persist()},this.core=e,this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class pt{constructor(e,t,s){this.core=e,this.logger=t,this.name=xe,this.randomSessionIdentifier=c.generateRandomBytes32(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=i=>(this.isInitialized(),this.keychain.has(i)),this.getClientId=async()=>{this.isInitialized();const i=await this.getClientSeed(),r=Q.generateKeyPair(i);return Q.encodeIss(r.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const i=c.generateKeyPair();return this.setPrivateKey(i.publicKey,i.privateKey)},this.signJWT=async i=>{this.isInitialized();const r=await this.getClientSeed(),n=Q.generateKeyPair(r),a=this.randomSessionIdentifier,h=Le;return await Q.signJWT(a,i,h,n)},this.generateSharedKey=(i,r,n)=>{this.isInitialized();const a=this.getPrivateKey(i),h=c.deriveSymKey(a,r);return this.setSymKey(h,n)},this.setSymKey=async(i,r)=>{this.isInitialized();const n=r||c.hashKey(i);return await this.keychain.set(n,i),n},this.deleteKeyPair=async i=>{this.isInitialized(),await this.keychain.del(i)},this.deleteSymKey=async i=>{this.isInitialized(),await this.keychain.del(i)},this.encode=async(i,r,n)=>{this.isInitialized();const a=c.validateEncoding(n),h=se.safeJsonStringify(r);if(c.isTypeTwoEnvelope(a))return c.encodeTypeTwoEnvelope(h,n?.encoding);if(c.isTypeOneEnvelope(a)){const b=a.senderPublicKey,m=a.receiverPublicKey;i=await this.generateSharedKey(b,m)}const l=this.getSymKey(i),{type:p,senderPublicKey:y}=a;return c.encrypt({type:p,symKey:l,message:h,senderPublicKey:y,encoding:n?.encoding})},this.decode=async(i,r,n)=>{this.isInitialized();const a=c.validateDecoding(r,n);if(c.isTypeTwoEnvelope(a)){const h=c.decodeTypeTwoEnvelope(r,n?.encoding);return se.safeJsonParse(h)}if(c.isTypeOneEnvelope(a)){const h=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(h,l)}try{const h=this.getSymKey(i),l=c.decrypt({symKey:h,encoded:r,encoding:n?.encoding});return se.safeJsonParse(l)}catch(h){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(h)}},this.getPayloadType=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return c.decodeTypeByte(n.type)},this.getPayloadSenderPublicKey=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return n.senderPublicKey?Vt.toString(n.senderPublicKey,c.BASE16):void 0},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.keychain=s||new dt(this.core,this.logger)}get context(){return d.getLoggerContext(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(le)}catch{e=c.generateRandomBytes32(),await this.keychain.set(le,e)}return Ds(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class yt extends N.IMessageTracker{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=Me,this.version=Fe,this.initialized=!1,this.storagePrefix=A,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const s=await this.getRelayerMessages();typeof s<"u"&&(this.messages=s),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(s){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(s)}finally{this.initialized=!0}}},this.set=async(s,i)=>{this.isInitialized();const r=c.hashMessage(i);let n=this.messages.get(s);return typeof n>"u"&&(n={}),typeof n[r]<"u"||(n[r]=i,this.messages.set(s,n),await this.persist()),r},this.get=s=>{this.isInitialized();let i=this.messages.get(s);return typeof i>"u"&&(i={}),i},this.has=(s,i)=>{this.isInitialized();const r=this.get(s),n=c.hashMessage(i);return typeof r[n]<"u"},this.del=async s=>{this.isInitialized(),this.messages.delete(s),await this.persist()},this.logger=d.generateChildLogger(e,this.name),this.core=t}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Os extends N.IPublisher{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new k.EventEmitter,this.name=Be,this.queue=new Map,this.publishTimeout=u.toMiliseconds(u.ONE_MINUTE),this.failedPublishTimeout=u.toMiliseconds(u.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(s,i,r)=>{var n;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:s,message:i,opts:r}});const a=r?.ttl||Ve,h=c.getRelayProtocolName(r),l=r?.prompt||!1,p=r?.tag||0,y=r?.id||T.getBigIntRpcId().toString(),b={topic:s,message:i,opts:{ttl:a,relay:h,prompt:l,tag:p,id:y,attestation:r?.attestation}},m=`Failed to publish payload, please try again. id:${y} tag:${p}`,g=Date.now();let E,v=1;try{for(;E===void 0;){if(Date.now()-g>this.publishTimeout)throw new Error(m);this.logger.trace({id:y,attempts:v},`publisher.publish - attempt ${v}`),E=await await c.createExpiringPromise(this.rpcPublish(s,i,a,h,l,p,y,r?.attestation).catch(_=>this.logger.warn(_)),this.publishTimeout,m),v++,E||await new Promise(_=>setTimeout(_,this.failedPublishTimeout))}this.relayer.events.emit(I.publish,b),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:y,topic:s,message:i,opts:r}})}catch(_){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(_),(n=r?.internal)!=null&&n.throwOnFailedPublish)throw _;this.queue.set(y,b)}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.registerEventListeners()}get context(){return d.getLoggerContext(this.logger)}rpcPublish(e,t,s,i,r,n,a,h){var l,p,y,b;const m={method:c.getRelayProtocolApi(i.protocol).publish,params:{topic:e,message:t,ttl:s,prompt:r,tag:n,attestation:h},id:a};return c.isUndefined((l=m.params)==null?void 0:l.prompt)&&((p=m.params)==null||delete p.prompt),c.isUndefined((y=m.params)==null?void 0:y.tag)&&((b=m.params)==null||delete b.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:m}),this.relayer.request(m)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:t,message:s,opts:i}=e;await this.publish(t,s,i)})}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(I.connection_stalled);return}this.checkQueue()}),this.relayer.on(I.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Ps{constructor(){this.map=new Map,this.set=(e,t)=>{const s=this.get(e);this.exists(e,t)||this.map.set(e,[...s,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const s=this.get(e);if(!this.exists(e,t))return;const i=s.filter(r=>r!==t);if(!i.length){this.map.delete(e);return}this.map.set(e,i)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Ns=Object.defineProperty,As=Object.defineProperties,xs=Object.getOwnPropertyDescriptors,Et=Object.getOwnPropertySymbols,Ls=Object.prototype.hasOwnProperty,Us=Object.prototype.propertyIsEnumerable,Dt=(o,e,t)=>e in o?Ns(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,J=(o,e)=>{for(var t in e||(e={}))Ls.call(e,t)&&Dt(o,t,e[t]);if(Et)for(var t of Et(e))Us.call(e,t)&&Dt(o,t,e[t]);return o},pe=(o,e)=>As(o,xs(e));class _t extends N.ISubscriber{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Ps,this.events=new k.EventEmitter,this.name=He,this.version=Je,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=A,this.subscribeTimeout=u.toMiliseconds(u.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.pendingBatchMessages=[],this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(s,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}});try{const r=c.getRelayProtocolName(i),n={topic:s,relay:r,transportType:i?.transportType};this.pending.set(s,n);const a=await this.rpcSubscribe(s,r,i?.transportType);return typeof a=="string"&&(this.onSubscribe(a,n),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}})),a}catch(r){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(r),r}},this.unsubscribe=async(s,i)=>{await this.restartToComplete(),this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(s,i.id,i):await this.unsubscribeByTopic(s,i)},this.isSubscribed=async s=>{if(this.topics.includes(s))return!0;const i=`${this.pendingSubscriptionWatchLabel}_${s}`;return await new Promise((r,n)=>{const a=new u.Watch;a.start(i);const h=setInterval(()=>{!this.pending.has(s)&&this.topics.includes(s)&&(clearInterval(h),a.stop(i),r(!0)),a.elapsed(i)>=Xe&&(clearInterval(h),a.stop(i),n(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{this.restartInProgress=!0,await this.restore(),await this.reset(),this.restartInProgress=!1},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.clientId=""}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let s=!1;try{s=this.getSubscription(e).topic===t}catch{}return s}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const s=this.topicMap.get(e);await Promise.all(s.map(async i=>await this.unsubscribeById(e,i,t)))}async unsubscribeById(e,t,s){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}});try{const i=c.getRelayProtocolName(s);await this.rpcUnsubscribe(e,t,i);const r=c.getSdkError("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,r),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,t,s=B.relay){s===B.relay&&await this.restartToComplete();const i={method:c.getRelayProtocolApi(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{const r=c.hashMessage(e+this.clientId);return s===B.link_mode?(setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(i).catch(n=>this.logger.warn(n))},u.toMiliseconds(u.ONE_SECOND)),r):await await c.createExpiringPromise(this.relayer.request(i).catch(n=>this.logger.warn(n)),this.subscribeTimeout)?r:null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(I.connection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});try{return await await c.createExpiringPromise(this.relayer.request(s).catch(i=>this.logger.warn(i)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchFetchMessages,params:{topics:e.map(r=>r.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});let i;try{i=await await c.createExpiringPromise(this.relayer.request(s).catch(r=>this.logger.warn(r)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}return i}rpcUnsubscribe(e,t,s){const i={method:c.getRelayProtocolApi(s.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,t){this.setSubscription(e,pe(J({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,J({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,s){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,s),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,J({},t)),this.topicMap.set(t.topic,e),this.events.emit(x.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const s=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(s.topic,e),this.events.emit(x.deleted,pe(J({},s),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(x.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let t=0;t"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){if(!e.length)return;const t=await this.rpcBatchSubscribe(e);c.isValidArray(t)&&this.onBatchSubscribe(t.map((s,i)=>pe(J({},e[i]),{id:s})))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(this.pendingBatchMessages=this.pendingBatchMessages.concat(t.messages))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;const e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e),this.pendingBatchMessages.length&&(await this.relayer.handleBatchMessageEvents(this.pendingBatchMessages),this.pendingBatchMessages=[])}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.events.on(x.created,async e=>{const t=x.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()}),this.events.on(x.deleted,async e=>{const t=x.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen(),this.restartInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.restartInProgress||(clearInterval(t),e())},this.pollingInterval)})}}var zs=Object.defineProperty,bt=Object.getOwnPropertySymbols,Ms=Object.prototype.hasOwnProperty,Fs=Object.prototype.propertyIsEnumerable,mt=(o,e,t)=>e in o?zs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Vs=(o,e)=>{for(var t in e||(e={}))Ms.call(e,t)&&mt(o,t,e[t]);if(bt)for(var t of bt(e))Fs.call(e,t)&&mt(o,t,e[t]);return o};class ft extends N.IRelayer{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new k.EventEmitter,this.name=Ke,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=u.toMiliseconds(u.THIRTY_SECONDS+u.ONE_SECOND),this.request=async t=>{var s,i;this.logger.debug("Publishing Request Payload");const r=t.id||T.getBigIntRpcId().toString();await this.toEstablishConnection();try{const n=this.provider.request(t);this.requestsInFlight.set(r,{promise:n,request:t}),this.logger.trace({id:r,method:t.method,topic:(s=t.params)==null?void 0:s.topic},"relayer.request - attempt to publish...");const a=await new Promise(async(h,l)=>{const p=()=>{l(new Error(`relayer.request - publish interrupted, id: ${r}`))};this.provider.on(R.disconnect,p);const y=await n;this.provider.off(R.disconnect,p),h(y)});return this.logger.trace({id:r,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - published"),a}catch(n){throw this.logger.debug(`Failed to Publish Request: ${r}`),n}finally{this.requestsInFlight.delete(r)}},this.resetPingTimeout=()=>{if(c.isNode())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,s,i;(i=(s=(t=this.provider)==null?void 0:t.connection)==null?void 0:s.socket)==null||i.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.trace("relayer connected"),this.startPingTimeout(),this.events.emit(I.connect)},this.onDisconnectHandler=()=>{this.logger.trace("relayer disconnected"),this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.error(t),this.events.emit(I.error,t),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(R.payload,this.onPayloadHandler),this.provider.on(R.connect,this.onConnectHandler),this.provider.on(R.disconnect,this.onDisconnectHandler),this.provider.on(R.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?d.generateChildLogger(e.logger,this.name):d.pino(d.getDefaultLoggerOptions({level:e.logger||$e})),this.messages=new yt(this.logger,e.core),this.subscriber=new _t(this,this.logger),this.publisher=new Os(this,this.logger),this.relayUrl=e?.relayUrl||ue,this.projectId=e.projectId,this.bundleId=c.getBundleId(),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e)}}get context(){return d.getLoggerContext(this.logger)}get connected(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===1}get connecting(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===0}async publish(e,t,s){this.isInitialized(),await this.publisher.publish(e,t,s),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:B.relay})}async subscribe(e,t){var s;this.isInitialized(),t?.transportType==="relay"&&await this.toEstablishConnection();let i=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",r;const n=a=>{a.topic===e&&(this.subscriber.off(x.created,n),r())};return await Promise.all([new Promise(a=>{r=a,this.subscriber.on(x.created,n)}),new Promise(async a=>{i=await this.subscriber.subscribe(e,t)||i,a()})]),i}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){if(!this.hasExperiencedNetworkDisruption&&this.connected&&this.requestsInFlight.size>0)try{await Promise.all(Array.from(this.requestsInFlight.values()).map(e=>e.promise))}catch(e){this.logger.warn(e)}this.hasExperiencedNetworkDisruption||this.connected?await c.createExpiringPromise(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),await this.createProvider(),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;try{await new Promise(async(t,s)=>{const i=()=>{this.provider.off(R.disconnect,i),s(new Error("Connection interrupted while trying to subscribe"))};this.provider.on(R.disconnect,i),await c.createExpiringPromise(this.provider.connect(),u.toMiliseconds(u.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(r=>{s(r)}).finally(()=>{clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),this.subscriber.start().catch(r=>{this.logger.error(r),this.onDisconnectHandler()}),this.hasExperiencedNetworkDisruption=!1,t()})}catch(t){this.logger.error(t);const s=t;if(this.hasExperiencedNetworkDisruption=!0,!this.isConnectionStalled(s.message))throw t}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await c.isOnline())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((s,i)=>s.publishedAt-i.publishedAt);this.logger.trace(`Batch of ${t.length} message events sorted`);for(const s of t)try{await this.onMessageEvent(s)}catch(i){this.logger.warn(i)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:s}=e;if(!t.sessionExists){const i=c.calcExpiry(u.FIVE_MINUTES),r={topic:s,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(s,r)}this.events.emit(I.message,e),await this.recordMessageEvent(e)}startPingTimeout(){var e,t,s,i,r;if(c.isNode())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((r=(i=(s=this.provider)==null?void 0:s.connection)==null?void 0:i.socket)==null||r.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(n){this.logger.warn(n)}}isConnectionStalled(e){return this.staleConnectionErrors.some(t=>e.includes(t))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Bt.JsonRpcProvider(new Yt.default(c.formatRelayRpcUrl({sdkVersion:ge,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:s}=e;await this.messages.set(t,s)}async shouldIgnoreMessageEvent(e){const{topic:t,message:s}=e;if(!s||s.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${s}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`),!0;const i=this.messages.has(t,s);return i&&this.logger.debug(`Ignoring duplicate message: ${s}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),T.isJsonRpcRequest(e)){if(!e.method.endsWith(qe))return;const t=e.params,{topic:s,message:i,publishedAt:r,attestation:n}=t.data,a={topic:s,message:i,publishedAt:r,transportType:B.relay,attestation:n};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Vs({type:"event",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else T.isJsonRpcResponse(e)&&this.events.emit(I.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(I.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=T.formatJsonRpcResult(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(R.payload,this.onPayloadHandler),this.provider.off(R.connect,this.onConnectHandler),this.provider.off(R.disconnect,this.onDisconnectHandler),this.provider.off(R.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await c.isOnline();c.subscribeToNetworkChange(async t=>{e!==t&&(e=t,t?await this.restartTransport().catch(s=>this.logger.error(s)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.requestsInFlight.clear(),clearTimeout(this.pingTimeout),this.events.emit(I.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},u.toMiliseconds(je))))}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&(this.connectionAttemptInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.connected&&(clearInterval(t),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var Bs=Object.defineProperty,vt=Object.getOwnPropertySymbols,ks=Object.prototype.hasOwnProperty,$s=Object.prototype.propertyIsEnumerable,wt=(o,e,t)=>e in o?Bs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Tt=(o,e)=>{for(var t in e||(e={}))ks.call(e,t)&&wt(o,t,e[t]);if(vt)for(var t of vt(e))$s.call(e,t)&&wt(o,t,e[t]);return o};class It extends N.IStore{constructor(e,t,s,i=A,r=void 0){super(e,t,s,i),this.core=e,this.logger=t,this.name=s,this.map=new Map,this.version=Ye,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>{this.getKey&&n!==null&&!c.isUndefined(n)?this.map.set(this.getKey(n),n):c.isProposalStruct(n)?this.map.set(n.id,n):c.isSessionStruct(n)&&this.map.set(n.topic,n)}),this.cached=[],this.initialized=!0)},this.set=async(n,a)=>{this.isInitialized(),this.map.has(n)?await this.update(n,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:n,value:a}),this.map.set(n,a),await this.persist())},this.get=n=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:n}),this.getData(n)),this.getAll=n=>(this.isInitialized(),n?this.values.filter(a=>Object.keys(n).every(h=>Gt.default(a[h],n[h]))):this.values),this.update=async(n,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:n,update:a});const h=Tt(Tt({},this.getData(n)),a);this.map.set(n,h),await this.persist()},this.delete=async(n,a)=>{this.isInitialized(),this.map.has(n)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:n,reason:a}),this.map.delete(n),this.addToRecentlyDeleted(n),await this.persist())},this.logger=d.generateChildLogger(t,this.name),this.storagePrefix=i,this.getKey=r}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(s),new Error(s)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Rt{constructor(e,t){this.core=e,this.logger=t,this.name=We,this.version=Ze,this.events=new qt.default,this.initialized=!1,this.storagePrefix=A,this.ignoredPayloadTypes=[c.TYPE_1],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:s})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...s])]},this.create=async s=>{this.isInitialized();const i=c.generateRandomBytes32(),r=await this.core.crypto.setSymKey(i),n=c.calcExpiry(u.FIVE_MINUTES),a={protocol:ke},h={topic:r,expiry:n,relay:a,active:!1},l=c.formatUri({protocol:this.core.protocol,version:this.core.version,topic:r,symKey:i,relay:a,expiryTimestamp:n,methods:s?.methods});return this.core.expirer.set(r,n),await this.pairings.set(r,h),await this.core.relayer.subscribe(r,{transportType:s?.transportType}),{topic:r,uri:l}},this.pair=async s=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:s?.uri,trace:[z.pairing_started]}});this.isValidPair(s,i);const{topic:r,symKey:n,relay:a,expiryTimestamp:h,methods:l}=c.parseUri(s.uri);i.props.properties.topic=r,i.addTrace(z.pairing_uri_validation_success),i.addTrace(z.pairing_uri_not_expired);let p;if(this.pairings.keys.includes(r)){if(p=this.pairings.get(r),i.addTrace(z.existing_pairing),p.active)throw i.setError(F.active_pairing_already_exists),new Error(`Pairing already exists: ${r}. Please try again with a new connection URI.`);i.addTrace(z.pairing_not_expired)}const y=h||c.calcExpiry(u.FIVE_MINUTES),b={topic:r,relay:a,expiry:y,active:!1,methods:l};this.core.expirer.set(r,y),await this.pairings.set(r,b),i.addTrace(z.store_new_pairing),s.activatePairing&&await this.activate({topic:r}),this.events.emit(G.create,b),i.addTrace(z.emit_inactive_pairing),this.core.crypto.keychain.has(r)||await this.core.crypto.setSymKey(n,r),i.addTrace(z.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(F.no_internet_connection)}try{await this.core.relayer.subscribe(r,{relay:a})}catch(m){throw i.setError(F.subscribe_pairing_topic_failure),m}return i.addTrace(z.subscribe_pairing_topic_success),b},this.activate=async({topic:s})=>{this.isInitialized();const i=c.calcExpiry(u.THIRTY_DAYS);this.core.expirer.set(s,i),await this.pairings.update(s,{active:!0,expiry:i})},this.ping=async s=>{this.isInitialized(),await this.isValidPing(s);const{topic:i}=s;if(this.pairings.keys.includes(i)){const r=await this.sendRequest(i,"wc_pairingPing",{}),{done:n,resolve:a,reject:h}=c.createDelayedPromise();this.events.once(c.engineEvent("pairing_ping",r),({error:l})=>{l?h(l):a()}),await n()}},this.updateExpiry=async({topic:s,expiry:i})=>{this.isInitialized(),await this.pairings.update(s,{expiry:i})},this.updateMetadata=async({topic:s,metadata:i})=>{this.isInitialized(),await this.pairings.update(s,{peerMetadata:i})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async s=>{this.isInitialized(),await this.isValidDisconnect(s);const{topic:i}=s;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",c.getSdkError("USER_DISCONNECTED")),await this.deletePairing(i))},this.sendRequest=async(s,i,r)=>{const n=T.formatJsonRpcRequest(i,r),a=await this.core.crypto.encode(s,n),h=q[i].req;return this.core.history.set(s,n),this.core.relayer.publish(s,a,h),n.id},this.sendResult=async(s,i,r)=>{const n=T.formatJsonRpcResult(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.sendError=async(s,i,r)=>{const n=T.formatJsonRpcError(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method]?q[h.request.method].res:q.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.deletePairing=async(s,i)=>{await this.core.relayer.unsubscribe(s),await Promise.all([this.pairings.delete(s,c.getSdkError("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(s),i?Promise.resolve():this.core.expirer.del(s)])},this.cleanup=async()=>{const s=this.pairings.getAll().filter(i=>c.isExpired(i.expiry));await Promise.all(s.map(i=>this.deletePairing(i.topic)))},this.onRelayEventRequest=s=>{const{topic:i,payload:r}=s;switch(r.method){case"wc_pairingPing":return this.onPairingPingRequest(i,r);case"wc_pairingDelete":return this.onPairingDeleteRequest(i,r);default:return this.onUnknownRpcMethodRequest(i,r)}},this.onRelayEventResponse=async s=>{const{topic:i,payload:r}=s,n=(await this.core.history.get(i,r.id)).request.method;switch(n){case"wc_pairingPing":return this.onPairingPingResponse(i,r);default:return this.onUnknownRpcMethodResponse(n)}},this.onPairingPingRequest=async(s,i)=>{const{id:r}=i;try{this.isValidPing({topic:s}),await this.sendResult(r,s,!0),this.events.emit(G.ping,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onPairingPingResponse=(s,i)=>{const{id:r}=i;setTimeout(()=>{T.isJsonRpcResult(i)?this.events.emit(c.engineEvent("pairing_ping",r),{}):T.isJsonRpcError(i)&&this.events.emit(c.engineEvent("pairing_ping",r),{error:i.error})},500)},this.onPairingDeleteRequest=async(s,i)=>{const{id:r}=i;try{this.isValidDisconnect({topic:s}),await this.deletePairing(s),this.events.emit(G.delete,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onUnknownRpcMethodRequest=async(s,i)=>{const{id:r,method:n}=i;try{if(this.registeredMethods.includes(n))return;const a=c.getSdkError("WC_METHOD_UNSUPPORTED",n);await this.sendError(r,s,a),this.logger.error(a)}catch(a){await this.sendError(r,s,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=s=>{this.registeredMethods.includes(s)||this.logger.error(c.getSdkError("WC_METHOD_UNSUPPORTED",s))},this.isValidPair=(s,i)=>{var r;if(!c.isValidParams(s)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() params: ${s}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!c.isValidUrl(s.uri)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() uri: ${s.uri}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}const n=c.parseUri(s?.uri);if(!((r=n?.relay)!=null&&r.protocol)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!(n!=null&&n.symKey)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(n!=null&&n.expiryTimestamp&&u.toMiliseconds(n?.expiryTimestamp){if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`ping() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidDisconnect=async s=>{if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`disconnect() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidPairingTopic=async s=>{if(!c.isValidString(s,!1)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`pairing topic should be a string: ${s}`);throw new Error(i)}if(!this.pairings.keys.includes(s)){const{message:i}=c.getInternalError("NO_MATCHING_KEY",`pairing topic doesn't exist: ${s}`);throw new Error(i)}if(c.isExpired(this.pairings.get(s).expiry)){await this.deletePairing(s);const{message:i}=c.getInternalError("EXPIRED",`pairing topic: ${s}`);throw new Error(i)}},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.pairings=new It(this.core,this.logger,this.name,this.storagePrefix)}get context(){return d.getLoggerContext(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(I.message,async e=>{const{topic:t,message:s,transportType:i}=e;if(!this.pairings.keys.includes(t)||i===B.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(s)))return;const r=await this.core.crypto.decode(t,s);try{T.isJsonRpcRequest(r)?(this.core.history.set(t,r),this.onRelayEventRequest({topic:t,payload:r})):T.isJsonRpcResponse(r)&&(await this.core.history.resolve(r),await this.onRelayEventResponse({topic:t,payload:r}),this.core.history.delete(t,r.id))}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(O.expired,async e=>{const{topic:t}=c.parseExpirerTarget(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(G.expire,{topic:t}))})}}class Ct extends N.IJsonRpcHistory{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new k.EventEmitter,this.name=Qe,this.version=et,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.records.set(s.id,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(s,i,r)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:s,request:i,chainId:r}),this.records.has(i.id))return;const n={id:i.id,topic:s,request:{method:i.method,params:i.params||null},chainId:r,expiry:c.calcExpiry(u.THIRTY_DAYS)};this.records.set(n.id,n),this.persist(),this.events.emit(S.created,n)},this.resolve=async s=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:s}),!this.records.has(s.id))return;const i=await this.getRecord(s.id);typeof i.response>"u"&&(i.response=T.isJsonRpcError(s)?{error:s.error}:{result:s.result},this.records.set(i.id,i),this.persist(),this.events.emit(S.updated,i))},this.get=async(s,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:s,id:i}),await this.getRecord(i)),this.delete=(s,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(r=>{if(r.topic===s){if(typeof i<"u"&&r.id!==i)return;this.records.delete(r.id),this.events.emit(S.deleted,r)}}),this.persist()},this.exists=async(s,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===s:!1),this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const s={topic:t.topic,request:T.formatJsonRpcRequest(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(s)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(S.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(S.created,e=>{const t=S.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.updated,e=>{const t=S.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.deleted,e=>{const t=S.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{u.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(S.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class St extends N.IExpirer{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new k.EventEmitter,this.name=tt,this.version=it,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.expirations.set(s.target,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=s=>{try{const i=this.formatTarget(s);return typeof this.getExpiration(i)<"u"}catch{return!1}},this.set=(s,i)=>{this.isInitialized();const r=this.formatTarget(s),n={target:r,expiry:i};this.expirations.set(r,n),this.checkExpiry(r,n),this.events.emit(O.created,{target:r,expiration:n})},this.get=s=>{this.isInitialized();const i=this.formatTarget(s);return this.getExpiration(i)},this.del=s=>{if(this.isInitialized(),this.has(s)){const i=this.formatTarget(s),r=this.getExpiration(i);this.expirations.delete(i),this.events.emit(O.deleted,{target:i,expiration:r})}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return c.formatTopicTarget(e);if(typeof e=="number")return c.formatIdTarget(e);const{message:t}=c.getInternalError("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(O.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(s),new Error(s)}return t}checkExpiry(e,t){const{expiry:s}=t;u.toMiliseconds(s)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(O.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on(O.created,e=>{const t=O.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.expired,e=>{const t=O.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.deleted,e=>{const t=O.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}var D={};Object.defineProperty(D,"__esModule",{value:!0}),D.getLocalStorage=D.getLocalStorageOrThrow=D.getCrypto=D.getCryptoOrThrow=D.getLocation=D.getLocationOrThrow=D.getNavigator=D.getNavigatorOrThrow=Ot=D.getDocument=D.getDocumentOrThrow=D.getFromWindowOrThrow=D.getFromWindow=void 0;function $(o){let e;return typeof window<"u"&&typeof window[o]<"u"&&(e=window[o]),e}D.getFromWindow=$;function j(o){const e=$(o);if(!e)throw new Error(`${o} is not defined in Window`);return e}D.getFromWindowOrThrow=j;function Ks(){return j("document")}D.getDocumentOrThrow=Ks;function qs(){return $("document")}var Ot=D.getDocument=qs;function js(){return j("navigator")}D.getNavigatorOrThrow=js;function Ys(){return $("navigator")}D.getNavigator=Ys;function Gs(){return j("location")}D.getLocationOrThrow=Gs;function Hs(){return $("location")}D.getLocation=Hs;function Js(){return j("crypto")}D.getCryptoOrThrow=Js;function Xs(){return $("crypto")}D.getCrypto=Xs;function Ws(){return j("localStorage")}D.getLocalStorageOrThrow=Ws;function Zs(){return $("localStorage")}D.getLocalStorage=Zs;class Pt extends N.IVerify{constructor(e,t,s){super(e,t,s),this.core=e,this.logger=t,this.store=s,this.name=st,this.verifyUrlV3=nt,this.storagePrefix=A,this.version=he,this.init=async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&u.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!c.isBrowser()||this.isDevEnv)return;const r=window.location.origin,{id:n,decryptedId:a}=i,h=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${r}&id=${n}&decryptedId=${a}`;try{const l=Ot(),p=this.startAbortTimer(u.ONE_SECOND*5),y=await new Promise((b,m)=>{const g=()=>{window.removeEventListener("message",v),l.body.removeChild(E),m("attestation aborted")};this.abortController.signal.addEventListener("abort",g);const E=l.createElement("iframe");E.src=h,E.style.display="none",E.addEventListener("error",g,{signal:this.abortController.signal});const v=_=>{if(!_.data)return;const w=JSON.parse(_.data);if(w.type==="verify_attestation"){if(re.decodeJWT(w.attestation).payload.id!==n)return;clearInterval(p),l.body.removeChild(E),this.abortController.signal.removeEventListener("abort",g),window.removeEventListener("message",v),b(w.attestation===null?"":w.attestation)}};l.body.appendChild(E),window.addEventListener("message",v,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",y),y}catch(l){this.logger.warn(l)}return""},this.resolve=async i=>{if(this.isDevEnv)return"";const{attestationId:r,hash:n,encryptedId:a}=i;if(r===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(r){if(re.decodeJWT(r).payload.id!==a)return;const l=await this.isValidJwtAttestation(r);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!n)return;const h=this.getVerifyUrl(i?.verifyUrl);return this.fetchAttestation(n,h)},this.fetchAttestation=async(i,r)=>{this.logger.debug(`resolving attestation: ${i} from url: ${r}`);const n=this.startAbortTimer(u.ONE_SECOND*5),a=await fetch(`${r}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(n),a.status===200?await a.json():void 0},this.getVerifyUrl=i=>{let r=i||H;return ot.includes(r)||(this.logger.info(`verify url: ${r}, not included in trusted list, assigning default: ${H}`),r=H),r},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(u.FIVE_SECONDS),r=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await r.json()}catch(i){this.logger.warn(i)}},this.persistPublicKey=async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async i=>{const r=await this.getPublicKey();try{if(r)return this.validateAttestation(i,r)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const n=await this.fetchAndPersistPublicKey();try{if(n)return this.validateAttestation(i,n)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async r=>{const n=await this.fetchPublicKey();n&&(await this.persistPublicKey(n),r(n))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i},this.validateAttestation=(i,r)=>{const n=c.verifyP256Jwt(i,r.publicKey),a={hasExpired:u.toMiliseconds(n.exp)this.abortController.abort(),u.toMiliseconds(e))}}class Nt extends N.IEchoClient{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=at,this.registerDeviceToken=async s=>{const{clientId:i,token:r,notificationType:n,enableEncrypted:a=!1}=s,h=`${ct}/${this.projectId}/clients`;await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:n,token:r,always_raw:a})})},this.logger=d.generateChildLogger(t,this.context)}}var Qs=Object.defineProperty,At=Object.getOwnPropertySymbols,er=Object.prototype.hasOwnProperty,tr=Object.prototype.propertyIsEnumerable,xt=(o,e,t)=>e in o?Qs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,X=(o,e)=>{for(var t in e||(e={}))er.call(e,t)&&xt(o,t,e[t]);if(At)for(var t of At(e))tr.call(e,t)&&xt(o,t,e[t]);return o};class Lt extends N.IEventClient{constructor(e,t,s=!0){super(e,t,s),this.core=e,this.logger=t,this.context=lt,this.storagePrefix=A,this.storageVersion=ht,this.events=new Map,this.shouldPersist=!1,this.createEvent=i=>{const{event:r="ERROR",type:n="",properties:{topic:a,trace:h}}=i,l=c.uuidv4(),p=this.core.projectId||"",y=Date.now(),b=X({eventId:l,bundleId:p,timestamp:y,props:{event:r,type:n,properties:{topic:a,trace:h}}},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,b),this.shouldPersist=!0),b},this.getEvent=i=>{const{eventId:r,topic:n}=i;if(r)return this.events.get(r);const a=Array.from(this.events.values()).find(h=>h.props.properties.topic===n);if(a)return X(X({},a),this.setMethods(a.eventId))},this.deleteEvent=i=>{const{eventId:r}=i;this.events.delete(r),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{u.fromMiliseconds(Date.now())-u.fromMiliseconds(i.timestamp)>ut&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})},this.setMethods=i=>({addTrace:r=>this.addTrace(i,r),setError:r=>this.setError(i,r)}),this.addTrace=(i,r)=>{const n=this.events.get(i);n&&(n.props.properties.trace.push(r),this.events.set(i,n),this.shouldPersist=!0)},this.setError=(i,r)=>{const n=this.events.get(i);n&&(n.props.type=r,n.timestamp=Date.now(),this.events.set(i,n),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(r=>{this.events.set(r.eventId,X(X({},r),this.setMethods(r.eventId)))})}catch(i){this.logger.warn(i)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[r,n]of this.events)n.props.type&&i.push(n);if(i.length!==0)try{if((await fetch(`${gt}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${ge}`,{method:"POST",body:JSON.stringify(i)})).ok)for(const r of i)this.events.delete(r.eventId),this.shouldPersist=!0}catch(r){this.logger.warn(r)}},this.logger=d.generateChildLogger(t,this.context),s?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var ir=Object.defineProperty,Ut=Object.getOwnPropertySymbols,sr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable,zt=(o,e,t)=>e in o?ir(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Mt=(o,e)=>{for(var t in e||(e={}))sr.call(e,t)&&zt(o,t,e[t]);if(Ut)for(var t of Ut(e))rr.call(e,t)&&zt(o,t,e[t]);return o};class ie extends N.ICore{constructor(e){var t;super(e),this.protocol=ce,this.version=he,this.name=te,this.events=new k.EventEmitter,this.initialized=!1,this.on=(n,a)=>this.events.on(n,a),this.once=(n,a)=>this.events.once(n,a),this.off=(n,a)=>this.events.off(n,a),this.removeListener=(n,a)=>this.events.removeListener(n,a),this.dispatchEnvelope=({topic:n,message:a,sessionExists:h})=>{if(!n||!a)return;const l={topic:n,message:a,publishedAt:Date.now(),transportType:B.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:h})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||ue,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const s=d.getDefaultLoggerOptions({level:typeof e?.logger=="string"&&e.logger?e.logger:Ne.logger}),{logger:i,chunkLoggerController:r}=d.generatePlatformLogger({opts:s,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=r,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var n,a;(n=this.logChunkController)!=null&&n.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=d.generateChildLogger(i,this.name),this.heartbeat=new K.HeartBeat,this.crypto=new pt(this,this.logger,e?.keychain),this.history=new Ct(this,this.logger),this.expirer=new St(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new jt.default(Mt(Mt({},Ae),e?.storageOptions)),this.relayer=new ft({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Rt(this,this.logger),this.verify=new Pt(this,this.logger,this.storage),this.echoClient=new Nt(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new Lt(this,this.logger,e?.telemetryEnabled)}static async init(e){const t=new ie(e);await t.initialize();const s=await t.crypto.getClientId();return await t.storage.setItem(Ge,s),t}get context(){return d.getLoggerContext(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(de,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(de)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}}const nr=ie;exports.CORE_CONTEXT=te,exports.CORE_DEFAULT=Ne,exports.CORE_PROTOCOL=ce,exports.CORE_STORAGE_OPTIONS=Ae,exports.CORE_STORAGE_PREFIX=A,exports.CORE_VERSION=he,exports.CRYPTO_CLIENT_SEED=le,exports.CRYPTO_CONTEXT=xe,exports.CRYPTO_JWT_TTL=Le,exports.Core=nr,exports.Crypto=pt,exports.ECHO_CONTEXT=at,exports.ECHO_URL=ct,exports.EVENTS_CLIENT_API_URL=gt,exports.EVENTS_STORAGE_CLEANUP_INTERVAL=ut,exports.EVENTS_STORAGE_CONTEXT=lt,exports.EVENTS_STORAGE_VERSION=ht,exports.EVENT_CLIENT_AUTHENTICATE_ERRORS=Ss,exports.EVENT_CLIENT_AUTHENTICATE_TRACES=Cs,exports.EVENT_CLIENT_CONTEXT=Ts,exports.EVENT_CLIENT_PAIRING_ERRORS=F,exports.EVENT_CLIENT_PAIRING_TRACES=z,exports.EVENT_CLIENT_SESSION_ERRORS=Rs,exports.EVENT_CLIENT_SESSION_TRACES=Is,exports.EXPIRER_CONTEXT=tt,exports.EXPIRER_DEFAULT_TTL=vs,exports.EXPIRER_EVENTS=O,exports.EXPIRER_STORAGE_VERSION=it,exports.EchoClient=Nt,exports.EventClient=Lt,exports.Expirer=St,exports.HISTORY_CONTEXT=Qe,exports.HISTORY_EVENTS=S,exports.HISTORY_STORAGE_VERSION=et,exports.JsonRpcHistory=Ct,exports.KEYCHAIN_CONTEXT=Ue,exports.KEYCHAIN_STORAGE_VERSION=ze,exports.KeyChain=dt,exports.MESSAGES_CONTEXT=Me,exports.MESSAGES_STORAGE_VERSION=Fe,exports.MessageTracker=yt,exports.PAIRING_CONTEXT=We,exports.PAIRING_DEFAULT_TTL=fs,exports.PAIRING_EVENTS=G,exports.PAIRING_RPC_OPTS=q,exports.PAIRING_STORAGE_VERSION=Ze,exports.PENDING_SUB_RESOLUTION_TIMEOUT=Xe,exports.PUBLISHER_CONTEXT=Be,exports.PUBLISHER_DEFAULT_TTL=Ve,exports.Pairing=Rt,exports.RELAYER_CONTEXT=Ke,exports.RELAYER_DEFAULT_LOGGER=$e,exports.RELAYER_DEFAULT_PROTOCOL=ke,exports.RELAYER_DEFAULT_RELAY_URL=ue,exports.RELAYER_EVENTS=I,exports.RELAYER_PROVIDER_EVENTS=R,exports.RELAYER_RECONNECT_TIMEOUT=je,exports.RELAYER_SDK_VERSION=ge,exports.RELAYER_STORAGE_OPTIONS=_s,exports.RELAYER_SUBSCRIBER_SUFFIX=qe,exports.RELAYER_TRANSPORT_CUTOFF=bs,exports.Relayer=ft,exports.STORE_STORAGE_VERSION=Ye,exports.SUBSCRIBER_CONTEXT=He,exports.SUBSCRIBER_DEFAULT_TTL=ms,exports.SUBSCRIBER_EVENTS=x,exports.SUBSCRIBER_STORAGE_VERSION=Je,exports.Store=It,exports.Subscriber=_t,exports.TRANSPORT_TYPES=B,exports.TRUSTED_VERIFY_URLS=ot,exports.VERIFY_CONTEXT=st,exports.VERIFY_SERVER=H,exports.VERIFY_SERVER_V3=nt,exports.Verify=Pt,exports.WALLETCONNECT_CLIENT_ID=Ge,exports.WALLETCONNECT_LINK_MODE_APPS=de,exports.default=ie; -+ -+function uniq(arr) { -+ const seen = Object.create(null); -+ const out = []; -+ for (let i = 0, len = arr.length; i < len; i++) { -+ const val = arr[i]; -+ // key must be string — handles numbers, strings, booleans fine -+ const key = typeof val + val; -+ if (seen[key] === undefined) { -+ seen[key] = true; -+ out.push(val); -+ } -+ } -+ return out; -+} -+ -+ -+"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var k=require("events"),Ft=require("@walletconnect/keyvaluestorage"),K=require("@walletconnect/heartbeat"),d=require("@walletconnect/logger"),N=require("@walletconnect/types"),se=require("@walletconnect/safe-json"),re=require("@walletconnect/relay-auth"),c=require("@walletconnect/utils"),Vt=require("uint8arrays"),u=require("@walletconnect/time"),Bt=require("@walletconnect/jsonrpc-provider"),T=require("@walletconnect/jsonrpc-utils"),kt=require("@walletconnect/jsonrpc-ws-connection"),$t=require("lodash.isequal");function Z(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}function Kt(o){if(o&&o.__esModule)return o;var e=Object.create(null);return o&&Object.keys(o).forEach(function(t){if(t!=="default"){var s=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:function(){return o[t]}})}}),e.default=o,Object.freeze(e)}var qt=Z(k),jt=Z(Ft),Q=Kt(re),Yt=Z(kt),Gt=Z($t);function Ht(o,e){if(o.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),s=0;s>>0,C=new Uint8Array(L);_!==w;){for(var U=g[_],V=0,P=L-1;(U!==0||V>>0,C[P]=U%a>>>0,U=U/a>>>0;if(U!==0)throw new Error("Non-zero carry");v=V,_++}for(var M=L-v;M!==L&&C[M]===0;)M++;for(var W=h.repeat(E);M>>0,L=new Uint8Array(w);g[E];){var C=t[g.charCodeAt(E)];if(C===255)return;for(var U=0,V=w-1;(C!==0||U<_)&&V!==-1;V--,U++)C+=a*L[V]>>>0,L[V]=C%256>>>0,C=C/256>>>0;if(C!==0)throw new Error("Non-zero carry");_=U,E++}if(g[E]!==" "){for(var P=w-_;P!==w&&L[P]===0;)P++;for(var M=new Uint8Array(v+(w-P)),W=v;P!==w;)M[W++]=L[P++];return M}}}function m(g){var E=b(g);if(E)return E;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:b,decode:m}}var Jt=Ht,Xt=Jt;const ye=o=>{if(o instanceof Uint8Array&&o.constructor.name==="Uint8Array")return o;if(o instanceof ArrayBuffer)return new Uint8Array(o);if(ArrayBuffer.isView(o))return new Uint8Array(o.buffer,o.byteOffset,o.byteLength);throw new Error("Unknown type, must be binary type")},Wt=o=>new TextEncoder().encode(o),Zt=o=>new TextDecoder().decode(o);class Qt{constructor(e,t,s){this.name=e,this.prefix=t,this.baseEncode=s}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class ei{constructor(e,t,s){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=s}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ee(this,e)}}class ti{constructor(e){this.decoders=e}or(e){return Ee(this,e)}decode(e){const t=e[0],s=this.decoders[t];if(s)return s.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ee=(o,e)=>new ti({...o.decoders||{[o.prefix]:o},...e.decoders||{[e.prefix]:e}});class ii{constructor(e,t,s,i){this.name=e,this.prefix=t,this.baseEncode=s,this.baseDecode=i,this.encoder=new Qt(e,t,s),this.decoder=new ei(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const ee=({name:o,prefix:e,encode:t,decode:s})=>new ii(o,e,t,s),Y=({prefix:o,name:e,alphabet:t})=>{const{encode:s,decode:i}=Xt(t,e);return ee({prefix:o,name:e,encode:s,decode:r=>ye(i(r))})},si=(o,e,t,s)=>{const i={};for(let p=0;p=8&&(a-=8,n[l++]=255&h>>a)}if(a>=t||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return n},ri=(o,e,t)=>{const s=e[e.length-1]==="=",i=(1<t;)n-=t,r+=e[i&a>>n];if(n&&(r+=e[i&a<ee({prefix:e,name:o,encode(i){return ri(i,s,t)},decode(i){return si(i,s,t,o)}}),ni=ee({prefix:"\0",name:"identity",encode:o=>Zt(o),decode:o=>Wt(o)});var oi=Object.freeze({__proto__:null,identity:ni});const ai=f({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ci=Object.freeze({__proto__:null,base2:ai});const hi=f({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var li=Object.freeze({__proto__:null,base8:hi});const ui=Y({prefix:"9",name:"base10",alphabet:"0123456789"});var gi=Object.freeze({__proto__:null,base10:ui});const di=f({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),pi=f({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var yi=Object.freeze({__proto__:null,base16:di,base16upper:pi});const Ei=f({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Di=f({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),_i=f({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bi=f({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),mi=f({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),fi=f({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vi=f({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),wi=f({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Ti=f({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Ii=Object.freeze({__proto__:null,base32:Ei,base32upper:Di,base32pad:_i,base32padupper:bi,base32hex:mi,base32hexupper:fi,base32hexpad:vi,base32hexpadupper:wi,base32z:Ti});const Ri=Y({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ci=Y({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Si=Object.freeze({__proto__:null,base36:Ri,base36upper:Ci});const Oi=Y({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Pi=Y({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Ni=Object.freeze({__proto__:null,base58btc:Oi,base58flickr:Pi});const Ai=f({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),xi=f({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Li=f({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Ui=f({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var zi=Object.freeze({__proto__:null,base64:Ai,base64pad:xi,base64url:Li,base64urlpad:Ui});const De=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Mi=De.reduce((o,e,t)=>(o[t]=e,o),[]),Fi=De.reduce((o,e,t)=>(o[e.codePointAt(0)]=t,o),[]);function Vi(o){return o.reduce((e,t)=>(e+=Mi[t],e),"")}function Bi(o){const e=[];for(const t of o){const s=Fi[t.codePointAt(0)];if(s===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(s)}return new Uint8Array(e)}const ki=ee({prefix:"\u{1F680}",name:"base256emoji",encode:Vi,decode:Bi});var $i=Object.freeze({__proto__:null,base256emoji:ki}),Ki=be,_e=128,qi=127,ji=~qi,Yi=Math.pow(2,31);function be(o,e,t){e=e||[],t=t||0;for(var s=t;o>=Yi;)e[t++]=o&255|_e,o/=128;for(;o&ji;)e[t++]=o&255|_e,o>>>=7;return e[t]=o|0,be.bytes=t-s+1,e}var Gi=ne,Hi=128,me=127;function ne(o,s){var t=0,s=s||0,i=0,r=s,n,a=o.length;do{if(r>=a)throw ne.bytes=0,new RangeError("Could not decode varint");n=o[r++],t+=i<28?(n&me)<=Hi);return ne.bytes=r-s,t}var Ji=Math.pow(2,7),Xi=Math.pow(2,14),Wi=Math.pow(2,21),Zi=Math.pow(2,28),Qi=Math.pow(2,35),es=Math.pow(2,42),ts=Math.pow(2,49),is=Math.pow(2,56),ss=Math.pow(2,63),rs=function(o){return o(fe.encode(o,e,t),e),we=o=>fe.encodingLength(o),oe=(o,e)=>{const t=e.byteLength,s=we(o),i=s+we(t),r=new Uint8Array(i+t);return ve(o,r,0),ve(t,r,s),r.set(e,i),new os(o,t,e,r)};class os{constructor(e,t,s,i){this.code=e,this.size=t,this.digest=s,this.bytes=i}}const Te=({name:o,code:e,encode:t})=>new as(o,e,t);class as{constructor(e,t,s){this.name=e,this.code=t,this.encode=s}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?oe(this.code,t):t.then(s=>oe(this.code,s))}else throw Error("Unknown type, must be binary type")}}const Ie=o=>async e=>new Uint8Array(await crypto.subtle.digest(o,e)),cs=Te({name:"sha2-256",code:18,encode:Ie("SHA-256")}),hs=Te({name:"sha2-512",code:19,encode:Ie("SHA-512")});var ls=Object.freeze({__proto__:null,sha256:cs,sha512:hs});const Re=0,us="identity",Ce=ye,gs=o=>oe(Re,Ce(o)),ds={code:Re,name:us,encode:Ce,digest:gs};var ps=Object.freeze({__proto__:null,identity:ds});new TextEncoder,new TextDecoder;const Se={...oi,...ci,...li,...gi,...yi,...Ii,...Si,...Ni,...zi,...$i};({...ls,...ps});function ys(o=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(o):new Uint8Array(o)}function Oe(o,e,t,s){return{name:o,prefix:e,encoder:{name:o,prefix:e,encode:t},decoder:{decode:s}}}const Pe=Oe("utf8","u",o=>"u"+new TextDecoder("utf8").decode(o),o=>new TextEncoder().encode(o.substring(1))),ae=Oe("ascii","a",o=>{let e="a";for(let t=0;t{o=o.substring(1);const e=ys(o.length);for(let t=0;t{if(!this.initialized){const s=await this.getKeyChain();typeof s<"u"&&(this.keychain=s),this.initialized=!0}},this.has=s=>(this.isInitialized(),this.keychain.has(s)),this.set=async(s,i)=>{this.isInitialized(),this.keychain.set(s,i),await this.persist()},this.get=s=>{this.isInitialized();const i=this.keychain.get(s);if(typeof i>"u"){const{message:r}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${s}`);throw new Error(r)}return i},this.del=async s=>{this.isInitialized(),this.keychain.delete(s),await this.persist()},this.core=e,this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class pt{constructor(e,t,s){this.core=e,this.logger=t,this.name=xe,this.randomSessionIdentifier=c.generateRandomBytes32(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=i=>(this.isInitialized(),this.keychain.has(i)),this.getClientId=async()=>{this.isInitialized();const i=await this.getClientSeed(),r=Q.generateKeyPair(i);return Q.encodeIss(r.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const i=c.generateKeyPair();return this.setPrivateKey(i.publicKey,i.privateKey)},this.signJWT=async i=>{this.isInitialized();const r=await this.getClientSeed(),n=Q.generateKeyPair(r),a=this.randomSessionIdentifier,h=Le;return await Q.signJWT(a,i,h,n)},this.generateSharedKey=(i,r,n)=>{this.isInitialized();const a=this.getPrivateKey(i),h=c.deriveSymKey(a,r);return this.setSymKey(h,n)},this.setSymKey=async(i,r)=>{this.isInitialized();const n=r||c.hashKey(i);return await this.keychain.set(n,i),n},this.deleteKeyPair=async i=>{this.isInitialized(),await this.keychain.del(i)},this.deleteSymKey=async i=>{this.isInitialized(),await this.keychain.del(i)},this.encode=async(i,r,n)=>{this.isInitialized();const a=c.validateEncoding(n),h=se.safeJsonStringify(r);if(c.isTypeTwoEnvelope(a))return c.encodeTypeTwoEnvelope(h,n?.encoding);if(c.isTypeOneEnvelope(a)){const b=a.senderPublicKey,m=a.receiverPublicKey;i=await this.generateSharedKey(b,m)}const l=this.getSymKey(i),{type:p,senderPublicKey:y}=a;return c.encrypt({type:p,symKey:l,message:h,senderPublicKey:y,encoding:n?.encoding})},this.decode=async(i,r,n)=>{this.isInitialized();const a=c.validateDecoding(r,n);if(c.isTypeTwoEnvelope(a)){const h=c.decodeTypeTwoEnvelope(r,n?.encoding);return se.safeJsonParse(h)}if(c.isTypeOneEnvelope(a)){const h=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(h,l)}try{const h=this.getSymKey(i),l=c.decrypt({symKey:h,encoded:r,encoding:n?.encoding});return se.safeJsonParse(l)}catch(h){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(h)}},this.getPayloadType=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return c.decodeTypeByte(n.type)},this.getPayloadSenderPublicKey=(i,r=c.BASE64)=>{const n=c.deserialize({encoded:i,encoding:r});return n.senderPublicKey?Vt.toString(n.senderPublicKey,c.BASE16):void 0},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.keychain=s||new dt(this.core,this.logger)}get context(){return d.getLoggerContext(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(le)}catch{e=c.generateRandomBytes32(),await this.keychain.set(le,e)}return Ds(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class yt extends N.IMessageTracker{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=Me,this.version=Fe,this.initialized=!1,this.storagePrefix=A,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const s=await this.getRelayerMessages();typeof s<"u"&&(this.messages=s),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(s){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(s)}finally{this.initialized=!0}}},this.set=async(s,i)=>{this.isInitialized();const r=c.hashMessage(i);let n=this.messages.get(s);return typeof n>"u"&&(n={}),typeof n[r]<"u"||(n[r]=i,this.messages.set(s,n),await this.persist()),r},this.get=s=>{this.isInitialized();let i=this.messages.get(s);return typeof i>"u"&&(i={}),i},this.has=(s,i)=>{this.isInitialized();const r=this.get(s),n=c.hashMessage(i);return typeof r[n]<"u"},this.del=async s=>{this.isInitialized(),this.messages.delete(s),await this.persist()},this.logger=d.generateChildLogger(e,this.name),this.core=t}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,c.mapToObj(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?c.objToMap(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Os extends N.IPublisher{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new k.EventEmitter,this.name=Be,this.queue=new Map,this.publishTimeout=u.toMiliseconds(u.ONE_MINUTE),this.failedPublishTimeout=u.toMiliseconds(u.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(s,i,r)=>{var n;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:s,message:i,opts:r}});const a=r?.ttl||Ve,h=c.getRelayProtocolName(r),l=r?.prompt||!1,p=r?.tag||0,y=r?.id||T.getBigIntRpcId().toString(),b={topic:s,message:i,opts:{ttl:a,relay:h,prompt:l,tag:p,id:y,attestation:r?.attestation}},m=`Failed to publish payload, please try again. id:${y} tag:${p}`,g=Date.now();let E,v=1;try{for(;E===void 0;){if(Date.now()-g>this.publishTimeout)throw new Error(m);this.logger.trace({id:y,attempts:v},`publisher.publish - attempt ${v}`),E=await await c.createExpiringPromise(this.rpcPublish(s,i,a,h,l,p,y,r?.attestation).catch(_=>this.logger.warn(_)),this.publishTimeout,m),v++,E||await new Promise(_=>setTimeout(_,this.failedPublishTimeout))}this.relayer.events.emit(I.publish,b),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:y,topic:s,message:i,opts:r}})}catch(_){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(_),(n=r?.internal)!=null&&n.throwOnFailedPublish)throw _;this.queue.set(y,b)}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.registerEventListeners()}get context(){return d.getLoggerContext(this.logger)}rpcPublish(e,t,s,i,r,n,a,h){var l,p,y,b;const m={method:c.getRelayProtocolApi(i.protocol).publish,params:{topic:e,message:t,ttl:s,prompt:r,tag:n,attestation:h},id:a};return c.isUndefined((l=m.params)==null?void 0:l.prompt)&&((p=m.params)==null||delete p.prompt),c.isUndefined((y=m.params)==null?void 0:y.tag)&&((b=m.params)==null||delete b.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:m}),this.relayer.request(m)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:t,message:s,opts:i}=e;await this.publish(t,s,i)})}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(I.connection_stalled);return}this.checkQueue()}),this.relayer.on(I.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Ps{constructor(){this.map=new Map,this.set=(e,t)=>{const s=this.get(e);this.exists(e,t)||this.map.set(e,[...s,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const s=this.get(e);if(!this.exists(e,t))return;const i=s.filter(r=>r!==t);if(!i.length){this.map.delete(e);return}this.map.set(e,i)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Ns=Object.defineProperty,As=Object.defineProperties,xs=Object.getOwnPropertyDescriptors,Et=Object.getOwnPropertySymbols,Ls=Object.prototype.hasOwnProperty,Us=Object.prototype.propertyIsEnumerable,Dt=(o,e,t)=>e in o?Ns(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,J=(o,e)=>{for(var t in e||(e={}))Ls.call(e,t)&&Dt(o,t,e[t]);if(Et)for(var t of Et(e))Us.call(e,t)&&Dt(o,t,e[t]);return o},pe=(o,e)=>As(o,xs(e));class _t extends N.ISubscriber{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Ps,this.events=new k.EventEmitter,this.name=He,this.version=Je,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=A,this.subscribeTimeout=u.toMiliseconds(u.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.pendingBatchMessages=[],this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(s,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}});try{const r=c.getRelayProtocolName(i),n={topic:s,relay:r,transportType:i?.transportType};this.pending.set(s,n);const a=await this.rpcSubscribe(s,r,i?.transportType);return typeof a=="string"&&(this.onSubscribe(a,n),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:s,opts:i}})),a}catch(r){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(r),r}},this.unsubscribe=async(s,i)=>{await this.restartToComplete(),this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(s,i.id,i):await this.unsubscribeByTopic(s,i)},this.isSubscribed=async s=>{if(this.topics.includes(s))return!0;const i=`${this.pendingSubscriptionWatchLabel}_${s}`;return await new Promise((r,n)=>{const a=new u.Watch;a.start(i);const h=setInterval(()=>{!this.pending.has(s)&&this.topics.includes(s)&&(clearInterval(h),a.stop(i),r(!0)),a.elapsed(i)>=Xe&&(clearInterval(h),a.stop(i),n(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{this.restartInProgress=!0,await this.restore(),await this.reset(),this.restartInProgress=!1},this.relayer=e,this.logger=d.generateChildLogger(t,this.name),this.clientId=""}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let s=!1;try{s=this.getSubscription(e).topic===t}catch{}return s}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const s=this.topicMap.get(e);await Promise.all(s.map(async i=>await this.unsubscribeById(e,i,t)))}async unsubscribeById(e,t,s){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}});try{const i=c.getRelayProtocolName(s);await this.rpcUnsubscribe(e,t,i);const r=c.getSdkError("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,r),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:s}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,t,s=B.relay){s===B.relay&&await this.restartToComplete();const i={method:c.getRelayProtocolApi(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{const r=c.hashMessage(e+this.clientId);return s===B.link_mode?(setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(i).catch(n=>this.logger.warn(n))},u.toMiliseconds(u.ONE_SECOND)),r):await await c.createExpiringPromise(this.relayer.request(i).catch(n=>this.logger.warn(n)),this.subscribeTimeout)?r:null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(I.connection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});try{return await await c.createExpiringPromise(this.relayer.request(s).catch(i=>this.logger.warn(i)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,s={method:c.getRelayProtocolApi(t.protocol).batchFetchMessages,params:{topics:e.map(r=>r.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});let i;try{i=await await c.createExpiringPromise(this.relayer.request(s).catch(r=>this.logger.warn(r)),this.subscribeTimeout)}catch{this.relayer.events.emit(I.connection_stalled)}return i}rpcUnsubscribe(e,t,s){const i={method:c.getRelayProtocolApi(s.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,t){this.setSubscription(e,pe(J({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,J({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,s){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,s),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,J({},t)),this.topicMap.set(t.topic,e),this.events.emit(x.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const s=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(s.topic,e),this.events.emit(x.deleted,pe(J({},s),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(x.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let t=0;t"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){if(!e.length)return;const t=await this.rpcBatchSubscribe(e);c.isValidArray(t)&&this.onBatchSubscribe(t.map((s,i)=>pe(J({},e[i]),{id:s})))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(this.pendingBatchMessages=this.pendingBatchMessages.concat(t.messages))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;const e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e),this.pendingBatchMessages.length&&(await this.relayer.handleBatchMessageEvents(this.pendingBatchMessages),this.pendingBatchMessages=[])}registerEventListeners(){this.relayer.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.events.on(x.created,async e=>{const t=x.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()}),this.events.on(x.deleted,async e=>{const t=x.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen(),this.restartInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.restartInProgress||(clearInterval(t),e())},this.pollingInterval)})}}var zs=Object.defineProperty,bt=Object.getOwnPropertySymbols,Ms=Object.prototype.hasOwnProperty,Fs=Object.prototype.propertyIsEnumerable,mt=(o,e,t)=>e in o?zs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Vs=(o,e)=>{for(var t in e||(e={}))Ms.call(e,t)&&mt(o,t,e[t]);if(bt)for(var t of bt(e))Fs.call(e,t)&&mt(o,t,e[t]);return o};class ft extends N.IRelayer{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new k.EventEmitter,this.name=Ke,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=u.toMiliseconds(u.THIRTY_SECONDS+u.ONE_SECOND),this.request=async t=>{var s,i;this.logger.debug("Publishing Request Payload");const r=t.id||T.getBigIntRpcId().toString();await this.toEstablishConnection();try{const n=this.provider.request(t);this.requestsInFlight.set(r,{promise:n,request:t}),this.logger.trace({id:r,method:t.method,topic:(s=t.params)==null?void 0:s.topic},"relayer.request - attempt to publish...");const a=await new Promise(async(h,l)=>{const p=()=>{l(new Error(`relayer.request - publish interrupted, id: ${r}`))};this.provider.on(R.disconnect,p);const y=await n;this.provider.off(R.disconnect,p),h(y)});return this.logger.trace({id:r,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - published"),a}catch(n){throw this.logger.debug(`Failed to Publish Request: ${r}`),n}finally{this.requestsInFlight.delete(r)}},this.resetPingTimeout=()=>{if(c.isNode())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,s,i;(i=(s=(t=this.provider)==null?void 0:t.connection)==null?void 0:s.socket)==null||i.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.trace("relayer connected"),this.startPingTimeout(),this.events.emit(I.connect)},this.onDisconnectHandler=()=>{this.logger.trace("relayer disconnected"),this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.error(t),this.events.emit(I.error,t),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(R.payload,this.onPayloadHandler),this.provider.on(R.connect,this.onConnectHandler),this.provider.on(R.disconnect,this.onDisconnectHandler),this.provider.on(R.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?d.generateChildLogger(e.logger,this.name):d.pino(d.getDefaultLoggerOptions({level:e.logger||$e})),this.messages=new yt(this.logger,e.core),this.subscriber=new _t(this,this.logger),this.publisher=new Os(this,this.logger),this.relayUrl=e?.relayUrl||ue,this.projectId=e.projectId,this.bundleId=c.getBundleId(),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e)}}get context(){return d.getLoggerContext(this.logger)}get connected(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===1}get connecting(){var e,t,s;return((s=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:s.readyState)===0}async publish(e,t,s){this.isInitialized(),await this.publisher.publish(e,t,s),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:B.relay})}async subscribe(e,t){var s;this.isInitialized(),t?.transportType==="relay"&&await this.toEstablishConnection();let i=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",r;const n=a=>{a.topic===e&&(this.subscriber.off(x.created,n),r())};return await Promise.all([new Promise(a=>{r=a,this.subscriber.on(x.created,n)}),new Promise(async a=>{i=await this.subscriber.subscribe(e,t)||i,a()})]),i}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){if(!this.hasExperiencedNetworkDisruption&&this.connected&&this.requestsInFlight.size>0)try{await Promise.all(Array.from(this.requestsInFlight.values()).map(e=>e.promise))}catch(e){this.logger.warn(e)}this.hasExperiencedNetworkDisruption||this.connected?await c.createExpiringPromise(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),await this.createProvider(),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;try{await new Promise(async(t,s)=>{const i=()=>{this.provider.off(R.disconnect,i),s(new Error("Connection interrupted while trying to subscribe"))};this.provider.on(R.disconnect,i),await c.createExpiringPromise(this.provider.connect(),u.toMiliseconds(u.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(r=>{s(r)}).finally(()=>{clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),this.subscriber.start().catch(r=>{this.logger.error(r),this.onDisconnectHandler()}),this.hasExperiencedNetworkDisruption=!1,t()})}catch(t){this.logger.error(t);const s=t;if(this.hasExperiencedNetworkDisruption=!0,!this.isConnectionStalled(s.message))throw t}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await c.isOnline())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((s,i)=>s.publishedAt-i.publishedAt);this.logger.trace(`Batch of ${t.length} message events sorted`);for(const s of t)try{await this.onMessageEvent(s)}catch(i){this.logger.warn(i)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:s}=e;if(!t.sessionExists){const i=c.calcExpiry(u.FIVE_MINUTES),r={topic:s,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(s,r)}this.events.emit(I.message,e),await this.recordMessageEvent(e)}startPingTimeout(){var e,t,s,i,r;if(c.isNode())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((r=(i=(s=this.provider)==null?void 0:s.connection)==null?void 0:i.socket)==null||r.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(n){this.logger.warn(n)}}isConnectionStalled(e){return this.staleConnectionErrors.some(t=>e.includes(t))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Bt.JsonRpcProvider(new Yt.default(c.formatRelayRpcUrl({sdkVersion:ge,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:s}=e;await this.messages.set(t,s)}async shouldIgnoreMessageEvent(e){const{topic:t,message:s}=e;if(!s||s.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${s}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`),!0;const i=this.messages.has(t,s);return i&&this.logger.debug(`Ignoring duplicate message: ${s}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),T.isJsonRpcRequest(e)){if(!e.method.endsWith(qe))return;const t=e.params,{topic:s,message:i,publishedAt:r,attestation:n}=t.data,a={topic:s,message:i,publishedAt:r,transportType:B.relay,attestation:n};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Vs({type:"event",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else T.isJsonRpcResponse(e)&&this.events.emit(I.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(I.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=T.formatJsonRpcResult(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(R.payload,this.onPayloadHandler),this.provider.off(R.connect,this.onConnectHandler),this.provider.off(R.disconnect,this.onDisconnectHandler),this.provider.off(R.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await c.isOnline();c.subscribeToNetworkChange(async t=>{e!==t&&(e=t,t?await this.restartTransport().catch(s=>this.logger.error(s)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.requestsInFlight.clear(),clearTimeout(this.pingTimeout),this.events.emit(I.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},u.toMiliseconds(je))))}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&(this.connectionAttemptInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.connected&&(clearInterval(t),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var Bs=Object.defineProperty,vt=Object.getOwnPropertySymbols,ks=Object.prototype.hasOwnProperty,$s=Object.prototype.propertyIsEnumerable,wt=(o,e,t)=>e in o?Bs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Tt=(o,e)=>{for(var t in e||(e={}))ks.call(e,t)&&wt(o,t,e[t]);if(vt)for(var t of vt(e))$s.call(e,t)&&wt(o,t,e[t]);return o};class It extends N.IStore{constructor(e,t,s,i=A,r=void 0){super(e,t,s,i),this.core=e,this.logger=t,this.name=s,this.map=new Map,this.version=Ye,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>{this.getKey&&n!==null&&!c.isUndefined(n)?this.map.set(this.getKey(n),n):c.isProposalStruct(n)?this.map.set(n.id,n):c.isSessionStruct(n)&&this.map.set(n.topic,n)}),this.cached=[],this.initialized=!0)},this.set=async(n,a)=>{this.isInitialized(),this.map.has(n)?await this.update(n,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:n,value:a}),this.map.set(n,a),await this.persist())},this.get=n=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:n}),this.getData(n)),this.getAll=n=>(this.isInitialized(),n?this.values.filter(a=>Object.keys(n).every(h=>Gt.default(a[h],n[h]))):this.values),this.update=async(n,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:n,update:a});const h=Tt(Tt({},this.getData(n)),a);this.map.set(n,h),await this.persist()},this.delete=async(n,a)=>{this.isInitialized(),this.map.has(n)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:n,reason:a}),this.map.delete(n),this.addToRecentlyDeleted(n),await this.persist())},this.logger=d.generateChildLogger(t,this.name),this.storagePrefix=i,this.getKey=r}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(s),new Error(s)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Rt{constructor(e,t){this.core=e,this.logger=t,this.name=We,this.version=Ze,this.events=new qt.default,this.initialized=!1,this.storagePrefix=A,this.ignoredPayloadTypes=[c.TYPE_1],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:s})=>{this.isInitialized(),this.registeredMethods=[...uniq([...this.registeredMethods,...s])]},this.create=async s=>{this.isInitialized();const i=c.generateRandomBytes32(),r=await this.core.crypto.setSymKey(i),n=c.calcExpiry(u.FIVE_MINUTES),a={protocol:ke},h={topic:r,expiry:n,relay:a,active:!1},l=c.formatUri({protocol:this.core.protocol,version:this.core.version,topic:r,symKey:i,relay:a,expiryTimestamp:n,methods:s?.methods});return this.core.expirer.set(r,n),await this.pairings.set(r,h),await this.core.relayer.subscribe(r,{transportType:s?.transportType}),{topic:r,uri:l}},this.pair=async s=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:s?.uri,trace:[z.pairing_started]}});this.isValidPair(s,i);const{topic:r,symKey:n,relay:a,expiryTimestamp:h,methods:l}=c.parseUri(s.uri);i.props.properties.topic=r,i.addTrace(z.pairing_uri_validation_success),i.addTrace(z.pairing_uri_not_expired);let p;if(this.pairings.keys.includes(r)){if(p=this.pairings.get(r),i.addTrace(z.existing_pairing),p.active)throw i.setError(F.active_pairing_already_exists),new Error(`Pairing already exists: ${r}. Please try again with a new connection URI.`);i.addTrace(z.pairing_not_expired)}const y=h||c.calcExpiry(u.FIVE_MINUTES),b={topic:r,relay:a,expiry:y,active:!1,methods:l};this.core.expirer.set(r,y),await this.pairings.set(r,b),i.addTrace(z.store_new_pairing),s.activatePairing&&await this.activate({topic:r}),this.events.emit(G.create,b),i.addTrace(z.emit_inactive_pairing),this.core.crypto.keychain.has(r)||await this.core.crypto.setSymKey(n,r),i.addTrace(z.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(F.no_internet_connection)}try{await this.core.relayer.subscribe(r,{relay:a})}catch(m){throw i.setError(F.subscribe_pairing_topic_failure),m}return i.addTrace(z.subscribe_pairing_topic_success),b},this.activate=async({topic:s})=>{this.isInitialized();const i=c.calcExpiry(u.THIRTY_DAYS);this.core.expirer.set(s,i),await this.pairings.update(s,{active:!0,expiry:i})},this.ping=async s=>{this.isInitialized(),await this.isValidPing(s);const{topic:i}=s;if(this.pairings.keys.includes(i)){const r=await this.sendRequest(i,"wc_pairingPing",{}),{done:n,resolve:a,reject:h}=c.createDelayedPromise();this.events.once(c.engineEvent("pairing_ping",r),({error:l})=>{l?h(l):a()}),await n()}},this.updateExpiry=async({topic:s,expiry:i})=>{this.isInitialized(),await this.pairings.update(s,{expiry:i})},this.updateMetadata=async({topic:s,metadata:i})=>{this.isInitialized(),await this.pairings.update(s,{peerMetadata:i})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async s=>{this.isInitialized(),await this.isValidDisconnect(s);const{topic:i}=s;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",c.getSdkError("USER_DISCONNECTED")),await this.deletePairing(i))},this.sendRequest=async(s,i,r)=>{const n=T.formatJsonRpcRequest(i,r),a=await this.core.crypto.encode(s,n),h=q[i].req;return this.core.history.set(s,n),this.core.relayer.publish(s,a,h),n.id},this.sendResult=async(s,i,r)=>{const n=T.formatJsonRpcResult(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.sendError=async(s,i,r)=>{const n=T.formatJsonRpcError(s,r),a=await this.core.crypto.encode(i,n),h=await this.core.history.get(i,s),l=q[h.request.method]?q[h.request.method].res:q.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(n)},this.deletePairing=async(s,i)=>{await this.core.relayer.unsubscribe(s),await Promise.all([this.pairings.delete(s,c.getSdkError("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(s),i?Promise.resolve():this.core.expirer.del(s)])},this.cleanup=async()=>{const s=this.pairings.getAll().filter(i=>c.isExpired(i.expiry));await Promise.all(s.map(i=>this.deletePairing(i.topic)))},this.onRelayEventRequest=s=>{const{topic:i,payload:r}=s;switch(r.method){case"wc_pairingPing":return this.onPairingPingRequest(i,r);case"wc_pairingDelete":return this.onPairingDeleteRequest(i,r);default:return this.onUnknownRpcMethodRequest(i,r)}},this.onRelayEventResponse=async s=>{const{topic:i,payload:r}=s,n=(await this.core.history.get(i,r.id)).request.method;switch(n){case"wc_pairingPing":return this.onPairingPingResponse(i,r);default:return this.onUnknownRpcMethodResponse(n)}},this.onPairingPingRequest=async(s,i)=>{const{id:r}=i;try{this.isValidPing({topic:s}),await this.sendResult(r,s,!0),this.events.emit(G.ping,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onPairingPingResponse=(s,i)=>{const{id:r}=i;setTimeout(()=>{T.isJsonRpcResult(i)?this.events.emit(c.engineEvent("pairing_ping",r),{}):T.isJsonRpcError(i)&&this.events.emit(c.engineEvent("pairing_ping",r),{error:i.error})},500)},this.onPairingDeleteRequest=async(s,i)=>{const{id:r}=i;try{this.isValidDisconnect({topic:s}),await this.deletePairing(s),this.events.emit(G.delete,{id:r,topic:s})}catch(n){await this.sendError(r,s,n),this.logger.error(n)}},this.onUnknownRpcMethodRequest=async(s,i)=>{const{id:r,method:n}=i;try{if(this.registeredMethods.includes(n))return;const a=c.getSdkError("WC_METHOD_UNSUPPORTED",n);await this.sendError(r,s,a),this.logger.error(a)}catch(a){await this.sendError(r,s,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=s=>{this.registeredMethods.includes(s)||this.logger.error(c.getSdkError("WC_METHOD_UNSUPPORTED",s))},this.isValidPair=(s,i)=>{var r;if(!c.isValidParams(s)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() params: ${s}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!c.isValidUrl(s.uri)){const{message:a}=c.getInternalError("MISSING_OR_INVALID",`pair() uri: ${s.uri}`);throw i.setError(F.malformed_pairing_uri),new Error(a)}const n=c.parseUri(s?.uri);if(!((r=n?.relay)!=null&&r.protocol)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(!(n!=null&&n.symKey)){const{message:a}=c.getInternalError("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(F.malformed_pairing_uri),new Error(a)}if(n!=null&&n.expiryTimestamp&&u.toMiliseconds(n?.expiryTimestamp){if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`ping() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidDisconnect=async s=>{if(!c.isValidParams(s)){const{message:r}=c.getInternalError("MISSING_OR_INVALID",`disconnect() params: ${s}`);throw new Error(r)}const{topic:i}=s;await this.isValidPairingTopic(i)},this.isValidPairingTopic=async s=>{if(!c.isValidString(s,!1)){const{message:i}=c.getInternalError("MISSING_OR_INVALID",`pairing topic should be a string: ${s}`);throw new Error(i)}if(!this.pairings.keys.includes(s)){const{message:i}=c.getInternalError("NO_MATCHING_KEY",`pairing topic doesn't exist: ${s}`);throw new Error(i)}if(c.isExpired(this.pairings.get(s).expiry)){await this.deletePairing(s);const{message:i}=c.getInternalError("EXPIRED",`pairing topic: ${s}`);throw new Error(i)}},this.core=e,this.logger=d.generateChildLogger(t,this.name),this.pairings=new It(this.core,this.logger,this.name,this.storagePrefix)}get context(){return d.getLoggerContext(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(I.message,async e=>{const{topic:t,message:s,transportType:i}=e;if(!this.pairings.keys.includes(t)||i===B.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(s)))return;const r=await this.core.crypto.decode(t,s);try{T.isJsonRpcRequest(r)?(this.core.history.set(t,r),this.onRelayEventRequest({topic:t,payload:r})):T.isJsonRpcResponse(r)&&(await this.core.history.resolve(r),await this.onRelayEventResponse({topic:t,payload:r}),this.core.history.delete(t,r.id))}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(O.expired,async e=>{const{topic:t}=c.parseExpirerTarget(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(G.expire,{topic:t}))})}}class Ct extends N.IJsonRpcHistory{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new k.EventEmitter,this.name=Qe,this.version=et,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.records.set(s.id,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(s,i,r)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:s,request:i,chainId:r}),this.records.has(i.id))return;const n={id:i.id,topic:s,request:{method:i.method,params:i.params||null},chainId:r,expiry:c.calcExpiry(u.THIRTY_DAYS)};this.records.set(n.id,n),this.persist(),this.events.emit(S.created,n)},this.resolve=async s=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:s}),!this.records.has(s.id))return;const i=await this.getRecord(s.id);typeof i.response>"u"&&(i.response=T.isJsonRpcError(s)?{error:s.error}:{result:s.result},this.records.set(i.id,i),this.persist(),this.events.emit(S.updated,i))},this.get=async(s,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:s,id:i}),await this.getRecord(i)),this.delete=(s,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(r=>{if(r.topic===s){if(typeof i<"u"&&r.id!==i)return;this.records.delete(r.id),this.events.emit(S.deleted,r)}}),this.persist()},this.exists=async(s,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===s:!1),this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const s={topic:t.topic,request:T.formatJsonRpcRequest(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(s)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(s)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(S.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(S.created,e=>{const t=S.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.updated,e=>{const t=S.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(S.deleted,e=>{const t=S.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{u.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(S.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}class St extends N.IExpirer{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new k.EventEmitter,this.name=tt,this.version=it,this.cached=[],this.initialized=!1,this.storagePrefix=A,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(s=>this.expirations.set(s.target,s)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=s=>{try{const i=this.formatTarget(s);return typeof this.getExpiration(i)<"u"}catch{return!1}},this.set=(s,i)=>{this.isInitialized();const r=this.formatTarget(s),n={target:r,expiry:i};this.expirations.set(r,n),this.checkExpiry(r,n),this.events.emit(O.created,{target:r,expiration:n})},this.get=s=>{this.isInitialized();const i=this.formatTarget(s);return this.getExpiration(i)},this.del=s=>{if(this.isInitialized(),this.has(s)){const i=this.formatTarget(s),r=this.getExpiration(i);this.expirations.delete(i),this.events.emit(O.deleted,{target:i,expiration:r})}},this.on=(s,i)=>{this.events.on(s,i)},this.once=(s,i)=>{this.events.once(s,i)},this.off=(s,i)=>{this.events.off(s,i)},this.removeListener=(s,i)=>{this.events.removeListener(s,i)},this.logger=d.generateChildLogger(t,this.name)}get context(){return d.getLoggerContext(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return c.formatTopicTarget(e);if(typeof e=="number")return c.formatIdTarget(e);const{message:t}=c.getInternalError("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(O.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=c.getInternalError("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:s}=c.getInternalError("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(s),new Error(s)}return t}checkExpiry(e,t){const{expiry:s}=t;u.toMiliseconds(s)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(O.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on(O.created,e=>{const t=O.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.expired,e=>{const t=O.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(O.deleted,e=>{const t=O.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=c.getInternalError("NOT_INITIALIZED",this.name);throw new Error(e)}}}var D={};Object.defineProperty(D,"__esModule",{value:!0}),D.getLocalStorage=D.getLocalStorageOrThrow=D.getCrypto=D.getCryptoOrThrow=D.getLocation=D.getLocationOrThrow=D.getNavigator=D.getNavigatorOrThrow=Ot=D.getDocument=D.getDocumentOrThrow=D.getFromWindowOrThrow=D.getFromWindow=void 0;function $(o){let e;return typeof window<"u"&&typeof window[o]<"u"&&(e=window[o]),e}D.getFromWindow=$;function j(o){const e=$(o);if(!e)throw new Error(`${o} is not defined in Window`);return e}D.getFromWindowOrThrow=j;function Ks(){return j("document")}D.getDocumentOrThrow=Ks;function qs(){return $("document")}var Ot=D.getDocument=qs;function js(){return j("navigator")}D.getNavigatorOrThrow=js;function Ys(){return $("navigator")}D.getNavigator=Ys;function Gs(){return j("location")}D.getLocationOrThrow=Gs;function Hs(){return $("location")}D.getLocation=Hs;function Js(){return j("crypto")}D.getCryptoOrThrow=Js;function Xs(){return $("crypto")}D.getCrypto=Xs;function Ws(){return j("localStorage")}D.getLocalStorageOrThrow=Ws;function Zs(){return $("localStorage")}D.getLocalStorage=Zs;class Pt extends N.IVerify{constructor(e,t,s){super(e,t,s),this.core=e,this.logger=t,this.store=s,this.name=st,this.verifyUrlV3=nt,this.storagePrefix=A,this.version=he,this.init=async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&u.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!c.isBrowser()||this.isDevEnv)return;const r=window.location.origin,{id:n,decryptedId:a}=i,h=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${r}&id=${n}&decryptedId=${a}`;try{const l=Ot(),p=this.startAbortTimer(u.ONE_SECOND*5),y=await new Promise((b,m)=>{const g=()=>{window.removeEventListener("message",v),l.body.removeChild(E),m("attestation aborted")};this.abortController.signal.addEventListener("abort",g);const E=l.createElement("iframe");E.src=h,E.style.display="none",E.addEventListener("error",g,{signal:this.abortController.signal});const v=_=>{if(!_.data)return;const w=JSON.parse(_.data);if(w.type==="verify_attestation"){if(re.decodeJWT(w.attestation).payload.id!==n)return;clearInterval(p),l.body.removeChild(E),this.abortController.signal.removeEventListener("abort",g),window.removeEventListener("message",v),b(w.attestation===null?"":w.attestation)}};l.body.appendChild(E),window.addEventListener("message",v,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",y),y}catch(l){this.logger.warn(l)}return""},this.resolve=async i=>{if(this.isDevEnv)return"";const{attestationId:r,hash:n,encryptedId:a}=i;if(r===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(r){if(re.decodeJWT(r).payload.id!==a)return;const l=await this.isValidJwtAttestation(r);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!n)return;const h=this.getVerifyUrl(i?.verifyUrl);return this.fetchAttestation(n,h)},this.fetchAttestation=async(i,r)=>{this.logger.debug(`resolving attestation: ${i} from url: ${r}`);const n=this.startAbortTimer(u.ONE_SECOND*5),a=await fetch(`${r}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(n),a.status===200?await a.json():void 0},this.getVerifyUrl=i=>{let r=i||H;return ot.includes(r)||(this.logger.info(`verify url: ${r}, not included in trusted list, assigning default: ${H}`),r=H),r},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(u.FIVE_SECONDS),r=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await r.json()}catch(i){this.logger.warn(i)}},this.persistPublicKey=async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async i=>{const r=await this.getPublicKey();try{if(r)return this.validateAttestation(i,r)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const n=await this.fetchAndPersistPublicKey();try{if(n)return this.validateAttestation(i,n)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async r=>{const n=await this.fetchPublicKey();n&&(await this.persistPublicKey(n),r(n))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i},this.validateAttestation=(i,r)=>{const n=c.verifyP256Jwt(i,r.publicKey),a={hasExpired:u.toMiliseconds(n.exp)this.abortController.abort(),u.toMiliseconds(e))}}class Nt extends N.IEchoClient{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=at,this.registerDeviceToken=async s=>{const{clientId:i,token:r,notificationType:n,enableEncrypted:a=!1}=s,h=`${ct}/${this.projectId}/clients`;await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:n,token:r,always_raw:a})})},this.logger=d.generateChildLogger(t,this.context)}}var Qs=Object.defineProperty,At=Object.getOwnPropertySymbols,er=Object.prototype.hasOwnProperty,tr=Object.prototype.propertyIsEnumerable,xt=(o,e,t)=>e in o?Qs(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,X=(o,e)=>{for(var t in e||(e={}))er.call(e,t)&&xt(o,t,e[t]);if(At)for(var t of At(e))tr.call(e,t)&&xt(o,t,e[t]);return o};class Lt extends N.IEventClient{constructor(e,t,s=!0){super(e,t,s),this.core=e,this.logger=t,this.context=lt,this.storagePrefix=A,this.storageVersion=ht,this.events=new Map,this.shouldPersist=!1,this.createEvent=i=>{const{event:r="ERROR",type:n="",properties:{topic:a,trace:h}}=i,l=c.uuidv4(),p=this.core.projectId||"",y=Date.now(),b=X({eventId:l,bundleId:p,timestamp:y,props:{event:r,type:n,properties:{topic:a,trace:h}}},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,b),this.shouldPersist=!0),b},this.getEvent=i=>{const{eventId:r,topic:n}=i;if(r)return this.events.get(r);const a=Array.from(this.events.values()).find(h=>h.props.properties.topic===n);if(a)return X(X({},a),this.setMethods(a.eventId))},this.deleteEvent=i=>{const{eventId:r}=i;this.events.delete(r),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(K.HEARTBEAT_EVENTS.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{u.fromMiliseconds(Date.now())-u.fromMiliseconds(i.timestamp)>ut&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})},this.setMethods=i=>({addTrace:r=>this.addTrace(i,r),setError:r=>this.setError(i,r)}),this.addTrace=(i,r)=>{const n=this.events.get(i);n&&(n.props.properties.trace.push(r),this.events.set(i,n),this.shouldPersist=!0)},this.setError=(i,r)=>{const n=this.events.get(i);n&&(n.props.type=r,n.timestamp=Date.now(),this.events.set(i,n),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(r=>{this.events.set(r.eventId,X(X({},r),this.setMethods(r.eventId)))})}catch(i){this.logger.warn(i)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[r,n]of this.events)n.props.type&&i.push(n);if(i.length!==0)try{if((await fetch(`${gt}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${ge}`,{method:"POST",body:JSON.stringify(i)})).ok)for(const r of i)this.events.delete(r.eventId),this.shouldPersist=!0}catch(r){this.logger.warn(r)}},this.logger=d.generateChildLogger(t,this.context),s?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var ir=Object.defineProperty,Ut=Object.getOwnPropertySymbols,sr=Object.prototype.hasOwnProperty,rr=Object.prototype.propertyIsEnumerable,zt=(o,e,t)=>e in o?ir(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,Mt=(o,e)=>{for(var t in e||(e={}))sr.call(e,t)&&zt(o,t,e[t]);if(Ut)for(var t of Ut(e))rr.call(e,t)&&zt(o,t,e[t]);return o};class ie extends N.ICore{constructor(e){var t;super(e),this.protocol=ce,this.version=he,this.name=te,this.events=new k.EventEmitter,this.initialized=!1,this.on=(n,a)=>this.events.on(n,a),this.once=(n,a)=>this.events.once(n,a),this.off=(n,a)=>this.events.off(n,a),this.removeListener=(n,a)=>this.events.removeListener(n,a),this.dispatchEnvelope=({topic:n,message:a,sessionExists:h})=>{if(!n||!a)return;const l={topic:n,message:a,publishedAt:Date.now(),transportType:B.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:h})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||ue,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const s=d.getDefaultLoggerOptions({level:typeof e?.logger=="string"&&e.logger?e.logger:Ne.logger}),{logger:i,chunkLoggerController:r}=d.generatePlatformLogger({opts:s,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=r,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var n,a;(n=this.logChunkController)!=null&&n.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=d.generateChildLogger(i,this.name),this.heartbeat=new K.HeartBeat,this.crypto=new pt(this,this.logger,e?.keychain),this.history=new Ct(this,this.logger),this.expirer=new St(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new jt.default(Mt(Mt({},Ae),e?.storageOptions)),this.relayer=new ft({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Rt(this,this.logger),this.verify=new Pt(this,this.logger,this.storage),this.echoClient=new Nt(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new Lt(this,this.logger,e?.telemetryEnabled)}static async init(e){const t=new ie(e);await t.initialize();const s=await t.crypto.getClientId();return await t.storage.setItem(Ge,s),t}get context(){return d.getLoggerContext(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(de,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(de)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}}const nr=ie;exports.CORE_CONTEXT=te,exports.CORE_DEFAULT=Ne,exports.CORE_PROTOCOL=ce,exports.CORE_STORAGE_OPTIONS=Ae,exports.CORE_STORAGE_PREFIX=A,exports.CORE_VERSION=he,exports.CRYPTO_CLIENT_SEED=le,exports.CRYPTO_CONTEXT=xe,exports.CRYPTO_JWT_TTL=Le,exports.Core=nr,exports.Crypto=pt,exports.ECHO_CONTEXT=at,exports.ECHO_URL=ct,exports.EVENTS_CLIENT_API_URL=gt,exports.EVENTS_STORAGE_CLEANUP_INTERVAL=ut,exports.EVENTS_STORAGE_CONTEXT=lt,exports.EVENTS_STORAGE_VERSION=ht,exports.EVENT_CLIENT_AUTHENTICATE_ERRORS=Ss,exports.EVENT_CLIENT_AUTHENTICATE_TRACES=Cs,exports.EVENT_CLIENT_CONTEXT=Ts,exports.EVENT_CLIENT_PAIRING_ERRORS=F,exports.EVENT_CLIENT_PAIRING_TRACES=z,exports.EVENT_CLIENT_SESSION_ERRORS=Rs,exports.EVENT_CLIENT_SESSION_TRACES=Is,exports.EXPIRER_CONTEXT=tt,exports.EXPIRER_DEFAULT_TTL=vs,exports.EXPIRER_EVENTS=O,exports.EXPIRER_STORAGE_VERSION=it,exports.EchoClient=Nt,exports.EventClient=Lt,exports.Expirer=St,exports.HISTORY_CONTEXT=Qe,exports.HISTORY_EVENTS=S,exports.HISTORY_STORAGE_VERSION=et,exports.JsonRpcHistory=Ct,exports.KEYCHAIN_CONTEXT=Ue,exports.KEYCHAIN_STORAGE_VERSION=ze,exports.KeyChain=dt,exports.MESSAGES_CONTEXT=Me,exports.MESSAGES_STORAGE_VERSION=Fe,exports.MessageTracker=yt,exports.PAIRING_CONTEXT=We,exports.PAIRING_DEFAULT_TTL=fs,exports.PAIRING_EVENTS=G,exports.PAIRING_RPC_OPTS=q,exports.PAIRING_STORAGE_VERSION=Ze,exports.PENDING_SUB_RESOLUTION_TIMEOUT=Xe,exports.PUBLISHER_CONTEXT=Be,exports.PUBLISHER_DEFAULT_TTL=Ve,exports.Pairing=Rt,exports.RELAYER_CONTEXT=Ke,exports.RELAYER_DEFAULT_LOGGER=$e,exports.RELAYER_DEFAULT_PROTOCOL=ke,exports.RELAYER_DEFAULT_RELAY_URL=ue,exports.RELAYER_EVENTS=I,exports.RELAYER_PROVIDER_EVENTS=R,exports.RELAYER_RECONNECT_TIMEOUT=je,exports.RELAYER_SDK_VERSION=ge,exports.RELAYER_STORAGE_OPTIONS=_s,exports.RELAYER_SUBSCRIBER_SUFFIX=qe,exports.RELAYER_TRANSPORT_CUTOFF=bs,exports.Relayer=ft,exports.STORE_STORAGE_VERSION=Ye,exports.SUBSCRIBER_CONTEXT=He,exports.SUBSCRIBER_DEFAULT_TTL=ms,exports.SUBSCRIBER_EVENTS=x,exports.SUBSCRIBER_STORAGE_VERSION=Je,exports.Store=It,exports.Subscriber=_t,exports.TRANSPORT_TYPES=B,exports.TRUSTED_VERIFY_URLS=ot,exports.VERIFY_CONTEXT=st,exports.VERIFY_SERVER=H,exports.VERIFY_SERVER_V3=nt,exports.Verify=Pt,exports.WALLETCONNECT_CLIENT_ID=Ge,exports.WALLETCONNECT_LINK_MODE_APPS=de,exports.default=ie; - //# sourceMappingURL=index.cjs.js.map -diff --git a/node_modules/@walletconnect/types/LICENSE b/node_modules/@walletconnect/types/LICENSE -new file mode 100644 -index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb ---- /dev/null -+++ b/node_modules/@walletconnect/types/LICENSE -@@ -0,0 +1,190 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ Copyright 2021 WalletConnect, Inc. -+ -+ Licensed under the Apache License, Version 2.0 (the "License"); -+ you may not use this file except in compliance with the License. -+ You may obtain a copy of the License at -+ -+ http://www.apache.org/licenses/LICENSE-2.0 -+ -+ Unless required by applicable law or agreed to in writing, software -+ distributed under the License is distributed on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ See the License for the specific language governing permissions and -+ limitations under the License. -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/README.md b/node_modules/@walletconnect/types/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..24e8d4f88f8d9a482f1b56b9c5f68b81ca8c75fc ---- /dev/null -+++ b/node_modules/@walletconnect/types/README.md -@@ -0,0 +1,3 @@ -+# @walletconnect/types -+ -+Typings for WalletConnect Protocol -diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js b/node_modules/@walletconnect/types/dist/index.cjs.js -new file mode 100644 -index 0000000000000000000000000000000000000000..383ea10b1540f1d6e6754ef233f3973660033adb ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.cjs.js -@@ -0,0 +1,2 @@ -+"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var o=require("@walletconnect/events"),c=require("events");function i(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var n=i(c);class l extends o.IEvents{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class a{constructor(s,e,r){this.core=s,this.logger=e}}class u extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e,this.records=new Map}}class I{constructor(s,e){this.logger=s,this.core=e}}class h extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class g extends o.IEvents{constructor(s){super()}}class p{constructor(s,e,r,m){this.core=s,this.logger=e,this.name=r}}class E{constructor(){this.map=new Map}}class v extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class d{constructor(s,e){this.core=s,this.logger=e}}class y extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e}}class C{constructor(s,e){this.logger=s,this.core=e}}class b{constructor(s,e,r){this.core=s,this.logger=e,this.store=r}}class f{constructor(s,e){this.projectId=s,this.logger=e}}class x{constructor(s,e,r){this.core=s,this.logger=e,this.telemetryEnabled=r}}class S extends n.default{constructor(){super()}}class M{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class P extends c.EventEmitter{constructor(){super()}}class _{constructor(s){this.client=s}}exports.ICore=l,exports.ICrypto=a,exports.IEchoClient=f,exports.IEngine=_,exports.IEngineEvents=P,exports.IEventClient=x,exports.IExpirer=y,exports.IJsonRpcHistory=u,exports.IKeyChain=d,exports.IMessageTracker=I,exports.IPairing=C,exports.IPublisher=h,exports.IRelayer=g,exports.ISignClient=M,exports.ISignClientEvents=S,exports.IStore=p,exports.ISubscriber=v,exports.ISubscriberTopicMap=E,exports.IVerify=b; -+//# sourceMappingURL=index.cjs.js.map -diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js.map b/node_modules/@walletconnect/types/dist/index.cjs.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8a14e09ef9b12a361fb23647494e0a2dbecceccd ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.cjs.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.cjs.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":";;;;;;;;;;;AA0CO,MAAe,cAAcA,cAAQ,CAuB1C,YAAmBC,CAA0B,CAAA,CAC3C,OADiB,CAAA,IAAA,CAAA,IAAA,CAAAA,EAtBnB,IAAgB,CAAA,QAAA,CAAW,KAC3B,IAAgB,CAAA,OAAA,CAAU,EAuB1B,CAUF;;ACPsB,MAAA,OAAQ,CAS5B,WAAA,CACSC,CACAC,CAAAA,CAAAA,CAEPC,CACA,CAAA,CAJO,IAAAF,CAAAA,IAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,MAAAA,CAAAA,EAGN,CAwCL;;AClGO,MAAe,wBAAwBH,cAAQ,CAapD,YAAmBE,CAAoBC,CAAAA,CAAAA,CAAgB,CACrD,KAAM,EAAA,CADW,UAAAD,CAAoB,CAAA,IAAA,CAAA,MAAA,CAAAC,EAZvC,IAAO,CAAA,OAAA,CAAU,IAAI,IAcrB,CAaF;;ACjDsB,MAAA,eAAgB,CAOpC,WAAA,CAAmBA,CAAuBD,CAAAA,CAAAA,CAAa,CAApC,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CAAuB,IAAAD,CAAAA,IAAAA,CAAAA,EAAc,CAW1D;;ACVsB,MAAA,UAAA,SAAmBF,cAAQ,CAK/C,WAAA,CAAmBK,CAA0BF,CAAAA,CAAAA,CAAgB,CAC3D,KAAM,EAAA,CADW,aAAAE,CAA0B,CAAA,IAAA,CAAA,MAAA,CAAAF,EAE7C,CAOF;;ACoDO,MAAe,QAAiBH,SAAAA,cAAQ,CAuB7C,WAAA,CAEEC,CACA,CAAA,CACA,KAAM,GACR,CAwBF;;AC/HO,MAAe,MAAmB,CAWvC,WACSC,CAAAA,CAAAA,CACAC,EACAG,CAEPC,CAAAA,CAAAA,CACA,CALO,IAAA,CAAA,IAAA,CAAAL,CACA,CAAA,IAAA,CAAA,MAAA,CAAAC,CACA,CAAA,IAAA,CAAA,IAAA,CAAAG,EAGN,CAaL;;ACRsB,MAAA,mBAAoB,CAAnC,WAAA,EAAA,CACL,IAAO,CAAA,GAAA,CAAM,IAAI,IAAA,CAanB,CAEO,MAAe,oBAAoBN,cAAQ,CAmBhD,WAAmBK,CAAAA,CAAAA,CAA0BF,CAAgB,CAAA,CAC3D,KAAM,EAAA,CADW,IAAAE,CAAAA,OAAAA,CAAAA,CAAAA,CAA0B,IAAAF,CAAAA,MAAAA,CAAAA,EAE7C,CAgBF;;AC5EsB,MAAA,SAAU,CAO9B,WAAA,CAAmBD,CAAoBC,CAAAA,CAAAA,CAAgB,CAApC,IAAAD,CAAAA,IAAAA,CAAAA,CAAAA,CAAoB,IAAAC,CAAAA,MAAAA,CAAAA,EAAiB,CAW1D;;ACMsB,MAAA,QAAA,SAAiBH,cAAQ,CAW7C,WAAA,CAAmBE,CAAoBC,CAAAA,CAAAA,CAAgB,CACrD,KAAM,EAAA,CADW,UAAAD,CAAoB,CAAA,IAAA,CAAA,MAAA,CAAAC,EAEvC,CAWF;;ACQsB,MAAA,QAAS,CAM7B,WAAA,CAAmBA,CAAuBD,CAAAA,CAAAA,CAAa,CAApC,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CAAuB,IAAAD,CAAAA,IAAAA,CAAAA,EAAc,CAsC1D;;ACxFO,MAAe,OAAQ,CAG5B,WAAmBA,CAAAA,CAAAA,CAAoBC,CAAuBK,CAAAA,CAAAA,CAAyB,CAApE,IAAA,CAAA,IAAA,CAAAN,CAAoB,CAAA,IAAA,CAAA,MAAA,CAAAC,CAAuB,CAAA,IAAA,CAAA,KAAA,CAAAK,EAA0B,CAa1F;;ACrBsB,MAAA,WAAY,CAEhC,WAAA,CAAmBC,CAA0BN,CAAAA,CAAAA,CAAgB,CAA1C,IAAAM,CAAAA,SAAAA,CAAAA,CAAAA,CAA0B,IAAAN,CAAAA,MAAAA,CAAAA,EAAiB,CAKhE;;ACUO,MAAe,YAAa,CAGjC,WAAmBD,CAAAA,CAAAA,CAAoBC,CAAuBO,CAAAA,CAAAA,CAA2B,CAAtE,IAAA,CAAA,IAAA,CAAAR,CAAoB,CAAA,IAAA,CAAA,MAAA,CAAAC,CAAuB,CAAA,IAAA,CAAA,gBAAA,CAAAO,EAA4B,CAiB5F;;AC8BO,MAAe,iBAA0BC,SAAAA,qBAAa,CAC3D,WAAA,EAAc,CACZ,KAAA,GACF,CA4BF,CAEO,MAAe,WAAY,CAkBhC,WAAA,CAAmBV,CAAgC,CAAA,CAAhC,IAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAjBnB,IAAgB,CAAA,QAAA,CAAW,IAC3B,CAAA,IAAA,CAAgB,OAAU,CAAA,EAgB0B,CAmBtD;;ACaO,MAAe,sBAAsBW,cAAa,CACvD,aAAc,CACZ,KAAA,GACF,CAWF,OAqMsB,OAAQ,CAC5B,YAAmBC,CAAqB,CAAA,CAArB,IAAAA,CAAAA,MAAAA,CAAAA,EAAsB,CAmD3C;;;;;;;;;;;;;;;;;;;;;;"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/index.es.js b/node_modules/@walletconnect/types/dist/index.es.js -new file mode 100644 -index 0000000000000000000000000000000000000000..0aa0b206b6a1d30087fcee3ddafc1a909a822ef3 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.es.js -@@ -0,0 +1,2 @@ -+import{IEvents as o}from"@walletconnect/events";import c,{EventEmitter as i}from"events";class n extends o{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class l{constructor(s,t,e){this.core=s,this.logger=t}}class h extends o{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class g extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class u extends o{constructor(s){super()}}class p{constructor(s,t,e,f){this.core=s,this.logger=t,this.name=e}}class I{constructor(){this.map=new Map}}class d extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class E{constructor(s,t){this.core=s,this.logger=t}}class x extends o{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t,e){this.core=s,this.logger=t,this.store=e}}class v{constructor(s,t){this.projectId=s,this.logger=t}}class C{constructor(s,t,e){this.core=s,this.logger=t,this.telemetryEnabled=e}}class b extends c{constructor(){super()}}class S{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class w extends i{constructor(){super()}}class M{constructor(s){this.client=s}}export{n as ICore,l as ICrypto,v as IEchoClient,M as IEngine,w as IEngineEvents,C as IEventClient,x as IExpirer,h as IJsonRpcHistory,E as IKeyChain,a as IMessageTracker,m as IPairing,g as IPublisher,u as IRelayer,S as ISignClient,b as ISignClientEvents,p as IStore,d as ISubscriber,I as ISubscriberTopicMap,y as IVerify}; -+//# sourceMappingURL=index.es.js.map -diff --git a/node_modules/@walletconnect/types/dist/index.es.js.map b/node_modules/@walletconnect/types/dist/index.es.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8f45be96f809d07ac1d2b206f7483e7b1620eb3c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.es.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.es.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/index.umd.js b/node_modules/@walletconnect/types/dist/index.umd.js -new file mode 100644 -index 0000000000000000000000000000000000000000..87fefecd1119ee6195aae42974facd4e621d51b6 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.umd.js -@@ -0,0 +1,2 @@ -+(function(c,l){typeof exports=="object"&&typeof module<"u"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(c=typeof globalThis<"u"?globalThis:c||self,l(c["@walletconnect/types"]={}))})(this,function(c){"use strict";class l{}class M extends l{constructor(e){super(),this.opts=e,this.protocol="wc",this.version=2}}class R{constructor(e,n,r){this.core=e,this.logger=n}}class j extends l{constructor(e,n){super(),this.core=e,this.logger=n,this.records=new Map}}class x{constructor(e,n){this.logger=e,this.core=n}}class P extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class N extends l{constructor(e){super()}}class S{constructor(e,n,r,s){this.core=e,this.logger=n,this.name=r}}class T{constructor(){this.map=new Map}}class A extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class K{constructor(e,n){this.core=e,this.logger=n}}class F extends l{constructor(e,n){super(),this.core=e,this.logger=n}}class W{constructor(e,n){this.logger=e,this.core=n}}class k{constructor(e,n,r){this.core=e,this.logger=n,this.store=r}}class H{constructor(e,n){this.projectId=e,this.logger=n}}class J{constructor(e,n,r){this.core=e,this.logger=n,this.telemetryEnabled=r}}var v={exports:{}},a=typeof Reflect=="object"?Reflect:null,g=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},p;a&&typeof a.ownKeys=="function"?p=a.ownKeys:Object.getOwnPropertySymbols?p=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:p=function(e){return Object.getOwnPropertyNames(e)};function U(t){console&&console.warn&&console.warn(t)}var y=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}v.exports=o,v.exports.once=B,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var m=10;function d(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return m},set:function(t){if(typeof t!="number"||t<0||y(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");m=t}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||y(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function L(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return L(this)},o.prototype.emit=function(e){for(var n=[],r=1;r0&&(i=n[0]),i instanceof Error)throw i;var f=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw f.context=i,f}var h=u[e];if(h===void 0)return!1;if(typeof h=="function")g(h,this,n);else for(var O=h.length,Z=w(h,O),r=0;r0&&i.length>s&&!i.warned){i.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=t,f.type=e,f.count=i.length,U(f)}return t}o.prototype.addListener=function(e,n){return I(this,e,n,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,n){return I(this,e,n,!0)};function V(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function b(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},s=V.bind(r);return s.listener=n,r.wrapFn=s,s}o.prototype.once=function(e,n){return d(n),this.on(e,b(this,e,n)),this},o.prototype.prependOnceListener=function(e,n){return d(n),this.prependListener(e,b(this,e,n)),this},o.prototype.removeListener=function(e,n){var r,s,u,i,f;if(d(n),s=this._events,s===void 0)return this;if(r=s[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(u=-1,i=r.length-1;i>=0;i--)if(r[i]===n||r[i].listener===n){f=r[i].listener,u=i;break}if(u<0)return this;u===0?r.shift():q(r,u),r.length===1&&(s[e]=r[0]),s.removeListener!==void 0&&this.emit("removeListener",e,f||n)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var n,r,s;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var u=Object.keys(r),i;for(s=0;s=0;s--)this.removeListener(e,n[s]);return this};function E(t,e,n){var r=t._events;if(r===void 0)return[];var s=r[e];return s===void 0?[]:typeof s=="function"?n?[s.listener||s]:[s]:n?z(s):w(s,s.length)}o.prototype.listeners=function(e){return E(this,e,!0)},o.prototype.rawListeners=function(e){return E(this,e,!1)},o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):_.call(t,e)},o.prototype.listenerCount=_;function _(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?p(this._events):[]};function w(t,e){for(var n=new Array(e),r=0;r;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["r","e","t","eventsModule","events","s"],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..460b34629a0b911734ecaba508d50421126e9edd ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../src/core/keychain.ts","../src/core/crypto.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/subscriber.ts","../src/core/relayer.ts","../src/core/history.ts","../src/core/expirer.ts","../src/core/store.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/core/core.ts","../src/core/index.ts","../src/sign-client/proposal.ts","../src/sign-client/auth.ts","../src/sign-client/session.ts","../src/sign-client/jsonrpc.ts","../src/sign-client/pendingRequest.ts","../src/sign-client/engine.ts","../src/sign-client/client.ts","../src/sign-client/index.ts","../src/index.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d",{"version":"a771f3182c046f8b2d4a8b253d84037d1d6caf48139a5f329d60f8ca3cb7325d","signature":"1c697d5571b23e58c638327b0959ab8ce7a3a1192f3fa5847c545e8a35a88b81"},{"version":"b4cf311d307aad665c290a647adfa63c0d4c4978e90e1a800ac3284d9b6e768a","signature":"cac3cd6c55cbdb4092834342a8c256cc34ede50f83c8d33586236889bc7dd47b"},{"version":"211fbc870d26d33bd0530050e15ea959079e66d57c31b2c768cb835057090da5","signature":"8b8ae4783419c0cbba56335ae9af63181593d876a542d61a823a887a5b3fc713"},{"version":"db4f07433024766257b45c8633374c7b0863de92234b569bf89548f81f0a4366","signature":"970786dd0f7e0a4d2770980b3e30f84d78eb9e996bfc3beb8aec0fc79041baa3"},{"version":"135bc48d525c18e1f19bf4bff7c29a21dcc7dd3f0abbafad6e6a62f3d0ca2933","signature":"0e934b71219109c4714b29017a6886a1b9c08adbf4df9d7ba7ae36146390a79d"},{"version":"80832fb8ba22c5ecbce1c33c2a6a698aca342a02bbe847698150965b1d9a1e20","signature":"34975c50cf90a46824f60e8e68611d548c6a0065157f6ead4448739ce1e78cbc"},{"version":"8233ab90f5a0bb54dedf025800e9a1823ed0ee42e9f3a4fd135f272095f74134","signature":"091e3045270bd0b0b12765940128af773344d085621395001c2e4649c0c33c67"},{"version":"fe0f6ec258642189211e9d67504033d92f79e7823fcd73b304ca1c913aebabe6","signature":"f0d56ec8d982bcb82230aa47b0d2747b6ccc8be1b439f4f3e24b20021ac12f30"},{"version":"2a653343cd29fb91f423de0aa2c51e5ce5b576f9f7684dc928e0d8c9a85203c6","signature":"c1f143281fa2178579eaef19ebe393a0270cac3fafb71a5ec521f149e872c26f"},{"version":"f0c1218e7af8209b21f55c38178059cf8007792c0c5732f99234c12b53f8ffa1","signature":"e2fdf4b2544bbe1b3347cdf0a7c08862b26af46abd673b3f0e1f3ceb6a49c4a3"},{"version":"643ea5c45b0c77cb9ad78895b65c9b235731cdbd0064a2e1908ea76eb814f063","signature":"e749c3898546ad92b3108a44aef553f19405bf932d6b0001f9503339dedb95c2"},{"version":"e81123bb934323e71b994fcd11f18c33154848391ce4ded8a2203b3b27d72643","signature":"f60bbf96db27dd73d32ca5c0ccbe03c8f72aba2b87760ac96ac15b57c2d9ceb0"},{"version":"c6b348c2674697e96d15f33e44c0d341fe4ce2d143528f47d812c2862e7bc578","signature":"920e95b6d3bcea5ec794a47b5e5a5235d82b1d98bed7e3014f983eb1bd62001f"},{"version":"cbe7c085ede2a53876a3fffd73add76bcc1d5f5fb5b7864445b839d64efc8431","signature":"1f5fe58679cc5c902b7fb9e4fb68d0931a013fb3e750b858fa9ec45d6d0bc10b"},"ceef125d35ab5591ed4d99418619bebe7162ba0ab3a9693cc8ccb0d00585b2fa",{"version":"5b76efa21700a1af1b57a4d9ecf83250350f8153deb72e34c5d37eccda057d28","signature":"c927326561af6e91e91b8f265e7301980e04a2fc891b38cf49728f4708fd073f"},{"version":"be7ac29728e324262d56c3d013369ad849593184d90d3b7579addb58a50b643d","signature":"b52c2789aa7f160911601ad9e8733e0b336be2934bacda2b828aa5086af0a46a"},{"version":"75a3af7bd5e57f0efb399f4fc2f7004b2c1b85f76c2009475452ffd19e230019","signature":"b2600375c2fe289e75b8a6e609e31e495a69348be220beb1558d03e61e8cf4af"},{"version":"014837f0a732216e2b51e048f26f5d0246e070fa8376a54ceeb688337857d6d6","signature":"fcec1ddb829e46b81b98c1563495706b3dca00413b8ebbfc7c82193a226d812f"},{"version":"b6b109487ee24fcecac9515a8ee241d633079927490c81888eecabec2275ad74","signature":"aa44780a5dfa9df4f2524332299f01115f5281e9c8bf1a2e1cac2a5b81e5beff"},{"version":"5674581613842ef7ad27d6ea0416325f8cc664ef640141adf0500e4fc236d7db","signature":"af128a794f0eb1498c25b377066baff09bb11f87257854b389feb038e72bf2f1"},{"version":"588e77410266b14264311b70ee04fffdcc198eb05d661ce5b920739220eec914","signature":"1eb12a4c4f0d8256b321af7e7bce3b74912851eca4f9fad761b7ebefb047b9a5"},"a3d139874ac29911ca82720164581c1cf6985a87f1d95672d1968c08815628e4","7f4d7d3426e39f1be70dc80fe6bb73134591aa355026500d811a8365cfceb429","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,95],[58,61,87,88,95,149,150,151],[88,153],[88],[88,148],[88,157],[88,158],[58,88,95],[88,175],[88,163,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,166,167,168,169,170,171,172,173,174,175],[88,164,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,165,167,168,169,170,171,172,173,174,175],[88,163,164,165,166,168,169,170,171,172,173,174,175],[88,163,164,165,166,167,169,170,171,172,173,174,175],[88,163,164,165,166,167,168,170,171,172,173,174,175],[88,163,164,165,166,167,168,169,171,172,173,174,175],[88,163,164,165,166,167,168,169,170,172,173,174,175],[88,163,164,165,166,167,168,169,170,171,173,174,175],[88,163,164,165,166,167,168,169,170,171,172,174,175],[88,163,164,165,166,167,168,169,170,171,172,173,175],[88,163,164,165,166,167,168,169,170,171,172,173,174],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,185],[88,188],[88,190],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[61,88,95],[58,88,92,114,115],[42,88,97,103,108,123,124,125,129,130,131,133,134,135,136],[42,88,113,123,124,137],[42,88,123],[42,88,123,137],[42,88,97,123,137],[42,88,97,113,123,137],[42,88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[42,58,88,113,123,129,132,137],[42,88,97,123,129],[42,88,97,113,123,126,127,128,137],[42,88,113,123,137],[42,88,97,113,123,129],[42,88,108,123,137],[42,88,138,146],[42,88,113,138,141],[42,58,88,123,134,137,138,139,140,141,143,144],[42,58,88,113,129,133,138,139,140,141,142,143,145],[42,88,139,140,141,142,143,144,145],[42,88,113,129,139,141,145,146],[42,88,129,132,145],[42,88,129,132,139,140,145],[97,103,108,123,124,125,129,130,131,133,134,135,136],[113,123,124,137],[123],[123,137],[97,123,137],[97,113,123,137],[58,113,123,129,132,137],[97,123,129],[97,113,123,126,127,128,137],[113,123,137],[97,113,123,129],[108,123,137],[113,138,141],[58,123,134,137,138,139,140,141,143,144],[58,113,129,133,138,139,140,141,142,143,145],[113,129,139,141,145,146],[138,146],[129,132,145],[129,132,139,140,145]],"referencedMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,91],[125,92],[135,93],[136,94],[131,95],[130,96],[138,97],[124,94],[126,94],[133,98],[127,99],[129,100],[132,101],[128,102],[134,103],[147,104],[140,105],[145,106],[144,107],[146,108],[142,109],[143,104],[139,110],[141,111]],"exportedModulesMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,112],[125,113],[135,114],[136,115],[131,116],[130,117],[138,97],[124,115],[126,115],[133,118],[127,119],[129,120],[132,121],[128,122],[134,123],[147,104],[140,124],[145,125],[144,126],[146,108],[142,127],[143,128],[139,129],[141,130]],"semanticDiagnosticsPerFile":[148,152,154,153,155,156,150,157,158,159,160,161,162,176,164,165,163,166,167,168,169,170,171,172,173,174,175,177,178,179,180,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,181,182,183,151,184,186,185,187,189,188,190,191,96,97,101,102,100,103,98,99,113,109,110,111,112,108,107,106,104,105,121,119,117,123,118,120,122,149,114,116,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141]},"version":"4.7.4"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts b/node_modules/@walletconnect/types/dist/types/core/core.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..0391c9df2a40801ff58225e6530397d2f0979dfc ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts -@@ -0,0 +1,70 @@ -+import { IEvents } from "@walletconnect/events"; -+import { IHeartBeat } from "@walletconnect/heartbeat"; -+import { IKeyValueStorage, KeyValueStorageOptions } from "@walletconnect/keyvaluestorage"; -+import { ICrypto } from "./crypto"; -+import { IRelayer } from "./relayer"; -+import { IKeyChain } from "./keychain"; -+import { IJsonRpcHistory } from "./history"; -+import { IExpirer } from "./expirer"; -+import { IPairing } from "./pairing"; -+import { Logger } from "@walletconnect/logger"; -+import { IVerify } from "./verify"; -+import { IEchoClient } from "./echo"; -+import { IEventClient } from "./events"; -+export declare namespace CoreTypes { -+ interface Options { -+ projectId?: string; -+ name?: string; -+ relayUrl?: string; -+ logger?: string | Logger; -+ keychain?: IKeyChain; -+ storage?: IKeyValueStorage; -+ storageOptions?: KeyValueStorageOptions; -+ maxLogBlobSizeInBytes?: number; -+ customStoragePrefix?: string; -+ telemetryEnabled?: boolean; -+ } -+ interface Metadata { -+ name: string; -+ description: string; -+ url: string; -+ icons: string[]; -+ verifyUrl?: string; -+ redirect?: { -+ native?: string; -+ universal?: string; -+ linkMode?: boolean; -+ }; -+ } -+} -+export declare abstract class ICore extends IEvents { -+ opts?: CoreTypes.Options | undefined; -+ readonly protocol = "wc"; -+ readonly version = 2; -+ abstract readonly name: string; -+ abstract readonly context: string; -+ abstract readonly relayUrl?: string; -+ abstract readonly projectId?: string; -+ abstract readonly customStoragePrefix: string; -+ abstract logger: Logger; -+ abstract heartbeat: IHeartBeat; -+ abstract crypto: ICrypto; -+ abstract relayer: IRelayer; -+ abstract storage: IKeyValueStorage; -+ abstract history: IJsonRpcHistory; -+ abstract expirer: IExpirer; -+ abstract pairing: IPairing; -+ abstract verify: IVerify; -+ abstract echoClient: IEchoClient; -+ abstract linkModeSupportedApps: string[]; -+ abstract eventClient: IEventClient; -+ constructor(opts?: CoreTypes.Options | undefined); -+ abstract start(): Promise; -+ abstract dispatchEnvelope(params: { -+ topic: string; -+ message: string; -+ sessionExists: boolean; -+ }): void; -+ abstract addLinkModeSupportedApp(universalLink: string): void; -+} -+//# sourceMappingURL=core.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..79b876b6be25b1233b57cb1b8d05c207a0a9c49c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..cd6316ac28214711e0a51cdc8430a39d20cd43e5 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts -@@ -0,0 +1,81 @@ -+import { JsonRpcPayload } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+import { IKeyChain } from "./keychain"; -+export declare namespace CryptoTypes { -+ type EncodingType = "base64pad" | "base64url"; -+ interface Participant { -+ publicKey: string; -+ } -+ interface KeyPair { -+ privateKey: string; -+ publicKey: string; -+ } -+ interface EncryptParams { -+ message: string; -+ symKey: string; -+ type?: number; -+ iv?: string; -+ senderPublicKey?: string; -+ encoding?: EncodingType; -+ } -+ interface DecryptParams { -+ symKey: string; -+ encoded: string; -+ encoding?: EncodingType; -+ } -+ interface EncodingParams { -+ type: Uint8Array; -+ sealed: Uint8Array; -+ iv: Uint8Array; -+ senderPublicKey?: Uint8Array; -+ encoding?: EncodingType; -+ } -+ interface DecodingParams { -+ encoded: string; -+ encoding?: EncodingType; -+ } -+ interface EncodeOptions { -+ type?: number; -+ senderPublicKey?: string; -+ receiverPublicKey?: string; -+ encoding?: EncodingType; -+ } -+ interface DecodeOptions { -+ receiverPublicKey?: string; -+ encoding?: EncodingType; -+ } -+ interface EncodingValidation { -+ type: number; -+ senderPublicKey?: string; -+ receiverPublicKey?: string; -+ } -+ interface TypeOneParams { -+ type: 1; -+ senderPublicKey: string; -+ receiverPublicKey: string; -+ } -+} -+export declare abstract class ICrypto { -+ core: ICore; -+ logger: Logger; -+ abstract name: string; -+ abstract readonly context: string; -+ abstract keychain: IKeyChain; -+ abstract readonly randomSessionIdentifier: string; -+ constructor(core: ICore, logger: Logger, keychain?: IKeyChain); -+ abstract init(): Promise; -+ abstract hasKeys(tag: string): boolean; -+ abstract getClientId(): Promise; -+ abstract generateKeyPair(): Promise; -+ abstract generateSharedKey(selfPublicKey: string, peerPublicKey: string, overrideTopic?: string): Promise; -+ abstract setSymKey(symKey: string, overrideTopic?: string): Promise; -+ abstract deleteKeyPair(publicKey: string): Promise; -+ abstract deleteSymKey(topic: string): Promise; -+ abstract encode(topic: string, payload: JsonRpcPayload, opts?: CryptoTypes.EncodeOptions): Promise; -+ abstract decode(topic: string, encoded: string, opts?: CryptoTypes.DecodeOptions): Promise; -+ abstract signJWT(aud: string): Promise; -+ abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number; -+ abstract getPayloadSenderPublicKey(encoded: string, encoding?: CryptoTypes.EncodingType): string | undefined; -+} -+//# sourceMappingURL=crypto.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..4402043b63a14f2daa2291ce030a2c69613bdd2b ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/core/crypto.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..64f99da3f8b9d8652e697d735d139508062f473a ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts -@@ -0,0 +1,17 @@ -+import { Logger } from "@walletconnect/logger"; -+export declare namespace EchoClientTypes { -+ type RegisterDeviceTokenParams = { -+ clientId: string; -+ token: string; -+ notificationType: "fcm" | "apns" | "apns-sandbox" | "noop"; -+ enableEncrypted?: boolean; -+ }; -+} -+export declare abstract class IEchoClient { -+ projectId: string; -+ logger: Logger; -+ abstract readonly context: string; -+ constructor(projectId: string, logger: Logger); -+ abstract registerDeviceToken(params: EchoClientTypes.RegisterDeviceTokenParams): Promise; -+} -+//# sourceMappingURL=echo.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..0d96f2e7263890a1754cefda3d2e7674e6e4ad40 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/core/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,yBAAyB,GAAG;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC;QAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AACD,8BAAsB,WAAW;IAEZ,SAAS,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM;IAD3D,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBACtB,SAAS,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM;aAE3C,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,yBAAyB,GAChD,OAAO,CAAC,IAAI,CAAC;CACjB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts b/node_modules/@walletconnect/types/dist/types/core/events.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..16673bbdde13ec7fc6d924c1ce3a4e7aed4fd6ca ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts -@@ -0,0 +1,45 @@ -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare namespace EventClientTypes { -+ interface Event { -+ eventId: string; -+ bundleId: string; -+ timestamp: number; -+ props: Props; -+ addTrace: (trace: string) => void; -+ setError: (error: string) => void; -+ } -+ interface Props { -+ event: string; -+ type: string; -+ properties: Properties; -+ } -+ interface Properties { -+ topic: string; -+ trace: Trace; -+ } -+ type Trace = string[]; -+} -+export declare abstract class IEventClient { -+ core: ICore; -+ logger: Logger; -+ telemetryEnabled: boolean; -+ abstract readonly context: string; -+ constructor(core: ICore, logger: Logger, telemetryEnabled: boolean); -+ abstract createEvent(params: { -+ event?: "ERROR"; -+ type?: string; -+ properties: { -+ topic: string; -+ trace: EventClientTypes.Trace; -+ }; -+ }): EventClientTypes.Event; -+ abstract getEvent(params: { -+ eventId?: string; -+ topic?: string; -+ }): EventClientTypes.Event | undefined; -+ abstract deleteEvent(params: { -+ eventId: string; -+ }): void; -+} -+//# sourceMappingURL=events.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..471f6507a8b7e83e4ef0ae15391f57a5b77f9fd4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/core/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,UAAiB,KAAK;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC;IAED,UAAiB,KAAK;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAiB,UAAU;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC;KACd;IAED,KAAY,KAAK,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,8BAAsB,YAAY;IAGb,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,gBAAgB,EAAE,OAAO;IAFvF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,gBAAgB,EAAE,OAAO;aAEvE,WAAW,CAAC,MAAM,EAAE;QAClC,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;SAC/B,CAAC;KACH,GAAG,gBAAgB,CAAC,KAAK;aAEV,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,gBAAgB,CAAC,KAAK,GAAG,SAAS;aAEtB,WAAW,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAC/D"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..e773cbc725fc62e09c3f45e8005f7b9f09962bf4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts -@@ -0,0 +1,37 @@ -+import { IEvents } from "@walletconnect/events"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare namespace ExpirerTypes { -+ interface Expiration { -+ target: string; -+ expiry: number; -+ } -+ interface Created { -+ target: string; -+ expiration: Expiration; -+ } -+ interface Deleted { -+ target: string; -+ expiration: Expiration; -+ } -+ interface Expired { -+ target: string; -+ expiration: Expiration; -+ } -+} -+export declare abstract class IExpirer extends IEvents { -+ core: ICore; -+ logger: Logger; -+ abstract name: string; -+ abstract readonly context: string; -+ abstract readonly length: number; -+ abstract readonly keys: string[]; -+ abstract readonly values: ExpirerTypes.Expiration[]; -+ constructor(core: ICore, logger: Logger); -+ abstract init(): Promise; -+ abstract has(key: string | number): boolean; -+ abstract set(key: string | number, expiry: number): void; -+ abstract get(key: string | number): ExpirerTypes.Expiration; -+ abstract del(key: string | number): void; -+} -+//# sourceMappingURL=expirer.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..039287dcbead4999a93db36dad82c4f61bd85361 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"expirer.d.ts","sourceRoot":"","sources":["../../../src/core/expirer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,UAAU,UAAU;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;CACF;AAED,8BAAsB,QAAS,SAAQ,OAAO;IAWzB,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAVrD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;gBAExC,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;aAElC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;aAE/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,UAAU;aAElD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAChD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts b/node_modules/@walletconnect/types/dist/types/core/history.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..f246f7694840abc0e8f5e6441455e4553b9caccc ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts -@@ -0,0 +1,39 @@ -+import { IEvents } from "@walletconnect/events"; -+import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, RequestArguments } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export interface JsonRpcRecord { -+ id: number; -+ topic: string; -+ request: RequestArguments; -+ chainId?: string; -+ response?: { -+ result: any; -+ } | { -+ error: ErrorResponse; -+ }; -+ expiry?: number; -+} -+export interface RequestEvent { -+ topic: string; -+ request: JsonRpcRequest; -+ chainId?: string; -+} -+export declare abstract class IJsonRpcHistory extends IEvents { -+ core: ICore; -+ logger: Logger; -+ records: Map; -+ abstract readonly context: string; -+ abstract readonly size: number; -+ abstract readonly keys: number[]; -+ abstract readonly values: JsonRpcRecord[]; -+ abstract readonly pending: RequestEvent[]; -+ constructor(core: ICore, logger: Logger); -+ abstract init(): Promise; -+ abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void; -+ abstract get(topic: string, id: number): Promise; -+ abstract resolve(response: JsonRpcResponse): Promise; -+ abstract delete(topic: string, id?: number): void; -+ abstract exists(topic: string, id: number): Promise; -+} -+//# sourceMappingURL=history.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a8aeccc4612787896f1ca40b84db1b14a849d256 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8BAAsB,eAAgB,SAAQ,OAAO;IAahC,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAZ9C,OAAO,6BAAoC;IAElD,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,aAAa,EAAE,CAAC;IAEjD,kBAAyB,OAAO,EAAE,YAAY,EAAE,CAAC;gBAE9B,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;aAEnE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;aAEtD,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACpE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts b/node_modules/@walletconnect/types/dist/types/core/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..02675dcdb9e3911efa8ed77e7f140ec6f1eca561 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts -@@ -0,0 +1,15 @@ -+export * from "./core"; -+export * from "./crypto"; -+export * from "./history"; -+export * from "./messages"; -+export * from "./publisher"; -+export * from "./relayer"; -+export * from "./store"; -+export * from "./subscriber"; -+export * from "./keychain"; -+export * from "./expirer"; -+export * from "./pairing"; -+export * from "./verify"; -+export * from "./echo"; -+export * from "./events"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..e14ce7e74170113321cfb441e56bf9df7b3992a4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..218c51ae2c58db5eb14446a2062c768c705f1d4f ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts -@@ -0,0 +1,16 @@ -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare abstract class IKeyChain { -+ core: ICore; -+ logger: Logger; -+ abstract keychain: Map; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(core: ICore, logger: Logger); -+ abstract init(): Promise; -+ abstract has(tag: string, opts?: any): boolean; -+ abstract set(tag: string, key: string, opts?: any): Promise; -+ abstract get(tag: string, opts?: any): string; -+ abstract del(tag: string, opts?: any): Promise; -+} -+//# sourceMappingURL=keychain.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..3e0f9a20a7ece06b0ad5ed999e075ec315ad8382 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/core/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,SAAS;IAOV,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO;aAErC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;aAExD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM;aAEpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5D"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..34006e8889690dd2bf2922e9c312f60f8c1152eb ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts -@@ -0,0 +1,17 @@ -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare type MessageRecord = Record; -+export declare abstract class IMessageTracker { -+ logger: Logger; -+ core: ICore; -+ abstract messages: Map; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(logger: Logger, core: ICore); -+ abstract init(): Promise; -+ abstract set(topic: string, message: string): Promise; -+ abstract get(topic: string): MessageRecord; -+ abstract has(topic: string, message: string): boolean; -+ abstract del(topic: string): Promise; -+} -+//# sourceMappingURL=messages.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a1ce2fc3ef9ed3b6183fdcd78030ccd6d249298e ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,oBAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,8BAAsB,eAAe;IAOhB,MAAM,EAAE,MAAM;IAAS,IAAI,EAAE,KAAK;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAErD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,KAAK;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEpD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;aAEjC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;aAE5C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAClD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..3c2345bf7b4774d3f6de2e8121646e0ec41bb18e ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts -@@ -0,0 +1,94 @@ -+/// -+import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; -+import EventEmitter from "events"; -+import { ICore, CoreTypes } from "./core"; -+import { IStore } from "./store"; -+import { RelayerTypes } from "../core/relayer"; -+import { Logger } from "@walletconnect/logger"; -+export declare namespace PairingTypes { -+ interface Struct { -+ topic: string; -+ expiry: number; -+ relay: RelayerTypes.ProtocolOptions; -+ active: boolean; -+ peerMetadata?: CoreTypes.Metadata; -+ methods?: string[]; -+ } -+} -+export declare namespace PairingJsonRpcTypes { -+ type DefaultResponse = true | ErrorResponse; -+ type WcMethod = "wc_pairingDelete" | "wc_pairingPing"; -+ type Error = ErrorResponse; -+ interface RequestParams { -+ wc_pairingDelete: { -+ code: number; -+ message: string; -+ }; -+ wc_pairingPing: Record; -+ } -+ interface Results { -+ wc_pairingDelete: true; -+ wc_pairingPing: true; -+ } -+ interface EventCallback { -+ topic: string; -+ payload: T; -+ } -+} -+export declare type IPairingStore = IStore; -+export declare abstract class IPairing { -+ logger: Logger; -+ core: ICore; -+ abstract name: string; -+ abstract readonly context: string; -+ abstract events: EventEmitter; -+ abstract pairings: IPairingStore; -+ constructor(logger: Logger, core: ICore); -+ abstract init(): Promise; -+ abstract pair(params: { -+ uri: string; -+ activatePairing?: boolean; -+ }): Promise; -+ abstract create(params?: { -+ methods?: string[]; -+ transportType?: RelayerTypes.SubscribeOptions["transportType"]; -+ }): Promise<{ -+ topic: string; -+ uri: string; -+ }>; -+ abstract activate(params: { -+ topic: string; -+ }): Promise; -+ abstract register(params: { -+ methods: string[]; -+ }): void; -+ abstract updateExpiry(params: { -+ topic: string; -+ expiry: number; -+ }): Promise; -+ abstract updateMetadata(params: { -+ topic: string; -+ metadata: CoreTypes.Metadata; -+ }): Promise; -+ abstract getPairings(): PairingTypes.Struct[]; -+ abstract ping(params: { -+ topic: string; -+ }): Promise; -+ abstract disconnect(params: { -+ topic: string; -+ }): Promise; -+} -+export interface IPairingPrivate { -+ sendRequest(topic: string, method: M, params: PairingJsonRpcTypes.RequestParams[M]): Promise; -+ sendResult(id: number, topic: string, result: PairingJsonRpcTypes.Results[M]): Promise; -+ sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise; -+ onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void; -+ onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise; -+ onPairingPingRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onPairingPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onPairingDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onUnknownRpcMethodResponse(method: string): void; -+ deletePairing(topic: string, expirerHasDeleted?: boolean): Promise; -+} -+//# sourceMappingURL=pairing.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ddd62cf2f022ebe2e92e18967d92d97fe242061c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../../../src/core/pairing.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..393635615f4b5acfbac68451bd38b12d8a67b309 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts -@@ -0,0 +1,19 @@ -+import { IEvents } from "@walletconnect/events"; -+import { Logger } from "@walletconnect/logger"; -+import { IRelayer, RelayerTypes } from "./relayer"; -+export declare namespace PublisherTypes { -+ interface Params { -+ topic: string; -+ message: string; -+ opts: Omit; -+ } -+} -+export declare abstract class IPublisher extends IEvents { -+ relayer: IRelayer; -+ logger: Logger; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(relayer: IRelayer, logger: Logger); -+ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; -+} -+//# sourceMappingURL=publisher.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..6aee29ba86c24c4df155b29495f368d8da1af161 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../src/core/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KACrD;CACF;AAED,8BAAsB,UAAW,SAAQ,OAAO;IAK3B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAJ3D,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,OAAO,CAAC,IAAI,CAAC;CACjB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..fe99e9b168ba2818e8d3d703279bed2c715b63e7 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts -@@ -0,0 +1,96 @@ -+import { IEvents } from "@walletconnect/events"; -+import { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+import { IMessageTracker } from "./messages"; -+import { IPublisher } from "./publisher"; -+import { ISubscriber } from "./subscriber"; -+export declare namespace RelayerTypes { -+ interface ProtocolOptions { -+ protocol: string; -+ data?: string; -+ } -+ interface PublishOptions { -+ relay?: ProtocolOptions; -+ ttl?: number; -+ prompt?: boolean; -+ tag?: number; -+ id?: number; -+ internal?: { -+ throwOnFailedPublish?: boolean; -+ }; -+ attestation?: string; -+ } -+ type TransportType = "relay" | "link_mode"; -+ interface SubscribeOptions { -+ relay?: ProtocolOptions; -+ transportType?: TransportType; -+ } -+ interface UnsubscribeOptions { -+ id?: string; -+ relay: ProtocolOptions; -+ } -+ type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions; -+ interface PublishPayload { -+ topic: string; -+ message: string; -+ opts?: RelayerTypes.PublishOptions; -+ } -+ interface MessageEvent { -+ topic: string; -+ message: string; -+ publishedAt: number; -+ transportType?: TransportType; -+ attestation?: string; -+ } -+ interface RpcUrlParams { -+ protocol: string; -+ version: number; -+ auth: string; -+ relayUrl: string; -+ sdkVersion: string; -+ projectId?: string; -+ useOnCloseEvent?: boolean; -+ bundleId?: string; -+ } -+} -+export interface RelayerOptions { -+ core: ICore; -+ logger?: string | Logger; -+ relayUrl?: string; -+ projectId?: string; -+} -+export interface RelayerClientMetadata { -+ protocol: string; -+ version: number; -+ env: string; -+ host?: string; -+} -+export declare abstract class IRelayer extends IEvents { -+ abstract core: ICore; -+ abstract logger: Logger; -+ abstract subscriber: ISubscriber; -+ abstract publisher: IPublisher; -+ abstract messages: IMessageTracker; -+ abstract provider: IJsonRpcProvider; -+ abstract name: string; -+ abstract transportExplicitlyClosed: boolean; -+ abstract readonly context: string; -+ abstract readonly connected: boolean; -+ abstract readonly connecting: boolean; -+ constructor(opts: RelayerOptions); -+ abstract init(): Promise; -+ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; -+ abstract request(request: RequestArguments): Promise; -+ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; -+ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; -+ abstract transportClose(): Promise; -+ abstract transportOpen(relayUrl?: string): Promise; -+ abstract restartTransport(relayUrl?: string): Promise; -+ abstract confirmOnlineStateOrThrow(): Promise; -+ abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise; -+ abstract onLinkMessageEvent(messageEvent: RelayerTypes.MessageEvent, opts?: { -+ sessionExists?: boolean; -+ }): Promise; -+} -+//# sourceMappingURL=relayer.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8415bb875fcbbd01bf86693f499aaa07d91d9438 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../src/core/relayer.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts b/node_modules/@walletconnect/types/dist/types/core/store.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..112b87ce75749a3806358364995f470a501239d2 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts -@@ -0,0 +1,21 @@ -+import { ErrorResponse } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare abstract class IStore { -+ core: ICore; -+ logger: Logger; -+ name: string; -+ abstract map: Map; -+ abstract readonly context: string; -+ abstract readonly length: number; -+ abstract readonly keys: Key[]; -+ abstract readonly values: Value[]; -+ constructor(core: ICore, logger: Logger, name: string, storagePrefix?: string); -+ abstract init(): Promise; -+ abstract set(key: Key, value: Value): Promise; -+ abstract get(key: Key): Value; -+ abstract getAll(filter?: Partial): Value[]; -+ abstract update(key: Key, update: Partial): Promise; -+ abstract delete(key: Key, reason: ErrorResponse): Promise; -+} -+//# sourceMappingURL=store.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5a99c125668c0072c989dbd37a4564ff6670653c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,MAAM,CAAC,GAAG,EAAE,KAAK;IAY5B,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IAbrB,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAErC,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,GAAG,EAAE,CAAC;IAErC,kBAAyB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAGhC,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAEnB,aAAa,CAAC,EAAE,MAAM;aAGR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;aAE1C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK;aAEpB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;aAExC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;aAEvD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CACvE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dd6aea5407bbcc4f20b6f15472bc5d52b17ce2ec ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts -@@ -0,0 +1,49 @@ -+import { IEvents } from "@walletconnect/events"; -+import { ErrorResponse } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { IRelayer, RelayerTypes } from "./relayer"; -+export declare namespace SubscriberTypes { -+ interface Params extends RelayerTypes.SubscribeOptions { -+ topic: string; -+ } -+ interface Active extends Params { -+ id: string; -+ } -+} -+export declare namespace SubscriberEvents { -+ type Created = SubscriberTypes.Active; -+ interface Deleted extends SubscriberTypes.Active { -+ reason: ErrorResponse; -+ } -+ type Expired = Deleted; -+} -+export declare abstract class ISubscriberTopicMap { -+ map: Map; -+ abstract readonly topics: string[]; -+ abstract set(topic: string, id: string): void; -+ abstract get(topic: string): string[]; -+ abstract exists(topic: string, id: string): boolean; -+ abstract delete(topic: string, id?: string): void; -+ abstract clear(): void; -+} -+export declare abstract class ISubscriber extends IEvents { -+ relayer: IRelayer; -+ logger: Logger; -+ abstract subscriptions: Map; -+ abstract topicMap: ISubscriberTopicMap; -+ abstract pending: Map; -+ abstract readonly length: number; -+ abstract readonly ids: string[]; -+ abstract readonly values: SubscriberTypes.Active[]; -+ abstract readonly topics: string[]; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(relayer: IRelayer, logger: Logger); -+ abstract init(): Promise; -+ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; -+ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; -+ abstract isSubscribed(topic: string): Promise; -+ abstract start(): Promise; -+ abstract stop(): Promise; -+} -+//# sourceMappingURL=subscriber.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5eebf731cbc2107021b9a9d97c6ec5d75751314d ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../../src/core/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,UAAiB,MAAO,SAAQ,YAAY,CAAC,gBAAgB;QAC3D,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,MAAO,SAAQ,MAAM;QACpC,EAAE,EAAE,MAAM,CAAC;KACZ;CACF;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAY,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;IAE7C,UAAiB,OAAQ,SAAQ,eAAe,CAAC,MAAM;QACrD,MAAM,EAAE,aAAa,CAAC;KACvB;IAED,KAAY,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,8BAAsB,mBAAmB;IAChC,GAAG,wBAA+B;IAEzC,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;aAE1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;aAEpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;aAE5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;aAE1C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,KAAK,IAAI,IAAI;CAC9B;AAED,8BAAsB,WAAY,SAAQ,OAAO;IAmB5B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAlB3D,SAAgB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnE,SAAgB,QAAQ,EAAE,mBAAmB,CAAC;IAE9C,SAAgB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAE7D,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,GAAG,EAAE,MAAM,EAAE,CAAC;IAEvC,kBAAyB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;IAE1D,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,YAAY,CAAC,gBAAgB,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aAET,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;aAEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CACtC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c0a1d50f4f400826e8b5bd49e263e07d34077e8f ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts -@@ -0,0 +1,34 @@ -+import { Logger } from "@walletconnect/logger"; -+import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; -+import { ICore } from "./core"; -+export declare namespace Verify { -+ interface Context { -+ verified: { -+ origin: string; -+ validation: "UNKNOWN" | "VALID" | "INVALID"; -+ verifyUrl: string; -+ isScam?: boolean; -+ }; -+ } -+} -+export declare abstract class IVerify { -+ core: ICore; -+ logger: Logger; -+ store: IKeyValueStorage; -+ abstract readonly context: string; -+ constructor(core: ICore, logger: Logger, store: IKeyValueStorage); -+ abstract register(params: { -+ id: string; -+ decryptedId: string; -+ }): Promise; -+ abstract resolve(params: { -+ attestationId?: string; -+ hash?: string; -+ encryptedId?: string; -+ verifyUrl?: string; -+ }): Promise<{ -+ origin: string; -+ isScam?: boolean; -+ }>; -+} -+//# sourceMappingURL=verify.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..1a75b1894ecb118f2816f19f016b88cfdd415bf9 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/core/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,UAAiB,OAAO;QACtB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAC5C,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;CACF;AAED,8BAAsB,OAAO;IAGR,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,KAAK,EAAE,gBAAgB;IAFrF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,KAAK,EAAE,gBAAgB;aAErE,QAAQ,CAAC,MAAM,EAAE;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;aAEf,OAAO,CAAC,MAAM,EAAE;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts b/node_modules/@walletconnect/types/dist/types/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..ed69742e9ae63a17ff5321c699f7f4e9e50ff5b4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/index.d.ts -@@ -0,0 +1,3 @@ -+export * from "./core"; -+export * from "./sign-client"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..da476f2661eb396ee5a01a33c5cb5377c8930d90 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..281e39e34acc58f7f544c7f1d6367d3225e45313 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts -@@ -0,0 +1,153 @@ -+import { ErrorResponse, JsonRpcError, JsonRpcRequest, JsonRpcResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; -+import { CoreTypes, ICore, IStore, RelayerTypes, Verify } from "../core"; -+import { SessionTypes } from "./session"; -+export declare namespace AuthTypes { -+ type Event = "session_authenticate"; -+ interface AuthRequestEventArgs { -+ requester: Participant; -+ authPayload: PayloadParams; -+ expiryTimestamp: number; -+ transportType?: RelayerTypes.TransportType; -+ } -+ type AuthResponseEventArgs = { -+ message: string; -+ code: number; -+ } | JsonRpcResult | JsonRpcError; -+ interface BaseEventArgs { -+ id: number; -+ topic: string; -+ params: T; -+ verifyContext?: Verify.Context; -+ } -+ interface EventArguments { -+ auth_request: BaseEventArgs; -+ auth_response: BaseEventArgs; -+ sign_request: BaseEventArgs<{ -+ request: { -+ method: string; -+ params: any; -+ }; -+ chainId: string; -+ }>; -+ sign_response: BaseEventArgs; -+ } -+ interface Options extends CoreTypes.Options { -+ metadata: Metadata; -+ core?: ICore; -+ projectId: string; -+ } -+ interface Metadata { -+ name: string; -+ description: string; -+ url: string; -+ icons: string[]; -+ redirect?: { -+ native?: string; -+ universal?: string; -+ linkMode?: boolean; -+ }; -+ verifyUrl?: string; -+ } -+ interface EventCallback { -+ topic: string; -+ payload: T; -+ } -+ type FormatMessageParams = { -+ aud?: string; -+ uri?: string; -+ } & Omit; -+ interface BaseAuthRequestParams { -+ domain: string; -+ aud: string; -+ nonce: string; -+ version?: string; -+ iat?: string; -+ nbf?: string; -+ exp?: string; -+ chainId?: string; -+ statement?: string; -+ requestId?: string; -+ resources?: string[]; -+ expiry?: number; -+ type?: string; -+ } -+ type RequestParams = { -+ chains: string[]; -+ } & BaseAuthRequestParams; -+ type SessionAuthenticateParams = { -+ pairingTopic?: string; -+ methods?: string[]; -+ uri: string; -+ } & Omit; -+ type PayloadParams = { -+ version: string; -+ iat: string; -+ } & RequestParams; -+ type CacaoPayload = { -+ iss: string; -+ } & BaseAuthRequestParams; -+ interface CacaoHeader { -+ t: "caip122"; -+ } -+ interface CacaoSignature { -+ t: "eip191" | "eip1271"; -+ s: string; -+ m?: string; -+ } -+ interface Cacao { -+ h: CacaoHeader; -+ p: CacaoPayload; -+ s: CacaoSignature; -+ } -+ interface PendingRequest { -+ id: number; -+ pairingTopic: string; -+ requester: Participant; -+ expiryTimestamp: number; -+ authPayload: PayloadParams; -+ verifyContext: Verify.Context; -+ transportType?: RelayerTypes.TransportType; -+ } -+ interface ApproveSessionAuthenticateParams { -+ id: number; -+ auths: Cacao[]; -+ } -+ interface SessionAuthenticateResponseParams { -+ responder: Participant; -+ cacaos: Cacao[]; -+ } -+ interface AuthErrorResponse { -+ id: number; -+ error: ErrorResponse; -+ } -+ type AuthResponse = SessionAuthenticateResponseParams["cacaos"]; -+ interface Participant { -+ publicKey: string; -+ metadata: Metadata; -+ } -+ interface SessionAuthenticateRequestParams { -+ requester: Participant; -+ authPayload: PayloadParams; -+ expiryTimestamp: number; -+ } -+ interface SessionAuthenticateRequest extends SessionAuthenticateRequestParams { -+ verifyContext: Verify.Context; -+ } -+ type AuthenticateResponseResult = { -+ auths?: AuthTypes.AuthResponse; -+ session: SessionTypes.Struct; -+ }; -+} -+export declare type IAuth = { -+ init(): Promise; -+ authKeys: IStore; -+ pairingTopics: IStore; -+ requests: IStore; -+}; -+//# sourceMappingURL=auth.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7b4c07a2d8f16fb60de4771fd2238cbc2c1f89c3 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/sign-client/auth.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..d1661b7120103ce4fe47428e8ee777de9d3a82de ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts -@@ -0,0 +1,123 @@ -+/// -+import { Logger } from "@walletconnect/logger"; -+import EventEmmiter from "events"; -+import { CoreTypes, ICore } from "../core/core"; -+import { IEngine } from "./engine"; -+import { IPendingRequest } from "./pendingRequest"; -+import { IProposal, ProposalTypes } from "./proposal"; -+import { ISession, SessionTypes } from "./session"; -+import { Verify } from "../core/verify"; -+import { IAuth, AuthTypes } from "./auth"; -+import { RelayerTypes } from "../core"; -+export declare namespace SignClientTypes { -+ type Event = "session_proposal" | "session_update" | "session_extend" | "session_ping" | "session_delete" | "session_expire" | "session_request" | "session_request_sent" | "session_event" | "session_authenticate" | "proposal_expire" | "session_request_expire"; -+ interface BaseEventArgs { -+ id: number; -+ topic: string; -+ params: T; -+ } -+ interface EventArguments { -+ session_proposal: { -+ verifyContext: Verify.Context; -+ } & Omit, "topic">; -+ session_update: BaseEventArgs<{ -+ namespaces: SessionTypes.Namespaces; -+ }>; -+ session_extend: Omit; -+ session_ping: Omit; -+ session_delete: Omit; -+ session_expire: { -+ topic: string; -+ }; -+ session_request: { -+ verifyContext: Verify.Context; -+ } & BaseEventArgs<{ -+ request: { -+ method: string; -+ params: any; -+ expiryTimestamp?: number; -+ }; -+ chainId: string; -+ }>; -+ session_request_sent: { -+ request: { -+ method: string; -+ params: any; -+ }; -+ topic: string; -+ chainId: string; -+ id: number; -+ }; -+ session_event: BaseEventArgs<{ -+ event: { -+ name: string; -+ data: any; -+ }; -+ chainId: string; -+ }>; -+ session_authenticate: { -+ verifyContext: Verify.Context; -+ transportType?: RelayerTypes.TransportType; -+ } & BaseEventArgs; -+ proposal_expire: { -+ id: number; -+ }; -+ session_request_expire: { -+ id: number; -+ }; -+ } -+ type Metadata = CoreTypes.Metadata; -+ type SignConfig = { -+ disableRequestQueue?: boolean; -+ }; -+ interface Options extends CoreTypes.Options { -+ core?: ICore; -+ metadata?: Metadata; -+ signConfig?: SignConfig; -+ } -+} -+export declare abstract class ISignClientEvents extends EventEmmiter { -+ constructor(); -+ abstract emit: (event: E, args: SignClientTypes.EventArguments[E]) => boolean; -+ abstract on: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract once: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract off: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract removeListener: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract removeAllListeners: (event: E) => this; -+} -+export declare abstract class ISignClient { -+ opts?: SignClientTypes.Options | undefined; -+ readonly protocol = "wc"; -+ readonly version = 2; -+ abstract readonly name: string; -+ abstract readonly context: string; -+ abstract readonly metadata: SignClientTypes.Metadata; -+ abstract core: ICore; -+ abstract logger: Logger; -+ abstract events: ISignClientEvents; -+ abstract engine: IEngine; -+ abstract session: ISession; -+ abstract proposal: IProposal; -+ abstract pendingRequest: IPendingRequest; -+ abstract auth: IAuth; -+ abstract signConfig?: SignClientTypes.SignConfig; -+ constructor(opts?: SignClientTypes.Options | undefined); -+ abstract connect: IEngine["connect"]; -+ abstract pair: IEngine["pair"]; -+ abstract approve: IEngine["approve"]; -+ abstract reject: IEngine["reject"]; -+ abstract update: IEngine["update"]; -+ abstract extend: IEngine["extend"]; -+ abstract request: IEngine["request"]; -+ abstract respond: IEngine["respond"]; -+ abstract ping: IEngine["ping"]; -+ abstract emit: IEngine["emit"]; -+ abstract disconnect: IEngine["disconnect"]; -+ abstract find: IEngine["find"]; -+ abstract getPendingSessionRequests: IEngine["getPendingSessionRequests"]; -+ abstract authenticate: IEngine["authenticate"]; -+ abstract formatAuthMessage: IEngine["formatAuthMessage"]; -+ abstract approveSessionAuthenticate: IEngine["approveSessionAuthenticate"]; -+ abstract rejectSessionAuthenticate: IEngine["rejectSessionAuthenticate"]; -+} -+//# sourceMappingURL=client.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..70e9c049668d90e09de3b54e328400408f0c37ad ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/sign-client/client.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..8f6a650283555f5716605ea714d8ad87290164ee ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts -@@ -0,0 +1,279 @@ -+/// -+import { JsonRpcResponse, JsonRpcRequest, ErrorResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; -+import { ISignClient } from "./client"; -+import { RelayerTypes } from "../core/relayer"; -+import { SessionTypes } from "./session"; -+import { ProposalTypes } from "./proposal"; -+import { PairingTypes } from "../core/pairing"; -+import { JsonRpcTypes } from "./jsonrpc"; -+import { EventEmitter } from "events"; -+import { PendingRequestTypes } from "./pendingRequest"; -+import { AuthTypes } from "./auth"; -+import { CryptoTypes } from "../core"; -+export declare namespace EngineTypes { -+ type Event = "session_connect" | "session_approve" | "session_update" | "session_extend" | "session_ping" | "pairing_ping" | "session_request"; -+ interface EventArguments { -+ session_connect: { -+ error?: ErrorResponse; -+ session?: SessionTypes.Struct; -+ }; -+ session_approve: { -+ error?: ErrorResponse; -+ }; -+ session_update: { -+ error?: ErrorResponse; -+ }; -+ session_extend: { -+ error?: ErrorResponse; -+ }; -+ session_ping: { -+ error?: ErrorResponse; -+ }; -+ pairing_ping: { -+ error?: ErrorResponse; -+ }; -+ session_request: { -+ error?: ErrorResponse; -+ result?: any; -+ }; -+ } -+ interface UriParameters { -+ protocol: string; -+ version: number; -+ topic: string; -+ symKey: string; -+ relay: RelayerTypes.ProtocolOptions; -+ methods?: string[]; -+ expiryTimestamp?: number; -+ } -+ interface EventCallback { -+ topic: string; -+ payload: T; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ attestation?: string; -+ encryptedId?: string; -+ } -+ interface ConnectParams { -+ requiredNamespaces?: ProposalTypes.RequiredNamespaces; -+ optionalNamespaces?: ProposalTypes.OptionalNamespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ pairingTopic?: string; -+ relays?: RelayerTypes.ProtocolOptions[]; -+ } -+ interface PairParams { -+ uri: string; -+ } -+ interface ApproveParams { -+ id: number; -+ namespaces: SessionTypes.Namespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ sessionConfig?: SessionTypes.SessionConfig; -+ relayProtocol?: string; -+ } -+ interface RejectParams { -+ id: number; -+ reason: ErrorResponse; -+ } -+ interface UpdateParams { -+ topic: string; -+ namespaces: SessionTypes.Namespaces; -+ } -+ interface ExtendParams { -+ topic: string; -+ } -+ interface RequestParams { -+ topic: string; -+ request: { -+ method: string; -+ params: any; -+ }; -+ chainId: string; -+ expiry?: number; -+ } -+ interface RespondParams { -+ topic: string; -+ response: JsonRpcResponse; -+ } -+ interface EmitParams { -+ topic: string; -+ event: { -+ name: string; -+ data: any; -+ }; -+ chainId: string; -+ } -+ interface PingParams { -+ topic: string; -+ } -+ interface DisconnectParams { -+ topic: string; -+ reason: ErrorResponse; -+ } -+ interface FindParams { -+ requiredNamespaces: ProposalTypes.RequiredNamespaces; -+ } -+ type AcknowledgedPromise = Promise<{ -+ acknowledged: () => Promise; -+ }>; -+ type SessionAuthenticateResponsePromise = { -+ uri: string; -+ response: () => Promise; -+ }; -+ interface RpcOpts { -+ req: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ res: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ reject?: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ autoReject?: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ } -+ type RpcOptsMap = Record; -+ type EngineQueue = { -+ state: "IDLE" | "ACTIVE"; -+ queue: T[]; -+ }; -+} -+export declare abstract class IEngineEvents extends EventEmitter { -+ constructor(); -+ abstract emit: (event: string, args: EngineTypes.EventArguments[E]) => boolean; -+ abstract once: (event: string, listener: (args: EngineTypes.EventArguments[E]) => any) => this; -+} -+export interface EnginePrivate { -+ sendRequest(args: { -+ topic: string; -+ method: M; -+ params: JsonRpcTypes.RequestParams[M]; -+ expiry?: number; -+ relayRpcId?: number; -+ clientRpcId?: number; -+ throwOnFailedPublish?: boolean; -+ appLink?: string; -+ }): Promise; -+ sendResult(args: { -+ id: number; -+ topic: string; -+ result: JsonRpcTypes.Results[M]; -+ throwOnFailedPublish?: boolean; -+ encodeOpts?: CryptoTypes.EncodeOptions; -+ appLink?: string; -+ }): Promise; -+ sendError(params: { -+ id: number; -+ topic: string; -+ error: JsonRpcTypes.Error; -+ encodeOpts?: CryptoTypes.EncodeOptions; -+ rpcOpts?: RelayerTypes.PublishOptions; -+ appLink?: string; -+ }): Promise; -+ onRelayEventRequest(event: EngineTypes.EventCallback): Promise; -+ onRelayEventResponse(event: EngineTypes.EventCallback): Promise; -+ onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise; -+ shouldIgnorePairingRequest(params: { -+ topic: string; -+ requestMethod: string; -+ }): boolean; -+ deleteSession(params: { -+ topic: string; -+ expirerHasDeleted?: boolean; -+ id?: number; -+ emitEvent?: boolean; -+ }): Promise; -+ deleteProposal(id: number, expirerHasDeleted?: boolean): Promise; -+ setExpiry(topic: string, expiry: number): Promise; -+ setProposal(id: number, proposal: ProposalTypes.Struct): Promise; -+ setAuthRequest(id: number, params: { -+ request: AuthTypes.SessionAuthenticateRequest; -+ pairingTopic: string; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ }): Promise; -+ setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise; -+ deletePendingSessionRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; -+ deletePendingAuthRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; -+ cleanupDuplicatePairings(session: SessionTypes.Struct): Promise; -+ cleanup(): Promise; -+ onSessionProposeRequest(params: { -+ topic: string; -+ payload: JsonRpcRequest; -+ attestation?: string; -+ encryptedId?: string; -+ }): Promise; -+ onSessionProposeResponse(topic: string, payload: JsonRpcResult | JsonRpcError, transportType?: RelayerTypes.MessageEvent["transportType"]): Promise; -+ onSessionSettleRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionSettleResponse(topic: string, payload: JsonRpcResult | JsonRpcError): Promise; -+ onSessionUpdateRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionUpdateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionExtendRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionExtendResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionPingRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionRequest(params: { -+ topic: string; -+ payload: JsonRpcRequest; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ attestation?: string; -+ encryptedId?: string; -+ }): Promise; -+ onSessionRequestResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionEventRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionAuthenticateRequest(params: { -+ topic: string; -+ payload: JsonRpcRequest; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ attestation?: string; -+ encryptedId?: string; -+ }): Promise; -+ onSessionAuthenticateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ isValidConnect(params: EngineTypes.ConnectParams): Promise; -+ isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams["wc_sessionSettle"]): void; -+ isValidApprove(params: EngineTypes.ApproveParams): Promise; -+ isValidReject(params: EngineTypes.RejectParams): Promise; -+ isValidUpdate(params: EngineTypes.UpdateParams): Promise; -+ isValidExtend(params: EngineTypes.ExtendParams): Promise; -+ isValidRequest(params: EngineTypes.RequestParams): Promise; -+ isValidRespond(params: EngineTypes.RespondParams): Promise; -+ isValidPing(params: EngineTypes.PingParams): Promise; -+ isValidEmit(params: EngineTypes.EmitParams): Promise; -+ isValidDisconnect(params: EngineTypes.DisconnectParams): Promise; -+} -+export declare abstract class IEngine { -+ client: ISignClient; -+ constructor(client: ISignClient); -+ abstract init(): Promise; -+ abstract connect(params: EngineTypes.ConnectParams): Promise<{ -+ uri?: string; -+ approval: () => Promise; -+ }>; -+ abstract pair(params: EngineTypes.PairParams): Promise; -+ abstract approve(params: EngineTypes.ApproveParams): Promise<{ -+ topic: string; -+ acknowledged: () => Promise; -+ }>; -+ abstract reject(params: EngineTypes.RejectParams): Promise; -+ abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise; -+ abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise; -+ abstract request(params: EngineTypes.RequestParams): Promise; -+ abstract respond(params: EngineTypes.RespondParams): Promise; -+ abstract emit(params: EngineTypes.EmitParams): Promise; -+ abstract ping(params: EngineTypes.PingParams): Promise; -+ abstract disconnect(params: EngineTypes.DisconnectParams): Promise; -+ abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[]; -+ abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[]; -+ abstract authenticate: (params: AuthTypes.SessionAuthenticateParams, walletUniversalLink?: string) => Promise; -+ abstract approveSessionAuthenticate: (params: AuthTypes.ApproveSessionAuthenticateParams) => Promise<{ -+ session: SessionTypes.Struct | undefined; -+ }>; -+ abstract formatAuthMessage: (params: { -+ request: AuthTypes.BaseAuthRequestParams; -+ iss: string; -+ }) => string; -+ abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise; -+ abstract processRelayMessageCache(): void; -+} -+//# sourceMappingURL=engine.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..d7f3548f76ea0708c1c5d2c9ccbe16593cf14f7c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/sign-client/engine.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..242855bed6410d880c0653491d84ce4cb452f9bd ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts -@@ -0,0 +1,8 @@ -+export * from "./client"; -+export * from "./engine"; -+export * from "./jsonrpc"; -+export * from "./proposal"; -+export * from "./session"; -+export * from "./pendingRequest"; -+export * from "./auth"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..63f07513c22550da21ea365c3cbdbbc0d5d65925 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sign-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..5fa4a16c6e1fe95806a2ee82edcf3b4fed072e11 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts -@@ -0,0 +1,82 @@ -+import { ErrorResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; -+import { SignClientTypes } from "./client"; -+import { RelayerTypes } from "../core/relayer"; -+import { SessionTypes } from "./session"; -+import { ProposalTypes } from "./proposal"; -+import { AuthTypes } from "."; -+export declare namespace JsonRpcTypes { -+ type DefaultResponse = true | ErrorResponse; -+ type WcMethod = "wc_sessionPropose" | "wc_sessionSettle" | "wc_sessionUpdate" | "wc_sessionExtend" | "wc_sessionDelete" | "wc_sessionPing" | "wc_sessionRequest" | "wc_sessionEvent" | "wc_sessionAuthenticate"; -+ interface RequestParams { -+ wc_pairingDelete: { -+ code: number; -+ message: string; -+ }; -+ wc_pairingPing: Record; -+ wc_sessionPropose: { -+ relays: RelayerTypes.ProtocolOptions[]; -+ requiredNamespaces: ProposalTypes.RequiredNamespaces; -+ optionalNamespaces: ProposalTypes.OptionalNamespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ proposer: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ expiryTimestamp?: number; -+ }; -+ wc_sessionSettle: { -+ relay: RelayerTypes.ProtocolOptions; -+ namespaces: SessionTypes.Namespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ sessionConfig?: SessionTypes.SessionConfig; -+ expiry: number; -+ controller: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ }; -+ wc_sessionUpdate: { -+ namespaces: SessionTypes.Namespaces; -+ }; -+ wc_sessionExtend: Record; -+ wc_sessionDelete: { -+ code: number; -+ message: string; -+ }; -+ wc_sessionPing: Record; -+ wc_sessionRequest: { -+ request: { -+ method: string; -+ params: any; -+ expiryTimestamp?: number; -+ }; -+ chainId: string; -+ }; -+ wc_sessionEvent: { -+ event: { -+ name: string; -+ data: unknown; -+ }; -+ chainId: string; -+ }; -+ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateRequestParams; -+ } -+ interface Results { -+ wc_pairingDelete: true; -+ wc_pairingPing: true; -+ wc_sessionPropose: { -+ relay: RelayerTypes.ProtocolOptions; -+ responderPublicKey: string; -+ }; -+ wc_sessionSettle: true; -+ wc_sessionUpdate: true; -+ wc_sessionExtend: true; -+ wc_sessionDelete: true; -+ wc_sessionPing: true; -+ wc_sessionRequest: JsonRpcResult; -+ wc_sessionEvent: true; -+ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateResponseParams; -+ } -+ type Error = ErrorResponse; -+} -+//# sourceMappingURL=jsonrpc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..92d29f0e811ea9bdbcd4d8b38b7d88a7bb3cd99e ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../src/sign-client/jsonrpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAE9B,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IAEpC,KAAY,eAAe,GAAG,IAAI,GAAG,aAAa,CAAC;IAEnD,KAAY,QAAQ,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,wBAAwB,CAAC;IAI7B,UAAiB,aAAa;QAC5B,gBAAgB,EAAE;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,iBAAiB,EAAE;YACjB,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;YACvC,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;YACrD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;YACrD,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;YACpD,QAAQ,EAAE;gBACR,SAAS,EAAE,MAAM,CAAC;gBAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;aACpC,CAAC;YACF,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF,gBAAgB,EAAE;YAChB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;YACpC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;YACpC,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;YACpD,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE;gBACV,SAAS,EAAE,MAAM,CAAC;gBAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;aACpC,CAAC;SACH,CAAC;QACF,gBAAgB,EAAE;YAChB,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;SACrC,CAAC;QACF,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,gBAAgB,EAAE;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,iBAAiB,EAAE;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC;gBACf,MAAM,EAAE,GAAG,CAAC;gBACZ,eAAe,CAAC,EAAE,MAAM,CAAC;aAC1B,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,eAAe,EAAE;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC;gBACb,IAAI,EAAE,OAAO,CAAC;aACf,CAAC;YACF,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,sBAAsB,EAAE,SAAS,CAAC,gCAAgC,CAAC;KACpE;IAGD,UAAiB,OAAO;QACtB,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,EAAE,IAAI,CAAC;QACrB,iBAAiB,EAAE;YACjB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;YACpC,kBAAkB,EAAE,MAAM,CAAC;SAC5B,CAAC;QACF,gBAAgB,EAAE,IAAI,CAAC;QACvB,gBAAgB,EAAE,IAAI,CAAC;QACvB,gBAAgB,EAAE,IAAI,CAAC;QACvB,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,EAAE,IAAI,CAAC;QACrB,iBAAiB,EAAE,aAAa,CAAC;QACjC,eAAe,EAAE,IAAI,CAAC;QACtB,sBAAsB,EAAE,SAAS,CAAC,iCAAiC,CAAC;KACrE;IAED,KAAY,KAAK,GAAG,aAAa,CAAC;CACnC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c061f9d1ec576e1f27323b621e96f530a037caae ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts -@@ -0,0 +1,12 @@ -+import { IStore, Verify } from "../core"; -+import { SignClientTypes } from "./"; -+export declare namespace PendingRequestTypes { -+ interface Struct { -+ topic: string; -+ id: number; -+ params: SignClientTypes.EventArguments["session_request"]["params"]; -+ verifyContext: Verify.Context; -+ } -+} -+export declare type IPendingRequest = IStore; -+//# sourceMappingURL=pendingRequest.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7a301fe8ff59b665f0e3146dfaa1f193928cba41 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"pendingRequest.d.ts","sourceRoot":"","sources":["../../../src/sign-client/pendingRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;KAC/B;CACF;AACD,oBAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..5503a33768c89d9720900d25303efd2422691ab8 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts -@@ -0,0 +1,30 @@ -+import { SignClientTypes } from "./client"; -+import { RelayerTypes } from "../core/relayer"; -+import { IStore } from "../core/store"; -+export declare namespace ProposalTypes { -+ interface BaseRequiredNamespace { -+ chains?: string[]; -+ methods: string[]; -+ events: string[]; -+ } -+ type RequiredNamespace = BaseRequiredNamespace; -+ type RequiredNamespaces = Record; -+ type OptionalNamespaces = Record; -+ type SessionProperties = Record; -+ interface Struct { -+ id: number; -+ expiry?: number; -+ expiryTimestamp: number; -+ relays: RelayerTypes.ProtocolOptions[]; -+ proposer: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ requiredNamespaces: RequiredNamespaces; -+ optionalNamespaces: OptionalNamespaces; -+ sessionProperties?: SessionProperties; -+ pairingTopic: string; -+ } -+} -+export declare type IProposal = IStore; -+//# sourceMappingURL=proposal.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..fa80071c845054bf2a059788bcdf281dbceb5dba ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/sign-client/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,UAAU,qBAAqB;QAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,iBAAiB,GAAG,qBAAqB,CAAC;IAE/C,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,UAAiB,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC;QAIX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;QACvC,QAAQ,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,YAAY,EAAE,MAAM,CAAC;KACtB;CACF;AAED,oBAAY,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..61d0d35c1c852a15c742bf7acc09cc60a106de89 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts -@@ -0,0 +1,44 @@ -+import { RelayerTypes } from "../core/relayer"; -+import { IStore } from "../core/store"; -+import { SignClientTypes } from "./client"; -+import { ProposalTypes } from "./proposal"; -+import { AuthTypes } from "./auth"; -+export declare namespace SessionTypes { -+ type Expiry = number; -+ interface BaseNamespace { -+ chains?: string[]; -+ accounts: string[]; -+ methods: string[]; -+ events: string[]; -+ } -+ type Namespace = BaseNamespace; -+ type Namespaces = Record; -+ interface SessionConfig { -+ disableDeepLink?: boolean; -+ } -+ interface Struct { -+ topic: string; -+ pairingTopic: string; -+ relay: RelayerTypes.ProtocolOptions; -+ expiry: Expiry; -+ acknowledged: boolean; -+ controller: string; -+ namespaces: Namespaces; -+ requiredNamespaces: ProposalTypes.RequiredNamespaces; -+ optionalNamespaces: ProposalTypes.OptionalNamespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ sessionConfig?: SessionConfig; -+ self: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ peer: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ authentication?: AuthTypes.Cacao[]; -+ transportType?: RelayerTypes.TransportType; -+ } -+} -+export declare type ISession = IStore; -+//# sourceMappingURL=session.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ad7c88b332e708b2ffb396aa9ad1298f740216b7 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/sign-client/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,MAAM,GAAG,MAAM,CAAC;IAErB,UAAU,aAAa;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,SAAS,GAAG,aAAa,CAAC;IAE/B,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE5C,UAAU,aAAa;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;IAED,UAAU,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACpD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,cAAc,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC;KAC5C;CACF;AAED,oBAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/package.json b/node_modules/@walletconnect/types/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..6c714822590402efcf168b7a275f8a4a67ab9779 ---- /dev/null -+++ b/node_modules/@walletconnect/types/package.json -@@ -0,0 +1,67 @@ -+{ -+ "name": "@walletconnect/types", -+ "description": "Typings for WalletConnect Protocol", -+ "version": "2.16.1", -+ "author": "WalletConnect, Inc. ", -+ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", -+ "license": "Apache-2.0", -+ "main": "dist/index.cjs.js", -+ "module": "dist/index.es.js", -+ "unpkg": "dist/index.umd.js", -+ "types": "dist/types/index.d.ts", -+ "sideEffects": false, -+ "files": [ -+ "dist" -+ ], -+ "keywords": [ -+ "wallet", -+ "walletconnect" -+ ], -+ "scripts": { -+ "clean": "rm -rf dist", -+ "build:pre": "npm run clean", -+ "build:types": "tsc", -+ "build:source": "rollup --config rollup.config.js", -+ "build": "npm run build:pre; npm run build:source; npm run build:types", -+ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", -+ "prettier": "prettier --check 'src/**/*.{js,ts,jsx,tsx}'" -+ }, -+ "dependencies": { -+ "@walletconnect/events": "1.0.1", -+ "@walletconnect/heartbeat": "1.2.2", -+ "@walletconnect/jsonrpc-types": "1.0.4", -+ "@walletconnect/keyvaluestorage": "1.1.1", -+ "@walletconnect/logger": "2.1.2", -+ "events": "3.3.0" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/@walletconnect/utils/LICENSE b/node_modules/@walletconnect/utils/LICENSE -new file mode 100644 -index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb ---- /dev/null -+++ b/node_modules/@walletconnect/utils/LICENSE -@@ -0,0 +1,190 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ Copyright 2021 WalletConnect, Inc. -+ -+ Licensed under the Apache License, Version 2.0 (the "License"); -+ you may not use this file except in compliance with the License. -+ You may obtain a copy of the License at -+ -+ http://www.apache.org/licenses/LICENSE-2.0 -+ -+ Unless required by applicable law or agreed to in writing, software -+ distributed under the License is distributed on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ See the License for the specific language governing permissions and -+ limitations under the License. -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/README.md b/node_modules/@walletconnect/utils/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..35490d649f553e0200a1e1fd2e0a5b964346c234 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/README.md -@@ -0,0 +1,3 @@ -+# @walletconnect/utils -+ -+Utilities for WalletConnect Protocol -diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js b/node_modules/@walletconnect/utils/dist/index.cjs.js -new file mode 100644 -index 0000000000000000000000000000000000000000..580be0b4ae700ad636da44de67ae1e2d30919b98 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.cjs.js -@@ -0,0 +1,35 @@ -+ -+ -+ -+ -+function uniq(arr) { -+ const seen = Object.create(null); -+ const out = []; -+ for (let i = 0, len = arr.length; i < len; i++) { -+ const val = arr[i]; -+ // key must be string — handles numbers, strings, booleans fine -+ const key = typeof val + val; -+ if (seen[key] === undefined) { -+ seen[key] = true; -+ out.push(val); -+ } -+ } -+ return out; -+} -+ -+"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var Zt = require("detect-browser"), U = require("@walletconnect/time"), P = require("@walletconnect/window-getters"), Xt = require("@walletconnect/window-metadata"), en = require("query-string"), Te = require("@ethersproject/hash"), tn = require("@ethersproject/transactions"), Ae = require("@stablelib/chacha20poly1305"), nn = require("@stablelib/hkdf"), B = require("@stablelib/random"), H = require("@stablelib/sha256"), rn = require("@stablelib/x25519"), p = require("uint8arrays"), on = require("elliptic"), sn = require("@walletconnect/relay-auth"), an = require("@walletconnect/relay-api"); function Ie(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach(function (n) { if (n !== "default") { var r = Object.getOwnPropertyDescriptor(e, n); Object.defineProperty(t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] } }) } }), t.default = e, Object.freeze(t) } var J = Ie(en), Pe = Ie(rn); const W = ":"; function ne(e) { const [t, n] = e.split(W); return { namespace: t, reference: n } } function Ce(e) { const { namespace: t, reference: n } = e; return [t, n].join(W) } function re(e) { const [t, n, r] = e.split(W); return { namespace: t, reference: n, address: r } } function $e(e) { const { namespace: t, reference: n, address: r } = e; return [t, n, r].join(W) } function oe(e, t) { const n = []; return e.forEach(r => { const o = t(r); n.includes(o) || n.push(o) }), n } function je(e) { const { address: t } = re(e); return t } function _e(e) { const { namespace: t, reference: n } = re(e); return Ce({ namespace: t, reference: n }) } function cn(e, t) { const { namespace: n, reference: r } = ne(t); return $e({ namespace: n, reference: r, address: e }) } function un(e) { return oe(e, je) } function Ue(e) { return oe(e, _e) } function ln(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...o.accounts) }), n } function dn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...Ue(o.accounts)) }), n } function pn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...z(r, o)) }), n } function z(e, t) { return e.includes(":") ? [e] : t.chains || [] } var fn = Object.defineProperty, De = Object.getOwnPropertySymbols, mn = Object.prototype.hasOwnProperty, gn = Object.prototype.propertyIsEnumerable, Ve = (e, t, n) => t in e ? fn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, ke = (e, t) => { for (var n in t || (t = {})) mn.call(t, n) && Ve(e, n, t[n]); if (De) for (var n of De(t)) gn.call(t, n) && Ve(e, n, t[n]); return e }; const xe = "ReactNative", y = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Y = " ", hn = ":", Me = "/", se = 2, yn = 1e3, Fe = "js"; function ie() { return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u" } function D() { return !P.getDocument() && !!P.getNavigator() && navigator.product === xe } function M() { return !ie() && !!P.getNavigator() && !!P.getDocument() } function C() { return D() ? y.reactNative : ie() ? y.node : M() ? y.browser : y.unknown } function vn() { var e; try { return D() && typeof global < "u" && typeof (global == null ? void 0 : global.Application) < "u" ? (e = global.Application) == null ? void 0 : e.applicationId : void 0 } catch { return } } function Le(e, t) { let n = J.parse(e); return n = ke(ke({}, n), t), e = J.stringify(n), e } function En() { return Xt.getWindowMetadata() || { name: "", description: "", url: "", icons: [""] } } function bn(e, t) { var n; const r = C(), o = { protocol: e, version: t, env: r }; return r === "browser" && (o.host = ((n = P.getLocation()) == null ? void 0 : n.host) || "unknown"), o } function Ke() { if (C() === y.reactNative && typeof global < "u" && typeof (global == null ? void 0 : global.Platform) < "u") { const { OS: n, Version: r } = global.Platform; return [n, r].join("-") } const e = Zt.detect(); if (e === null) return "unknown"; const t = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown"; return e.type === "browser" ? [t, e.name, e.version].join("-") : [t, e.version].join("-") } function qe() { var e; const t = C(); return t === y.browser ? [t, ((e = P.getLocation()) == null ? void 0 : e.host) || "unknown"].join(":") : t } function Be(e, t, n) { const r = Ke(), o = qe(); return [[e, t].join("-"), [Fe, n].join("-"), r, o].join("/") } function Nn({ protocol: e, version: t, relayUrl: n, sdkVersion: r, auth: o, projectId: s, useOnCloseEvent: i, bundleId: u }) { const l = n.split("?"), a = Be(e, t, r), d = { auth: o, ua: a, projectId: s, useOnCloseEvent: i || void 0, origin: u || void 0 }, c = Le(l[1] || "", d); return l[0] + "?" + c } function On(e) { let t = (e.match(/^[^:]+(?=:\/\/)/gi) || [])[0]; const n = typeof t < "u" ? e.split("://")[1] : e; return t = t === "wss" ? "https" : "http", [t, n].join("://") } function Sn(e, t, n) { if (!e[t] || typeof e[t] !== n) throw new Error(`Missing or invalid "${t}" param`) } function He(e, t = se) { return Je(e.split(Me), t) } function wn(e) { return He(e).join(Y) } function w(e, t) { return e.filter(n => t.includes(n)).length === e.length } function Je(e, t = se) { return e.slice(Math.max(e.length - t, 0)) } function Rn(e) { return Object.fromEntries(e.entries()) } function Tn(e) { return new Map(Object.entries(e)) } function An(e, t) { const n = {}; return Object.keys(e).forEach(r => { n[r] = t(e[r]) }), n } const In = e => e; function We(e) { return e.trim().replace(/^\w/, t => t.toUpperCase()) } function Pn(e) { return e.split(Y).map(t => We(t)).join(Y) } function Cn(e = U.FIVE_MINUTES, t) { const n = U.toMiliseconds(e || U.FIVE_MINUTES); let r, o, s; return { resolve: i => { s && r && (clearTimeout(s), r(i)) }, reject: i => { s && o && (clearTimeout(s), o(i)) }, done: () => new Promise((i, u) => { s = setTimeout(() => { u(new Error(t)) }, n), r = i, o = u }) } } function $n(e, t, n) { return new Promise(async (r, o) => { const s = setTimeout(() => o(new Error(n)), t); try { const i = await e; r(i) } catch (i) { o(i) } clearTimeout(s) }) } function ae(e, t) { if (typeof t == "string" && t.startsWith(`${e}:`)) return t; if (e.toLowerCase() === "topic") { if (typeof t != "string") throw new Error('Value must be "string" for expirer target type: topic'); return `topic:${t}` } else if (e.toLowerCase() === "id") { if (typeof t != "number") throw new Error('Value must be "number" for expirer target type: id'); return `id:${t}` } throw new Error(`Unknown expirer target type: ${e}`) } function jn(e) { return ae("topic", e) } function _n(e) { return ae("id", e) } function Un(e) { const [t, n] = e.split(":"), r = { id: void 0, topic: void 0 }; if (t === "topic" && typeof n == "string") r.topic = n; else if (t === "id" && Number.isInteger(Number(n))) r.id = Number(n); else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`); return r } function Dn(e, t) { return U.fromMiliseconds((t || Date.now()) + U.toMiliseconds(e)) } function Vn(e) { return Date.now() >= U.toMiliseconds(e) } function kn(e, t) { return `${e}${t ? `:${t}` : ""}` } function O(e = [], t = []) { return [...uniq([...e, ...t])] } async function xn({ id: e, topic: t, wcDeepLink: n }) { var r; try { if (!n) return; const o = typeof n == "string" ? JSON.parse(n) : n, s = o?.href; if (typeof s != "string") return; const i = ze(s, e, t), u = C(); if (u === y.browser) { if (!((r = P.getDocument()) != null && r.hasFocus())) { console.warn("Document does not have focus, skipping deeplink."); return } i.startsWith("https://") || i.startsWith("http://") ? window.open(i, "_blank", "noreferrer noopener") : window.open(i, Ye() ? "_blank" : "_self", "noreferrer noopener") } else u === y.reactNative && typeof (global == null ? void 0 : global.Linking) < "u" && await global.Linking.openURL(i) } catch (o) { console.error(o) } } function ze(e, t, n) { const r = `requestId=${t}&sessionTopic=${n}`; e.endsWith("/") && (e = e.slice(0, -1)); let o = `${e}`; if (e.startsWith("https://t.me")) { const s = e.includes("?") ? "&startapp=" : "?startapp="; o = `${o}${s}${Ge(r, !0)}` } else o = `${o}/wc?${r}`; return o } async function Mn(e, t) { let n = ""; try { if (M() && (n = localStorage.getItem(t), n)) return n; n = await e.getItem(t) } catch (r) { console.error(r) } return n } function ce(e, t) { return e.filter(n => t.includes(n)) } function Fn(e, t) { if (!e.includes(t)) return null; const n = e.split(/([&,?,=])/), r = n.indexOf(t); return n[r + 2] } function Ln() { return typeof crypto < "u" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu, e => { const t = Math.random() * 16 | 0; return (e === "x" ? t : t & 3 | 8).toString(16) }) } function Kn() { return typeof process < "u" && process.env.IS_VITEST === "true" } function Ye() { return typeof window < "u" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto) } function Ge(e, t = !1) { const n = Buffer.from(e).toString("base64"); return t ? n.replace(/[=]/g, "") : n } function ue(e) { return Buffer.from(e, "base64").toString("utf-8") } const qn = "https://rpc.walletconnect.org/v1"; async function Qe(e, t, n, r, o, s) { switch (n.t) { case "eip191": return Ze(e, t, n.s); case "eip1271": return await Xe(e, t, n.s, r, o, s); default: throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`) } } function Ze(e, t, n) { return tn.recoverAddress(Te.hashMessage(t), n).toLowerCase() === e.toLowerCase() } async function Xe(e, t, n, r, o, s) { const i = ne(r); if (!i.namespace || !i.reference) throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`); try { const u = "0x1626ba7e", l = "0000000000000000000000000000000000000000000000000000000000000040", a = "0000000000000000000000000000000000000000000000000000000000000041", d = n.substring(2), c = Te.hashMessage(t).substring(2), f = u + c + l + a + d, h = await fetch(`${s || qn}/?chainId=${r}&projectId=${o}`, { method: "POST", body: JSON.stringify({ id: Bn(), jsonrpc: "2.0", method: "eth_call", params: [{ to: e, data: f }, "latest"] }) }), { result: m } = await h.json(); return m ? m.slice(0, u.length).toLowerCase() === u.toLowerCase() : !1 } catch (u) { return console.error("isValidEip1271Signature: ", u), !1 } } function Bn() { return Date.now() + Math.floor(Math.random() * 1e3) } var Hn = Object.defineProperty, Jn = Object.defineProperties, Wn = Object.getOwnPropertyDescriptors, et = Object.getOwnPropertySymbols, zn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, tt = (e, t, n) => t in e ? Hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, le = (e, t) => { for (var n in t || (t = {})) zn.call(t, n) && tt(e, n, t[n]); if (et) for (var n of et(t)) Yn.call(t, n) && tt(e, n, t[n]); return e }, nt = (e, t) => Jn(e, Wn(t)); const Gn = "did:pkh:", G = e => e?.split(":"), rt = e => { const t = e && G(e); if (t) return e.includes(Gn) ? t[3] : t[1] }, ot = e => { const t = e && G(e); if (t) return t[2] + ":" + t[3] }, de = e => { const t = e && G(e); if (t) return t.pop() }; async function Qn(e) { const { cacao: t, projectId: n } = e, { s: r, p: o } = t, s = st(o, o.iss), i = de(o.iss); return await Qe(i, s, r, ot(o.iss), n) } const st = (e, t) => { -+ const n = `${e.domain} wants you to sign in with your Ethereum account:`, r = de(t); if (!e.aud && !e.uri) throw new Error("Either `aud` or `uri` is required to construct the message"); let o = e.statement || void 0; const s = `URI: ${e.aud || e.uri}`, i = `Version: ${e.version}`, u = `Chain ID: ${rt(t)}`, l = `Nonce: ${e.nonce}`, a = `Issued At: ${e.iat}`, d = e.exp ? `Expiration Time: ${e.exp}` : void 0, c = e.nbf ? `Not Before: ${e.nbf}` : void 0, f = e.requestId ? `Request ID: ${e.requestId}` : void 0, h = e.resources ? `Resources:${e.resources.map(g => ` -+- ${g}`).join("")}` : void 0, m = Z(e.resources); if (m) { const g = R(m); o = me(o, g) } return [n, r, "", o, "", s, i, u, l, a, d, c, f, h].filter(g => g != null).join(` -+`) -+}; function Zn(e, t, n) { return n.includes("did:pkh:") || (n = `did:pkh:${n}`), { h: { t: "caip122" }, p: { iss: n, domain: e.domain, aud: e.aud, version: e.version, nonce: e.nonce, iat: e.iat, statement: e.statement, requestId: e.requestId, resources: e.resources, nbf: e.nbf, exp: e.exp }, s: t } } function Xn(e) { var t; const { authPayload: n, chains: r, methods: o } = e, s = n.statement || ""; if (!(r != null && r.length)) return n; const i = n.chains, u = ce(i, r); if (!(u != null && u.length)) throw new Error("No supported chains"); const l = it(n.resources); if (!l) return n; N(l); const a = at(l, "eip155"); let d = n?.resources || []; if (a != null && a.length) { const c = ct(a), f = ce(c, o); if (!(f != null && f.length)) throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`); const h = pe("request", f, { chains: u }), m = pt(l, "eip155", h); d = ((t = n?.resources) == null ? void 0 : t.slice(0, -1)) || [], d.push(Q(m)) } return nt(le({}, n), { statement: mt(s, Z(d)), chains: u, resources: n != null && n.resources || d.length > 0 ? d : void 0 }) } function it(e) { const t = Z(e); if (t && fe(t)) return R(t) } function er(e, t) { var n; return (n = e?.att) == null ? void 0 : n.hasOwnProperty(t) } function at(e, t) { var n, r; return (n = e?.att) != null && n[t] ? Object.keys((r = e?.att) == null ? void 0 : r[t]) : [] } function tr(e) { return e?.map(t => Object.keys(t)) || [] } function ct(e) { return e?.map(t => { var n; return (n = t.split("/")) == null ? void 0 : n[1] }) || [] } function ut(e) { return Buffer.from(JSON.stringify(e)).toString("base64") } function lt(e) { return JSON.parse(Buffer.from(e, "base64").toString("utf-8")) } function N(e) { if (!e) throw new Error("No recap provided, value is undefined"); if (!e.att) throw new Error("No `att` property found"); const t = Object.keys(e.att); if (!(t != null && t.length)) throw new Error("No resources found in `att` property"); t.forEach(n => { const r = e.att[n]; if (Array.isArray(r)) throw new Error(`Resource must be an object: ${n}`); if (typeof r != "object") throw new Error(`Resource must be an object: ${n}`); if (!Object.keys(r).length) throw new Error(`Resource object is empty: ${n}`); Object.keys(r).forEach(o => { const s = r[o]; if (!Array.isArray(s)) throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`); if (!s.length) throw new Error(`Value of ${o} is empty array, must be an array with objects`); s.forEach(i => { if (typeof i != "object") throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`) }) }) }) } function dt(e, t, n, r = {}) { return n?.sort((o, s) => o.localeCompare(s)), { att: { [e]: pe(t, n, r) } } } function pt(e, t, n) { var r; return e.att[t] = le({}, n), ((r = Object.keys(e.att)) == null ? void 0 : r.sort((o, s) => o.localeCompare(s))).reduce((o, s) => (o.att[s] = e.att[s], o), { att: {} }) } function pe(e, t, n = {}) { t = t?.sort((o, s) => o.localeCompare(s)); const r = t.map(o => ({ [`${e}/${o}`]: [n] })); return Object.assign({}, ...r) } function Q(e) { return N(e), `urn:recap:${ut(e).replace(/=/g, "")}` } function R(e) { const t = lt(e.replace("urn:recap:", "")); return N(t), t } function nr(e, t, n) { const r = dt(e, t, n); return Q(r) } function fe(e) { return e && e.includes("urn:recap:") } function rr(e, t) { const n = R(e), r = R(t), o = ft(n, r); return Q(o) } function ft(e, t) { N(e), N(t); const n = Object.keys(e.att).concat(Object.keys(t.att)).sort((o, s) => o.localeCompare(s)), r = { att: {} }; return n.forEach(o => { var s, i; Object.keys(((s = e.att) == null ? void 0 : s[o]) || {}).concat(Object.keys(((i = t.att) == null ? void 0 : i[o]) || {})).sort((u, l) => u.localeCompare(l)).forEach(u => { var l, a; r.att[o] = nt(le({}, r.att[o]), { [u]: ((l = e.att[o]) == null ? void 0 : l[u]) || ((a = t.att[o]) == null ? void 0 : a[u]) }) }) }), r } function me(e = "", t) { N(t); const n = "I further authorize the stated URI to perform the following actions on my behalf: "; if (e.includes(n)) return e; const r = []; let o = 0; Object.keys(t.att).forEach(u => { const l = Object.keys(t.att[u]).map(c => ({ ability: c.split("/")[0], action: c.split("/")[1] })); l.sort((c, f) => c.action.localeCompare(f.action)); const a = {}; l.forEach(c => { a[c.ability] || (a[c.ability] = []), a[c.ability].push(c.action) }); const d = Object.keys(a).map(c => (o++, `(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`)); r.push(d.join(", ").replace(".,", ".")) }); const s = r.join(" "), i = `${n}${s}`; return `${e ? e + " " : ""}${i}` } function or(e) { var t; const n = R(e); N(n); const r = (t = n.att) == null ? void 0 : t.eip155; return r ? Object.keys(r).map(o => o.split("/")[1]) : [] } function sr(e) { const t = R(e); N(t); const n = []; return Object.values(t.att).forEach(r => { Object.values(r).forEach(o => { var s; (s = o?.[0]) != null && s.chains && n.push(o[0].chains) }) }), [...uniq(n.flat())] } function mt(e, t) { if (!t) return e; const n = R(t); return N(n), me(e, n) } function Z(e) { if (!e) return; const t = e?.[e.length - 1]; return fe(t) ? t : void 0 } const ge = "base10", v = "base16", he = "base64pad", ir = "base64url", V = "utf8", ye = 0, k = 1, F = 2, ar = 0, gt = 1, L = 12, ve = 32; function cr() { const e = Pe.generateKeyPair(); return { privateKey: p.toString(e.secretKey, v), publicKey: p.toString(e.publicKey, v) } } function ur() { const e = B.randomBytes(ve); return p.toString(e, v) } function lr(e, t) { const n = Pe.sharedKey(p.fromString(e, v), p.fromString(t, v), !0), r = new nn.HKDF(H.SHA256, n).expand(ve); return p.toString(r, v) } function dr(e) { const t = H.hash(p.fromString(e, v)); return p.toString(t, v) } function pr(e) { const t = H.hash(p.fromString(e, V)); return p.toString(t, v) } function Ee(e) { return p.fromString(`${e}`, ge) } function $(e) { return Number(p.toString(e, ge)) } function fr(e) { const t = Ee(typeof e.type < "u" ? e.type : ye); if ($(t) === k && typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); const n = typeof e.senderPublicKey < "u" ? p.fromString(e.senderPublicKey, v) : void 0, r = typeof e.iv < "u" ? p.fromString(e.iv, v) : B.randomBytes(L), o = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)).seal(r, p.fromString(e.message, V)); return be({ type: t, sealed: o, iv: r, senderPublicKey: n, encoding: e.encoding }) } function mr(e, t) { const n = Ee(F), r = B.randomBytes(L), o = p.fromString(e, V); return be({ type: n, sealed: o, iv: r, encoding: t }) } function gr(e) { const t = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)), { sealed: n, iv: r } = X({ encoded: e.encoded, encoding: e?.encoding }), o = t.open(r, n); if (o === null) throw new Error("Failed to decrypt"); return p.toString(o, V) } function hr(e, t) { const { sealed: n } = X({ encoded: e, encoding: t }); return p.toString(n, V) } function be(e) { const { encoding: t = he } = e; if ($(e.type) === F) return p.toString(p.concat([e.type, e.sealed]), t); if ($(e.type) === k) { if (typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); return p.toString(p.concat([e.type, e.senderPublicKey, e.iv, e.sealed]), t) } return p.toString(p.concat([e.type, e.iv, e.sealed]), t) } function X(e) { const { encoded: t, encoding: n = he } = e, r = p.fromString(t, n), o = r.slice(ar, gt), s = gt; if ($(o) === k) { const a = s + ve, d = a + L, c = r.slice(s, a), f = r.slice(a, d), h = r.slice(d); return { type: o, sealed: h, iv: f, senderPublicKey: c } } if ($(o) === F) { const a = r.slice(s), d = B.randomBytes(L); return { type: o, sealed: a, iv: d } } const i = s + L, u = r.slice(s, i), l = r.slice(i); return { type: o, sealed: l, iv: u } } function yr(e, t) { const n = X({ encoded: e, encoding: t?.encoding }); return ht({ type: $(n.type), senderPublicKey: typeof n.senderPublicKey < "u" ? p.toString(n.senderPublicKey, v) : void 0, receiverPublicKey: t?.receiverPublicKey }) } function ht(e) { const t = e?.type || ye; if (t === k) { if (typeof e?.senderPublicKey > "u") throw new Error("missing sender public key"); if (typeof e?.receiverPublicKey > "u") throw new Error("missing receiver public key") } return { type: t, senderPublicKey: e?.senderPublicKey, receiverPublicKey: e?.receiverPublicKey } } function vr(e) { return e.type === k && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string" } function Er(e) { return e.type === F } function yt(e) { return new on.ec("p256").keyFromPublic({ x: Buffer.from(e.x, "base64").toString("hex"), y: Buffer.from(e.y, "base64").toString("hex") }, "hex") } function br(e) { let t = e.replace(/-/g, "+").replace(/_/g, "/"); const n = t.length % 4; return n > 0 && (t += "=".repeat(4 - n)), t } function Nr(e) { return Buffer.from(br(e), "base64") } function Or(e, t) { const [n, r, o] = e.split("."), s = Nr(o); if (s.length !== 64) throw new Error("Invalid signature length"); const i = s.slice(0, 32).toString("hex"), u = s.slice(32, 64).toString("hex"), l = `${n}.${r}`, a = new H.SHA256().update(Buffer.from(l)).digest(), d = yt(t), c = Buffer.from(a).toString("hex"); if (!d.verify(c, { r: i, s: u })) throw new Error("Invalid signature"); return sn.decodeJWT(e).payload } const vt = "irn"; function Sr(e) { return e?.relay || { protocol: vt } } function wr(e) { const t = an.RELAY_JSONRPC[e]; if (typeof t > "u") throw new Error(`Relay Protocol not supported: ${e}`); return t } var Rr = Object.defineProperty, Tr = Object.defineProperties, Ar = Object.getOwnPropertyDescriptors, Et = Object.getOwnPropertySymbols, Ir = Object.prototype.hasOwnProperty, Pr = Object.prototype.propertyIsEnumerable, bt = (e, t, n) => t in e ? Rr(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Nt = (e, t) => { for (var n in t || (t = {})) Ir.call(t, n) && bt(e, n, t[n]); if (Et) for (var n of Et(t)) Pr.call(t, n) && bt(e, n, t[n]); return e }, Cr = (e, t) => Tr(e, Ar(t)); function Ot(e, t = "-") { const n = {}, r = "relay" + t; return Object.keys(e).forEach(o => { if (o.startsWith(r)) { const s = o.replace(r, ""), i = e[o]; n[s] = i } }), n } function $r(e) { if (!e.includes("wc:")) { const l = ue(e); l != null && l.includes("wc:") && (e = l) } e = e.includes("wc://") ? e.replace("wc://", "") : e, e = e.includes("wc:") ? e.replace("wc:", "") : e; const t = e.indexOf(":"), n = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r = e.substring(0, t), o = e.substring(t + 1, n).split("@"), s = typeof n < "u" ? e.substring(n) : "", i = J.parse(s), u = typeof i.methods == "string" ? i.methods.split(",") : void 0; return { protocol: r, topic: St(o[0]), version: parseInt(o[1], 10), symKey: i.symKey, relay: Ot(i), methods: u, expiryTimestamp: i.expiryTimestamp ? parseInt(i.expiryTimestamp, 10) : void 0 } } function St(e) { return e.startsWith("//") ? e.substring(2) : e } function wt(e, t = "-") { const n = "relay", r = {}; return Object.keys(e).forEach(o => { const s = n + t + o; e[o] && (r[s] = e[o]) }), r } function jr(e) { return `${e.protocol}:${e.topic}@${e.version}?` + J.stringify(Nt(Cr(Nt({ symKey: e.symKey }, wt(e.relay)), { expiryTimestamp: e.expiryTimestamp }), e.methods ? { methods: e.methods.join(",") } : {})) } function _r(e, t, n) { return `${e}?wc_ev=${n}&topic=${t}` } var Ur = Object.defineProperty, Dr = Object.defineProperties, Vr = Object.getOwnPropertyDescriptors, Rt = Object.getOwnPropertySymbols, kr = Object.prototype.hasOwnProperty, xr = Object.prototype.propertyIsEnumerable, Tt = (e, t, n) => t in e ? Ur(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Mr = (e, t) => { for (var n in t || (t = {})) kr.call(t, n) && Tt(e, n, t[n]); if (Rt) for (var n of Rt(t)) xr.call(t, n) && Tt(e, n, t[n]); return e }, Fr = (e, t) => Dr(e, Vr(t)); function j(e) { const t = []; return e.forEach(n => { const [r, o] = n.split(":"); t.push(`${r}:${o}`) }), t } function At(e) { const t = []; return Object.values(e).forEach(n => { t.push(...j(n.accounts)) }), t } function It(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.methods) }), n } function Pt(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.events) }), n } function Lr(e, t) { const n = Ft(e, t); if (n) throw new Error(n.message); const r = {}; for (const [o, s] of Object.entries(e)) r[o] = { methods: s.methods, events: s.events, chains: s.accounts.map(i => `${i.split(":")[0]}:${i.split(":")[1]}`) }; return r } function Kr(e) { const { proposal: { requiredNamespaces: t, optionalNamespaces: n = {} }, supportedNamespaces: r } = e, o = Oe(t), s = Oe(n), i = {}; Object.keys(r).forEach(a => { const d = r[a].chains, c = r[a].methods, f = r[a].events, h = r[a].accounts; d.forEach(m => { if (!h.some(g => g.includes(m))) throw new Error(`No accounts provided for chain ${m} in namespace ${a}`) }), i[a] = { chains: d, methods: c, events: f, accounts: h } }); const u = Kt(t, i, "approve()"); if (u) throw new Error(u.message); const l = {}; return !Object.keys(t).length && !Object.keys(n).length ? i : (Object.keys(o).forEach(a => { const d = r[a].chains.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.chains) == null ? void 0 : b.includes(m) }), c = r[a].methods.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.methods) == null ? void 0 : b.includes(m) }), f = r[a].events.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.events) == null ? void 0 : b.includes(m) }), h = d.map(m => r[a].accounts.filter(g => g.includes(`${m}:`))).flat(); l[a] = { chains: d, methods: c, events: f, accounts: h } }), Object.keys(s).forEach(a => { var d, c, f, h, m, g; if (!r[a]) return; const b = (c = (d = s[a]) == null ? void 0 : d.chains) == null ? void 0 : c.filter(A => r[a].chains.includes(A)), Yt = r[a].methods.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.methods) == null ? void 0 : x.includes(A) }), Gt = r[a].events.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.events) == null ? void 0 : x.includes(A) }), Qt = b?.map(A => r[a].accounts.filter(I => I.includes(`${A}:`))).flat(); l[a] = { chains: O((f = l[a]) == null ? void 0 : f.chains, b), methods: O((h = l[a]) == null ? void 0 : h.methods, Yt), events: O((m = l[a]) == null ? void 0 : m.events, Gt), accounts: O((g = l[a]) == null ? void 0 : g.accounts, Qt) } }), l) } function Ne(e) { return e.includes(":") } function Ct(e) { return Ne(e) ? e.split(":")[0] : e } function Oe(e) { var t, n, r; const o = {}; if (!ee(e)) return o; for (const [s, i] of Object.entries(e)) { const u = Ne(s) ? [s] : i.chains, l = i.methods || [], a = i.events || [], d = Ct(s); o[d] = Fr(Mr({}, o[d]), { chains: O(u, (t = o[d]) == null ? void 0 : t.chains), methods: O(l, (n = o[d]) == null ? void 0 : n.methods), events: O(a, (r = o[d]) == null ? void 0 : r.events) }) } return o } function $t(e) { const t = {}; return e?.forEach(n => { const [r, o] = n.split(":"); t[r] || (t[r] = { accounts: [], chains: [], events: [] }), t[r].accounts.push(n), t[r].chains.push(`${r}:${o}`) }), t } function qr(e, t) { t = t.map(r => r.replace("did:pkh:", "")); const n = $t(t); for (const [r, o] of Object.entries(n)) o.methods ? o.methods = O(o.methods, e) : o.methods = e, o.events = ["chainChanged", "accountsChanged"]; return n } const jt = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, _t = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } }; function S(e, t) { const { message: n, code: r } = _t[e]; return { message: t ? `${n} ${t}` : n, code: r } } function _(e, t) { const { message: n, code: r } = jt[e]; return { message: t ? `${n} ${t}` : n, code: r } } function K(e, t) { return Array.isArray(e) ? typeof t < "u" && e.length ? e.every(t) : !0 : !1 } function ee(e) { return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length } function T(e) { return typeof e > "u" } function E(e, t) { return t && T(e) ? !0 : typeof e == "string" && !!e.trim().length } function te(e, t) { return t && T(e) ? !0 : typeof e == "number" && !isNaN(e) } function Br(e, t) { const { requiredNamespaces: n } = t, r = Object.keys(e.namespaces), o = Object.keys(n); let s = !0; return w(o, r) ? (r.forEach(i => { const { accounts: u, methods: l, events: a } = e.namespaces[i], d = j(u), c = n[i]; (!w(z(i, c), d) || !w(c.methods, l) || !w(c.events, a)) && (s = !1) }), s) : !1 } function q(e) { return E(e, !1) && e.includes(":") ? e.split(":").length === 2 : !1 } function Ut(e) { if (E(e, !1) && e.includes(":")) { const t = e.split(":"); if (t.length === 3) { const n = t[0] + ":" + t[1]; return !!t[2] && q(n) } } return !1 } function Hr(e) { function t(n) { try { return typeof new URL(n) < "u" } catch { return !1 } } try { if (E(e, !1)) { if (t(e)) return !0; const n = ue(e); return t(n) } } catch { } return !1 } function Jr(e) { var t; return (t = e?.proposer) == null ? void 0 : t.publicKey } function Wr(e) { return e?.topic } function zr(e, t) { let n = null; return E(e?.publicKey, !1) || (n = S("MISSING_OR_INVALID", `${t} controller public key should be a string`)), n } function Se(e) { let t = !0; return K(e) ? e.length && (t = e.every(n => E(n, !1))) : t = !1, t } function Dt(e, t, n) { let r = null; return K(t) && t.length ? t.forEach(o => { r || q(o) || (r = _("UNSUPPORTED_CHAINS", `${n}, chain ${o} should be a string and conform to "namespace:chainId" format`)) }) : q(e) || (r = _("UNSUPPORTED_CHAINS", `${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)), r } function Vt(e, t, n) { let r = null; return Object.entries(e).forEach(([o, s]) => { if (r) return; const i = Dt(o, z(o, s), `${t} ${n}`); i && (r = i) }), r } function kt(e, t) { let n = null; return K(e) ? e.forEach(r => { n || Ut(r) || (n = _("UNSUPPORTED_ACCOUNTS", `${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`)) }) : n = _("UNSUPPORTED_ACCOUNTS", `${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), n } function xt(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = kt(r?.accounts, `${t} namespace`); o && (n = o) }), n } function Mt(e, t) { let n = null; return Se(e?.methods) ? Se(e?.events) || (n = _("UNSUPPORTED_EVENTS", `${t}, events should be an array of strings or empty array for no events`)) : n = _("UNSUPPORTED_METHODS", `${t}, methods should be an array of strings or empty array for no methods`), n } function we(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = Mt(r, `${t}, namespace`); o && (n = o) }), n } function Yr(e, t, n) { let r = null; if (e && ee(e)) { const o = we(e, t); o && (r = o); const s = Vt(e, t, n); s && (r = s) } else r = S("MISSING_OR_INVALID", `${t}, ${n} should be an object with data`); return r } function Ft(e, t) { let n = null; if (e && ee(e)) { const r = we(e, t); r && (n = r); const o = xt(e, t); o && (n = o) } else n = S("MISSING_OR_INVALID", `${t}, namespaces should be an object with data`); return n } function Lt(e) { return E(e.protocol, !0) } function Gr(e, t) { let n = !1; return t && !e ? n = !0 : e && K(e) && e.length && e.forEach(r => { n = Lt(r) }), n } function Qr(e) { return typeof e == "number" } function Zr(e) { return typeof e < "u" && typeof e !== null } function Xr(e) { return !(!e || typeof e != "object" || !e.code || !te(e.code, !1) || !e.message || !E(e.message, !1)) } function eo(e) { return !(T(e) || !E(e.method, !1)) } function to(e) { return !(T(e) || T(e.result) && T(e.error) || !te(e.id, !1) || !E(e.jsonrpc, !1)) } function no(e) { return !(T(e) || !E(e.name, !1)) } function ro(e, t) { return !(!q(t) || !At(e).includes(t)) } function oo(e, t, n) { return E(n, !1) ? It(e, t).includes(n) : !1 } function so(e, t, n) { return E(n, !1) ? Pt(e, t).includes(n) : !1 } function Kt(e, t, n) { -+ let r = null; const o = io(e), s = ao(t), i = Object.keys(o), u = Object.keys(s), l = qt(Object.keys(e)), a = qt(Object.keys(t)), d = l.filter(c => !a.includes(c)); return d.length && (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces keys don't satisfy requiredNamespaces. -+ Required: ${d.toString()} -+ Received: ${Object.keys(t).toString()}`)), w(i, u) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces chains don't satisfy required namespaces. -+ Required: ${i.toString()} -+ Approved: ${u.toString()}`)), Object.keys(t).forEach(c => { -+ if (!c.includes(":") || r) return; const f = j(t[c].accounts); f.includes(c) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces accounts don't satisfy namespace accounts for ${c} -+ Required: ${c} -+ Approved: ${f.toString()}`)) -+ }), i.forEach(c => { r || (w(o[c].methods, s[c].methods) ? w(o[c].events, s[c].events) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces events don't satisfy namespace events for ${c}`)) : r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces methods don't satisfy namespace methods for ${c}`)) }), r -+} function io(e) { const t = {}; return Object.keys(e).forEach(n => { var r; n.includes(":") ? t[n] = e[n] : (r = e[n].chains) == null || r.forEach(o => { t[o] = { methods: e[n].methods, events: e[n].events } }) }), t } function qt(e) { return [...uniq(e.map(t => t.includes(":") ? t.split(":")[0] : t))] } function ao(e) { const t = {}; return Object.keys(e).forEach(n => { if (n.includes(":")) t[n] = e[n]; else { const r = j(e[n].accounts); r?.forEach(o => { t[o] = { accounts: e[n].accounts.filter(s => s.includes(`${o}:`)), methods: e[n].methods, events: e[n].events } }) } }), t } function co(e, t) { return te(e, !1) && e <= t.max && e >= t.min } function uo() { const e = C(); return new Promise(t => { switch (e) { case y.browser: t(Bt()); break; case y.reactNative: t(Ht()); break; case y.node: t(Jt()); break; default: t(!0) } }) } function Bt() { return M() && navigator?.onLine } async function Ht() { if (D() && typeof global < "u" && global != null && global.NetInfo) { const e = await (global == null ? void 0 : global.NetInfo.fetch()); return e?.isConnected } return !0 } function Jt() { return !0 } function lo(e) { switch (C()) { case y.browser: Wt(e); break; case y.reactNative: zt(e); break; case y.node: break } } function Wt(e) { !D() && M() && (window.addEventListener("online", () => e(!0)), window.addEventListener("offline", () => e(!1))) } function zt(e) { D() && typeof global < "u" && global != null && global.NetInfo && global?.NetInfo.addEventListener(t => e(t?.isConnected)) } const Re = {}; class po { static get(t) { return Re[t] } static set(t, n) { Re[t] = n } static delete(t) { delete Re[t] } } exports.BASE10 = ge, exports.BASE16 = v, exports.BASE64 = he, exports.BASE64URL = ir, exports.COLON = hn, exports.DEFAULT_DEPTH = se, exports.EMPTY_SPACE = Y, exports.ENV_MAP = y, exports.INTERNAL_ERRORS = _t, exports.MemoryStore = po, exports.ONE_THOUSAND = yn, exports.REACT_NATIVE_PRODUCT = xe, exports.RELAYER_DEFAULT_PROTOCOL = vt, exports.SDK_ERRORS = jt, exports.SDK_TYPE = Fe, exports.SLASH = Me, exports.TYPE_0 = ye, exports.TYPE_1 = k, exports.TYPE_2 = F, exports.UTF8 = V, exports.addResourceToRecap = pt, exports.appendToQueryString = Le, exports.assertType = Sn, exports.assignAbilityToActions = pe, exports.base64Decode = lt, exports.base64Encode = ut, exports.buildApprovedNamespaces = Kr, exports.buildAuthObject = Zn, exports.buildNamespacesFromAuth = qr, exports.buildRecapStatement = mt, exports.calcExpiry = Dn, exports.capitalize = Pn, exports.capitalizeWord = We, exports.createDelayedPromise = Cn, exports.createEncodedRecap = nr, exports.createExpiringPromise = $n, exports.createRecap = dt, exports.decodeRecap = R, exports.decodeTypeByte = $, exports.decodeTypeTwoEnvelope = hr, exports.decrypt = gr, exports.deriveSymKey = lr, exports.deserialize = X, exports.encodeRecap = Q, exports.encodeTypeByte = Ee, exports.encodeTypeTwoEnvelope = mr, exports.encrypt = fr, exports.engineEvent = kn, exports.enumify = In, exports.formatAccountId = $e, exports.formatAccountWithChain = cn, exports.formatChainId = Ce, exports.formatDeeplinkUrl = ze, exports.formatExpirerTarget = ae, exports.formatIdTarget = _n, exports.formatMessage = st, exports.formatMessageContext = wn, exports.formatRelayParams = wt, exports.formatRelayRpcUrl = Nn, exports.formatStatementFromRecap = me, exports.formatTopicTarget = jn, exports.formatUA = Be, exports.formatUri = jr, exports.fromBase64 = ue, exports.generateKeyPair = cr, exports.generateRandomBytes32 = ur, exports.getAccountsChains = j, exports.getAccountsFromNamespaces = ln, exports.getAddressFromAccount = je, exports.getAddressesFromAccounts = un, exports.getAppMetadata = En, exports.getBrowserOnlineStatus = Bt, exports.getBundleId = vn, exports.getChainFromAccount = _e, exports.getChainsFromAccounts = Ue, exports.getChainsFromNamespace = z, exports.getChainsFromNamespaces = dn, exports.getChainsFromRecap = sr, exports.getChainsFromRequiredNamespaces = pn, exports.getCommonValuesInArrays = ce, exports.getCryptoKeyFromKeyData = yt, exports.getDecodedRecapFromResources = it, exports.getDeepLink = Mn, exports.getDidAddress = de, exports.getDidAddressSegments = G, exports.getDidChainId = rt, exports.getEnvironment = C, exports.getHttpUrl = On, exports.getInternalError = S, exports.getJavascriptID = qe, exports.getJavascriptOS = Ke, exports.getLastItems = Je, exports.getLinkModeURL = _r, exports.getMethodsFromRecap = or, exports.getNamespacedDidChainId = ot, exports.getNamespacesChains = At, exports.getNamespacesEventsForChainId = Pt, exports.getNamespacesFromAccounts = $t, exports.getNamespacesMethodsForChainId = It, exports.getNodeOnlineStatus = Jt, exports.getReCapActions = ct, exports.getReactNativeOnlineStatus = Ht, exports.getRecapAbilitiesFromResource = tr, exports.getRecapFromResources = Z, exports.getRecapResource = at, exports.getRelayClientMetadata = bn, exports.getRelayProtocolApi = wr, exports.getRelayProtocolName = Sr, exports.getRequiredNamespacesFromNamespaces = Lr, exports.getSdkError = _, exports.getSearchParamFromURL = Fn, exports.getUniqueValues = oe, exports.handleDeeplinkRedirect = xn, exports.hasOverlap = w, exports.hashKey = dr, exports.hashMessage = pr, exports.isBrowser = M, exports.isCaipNamespace = Ne, exports.isConformingNamespaces = Kt, exports.isExpired = Vn, exports.isNode = ie, exports.isOnline = uo, exports.isProposalStruct = Jr, exports.isReactNative = D, exports.isRecap = fe, exports.isSessionCompatible = Br, exports.isSessionStruct = Wr, exports.isTelegram = Ye, exports.isTestRun = Kn, exports.isTypeOneEnvelope = vr, exports.isTypeTwoEnvelope = Er, exports.isUndefined = T, exports.isValidAccountId = Ut, exports.isValidAccounts = kt, exports.isValidActions = Mt, exports.isValidArray = K, exports.isValidChainId = q, exports.isValidChains = Dt, exports.isValidController = zr, exports.isValidEip1271Signature = Xe, exports.isValidEip191Signature = Ze, exports.isValidErrorReason = Xr, exports.isValidEvent = no, exports.isValidId = Qr, exports.isValidNamespaceAccounts = xt, exports.isValidNamespaceActions = we, exports.isValidNamespaceChains = Vt, exports.isValidNamespaceMethodsOrEvents = Se, exports.isValidNamespaces = Ft, exports.isValidNamespacesChainId = ro, exports.isValidNamespacesEvent = so, exports.isValidNamespacesRequest = oo, exports.isValidNumber = te, exports.isValidObject = ee, exports.isValidParams = Zr, exports.isValidRecap = N, exports.isValidRelay = Lt, exports.isValidRelays = Gr, exports.isValidRequest = eo, exports.isValidRequestExpiry = co, exports.isValidRequiredNamespaces = Yr, exports.isValidResponse = to, exports.isValidString = E, exports.isValidUrl = Hr, exports.mapEntries = An, exports.mapToObj = Rn, exports.mergeArrays = O, exports.mergeEncodedRecaps = rr, exports.mergeRecaps = ft, exports.normalizeNamespaces = Oe, exports.objToMap = Tn, exports.parseAccountId = re, exports.parseChainId = ne, exports.parseContextNames = He, exports.parseExpirerTarget = Un, exports.parseNamespaceKey = Ct, exports.parseRelayParams = Ot, exports.parseTopic = St, exports.parseUri = $r, exports.populateAuthPayload = Xn, exports.recapHasResource = er, exports.serialize = be, exports.subscribeToBrowserNetworkChange = Wt, exports.subscribeToNetworkChange = lo, exports.subscribeToReactNativeNetworkChange = zt, exports.toBase64 = Ge, exports.uuidv4 = Ln, exports.validateDecoding = yr, exports.validateEncoding = ht, exports.validateSignedCacao = Qn, exports.verifyP256Jwt = Or, exports.verifySignature = Qe; -+//# sourceMappingURL=index.cjs.js.map -diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js.map b/node_modules/@walletconnect/utils/dist/index.cjs.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..031b7fb5ae91e997312d6fdb999f34e4e18315d4 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.cjs.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.cjs.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,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AC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,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C,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;KACd,WAAW,GAAG,UAAU,CAAC;IAC1B;AACH;GACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;KAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C;AACA;AACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;OACrB,OAAO,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;OACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;SAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;AAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;SACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;AACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;SACzB,MAAM,IAAI,SAAS,CAAC;QACrB;OACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACrB,KAAK,GAAG,MAAM,CAAC;OACf,MAAM,GAAG,OAAO,CAAC;MAClB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3B,MAAK,MAAM;AACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;AACL;AACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IACrB;AACH;GACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACvC;AACA;AACA;KACI,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;KAC7C,IAAI,GAAG,CAAC;KACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;OAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;OACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;OACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,MAAK,MAAM;OACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MAClC;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AAqMJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;OAC/C,KAAK,KAAK,EAAE,CAAC;OACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACnC;AACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;OACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;MAChC;AACL;AACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;AACL;KACI,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;KACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;AACA;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;KACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;OAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;MACvB;AACL;AACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;OAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;SACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;SACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB;MACF;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;KAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;AACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;SAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/B;AACP;OACM,IAAI,KAAK,EAAE;SACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;MACF;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC;AACP;OACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;AACP;AACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;MAClB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AAC7C;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;AAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;KAC9C,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,EAAE;OACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACpC,MAAK,MAAM;OACL,CAAC,GAAG,CAAC,CAAC;MACP;AACL;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;KACI,CAAC,IAAI,CAAC,CAAC;KACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACA;KACI,IAAI,WAAW,EAAE;AACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC;AACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;MACxB;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC;AACP,MAAK,MAAM;OACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;KACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;OAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;AACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;MACrB;AACL;AACA;AACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;OAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;MACjD;AACL;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;OACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7D;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;AACA;KACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;KAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;OACpB,OAAO,IAAI,CAAC;MACb;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;OACX,CAAC,EAAE,CAAC;MACL;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;MACrC;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;AAC3D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACP;AACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;AACA;KACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;OAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;OAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;SACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAO,MAAM;SACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrB;MACF;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;KACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAK,MAAM;AACX;OACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACxB;MACF;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;KACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;KAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;KAC7B,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;KACI,IAAI,CAAC,CAAC;AACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;AACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MACvC;KACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MACvC;AACL;KACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1C;AACA;AACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB,KAAK,GAAG,CAAC,CAAC;AACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;KACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;AACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACjC;AACL;AACA;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;KAC5B,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;OACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB;MACF;AACL;AACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;OACvB,CAAC,GAAG,IAAI,CAAC;OACT,IAAI,CAAC,EAAE;SACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB;MACF;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;AACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;OACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACvB,EAAE,EAAE,CAAC;AACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;SACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;UACjB;QACF;OACD,IAAI,CAAC,EAAE;SACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB;MACF;KACD,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,MAAM,EAAE,CAAC;MACZ;AACL,KAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACf;AACA;KACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;MACjB;AACL;AACA,KAAI,OAAO;AACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;OACd,GAAG,EAAE,CAAC;AACZ,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACvB,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB,QAAO,CAAC;MACH;AACL;AACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB;AACP;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACf;QACF;AACP;AACA,OAAM,OAAO;SACL,GAAG,EAAE,GAAG;SACR,GAAG,EAAE,GAAG;AAChB,QAAO,CAAC;MACH;AACL;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB;AACP;AACA,OAAM,OAAO;SACL,GAAG,EAAE,GAAG;AAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;AACpB,QAAO,CAAC;MACH;AACL;KACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;AAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACf;QACF;AACP;AACA,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;SACZ,GAAG,EAAE,GAAG;AAChB,QAAO,CAAC;MACH;AACL;AACA;AACA;AACA;AACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvD,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACd,GAAG,EAAE,IAAI;AACjB,QAAO,CAAC;MACH;AACL;AACA;AACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1B,SAAQ,OAAO;AACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAC5B,GAAG,EAAE,IAAI;AACnB,UAAS,CAAC;QACH;AACP;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1B,SAAQ,OAAO;WACL,GAAG,EAAE,IAAI;AACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,UAAS,CAAC;QACH;AACP;AACA,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAO,CAAC;MACH;AACL;KACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC7C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;KAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA;AACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;KACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;KACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AAC1D;AACA;KACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;KACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;MAC7C;AACL;AACA,KAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACjC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;MACjB;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;KACd,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;OACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;MACf;AACL;AACA;KACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;AACA;KACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;KACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACZ,EAAE,CAAC,CAAC;MACL;AACL;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;AACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;WACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ;AACX;AACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;QACF;AACP;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;WACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ;AACX;AACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;QACF;AACP;OACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX;MACF;AACL;AACA,KAAI,OAAO;OACL,CAAC,EAAE,CAAC;OACJ,CAAC,EAAE,CAAC;AACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;AACA;AACA;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;KACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;OACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;MACf;AACL;KACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;AACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB;AACX;AACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACd;QACF;AACP;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB;AACX;AACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACd;QACF;AACP;OACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,QAAO,MAAM;AACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb;MACF;AACL;KACI,IAAI,GAAG,CAAC;KACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;OACnB,GAAG,GAAG,EAAE,CAAC;AACf,MAAK,MAAM;OACL,GAAG,GAAG,EAAE,CAAC;MACV;AACL;KACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACb;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;KACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;AACA;AACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;AAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;AACL;AACA,KAAI,GAAG;AACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACP;OACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB;AACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;SACV,CAAC,GAAG,CAAC,CAAC;SACN,CAAC,GAAG,CAAC,CAAC;AACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7C,SAAQ,MAAM;QACP;AACP;AACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACX,QAAQ,IAAI,EAAE;AACnB;AACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;AACA;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;OACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;OACnB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1B,CAAC,IAAI,KAAK,CAAC;AACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;OACjB,CAAC,IAAI,SAAS,CAAC;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;KAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;KACI,IAAI,GAAG,CAAC;AACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;OACnB,GAAG,GAAG,CAAC,CAAC;AACd,MAAK,MAAM;OACL,IAAI,QAAQ,EAAE;AACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;QACZ;AACP;OACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;OACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACxC;AACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;KACzC,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;KACzC,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;KACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;OACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;AAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;AACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;SAChB,GAAG,GAAG,CAAC,CAAC;QACT;AACP,OAAM,MAAM;MACP;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;KAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;KACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;AACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KACf,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;KAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;AAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;AAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;KAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,IAAI,MAAM,GAAG;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,MAAM,EAAE,IAAI;AAChB,IAAG,CAAC;AACJ;AACA;AACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;AAC5B;AACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;KACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB;AACH;GACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;KACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC9C,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;AACpD;AACA;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;KACZ,IAAI,IAAI,CAAC;AACb;AACA,KAAI,GAAG;OACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;OACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;KACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;OACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;OAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;AACjC;AACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;AAClB,QAAO,MAAM;AACb;AACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACZ;MACF;AACL;KACI,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,yEAAyE,CAAC,CAAC;IAC9E;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACxD;AACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;AACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAClC;AACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;AACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;OACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO;MACR;AACL;AACA;KACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;AACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;OAC3D,IAAI,GAAG,IAAI,CAAC;MACb;KACD,IAAI,MAAM,EAAE,CAAC;KACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;KAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;MACnB;AACL,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC9C;KACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;AACA;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;OAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;MACxC;AACL;AACA;AACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;MACF;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,gEAAgE,CAAC,CAAC;IACrE;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,uDAAuD,CAAC,CAAC;IAC5D;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;GACE,SAAS,MAAM,IAAI;AACrB;KACI,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,OAAO;OACP,qEAAqE,CAAC,CAAC;IAC1E;AACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;GACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAChD;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;AACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;OACxB,EAAE,MAAM,EAAE,CAAC;AACjB;OACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;OAClB,KAAK,GAAG,EAAE,CAAC;MACZ;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;MACjC;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AACpC;KACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;KACI,IAAI,KAAK,CAAC;AACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;AAC3B,MAAK,MAAM;OACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;MAC1C;AACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;KACI,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;AACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;OACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,MAAK,MAAM;OACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;MACnB;IACF;AACH;GACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;KAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;KAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;AACrD,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;AAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;OAC7B,iCAAiC,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE;AACA,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACxC,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;AACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;MAClB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;KACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;KACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;AACA;AACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;OACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MACzB;AACL;AACA;AACA;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;OACtC,CAAC,EAAE,CAAC;AACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;KACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA;AACA;AACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MACjB;AACL;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;KACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACpB;AACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;OACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;OACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAChB,CAAC,GAAG,CAAC,CAAC;MACP;AACL;KACI,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACrC,MAAK,MAAM;AACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MACvB;AACL,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;AACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;KACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;AACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MAClC;AACL;AACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;KACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,KAAK,GAAG,EAAE,CAAC;MACZ;AACL;AACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;WAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACrB;AACT;SACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;WAC9B,UAAU,GAAG,CAAC,CAAC;AACzB,WAAU,SAAS;UACV;AACT;SACQ,OAAO,KAAK,CAAC,CAAC;SACd,OAAO,IAAI,GAAG,CAAC;SACf,UAAU,EAAE,CAAC;AACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;AACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;SAClC,UAAU,GAAG,CAAC,CAAC;SACf,OAAO,GAAG,CAAC,CAAC;QACb;OACD,KAAK,GAAG,EAAE,CAAC;MACZ;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;KACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;KACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;AACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;KACf,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;KAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;KACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;AAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;MACtC;AACL;AACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;KACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;GACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;AACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;AAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;KACb,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;OAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;OACb,OAAO,CAAC,CAAC;MACV;AACL;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;KACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB;AACL;AACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;KACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB;AACL;AACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AAC1C;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;EACH,EAAmC,MAAM,EAAEC,cAAI,CAAC,CAAA;;;;;AC19G1C,MAAMrE,SAAO,GAAG,iBAAiB;;ACSxC,IAAI,EAAE,GAAGsE,IAAG,CAAC,EAAE,CAAC;AAIhB,MAAMF,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC,MAAMuE,mBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAC3B,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACpE,QAAQ,WAAW,CAAC,KAAK,CAAC;AAC1B,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC;AACrC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC;AACD;AACA,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAC1B,MAAM,SAAS,CAAC;AACvB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;AACvC,QAAQ,IAAI,gBAAgB,KAAKA,mBAAiB,EAAE;AACpD,YAAYH,QAAM,CAAC,UAAU,CAAC,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC3H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,GAAG,GAAG;AACV,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACxB,YAAYI,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAYA,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAYA,YAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,QAAQ,OAAOJ,QAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/G,YAAY,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AAClC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,GAAG;AACf;AACA,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AACrC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C,oBAAoB,oBAAoB,GAAG,IAAI,CAAC;AAChD,oBAAoBA,QAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AACzG,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAC1C,gBAAgBA,QAAM,CAAC,UAAU,CAAC,gFAAgF,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC3J,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC1H,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE;AAChB,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9D,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,YAAY,SAAS,EAAE;AACxC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACjD,gBAAgB,OAAO,IAAI,SAAS,CAACG,mBAAiB,EAAEE,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC3C,gBAAgB,OAAO,IAAI,SAAS,CAACF,mBAAiB,EAAEE,OAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,YAAY,OAAOL,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3B,gBAAgBI,YAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;AACzD,gBAAgBA,YAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChE,aAAa;AACb,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AAC5C,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB;AACA,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAoB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;AACxC;AACA,gBAAgB,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;AAClE,oBAAoB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACvC,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAoB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,wBAAwB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAOJ,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;AAC9B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/C,KAAK;AACL,CAAC;AACD;AACA,SAASK,OAAK,CAAC,KAAK,EAAE;AACtB;AACA,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAOA,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1B;AACA,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC9B,YAAYL,QAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrE,SAAS;AACT;AACA,QAAQ,KAAK,GAAGK,OAAK,CAAC,KAAK,CAAC,CAAC;AAC7B;AACA,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACxC,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;AACjE,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AACD,SAAS,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACpD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxB,QAAQ,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACpD,KAAK;AACL,IAAI,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AACD,SAASD,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAOJ,QAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AACD;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5C;;ACvSA,MAAMA,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AAEnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM0E,MAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAON,QAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AACD;AACA,IAAI,KAAK,GAAG,GAAG,CAAC;AAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;AAC3B,IAAI,KAAK,IAAI,KAAK,CAAC;AACnB,CAAC;AACD;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC/F,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;AACpD,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnF,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAACM,MAAI,CAAC,CAAC;AACpC,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL;AACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,QAAQ,KAAK,GAAG,KAAK,CAAC;AACtB,KAAK;AACL,SAAS;AACT,QAAQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpE,QAAQN,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACrD,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;AACvB,QAAQA,QAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAClD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,QAAQ,UAAU,CAAC,uCAAuC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACvF,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;AACzB,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,QAAQ,QAAQ,IAAI,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9D,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACM,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3D,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE;AAC1C,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,KAAK,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE,CAEtB;AACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;AACzC,gBAAgB,MAAM,GAAG,KAAK,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC1E,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvF,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,gBAAgB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,aAAa,IAAI,KAAK,EAAE;AACxB,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK;AACvD,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;AACxC,oBAAoB,OAAO,YAAY,CAAC;AACxC,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;AAClD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,aAAa,CAAC;AACd,YAAY,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACxD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AAC9G,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;AAC3B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,2CAA2C,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAChH,SAAS;AACT,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3E,KAAK;AACL,CAAC;AACM,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACpD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACvG,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;AAC9C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;AAC/C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,SAAS;AACT;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC7D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACzF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AAC9D,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxC,KAAK;AACL,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACtG,QAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,aAAa,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;AAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC9C;AACA,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC7E,YAAY,MAAM,GAAG,QAAQ,CAAC;AAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAACM,MAAI,CAAC,EAAE;AACrD,YAAY,UAAU,CAAC,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;AACvB,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACxC,YAAY,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AACpC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5D,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACnG,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB;AACA,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC/D,gBAAgB,MAAM,KAAK,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,OAAON,QAAM,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;AAChC,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACjD,KAAK;AACL,CAAC;AACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;ACvW7B,MAAMpE,SAAO,GAAG,eAAe;;ACItC,MAAMoE,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC;AACO,IAAI,wBAAwB,CAAC;AACpC,CAAC,UAAU,wBAAwB,EAAE;AACrC,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAC7C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;AAEzD,IAAI,eAAe,CAAC;AAC3B,CAAC,UAAU,eAAe,EAAE;AAC5B;AACA;AACA,IAAI,eAAe,CAAC,qBAAqB,CAAC,GAAG,8BAA8B,CAAC;AAC5E;AACA;AACA,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;AAC3D;AACA;AACA,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;AAClD;AACA;AACA,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG,2BAA2B,CAAC;AACtE;AACA;AACA;AACA,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;AAC3D;AACA;AACA;AACA,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;AAC5D;AACA;AACA;AACA,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;AAC5D,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;AAE9C,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AAChE,IAAI,OAAOoE,QAAM,CAAC,kBAAkB,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzG,CAAC;AACD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AACjE;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,UAAU,IAAI,MAAM,KAAK,eAAe,CAAC,mBAAmB,EAAE;AACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACxC,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,CAAC,EAAE,CAAC;AAChB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE;AAC5C,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AAClE;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAA2B,CAAC,CAAC;AACnE,CAAC;AACD;AAC8B,MAAM,CAAC,MAAM,CAAC;AAC5C,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,OAAO,EAAE,WAAW;AACxB,CAAC,EAAE;AAsFH;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE;AAC1E,IAAI,IAAI,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE;AAClD,QAAQA,QAAM,CAAC,cAAc,EAAE,CAAC;AAChC,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;AACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,aAAa,IAAI,CAAC,GAAG,KAAK,EAAE;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,aAAa,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE;AACzC,YAAY,CAAC,EAAE,CAAC;AAChB,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM,EAAE;AAC7D,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxD,aAAa;AACb;AACA,YAAY,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AACrD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AAClD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B;;AC1MA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,IAAI,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACtC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAClC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChC,KAAK,CAAC,CAAC;AACP,CAAC;AAewB,gBAAgB,CAAC,87CAA87C,EAAE;AAC1+C;AACwB,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AA6C3F,WAAW,CAAC,ufAAuf,EAAE;AACrgB,WAAW,CAAC,wdAAwd,EAAE;AACte,WAAW,CAAC,w3DAAw3D,EAAE,MAAM,EAAE;AACj5D,gBAAgB,CAAC,yLAAyL;;ACxG1N,MAAMpE,SAAO,GAAG,YAAY;;ACE5B,SAAS,MAAM,CAAC,QAAQ,EAAE;AACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;AAC3C,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;AACzC,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACzC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3B,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACM,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AACjE;AACA,IAAI,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC;AAC1B,IAAI,GAAG,IAAI,IAAI,CAAC;AAChB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,SAAS,QAAQ,GAAG;AACxB,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;AAC7B;AACA;AACA,YAAY,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5D,YAAY,UAAU,GAAG,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,CAAC,WAAW,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;AACjB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAC1B;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;AAChD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC;AAC/B,QAAQ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC;AAC1C,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAgB,GAAG,GAAG,GAAG,CAAC;AAC1B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,KAAK,GAAG,GAAG,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,KAAK,IAAI,CAAC;AACtB,YAAY,MAAM;AAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACrE,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;AACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;AAC3D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;AACzF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,GAAG,GAAG,CAAC,CAAC;AAChB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;AAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC5B,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAC1B,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAClI,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjG,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD,YAAY,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACO,SAAS,YAAY,CAAC,CAAC,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,CAAC;AACM,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AACD;AACO,SAAS,MAAM,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AAC1B,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACM,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AAChD,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACnB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACO,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM;AAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,YAAY,MAAM;AAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AACM,SAAS,0BAA0B,CAAC,IAAI,EAAE;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM;AAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9B,YAAY,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvD,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AACM,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI,OAAO,IAAI,EAAE,CAAC;AAClB,IAAI,SAAS,IAAI,GAAG;AACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,IAAI,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvD,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAChC,gBAAgB,MAAM;AACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzD,QAAQ,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;AAC7B,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,KAAK,CAAC,CAAC;AACnB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;AAC9B,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtD,KAAK;AACL;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,SAAS,OAAO,GAAG;AAC1B,IAAI,OAAO,uBAAuB,CAAC,MAAM,CAAC,k6cAAk6c,CAAC,CAAC,CAAC;AAC/8c;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMkE,GAAC,GAAG,OAAO,EAAE,CAAC;AAEpB;AACc,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;AAC5B,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;AAC/B,eAAe,CAACA,GAAC,EAAE;AACf,eAAe,CAACA,GAAC;;AC/BrB,IAAI,MAAM,CAAClE,SAAO,EAAE;AAEnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ACLN,MAAM,aAAa,GAAG,gCAAgC,CAAC;AACvD,SAAS2E,aAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC;AAC5B,QAAQ,WAAW,CAAC,aAAa,CAAC;AAClC,QAAQ,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,OAAO;AACf,KAAK,CAAC,CAAC,CAAC;AACR;;ACbO,MAAM3E,SAAO,GAAG,WAAW;;ACKnB,IAAI,MAAM,CAACA,SAAO;;ACL1B,MAAMA,SAAO,GAAG,eAAe;;ACOtC,MAAMoE,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;AACnC,QAAQoE,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD;AACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvD,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;AACjD;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC7C;AACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;AAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClF,SAAS;AACT;AACA,KAAK;AACL,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;AAC9D;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;AACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AACnD,KAAK;AACL,SAAS;AACT,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB;;AChGO,MAAMpE,SAAO,GAAG,kBAAkB;;ACCzB,CAACqE,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,EAAE;AAGa,IAAI,MAAM,CAACrE,SAAO,EAAE;AAC5B,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACxC,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,KAAK;AACvB,KAAK,CAAC,CAAC;AACP;;ACnBgB,CAACqE,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,EAAE;AAQa,IAAI,MAAM,CAACrE,SAAO,EAAE;AAEnC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,SAAS,CAAC,IAAI,CAAC,oEAAoE,EAAE;AASxF,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;AACjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;;;;;;ICjClD4E,oBAAc,GAAGC,QAAM,CAAC;AACxB;AACA,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AAC1B,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;AAC/C,CAAC;AACD;AACAA,QAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;;;;ACVD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACzC;AACA,EAAEC,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1D,QAAQ,WAAW,EAAE;AACrB,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,UAAU,EAAE,KAAK;AAC3B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS;AACT,OAAO,EAAC;AACR,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,MAAM;AACP;AACA,EAAEA,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;AACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;AAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;AACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;AACvC,KAAK;AACL,IAAG;AACH;;ACxBA,IAAID,QAAM,GAAGE,oBAA8B,CAAC;AAC5C,IAAI,QAAQ,GAAGC,0BAAmB,CAAC;AACnC;AACgBC,OAAA,CAAA,QAAA,GAAG,SAAS;AAC5B;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;AACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;AAC/C,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AACpC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;AACrD,CAAC;AACD;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,EAAE,CAAC;AACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;AACd;AACA;AACA;AACA;AACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;AACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;AAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS,MAAM;AACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;AACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;AAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;AAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;AACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;AACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;AACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;AAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;AAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;AAC5B;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;AACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;AACxB,EAAEJ,QAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E;AACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACaI,OAAA,CAAA,MAAA,GAAG,OAAO;AACxB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;AAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC5B,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACaD,OAAA,CAAA,MAAA,GAAGC,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACaF,OAAA,CAAA,MAAA,GAAGE,SAAO;AACxB;AACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AACYH,OAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AACcJ,OAAA,CAAA,OAAA,GAAGI,UAAQ;AAC1B;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AACcL,OAAA,CAAA,OAAA,GAAGK,UAAQ;AAC1B;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AACcN,OAAA,CAAA,OAAA,GAAGM,UAAQ;AAC1B;AACA,SAASC,OAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AACYP,OAAA,CAAA,KAAA,GAAGO,QAAM;AACtB;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACeR,OAAA,CAAA,QAAA,GAAGQ,WAAS;AAC5B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACeT,OAAA,CAAA,QAAA,GAAGS,WAAS;AAC5B;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBV,OAAA,CAAA,UAAA,GAAGU,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBX,OAAA,CAAA,UAAA,GAAGW,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBZ,OAAA,CAAA,UAAA,GAAGY,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBb,OAAA,CAAA,UAAA,GAAGa,aAAW;AAChC;AACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACgBd,OAAA,CAAA,SAAA,GAAGc,YAAU;AAC9B;AACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACgBf,OAAA,CAAA,SAAA,GAAGe,YAAU;AAC9B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;AACpB,CAAC;AACehB,OAAA,CAAA,QAAA,GAAGgB,WAAS;AAC5B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACDjB,OAAA,CAAA,QAAgB,GAAGiB;;;;ACnRnB,IAAIjB,OAAK,GAAGF,OAAkB,CAAC;AAC/B,IAAIF,QAAM,GAAGG,oBAA8B,CAAC;AAC5C;AACA,SAASmB,WAAS,GAAG;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtC,CAAC;AACgBC,QAAA,CAAA,SAAA,GAAGD,YAAU;AAC9B;AACAA,WAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACvD;AACA,EAAE,GAAG,GAAGlB,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;AACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;AACA;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;AACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;AACA,IAAI,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;AACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACAkB,WAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,EAAEtB,QAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACAsB,WAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;AAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;AACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACA;AACA,EAAE,GAAG,KAAK,CAAC,CAAC;AACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;AACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1B,GAAG,MAAM;AACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;;;;;;ACzFD,IAAIlB,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAI,MAAM,GAAGE,OAAK,CAAC,MAAM,CAAC;AAC1B;AACA,SAASoB,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAOC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAOC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AACWH,QAAA,CAAA,IAAA,GAAGC,OAAK;AACpB;AACA,SAASC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,CAAC;AACWF,QAAA,CAAA,IAAA,GAAGE,OAAK;AACpB;AACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC;AACYH,QAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;AACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AACUH,QAAA,CAAA,GAAA,GAAG,IAAI;AAClB;AACA,SAASI,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AACaJ,QAAA,CAAA,MAAA,GAAGI,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AACaL,QAAA,CAAA,MAAA,GAAGK,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AACaN,QAAA,CAAA,MAAA,GAAGM,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC;AACDP,QAAA,CAAA,MAAc,GAAGO;;AC9CjB,IAAI1B,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAI4B,WAAS,GAAGC,QAAmB,CAAC;AACpC;AACA,IAAI1B,QAAM,GAAGF,OAAK,CAAC,MAAM,CAAC;AAC1B,IAAIG,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;AACxB,IAAIM,SAAO,GAAGN,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG2B,WAAS,CAAC,IAAI,CAAC;AAC1B,IAAIT,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,MAAM,GAAG;AACb,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,UAAU,EAAE,UAAU;AACxB,CAAC,CAAC;AACF;AACA,SAAS,IAAI,GAAG;AAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;AACA,EAAED,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;AACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACD;AACAlB,OAAK,CAAC,QAAQ,CAAC,IAAI,EAAEkB,WAAS,CAAC,CAAC;IAChC,EAAc,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;AACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;AACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGhB,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,GAAGI,SAAO,CAACJ,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOH,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;;ACvED,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAI,SAAS,GAAG6B,QAAmB,CAAC;AACpC,IAAIhC,QAAM,GAAGiC,oBAA8B,CAAC;AAC5C;AACA,IAAI1B,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;AACxB,IAAIK,SAAO,GAAGL,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC5B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;AACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,QAAQ,GAAG;AACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAASW,QAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;AAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;AACA,EAAEZ,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACDlB,OAAK,CAAC,QAAQ,CAAC8B,QAAM,EAAEZ,WAAS,CAAC,CAAC;IAClC,IAAc,GAAGY,QAAM,CAAC;AACxB;AACAA,QAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvBA,QAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,QAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,QAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACAA,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGzB,SAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAET,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,EAAE,GAAGO,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA2B,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO9B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;;ACtGD,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;AAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC;AACDC,OAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;AACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD;AACA,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;;AC1BD,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAIH,QAAM,GAAGgC,oBAA8B,CAAC;AAC5C;AACA,IAAI,SAAS,GAAG5B,OAAK,CAAC,SAAS,CAAC;AAChC,IAAI,SAAS,GAAGA,OAAK,CAAC,SAAS,CAAC;AAChC,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;AACxB,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC;AACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,QAAQ,GAAG;AACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU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EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAA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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/index.es.js b/node_modules/@walletconnect/utils/dist/index.es.js -new file mode 100644 -index 0000000000000000000000000000000000000000..6bb30571f9a75c9921d8cdb6a8b16f461cf9d4f9 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.es.js -@@ -0,0 +1,18 @@ -+import{detect as Uo}from"detect-browser";import{toMiliseconds as di,FIVE_MINUTES as hn,fromMiliseconds as ko}from"@walletconnect/time";import{getDocument as pi,getNavigator as cn,getLocation as ln}from"@walletconnect/window-getters";import{getWindowMetadata as qo}from"@walletconnect/window-metadata";import*as Br from"query-string";import{ChaCha20Poly1305 as dn}from"@stablelib/chacha20poly1305";import{HKDF as Ko}from"@stablelib/hkdf";import{randomBytes as Cr}from"@stablelib/random";import{SHA256 as pn,hash as vn}from"@stablelib/sha256";import*as gn from"@stablelib/x25519";import{toString as Qt,fromString as Xt,concat as vi}from"uint8arrays";import{ec as Ho}from"elliptic";import{decodeJWT as Lo}from"@walletconnect/relay-auth";import{RELAY_JSONRPC as zo}from"@walletconnect/relay-api";const Rr=":";function mn(e){const[t,r]=e.split(Rr);return{namespace:t,reference:r}}function An(e){const{namespace:t,reference:r}=e;return[t,r].join(Rr)}function gi(e){const[t,r,i]=e.split(Rr);return{namespace:t,reference:r,address:i}}function bn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(Rr)}function mi(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function yn(e){const{address:t}=gi(e);return t}function wn(e){const{namespace:t,reference:r}=gi(e);return An({namespace:t,reference:r})}function jo(e,t){const{namespace:r,reference:i}=mn(t);return bn({namespace:r,reference:i,address:e})}function Qo(e){return mi(e,yn)}function xn(e){return mi(e,wn)}function Jo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function Go(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...xn(n.accounts))}),r}function Yo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...Or(i,n))}),r}function Or(e,t){return e.includes(":")?[e]:t.chains||[]}var Vo=Object.defineProperty,Mn=Object.getOwnPropertySymbols,Wo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable,En=(e,t,r)=>t in e?Vo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Sn=(e,t)=>{for(var r in t||(t={}))Wo.call(t,r)&&En(e,r,t[r]);if(Mn)for(var r of Mn(t))Xo.call(t,r)&&En(e,r,t[r]);return e};const Nn="ReactNative",qt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Pr=" ",Zo=":",In="/",Ai=2,$o=1e3,_n="js";function bi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function rr(){return!pi()&&!!cn()&&navigator.product===Nn}function gr(){return!bi()&&!!cn()&&!!pi()}function We(){return rr()?qt.reactNative:bi()?qt.node:gr()?qt.browser:qt.unknown}function ts(){var e;try{return rr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Bn(e,t){let r=Br.parse(e);return r=Sn(Sn({},r),t),e=Br.stringify(r),e}function es(){return qo()||{name:"",description:"",url:"",icons:[""]}}function rs(e,t){var r;const i=We(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=ln())==null?void 0:r.host)||"unknown"),n}function Cn(){if(We()===qt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Uo();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Rn(){var e;const t=We();return t===qt.browser?[t,((e=ln())==null?void 0:e.host)||"unknown"].join(":"):t}function On(e,t,r){const i=Cn(),n=Rn();return[[e,t].join("-"),[_n,r].join("-"),i,n].join("/")}function is({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const A=r.split("?"),v=On(e,t,i),w={auth:n,ua:v,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=Bn(A[1]||"",w);return A[0]+"?"+y}function ns(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function fs(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Pn(e,t=Ai){return Dn(e.split(In),t)}function os(e){return Pn(e).join(Pr)}function _e(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Dn(e,t=Ai){return e.slice(Math.max(e.length-t,0))}function ss(e){return Object.fromEntries(e.entries())}function as(e){return new Map(Object.entries(e))}function us(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const hs=e=>e;function Fn(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function cs(e){return e.split(Pr).map(t=>Fn(t)).join(Pr)}function ls(e=hn,t){const r=di(e||hn);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function ds(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function yi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function ps(e){return yi("topic",e)}function vs(e){return yi("id",e)}function gs(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function ms(e,t){return ko((t||Date.now())+di(e))}function As(e){return Date.now()>=di(e)}function bs(e,t){return`${e}${t?`:${t}`:""}`}function me(e=[],t=[]){return[...new Set([...e,...t])]}async function ys({id:e,topic:t,wcDeepLink:r}){var i;try{if(!r)return;const n=typeof r=="string"?JSON.parse(r):r;let o=n?.href;if(typeof o!="string")return;o.endsWith("/")&&(o=o.slice(0,-1));const h=`${o}/wc?requestId=${e}&sessionTopic=${t}`,p=We();if(p===qt.browser){if(!((i=pi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}h.startsWith("https://")||h.startsWith("http://")?window.open(h,"_blank","noreferrer noopener"):window.open(h,"_self","noreferrer noopener")}else p===qt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(h)}catch(n){console.error(n)}}async function ws(e,t){try{return await e.getItem(t)||(gr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function wi(e,t){return e.filter(r=>t.includes(r))}function xs(e,t){if(!e.includes(t))return null;const r=e.split(/([&,?,=])/),i=r.indexOf(t);return r[i+2]}function Ms(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Es(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Un={exports:{}};/** -+ * [js-sha3]{@link https://github.com/emn178/js-sha3} -+ * -+ * @version 0.8.0 -+ * @author Chen, Yi-Cyuan [emn178@gmail.com] -+ * @copyright Chen, Yi-Cyuan 2015-2018 -+ * @license MIT -+ */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=Tn:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,A=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],C=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],J=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),A&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var G=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,R){return new s(u,E,R).update(B)[_]()}},L=function(u,E,_){return function(B,R,T,P){return f["cshake"+u].update(B,R,T,P)[_]()}},Pt=function(u,E,_){return function(B,R,T,P){return f["kmac"+u].update(B,R,T,P)[_]()}},W=function(u,E,_,B){for(var R=0;R>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,R=this.byteCount,T=u.length,P=this.blockCount,O=0,Ct=this.s,D,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[D>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=R){for(this.start=D-R,this.block=B[P],D=0;D>8,_=u&255;_>0;)R.unshift(_),u=u>>8,_=u&255,++B;return E?R.push(B):R.unshift(B),this.update(R),R.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,R=u.length;if(E)B=R;else for(var T=0;T=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++T)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P="",O;T<_;){for(R=0;R>4&15]+v[O&15]+v[O>>12&15]+v[O>>8&15]+v[O>>20&15]+v[O>>16&15]+v[O>>28&15]+v[O>>24&15];T%u===0&&(k(E),R=0)}return B&&(O=E[R],P+=v[O>>4&15]+v[O&15],B>1&&(P+=v[O>>12&15]+v[O>>8&15]),B>2&&(P+=v[O>>20&15]+v[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);T<_;){for(R=0;R>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;T%u===0&&k(E)}return B&&(O=T<<2,Ct=E[R],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function g(u,E,_){s.call(this,u,E,_)}g.prototype=new s,g.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,R,T,P,O,Ct,D,q,De,X,Z,Fe,$,tt,Te,et,rt,Ue,it,nt,ke,ft,ot,qe,st,at,Ke,ut,ht,He,ct,lt,Le,dt,pt,ze,vt,gt,je,mt,At,Qe,bt,yt,Je,wt,xt,Ge,Mt,Et,Ye,St,Nt,Ve,It,_t,Me,Ee,Se,Ne,Ie;for(B=0;B<48;B+=2)R=u[0]^u[10]^u[20]^u[30]^u[40],T=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],D=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],De=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=R^(Ct<<1|D>>>31),_=T^(D<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|De>>>31),_=O^(De<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=D^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(R<<1|T>>>31),_=De^(T<<1|R>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Fe=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Je=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,Ke=u[21]<<3|u[20]>>>29,Ee=u[31]<<9|u[30]>>>23,Se=u[30]<<9|u[31]>>>23,mt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,Le=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Te=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Ne=u[42]<<2|u[43]>>>30,Ie=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Ge=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,He=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ve=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,ze=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,Ue=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Ye=u[46]<<24|u[47]>>>8,Qe=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,qe=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,Me=u[28]<<7|u[29]>>>25,gt=u[38]<<8|u[39]>>>24,je=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,ke=u[49]<<14|u[48]>>>18,u[0]=Fe^~tt&et,u[1]=$^~Te&rt,u[10]=ft^~qe&at,u[11]=ot^~st&Ke,u[20]=lt^~dt&ze,u[21]=Le^~pt&vt,u[30]=Qe^~yt&wt,u[31]=bt^~Je&xt,u[40]=St^~Ve&_t,u[41]=Nt^~It&Me,u[2]=tt^~et&Ue,u[3]=Te^~rt&it,u[12]=qe^~at&ut,u[13]=st^~Ke&ht,u[22]=dt^~ze>,u[23]=pt^~vt&je,u[32]=yt^~wt&Ge,u[33]=Je^~xt&Mt,u[42]=Ve^~_t&Ee,u[43]=It^~Me&Se,u[4]=et^~Ue&nt,u[5]=rt^~it&ke,u[14]=at^~ut&He,u[15]=Ke^~ht&ct,u[24]=ze^~gt&mt,u[25]=vt^~je&At,u[34]=wt^~Ge&Et,u[35]=xt^~Mt&Ye,u[44]=_t^~Ee&Ne,u[45]=Me^~Se&Ie,u[6]=Ue^~nt&Fe,u[7]=it^~ke&$,u[16]=ut^~He&ft,u[17]=ht^~ct&ot,u[26]=gt^~mt<,u[27]=je^~At&Le,u[36]=Ge^~Et&Qe,u[37]=Mt^~Ye&bt,u[46]=Ee^~Ne&St,u[47]=Se^~Ie&Nt,u[8]=nt^~Fe&tt,u[9]=ke^~$&Te,u[18]=He^~ft&qe,u[19]=ct^~ot&st,u[28]=mt^~lt&dt,u[29]=At^~Le&pt,u[38]=Et^~Qe&yt,u[39]=Ye^~bt&Je,u[48]=Ne^~St&Ve,u[49]=Ie^~Nt&It,u[0]^=C[B],u[1]^=C[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Hn=Is();var Mi;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Mi||(Mi={}));var re;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(re||(re={}));const Ln="0123456789abcdef";class z{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Dr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Kn>Dr[i])&&console.log.apply(console,r)}debug(...t){this._log(z.levels.DEBUG,t)}info(...t){this._log(z.levels.INFO,t)}warn(...t){this._log(z.levels.WARNING,t)}makeError(t,r,i){if(qn)return this.makeError("censored error",r,{});r||(r=z.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(A=>{const v=i[A];try{if(v instanceof Uint8Array){let w="";for(let y=0;y>4],w+=Ln[v[y]&15];n.push(A+"=Uint8Array(0x"+w+")")}else n.push(A+"="+JSON.stringify(v))}catch{n.push(A+"="+JSON.stringify(i[A].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case re.NUMERIC_FAULT:{h="NUMERIC_FAULT";const A=t;switch(A){case"overflow":case"underflow":case"division-by-zero":h+="-"+A;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case re.CALL_EXCEPTION:case re.INSUFFICIENT_FUNDS:case re.MISSING_NEW:case re.NONCE_EXPIRED:case re.REPLACEMENT_UNDERPRICED:case re.TRANSACTION_REPLACED:case re.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(A){p[A]=i[A]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,z.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Hn&&this.throwError("platform missing String.prototype.normalize",z.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Hn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,z.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",z.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return xi||(xi=new z(Ns)),xi}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),kn){if(!t)return;this.globalLogger().throwError("error censorship permanent",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}qn=!!t,kn=!!r}static setLogLevel(t){const r=Dr[t.toLowerCase()];if(r==null){z.globalLogger().warn("invalid log level - "+t);return}Kn=r}static from(t){return new z(t)}}z.errors=re,z.levels=Mi;const _s="bytes/5.7.0",Dt=new z(_s);function zn(e){return!!e.toHexString}function ir(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ir(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Bs(e){return Jt(e)&&!(e.length%2)||nr(e)}function jn(e){return typeof e=="number"&&e==e&&e%1===0}function nr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!jn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ot(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),ir(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e)&&(e=e.toHexString()),Jt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Dt.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nOt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),ir(i)}function Rs(e,t){e=Ot(e),e.length>t&&Dt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),ir(r)}function Jt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const Ei="0123456789abcdef";function Kt(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=Ei[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e))return e.toHexString();if(Jt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Dt.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(nr(e)){let r="0x";for(let i=0;i>4]+Ei[n&15]}return r}return Dt.throwArgumentError("invalid hexlify value","value",e)}function Os(e){if(typeof e!="string")e=Kt(e);else if(!Jt(e)||e.length%2)return null;return(e.length-2)/2}function Qn(e,t,r){return typeof e!="string"?e=Kt(e):(!Jt(e)||e.length%2)&&Dt.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function oe(e,t){for(typeof e!="string"?e=Kt(e):Jt(e)||Dt.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Dt.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Jn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Bs(e)){let r=Ot(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64))):r.length===65?(t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64)),t.v=r[64]):Dt.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Dt.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Kt(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=Rs(Ot(t._vs),32);t._vs=Kt(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Dt.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Kt(n);t.s==null?t.s=h:t.s!==h&&Dt.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Dt.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Dt.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Jt(t.r)?Dt.throwArgumentError("signature missing or invalid r","signature",e):t.r=oe(t.r,32),t.s==null||!Jt(t.s)?Dt.throwArgumentError("signature missing or invalid s","signature",e):t.s=oe(t.s,32);const r=Ot(t.s);r[0]>=128&&Dt.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Kt(r);t._vs&&(Jt(t._vs)||Dt.throwArgumentError("signature invalid _vs","signature",e),t._vs=oe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Dt.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function Si(e){return"0x"+Ss.keccak_256(Ot(e))}var Gn={exports:{}},Ps={},Ds=Object.freeze({__proto__:null,default:Ps}),Fs=Es(Ds);(function(e){(function(t,r){function i(b,f){if(!b)throw new Error(f||"Assertion failed")}function n(b,f){b.super_=f;var a=function(){};a.prototype=f.prototype,b.prototype=new a,b.prototype.constructor=b}function o(b,f,a){if(o.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(b||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Fs.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[m]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);else if(c==="le")for(d=0,m=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);return this._strip()};function p(b,f){var a=b.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+b)}function A(b,f,a){var c=p(b,a);return a-1>=f&&(c|=p(b,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=A(f,a,d)<=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8}this._strip()};function v(b,f,a,c){for(var d=0,m=0,x=Math.min(b.length,a),M=f;M=49?m=l-49+10:l>=17?m=l-17+10:m=l,i(l>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,m=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),m!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(m!==0&&(c=m.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],g=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(g).toString(f);k=k.idivn(g),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var C=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),m=c||Math.max(1,d);i(d<=m,"byte array longer than desired length"),i(m>0,"Requested array length <= 0");var x=C(f,m),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,m=0,x=0;m>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(b){for(var f=new Array(b.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var m=0,x=0;x>>26;for(;m!==0&&x>>26;if(this.length=c.length,m!==0)this.words[this.length]=m,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,m;c>0?(d=this,m=f):(d=f,m=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-b.length+1);E<=u;E++){var _=s-E|0;d=b.words[_]|0,m=f.words[E]|0,x=d*m+k,g+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=g|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var J=function(f,a,c){var d=f.words,m=a.words,x=c.words,M=0,l,s,g,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,R=_>>>13,T=d[2]|0,P=T&8191,O=T>>>13,Ct=d[3]|0,D=Ct&8191,q=Ct>>>13,De=d[4]|0,X=De&8191,Z=De>>>13,Fe=d[5]|0,$=Fe&8191,tt=Fe>>>13,Te=d[6]|0,et=Te&8191,rt=Te>>>13,Ue=d[7]|0,it=Ue&8191,nt=Ue>>>13,ke=d[8]|0,ft=ke&8191,ot=ke>>>13,qe=d[9]|0,st=qe&8191,at=qe>>>13,Ke=m[0]|0,ut=Ke&8191,ht=Ke>>>13,He=m[1]|0,ct=He&8191,lt=He>>>13,Le=m[2]|0,dt=Le&8191,pt=Le>>>13,ze=m[3]|0,vt=ze&8191,gt=ze>>>13,je=m[4]|0,mt=je&8191,At=je>>>13,Qe=m[5]|0,bt=Qe&8191,yt=Qe>>>13,Je=m[6]|0,wt=Je&8191,xt=Je>>>13,Ge=m[7]|0,Mt=Ge&8191,Et=Ge>>>13,Ye=m[8]|0,St=Ye&8191,Nt=Ye>>>13,Ve=m[9]|0,It=Ve&8191,_t=Ve>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,g=Math.imul(E,ht);var Me=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(R,ut)|0,g=Math.imul(R,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,g=g+Math.imul(E,lt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,g=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(R,ct)|0,g=g+Math.imul(R,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,g=g+Math.imul(E,pt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(D,ut),s=Math.imul(D,ht),s=s+Math.imul(q,ut)|0,g=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,g=g+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(R,dt)|0,g=g+Math.imul(R,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,gt)|0,s=s+Math.imul(E,vt)|0,g=g+Math.imul(E,gt)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,g=Math.imul(Z,ht),l=l+Math.imul(D,ct)|0,s=s+Math.imul(D,lt)|0,s=s+Math.imul(q,ct)|0,g=g+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,g=g+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,gt)|0,s=s+Math.imul(R,vt)|0,g=g+Math.imul(R,gt)|0,l=l+Math.imul(u,mt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,mt)|0,g=g+Math.imul(E,At)|0;var Ie=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,g=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,g=g+Math.imul(Z,lt)|0,l=l+Math.imul(D,dt)|0,s=s+Math.imul(D,pt)|0,s=s+Math.imul(q,dt)|0,g=g+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,gt)|0,s=s+Math.imul(O,vt)|0,g=g+Math.imul(O,gt)|0,l=l+Math.imul(B,mt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(R,mt)|0,g=g+Math.imul(R,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,g=g+Math.imul(E,yt)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,g=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,g=g+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,g=g+Math.imul(Z,pt)|0,l=l+Math.imul(D,vt)|0,s=s+Math.imul(D,gt)|0,s=s+Math.imul(q,vt)|0,g=g+Math.imul(q,gt)|0,l=l+Math.imul(P,mt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,mt)|0,g=g+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(R,bt)|0,g=g+Math.imul(R,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,g=g+Math.imul(E,xt)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,g=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,g=g+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,g=g+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,gt)|0,s=s+Math.imul(Z,vt)|0,g=g+Math.imul(Z,gt)|0,l=l+Math.imul(D,mt)|0,s=s+Math.imul(D,At)|0,s=s+Math.imul(q,mt)|0,g=g+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,g=g+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(R,wt)|0,g=g+Math.imul(R,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,g=g+Math.imul(E,Et)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,g=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,g=g+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,g=g+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,gt)|0,s=s+Math.imul(tt,vt)|0,g=g+Math.imul(tt,gt)|0,l=l+Math.imul(X,mt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,mt)|0,g=g+Math.imul(Z,At)|0,l=l+Math.imul(D,bt)|0,s=s+Math.imul(D,yt)|0,s=s+Math.imul(q,bt)|0,g=g+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,g=g+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(R,Mt)|0,g=g+Math.imul(R,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,g=g+Math.imul(E,Nt)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,g=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,g=g+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,g=g+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,gt)|0,s=s+Math.imul(rt,vt)|0,g=g+Math.imul(rt,gt)|0,l=l+Math.imul($,mt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,mt)|0,g=g+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,g=g+Math.imul(Z,yt)|0,l=l+Math.imul(D,wt)|0,s=s+Math.imul(D,xt)|0,s=s+Math.imul(q,wt)|0,g=g+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,g=g+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(R,St)|0,g=g+Math.imul(R,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,g=g+Math.imul(E,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,g=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,g=g+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,gt)|0,s=s+Math.imul(nt,vt)|0,g=g+Math.imul(nt,gt)|0,l=l+Math.imul(et,mt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,mt)|0,g=g+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,g=g+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,g=g+Math.imul(Z,xt)|0,l=l+Math.imul(D,Mt)|0,s=s+Math.imul(D,Et)|0,s=s+Math.imul(q,Mt)|0,g=g+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,g=g+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(R,It)|0,g=g+Math.imul(R,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,g=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,gt)|0,s=s+Math.imul(ot,vt)|0,g=g+Math.imul(ot,gt)|0,l=l+Math.imul(it,mt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,mt)|0,g=g+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,g=g+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,g=g+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,g=g+Math.imul(Z,Et)|0,l=l+Math.imul(D,St)|0,s=s+Math.imul(D,Nt)|0,s=s+Math.imul(q,St)|0,g=g+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,g=g+Math.imul(O,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,vt),s=Math.imul(st,gt),s=s+Math.imul(at,vt)|0,g=Math.imul(at,gt),l=l+Math.imul(ft,mt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,mt)|0,g=g+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,g=g+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,g=g+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,g=g+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,g=g+Math.imul(Z,Nt)|0,l=l+Math.imul(D,It)|0,s=s+Math.imul(D,_t)|0,s=s+Math.imul(q,It)|0,g=g+Math.imul(q,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,mt),s=Math.imul(st,At),s=s+Math.imul(at,mt)|0,g=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,g=g+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,g=g+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,g=g+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,g=g+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,g=g+Math.imul(Z,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,g=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,g=g+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,g=g+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,g=g+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,g=g+Math.imul(tt,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,g=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,g=g+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,g=g+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,g=g+Math.imul(rt,_t)|0;var ui=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,g=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,g=g+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,g=g+Math.imul(nt,_t)|0;var hi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(hi>>>26)|0,hi&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,g=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,g=g+Math.imul(ot,_t)|0;var ci=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ci>>>26)|0,ci&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,g=Math.imul(at,_t);var li=(M+l|0)+((s&8191)<<13)|0;return M=(g+(s>>>13)|0)+(li>>>26)|0,li&=67108863,x[0]=Me,x[1]=Ee,x[2]=Se,x[3]=Ne,x[4]=Ie,x[5]=$r,x[6]=ti,x[7]=ei,x[8]=ri,x[9]=ii,x[10]=ni,x[11]=fi,x[12]=oi,x[13]=si,x[14]=ai,x[15]=ui,x[16]=hi,x[17]=ci,x[18]=li,M!==0&&(x[19]=M,c.length++),c};Math.imul||(J=U);function Bt(b,f,a){a.negative=f.negative^b.negative,a.length=b.length+f.length;for(var c=0,d=0,m=0;m>>26)|0,d+=x>>>26,x&=67108863}a.words[m]=M,c=x,x=d}return c!==0?a.words[m]=c:a.length--,a._strip()}function G(b,f,a){return Bt(b,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=J(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=G(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),G(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=m/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,m;if(a!==0){var x=0;for(m=0;m>>26-a}x&&(this.words[m]=x,this.length++)}if(c!==0){for(m=this.length-1;m>=0;m--)this.words[m+c]=this.words[m];for(m=0;m=0);var d;a?d=(a-a%26)/26:d=0;var m=f%26,x=Math.min((f-m)/26,this.length),M=67108863^67108863>>>m<x)for(this.length-=x,s=0;s=0&&(g!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=g<<26-m|k>>>m,g=k&M}return l&&g!==0&&(l.words[l.length++]=g),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[m+c]=x&67108863}for(;m>26,this.words[m+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,m=0;m>26,this.words[m]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),m=f,x=m.words[m.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(m=m.ushln(c),d.iushln(c),x=m.words[m.length-1]|0);var l=d.length-m.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var g=0;g=0;u--){var E=(d.words[m.length+u]|0)*67108864+(d.words[m.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(m,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(m,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,m,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.iadd(f)),{div:d,mod:m}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.isub(f)),{div:x.div,mod:m}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),m=f.andln(1),x=c.cmp(d);return x<0||m===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,m=this.length-1;m>=0;m--)d=(c*d+(this.words[m]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var m=(this.words[d]|0)+c*67108864;this.words[d]=m/f|0,c=m%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),g=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||m.isOdd())&&(d.iadd(s),m.isub(g)),d.iushrn(1),m.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(g)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),m.isub(M)):(c.isub(a),x.isub(d),M.isub(m))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,g=1;!(c.words[0]&g)&&s<26;++s,g<<=1);if(s>0)for(c.iushrn(s);s-- >0;)m.isOdd()&&m.iadd(x),m.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(m)):(c.isub(a),m.isub(d))}var k;return a.cmpn(1)===0?k=d:k=m,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var m=a.cmp(c);if(m<0){var x=a;a=c,c=x}else if(m===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return m!==0&&(this.words[x]=m,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,m=f.words[c]|0;if(d!==m){dm&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function L(b,f){this.name=b,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},L.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},L.prototype.split=function(f,a){f.iushrn(this.n,0,a)},L.prototype.imulK=function(f){return f.imul(this.k)};function Pt(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Pt,L),Pt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),m=0;m>>22,x=M}x>>>=22,f.words[m-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Pt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=m,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Pt;else if(f==="p224")a=new W;else if(f==="p192")a=new Rt;else if(f==="p25519")a=new Vt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(b){if(typeof b=="string"){var f=o._prime(b);this.m=f.p,this.prime=f}else i(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),m=0;!d.isZero()&&d.andln(1)===0;)m++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var g=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=m;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;m--){for(var g=a.words[m],k=s-1;k>=0;k--){var u=g>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(m!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Wt(f)};function Wt(b){Y.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Wt,Y),Wt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Wt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Wt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,Tn)})(Gn);var K=Gn.exports;const Yn="bignumber/5.7.0";var Fr=K.BN;const Ae=new z(Yn),Ni={},Vn=9007199254740991;function Ts(e){return e!=null&&(V.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Jt(e)||typeof e=="bigint"||nr(e))}let Wn=!1;class V{constructor(t,r){t!==Ni&&Ae.throwError("cannot call constructor directly; use BigNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return zt(j(this).fromTwos(t))}toTwos(t){return zt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?V.from(this._hex.substring(1)):this}add(t){return zt(j(this).add(j(t)))}sub(t){return zt(j(this).sub(j(t)))}div(t){return V.from(t).isZero()&&Zt("division-by-zero","div"),zt(j(this).div(j(t)))}mul(t){return zt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Zt("division-by-zero","mod"),zt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Zt("negative-power","pow"),zt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","and"),zt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","or"),zt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","xor"),zt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Zt("negative-width","mask"),zt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Zt("negative-width","shl"),zt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Zt("negative-width","shr"),zt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Zt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Ae.throwError("this platform does not support BigInt",z.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Wn||(Wn=!0,Ae.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Ae.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",z.errors.UNEXPECTED_ARGUMENT,{}):Ae.throwError("BigNumber.toString does not accept parameters",z.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new V(Ni,mr(t)):t.match(/^-?[0-9]+$/)?new V(Ni,mr(new Fr(t))):Ae.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Zt("underflow","BigNumber.from",t),(t>=Vn||t<=-Vn)&&Zt("overflow","BigNumber.from",t),V.from(String(t));const r=t;if(typeof r=="bigint")return V.from(r.toString());if(nr(r))return V.from(Kt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return V.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Jt(i)||i[0]==="-"&&Jt(i.substring(1))))return V.from(i)}return Ae.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function mr(e){if(typeof e!="string")return mr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Ae.throwArgumentError("invalid hex","value",e),e=mr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function zt(e){return V.from(mr(e))}function j(e){const t=V.from(e).toHexString();return t[0]==="-"?new Fr("-"+t.substring(3),16):new Fr(t.substring(2),16)}function Zt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),Ae.throwError(e,z.errors.NUMERIC_FAULT,i)}function Us(e){return new Fr(e,36).toString(16)}const Ht=new z(Yn),Ar={},Xn=V.from(0),Zn=V.from(-1);function $n(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Ht.throwError(e,z.errors.NUMERIC_FAULT,n)}let br="0";for(;br.length<256;)br+=br;function Ii(e){if(typeof e!="number")try{e=V.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+br.substring(0,e):Ht.throwArgumentError("invalid decimal size","decimals",e)}function _i(e,t){t==null&&(t=0);const r=Ii(t);e=V.from(e);const i=e.lt(Xn);i&&(e=e.mul(Zn));let n=e.mod(r).toString();for(;n.length2&&Ht.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&$n("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?A:(typeof t[h]!==p&&Ht.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Ht.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Ht.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new vr(Ar,r,i,n)}}class Ut{constructor(t,r,i,n){t!==Ar&&Ht.throwError("cannot use FixedNumber constructor; use FixedNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ht.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(tf.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(tf.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ht.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=Ut.from("1"+br.substring(0,t),this.format),n=ks.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ht.throwArgumentError("invalid byte width","width",t);const r=V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return oe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ut.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Ts(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),Ut.fromString(_i(t,r),vr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=vr.from(r),n=be(t,i.decimals);!i.signed&&n.lt(Xn)&&$n("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=oe(o,i.width/8));const h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=vr.from(r);if(Ot(t).length>i.width/8)throw new Error("overflow");let n=V.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static from(t,r){if(typeof t=="string")return Ut.fromString(t,r);if(nr(t))return Ut.fromBytes(t,r);try{return Ut.fromValue(t,0,r)}catch(i){if(i.code!==z.errors.INVALID_ARGUMENT)throw i}return Ht.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const tf=Ut.from(1),ks=Ut.from("0.5"),qs="strings/5.7.0",ef=new z(qs);var Tr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Tr||(Tr={}));var fr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(fr||(fr={}));function Ks(e,t,r,i,n){return ef.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function rf(e,t,r,i,n){if(e===fr.BAD_PREFIX||e===fr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===fr.OVERRUN?r.length-t-1:0}function Hs(e,t,r,i,n){return e===fr.OVERLONG?(i.push(n),0):(i.push(65533),rf(e,t,r))}Object.freeze({error:Ks,ignore:rf,replace:Hs});function Bi(e,t=Tr.current){t!=Tr.current&&(ef.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Ot(r)}function Ls(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function nf(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}nf("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Ci("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Ci("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ci("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Ls),nf("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const ff="hash/5.7.0";function zs(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function js(e){const t={};for(let r=0;r>--A&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,C=S-1;let F=0;for(let H=0;H1;){let Vt=L+Pt>>>1;H>>1|w(),W=W<<1^I,Rt=(Rt^I)<<1|I|1;J=W,Bt=1+Rt-W}let G=i-4;return U.map(H=>{switch(H-G){case 3:return G+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return G+256+(e[p++]<<8|e[p++]);case 1:return G+e[p++];default:return H-1}})}function Js(e){let t=0;return()=>e[t++]}function Gs(e){return Js(Qs(e))}function Ys(e){return e&1?~e>>1:e>>1}function Vs(e,t){let r=Array(e);for(let i=0;it[h]):r}function Xs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push($s(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(t0(r,e))}return js(of(t))}function Zs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function af(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function $s(e,t){let r=1+t(),i=t(),n=Zs(t),o=af(n.length,1+e,t);return of(o.map((h,p)=>{const A=h[0],v=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[A+y*r,v.map(I=>I+S)]})}))}function t0(e,t){let r=1+t();return af(r,1+e,t).map(n=>[n[0],n.slice(1)])}function e0(e){let t=Ur(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let v=Ur(e,t);if(v.length==0)break;i.push({set:new Set(v),node:r()})}i.sort((v,w)=>w.set.size-v.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,A=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:A}}}function r0(){return Gs(zs("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"))}const kr=r0();new Set(Ur(kr)),new Set(Ur(kr)),Xs(kr),e0(kr),new z(ff);const i0=new Uint8Array(32);i0.fill(0);const n0=`Ethereum Signed Message: -+`;function uf(e){return typeof e=="string"&&(e=Bi(e)),Si(Cs([Bi(n0),Bi(String(e.length)),e]))}const f0="rlp/5.7.0";new z(f0);const o0="address/5.7.0",yr=new z(o0);function hf(e){Jt(e,20)||yr.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Ot(Si(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const s0=9007199254740991;function a0(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ri={};for(let e=0;e<10;e++)Ri[String(e)]=String(e);for(let e=0;e<26;e++)Ri[String.fromCharCode(65+e)]=String(10+e);const cf=Math.floor(a0(s0));function u0(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ri[i]).join("");for(;t.length>=cf;){let i=t.substring(0,cf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function h0(e){let t=null;if(typeof e!="string"&&yr.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=hf(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&yr.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==u0(e)&&yr.throwArgumentError("bad icap checksum","address",e),t=Us(e.substring(4));t.length<40;)t="0"+t;t=hf("0x"+t)}else yr.throwArgumentError("invalid address","address",e);return t}const c0="properties/5.7.0";new z(c0);function wr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new z(ff);const l0=new Uint8Array(32);l0.fill(0),V.from(-1);const d0=V.from(0),p0=V.from(1);V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oe(p0.toHexString(),32),oe(d0.toHexString(),32);var se={},Q={},xr=lf;function lf(e,t){if(!e)throw new Error(t||"Assertion failed")}lf.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var Oi={exports:{}};typeof Object.create=="function"?Oi.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Oi.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var v0=xr,g0=Oi.exports;Q.inherits=g0;function m0(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function A0(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):m0(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Q.htonl=df;function y0(e,t){for(var r="",i=0;i>>0}return o}Q.join32=w0;function x0(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}Q.split32=x0;function M0(e,t){return e>>>t|e<<32-t}Q.rotr32=M0;function E0(e,t){return e<>>32-t}Q.rotl32=E0;function S0(e,t){return e+t>>>0}Q.sum32=S0;function N0(e,t,r){return e+t+r>>>0}Q.sum32_3=N0;function I0(e,t,r,i){return e+t+r+i>>>0}Q.sum32_4=I0;function _0(e,t,r,i,n){return e+t+r+i+n>>>0}Q.sum32_5=_0;function B0(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}Q.sum64=B0;function C0(e,t,r,i){var n=t+i>>>0,o=(n>>0}Q.sum64_hi=C0;function R0(e,t,r,i){var n=t+i;return n>>>0}Q.sum64_lo=R0;function O0(e,t,r,i,n,o,h,p){var A=0,v=t;v=v+i>>>0,A+=v>>0,A+=v>>0,A+=v>>0}Q.sum64_4_hi=O0;function P0(e,t,r,i,n,o,h,p){var A=t+i+o+p;return A>>>0}Q.sum64_4_lo=P0;function D0(e,t,r,i,n,o,h,p,A,v){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}Q.sum64_5_hi=D0;function F0(e,t,r,i,n,o,h,p,A,v){var w=t+i+o+p+v;return w>>>0}Q.sum64_5_lo=F0;function T0(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}Q.rotr64_hi=T0;function U0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.rotr64_lo=U0;function k0(e,t,r){return e>>>r}Q.shr64_hi=k0;function q0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.shr64_lo=q0;var or={},gf=Q,K0=xr;function qr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}or.BlockHash=qr,qr.prototype.update=function(t,r){if(t=gf.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=gf.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}ae.g0_256=Q0;function J0(e){return ue(e,17)^ue(e,19)^e>>>10}ae.g1_256=J0;var ar=Q,G0=or,Y0=ae,Pi=ar.rotl32,Mr=ar.sum32,V0=ar.sum32_5,W0=Y0.ft_1,yf=G0.BlockHash,X0=[1518500249,1859775393,2400959708,3395469782];function he(){if(!(this instanceof he))return new he;yf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ar.inherits(he,yf);var Z0=he;he.blockSize=512,he.outSize=160,he.hmacStrength=80,he.padLength=64,he.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),qa(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?A.push(y,S):A.push(S)}return A}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",A=0;A(S>>1)-1?C=(S>>1)-F:C=F,I.isubn(C)):C=0,y[N]=C,I.iushrn(1)}return y}r.getNAF=i;function n(A,v){var w=[[],[]];A=A.clone(),v=v.clone();for(var y=0,S=0,I;A.cmpn(-y)>0||v.cmpn(-S)>0;){var N=A.andln(3)+y&3,C=v.andln(3)+S&3;N===3&&(N=-1),C===3&&(C=-1);var F;N&1?(I=A.andln(7)+y&7,(I===3||I===5)&&C===2?F=-N:F=N):F=0,w[0].push(F);var U;C&1?(I=v.andln(7)+S&7,(I===3||I===5)&&N===2?U=-C:U=C):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),A.iushrn(1),v.iushrn(1)}return w}r.getJSF=n;function o(A,v,w){var y="_"+v;A.prototype[v]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(A){return typeof A=="string"?r.toArray(A,"hex"):A}r.parseBytes=h;function p(A){return new K(A,"hex","le")}r.intFromLE=p}),Hr=Gt.getNAF,La=Gt.getJSF,Lr=Gt.assert;function Ce(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ze=Ce;Ce.prototype.point=function(){throw new Error("Not implemented")},Ce.prototype.validate=function(){throw new Error("Not implemented")},Ce.prototype._fixedNafMul=function(t,r){Lr(t.precomputed);var i=t._getDoubles(),n=Hr(r,1,this._bitLength),o=(1<=p;v--)A=(A<<1)+n[v];h.push(A)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;A--){for(var v=0;A>=0&&h[A]===0;A--)v++;if(A>=0&&v++,p=p.dblp(v),A<0)break;var w=h[A];Lr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Ce.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,A=this._wnafT3,v=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,C=w;if(h[N]!==1||h[C]!==1){A[N]=Hr(i[N],h[N],this._bitLength),A[C]=Hr(i[C],h[C],this._bitLength),v=Math.max(A[N].length,v),v=Math.max(A[C].length,v);continue}var F=[r[N],null,null,r[C]];r[N].y.cmp(r[C].y)===0?(F[1]=r[N].add(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg())):r[N].y.cmp(r[C].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].add(r[C].neg())):(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],J=La(i[N],i[C]);for(v=Math.max(J[0].length,v),A[N]=new Array(v),A[C]=new Array(v),y=0;y=0;w--){for(var Pt=0;w>=0;){var W=!0;for(y=0;y=0&&Pt++,H=H.dblp(Pt),w<0)break;for(y=0;y0?S=p[y][Rt-1>>1]:Rt<0&&(S=p[y][-Rt-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},$t.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=v,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},te.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),A=h.mul(n.a),v=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(A),S=v.add(w).neg();return{k1:y,k2:S}},te.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},te.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},te.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Ft.prototype.isInfinity=function(){return this.inf},Ft.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Ft.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Ft.prototype.getX=function(){return this.x.fromRed()},Ft.prototype.getY=function(){return this.y.fromRed()},Ft.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ft.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Ft.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Ft.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ft.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Tt(e,t,r,i){Ze.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}qi(Tt,Ze.BasePoint),te.prototype.jpoint=function(t,r,i){return new Tt(this,t,r,i)},Tt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Tt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Tt.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),A=n.redSub(o),v=h.redSub(p);if(A.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=A.redSqr(),y=w.redMul(A),S=n.redMul(w),I=v.redSqr().redIAdd(y).redISub(S).redISub(S),N=v.redMul(S.redISub(I)).redISub(h.redMul(y)),C=this.z.redMul(t.z).redMul(A);return this.curve.jpoint(I,N,C)},Tt.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),A=o.redSub(h);if(p.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=p.redSqr(),w=v.redMul(p),y=i.redMul(v),S=A.redSqr().redIAdd(w).redISub(y).redISub(y),I=A.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Tt.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Tt.prototype.inspect=function(){return this.isInfinity()?"":""},Tt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var zr=lr(function(e,t){var r=t;r.base=Ze,r.short=ja,r.mont=null,r.edwards=null}),jr=lr(function(e,t){var r=t,i=Gt.assert;function n(p){p.type==="short"?this.curve=new zr.short(p):p.type==="edwards"?this.curve=new zr.edwards(p):this.curve=new zr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,A){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var v=new n(A);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:v}),v}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:se.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:se.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:se.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:se.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:se.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:se.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=fe.toArray(e.entropy,e.entropyEnc||"hex"),r=fe.toArray(e.nonce,e.nonceEnc||"hex"),i=fe.toArray(e.pers,e.persEnc||"hex");ki(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Ff=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=fe.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var Qa=Gt.assert;function Qr(e,t){if(e instanceof Qr)return e;this._importDER(e,t)||(Qa(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var Jr=Qr;function Ja(){this.place=0}function Li(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Tf(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Qr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Tf(r),i=Tf(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];zi(n,r.length),n=n.concat(r),n.push(2),zi(n,i.length);var o=n.concat(i),h=[48];return zi(h,o.length),h=h.concat(o),Gt.encode(h,t)};var Ga=function(){throw new Error("unsupported")},Uf=Gt.assert;function ee(e){if(!(this instanceof ee))return new ee(e);typeof e=="string"&&(Uf(Object.prototype.hasOwnProperty.call(jr,e),"Unknown curve "+e),e=jr[e]),e instanceof jr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var Ya=ee;ee.prototype.keyPair=function(t){return new Hi(this,t)},ee.prototype.keyFromPrivate=function(t,r){return Hi.fromPrivate(this,t,r)},ee.prototype.keyFromPublic=function(t,r){return Hi.fromPublic(this,t,r)},ee.prototype.genKeyPair=function(t){t||(t={});for(var r=new Ff({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Ga(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},ee.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},ee.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),A=new Ff({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),v=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(A.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(v)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var C=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(C=C.umod(this.n),C.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&C.cmp(this.nh)>0&&(C=this.n.sub(C),F^=1),new Jr({r:N,s:C,recoveryParam:F})}}}}}},ee.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new Jr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),A=p.mul(t).umod(this.n),v=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},ee.prototype.recoverPubKey=function(e,t,r,i){Uf((3&r)===r,"The recovery param is more than two bits"),t=new Jr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,A=r&1,v=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?h=this.curve.pointFromX(h.add(this.curve.n),A):h=this.curve.pointFromX(h,A);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},ee.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new Jr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var Va=lr(function(e,t){var r=t;r.version="6.5.4",r.utils=Gt,r.rand=function(){throw new Error("unsupported")},r.curve=zr,r.curves=jr,r.ec=Ya,r.eddsa=null}),Wa=Va.ec;const Xa="signing-key/5.7.0",ji=new z(Xa);let Qi=null;function ve(){return Qi||(Qi=new Wa("secp256k1")),Qi}class Za{constructor(t){wr(this,"curve","secp256k1"),wr(this,"privateKey",Kt(t)),Os(this.privateKey)!==32&&ji.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=ve().keyFromPrivate(Ot(this.privateKey));wr(this,"publicKey","0x"+r.getPublic(!1,"hex")),wr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),wr(this,"_isSigningKey",!0)}_addPoint(t){const r=ve().keyFromPublic(Ot(this.publicKey)),i=ve().keyFromPublic(Ot(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=Ot(t);i.length!==32&&ji.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return Jn({recoveryParam:n.recoveryParam,r:oe("0x"+n.r.toString(16),32),s:oe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=ve().keyFromPublic(Ot(kf(t)));return oe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function $a(e,t){const r=Jn(t),i={r:Ot(r.r),s:Ot(r.s)};return"0x"+ve().recoverPubKey(Ot(e),i,r.recoveryParam).encode("hex",!1)}function kf(e,t){const r=Ot(e);if(r.length===32){const i=new Za(r);return t?"0x"+ve().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Kt(r):"0x"+ve().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+ve().keyFromPublic(r).getPublic(!0,"hex"):Kt(r)}return ji.throwArgumentError("invalid public or private key","key","[REDACTED]")}const tu="transactions/5.7.0";new z(tu);var qf;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(qf||(qf={}));function eu(e){const t=kf(e);return h0(Qn(Si(Qn(t,1)),12))}function ru(e,t){return eu($a(Ot(e),t))}const iu="https://rpc.walletconnect.com/v1";async function Kf(e,t,r,i,n,o){switch(r.t){case"eip191":return Hf(e,t,r.s);case"eip1271":return await Lf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Hf(e,t,r){return ru(uf(t),r).toLowerCase()===e.toLowerCase()}async function Lf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",A="0000000000000000000000000000000000000000000000000000000000000041",v=r.substring(2),w=uf(t).substring(2),y=h+w+p+A+v,S=await fetch(`${o||iu}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:nu(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function nu(){return Date.now()+Math.floor(Math.random()*1e3)}var fu=Object.defineProperty,ou=Object.defineProperties,su=Object.getOwnPropertyDescriptors,zf=Object.getOwnPropertySymbols,au=Object.prototype.hasOwnProperty,uu=Object.prototype.propertyIsEnumerable,jf=(e,t,r)=>t in e?fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ji=(e,t)=>{for(var r in t||(t={}))au.call(t,r)&&jf(e,r,t[r]);if(zf)for(var r of zf(t))uu.call(t,r)&&jf(e,r,t[r]);return e},Qf=(e,t)=>ou(e,su(t));const hu="did:pkh:",Gr=e=>e?.split(":"),Gi=e=>{const t=e&&Gr(e);if(t)return e.includes(hu)?t[3]:t[1]},cu=e=>{const t=e&&Gr(e);if(t)return t[2]+":"+t[3]},Yi=e=>{const t=e&&Gr(e);if(t)return t.pop()};async function lu(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=Jf(n,n.iss),h=Yi(n.iss);return await Kf(h,o,i,Gi(n.iss),r)}const Jf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=Yi(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${Gi(t)}`,A=`Nonce: ${e.nonce}`,v=`Issued At: ${e.iat}`,w=e.exp?`Expiration Time: ${e.exp}`:void 0,y=e.nbf?`Not Before: ${e.nbf}`:void 0,S=e.requestId?`Request ID: ${e.requestId}`:void 0,I=e.resources?`Resources:${e.resources.map(C=>` -+- ${C}`).join("")}`:void 0,N=Vr(e.resources);if(N){const C=Oe(N);n=Xi(n,C)}return[r,i,"",n,"",o,h,p,A,v,w,y,S,I].filter(C=>C!=null).join(` -+`)};function du(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function pu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=wi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const A=Gf(r.resources);if(!A)return r;ge(A);const v=Yf(A,"eip155");let w=r?.resources||[];if(v!=null&&v.length){const y=Vf(v),S=wi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=Vi("request",S,{chains:p}),N=$f(A,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(Yr(N))}return Qf(Ji({},r),{statement:eo(o,Vr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function Gf(e){const t=Vr(e);if(t&&Wi(t))return Oe(t)}function vu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Yf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function gu(e){return e?.map(t=>Object.keys(t))||[]}function Vf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Wf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function Xf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function ge(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Zf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:Vi(t,r,i)}}}function $f(e,t,r){var i;return e.att[t]=Ji({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function Vi(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function Yr(e){return ge(e),`urn:recap:${Wf(e).replace(/=/g,"")}`}function Oe(e){const t=Xf(e.replace("urn:recap:",""));return ge(t),t}function mu(e,t,r){const i=Zf(e,t,r);return Yr(i)}function Wi(e){return e&&e.includes("urn:recap:")}function Au(e,t){const r=Oe(e),i=Oe(t),n=to(r,i);return Yr(n)}function to(e,t){ge(e),ge(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,A)=>p.localeCompare(A)).forEach(p=>{var A,v;i.att[n]=Qf(Ji({},i.att[n]),{[p]:((A=e.att[n])==null?void 0:A[p])||((v=t.att[n])==null?void 0:v[p])})})}),i}function Xi(e="",t){ge(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const A=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));A.sort((y,S)=>y.action.localeCompare(S.action));const v={};A.forEach(y=>{v[y.ability]||(v[y.ability]=[]),v[y.ability].push(y.action)});const w=Object.keys(v).map(y=>(n++,`(${n}) '${y}': '${v[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function bu(e){var t;const r=Oe(e);ge(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function yu(e){const t=Oe(e);ge(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function eo(e,t){if(!t)return e;const r=Oe(t);return ge(r),Xi(e,r)}function Vr(e){if(!e)return;const t=e?.[e.length-1];return Wi(t)?t:void 0}const Zi="base10",Lt="base16",$i="base64pad",wu="base64url",dr="utf8",tn=0,pr=1,Sr=2,xu=0,ro=1,Nr=12,en=32;function Mu(){const e=gn.generateKeyPair();return{privateKey:Qt(e.secretKey,Lt),publicKey:Qt(e.publicKey,Lt)}}function Eu(){const e=Cr(en);return Qt(e,Lt)}function Su(e,t){const r=gn.sharedKey(Xt(e,Lt),Xt(t,Lt),!0),i=new Ko(pn,r).expand(en);return Qt(i,Lt)}function Nu(e){const t=vn(Xt(e,Lt));return Qt(t,Lt)}function Iu(e){const t=vn(Xt(e,dr));return Qt(t,Lt)}function rn(e){return Xt(`${e}`,Zi)}function $e(e){return Number(Qt(e,Zi))}function _u(e){const t=rn(typeof e.type<"u"?e.type:tn);if($e(t)===pr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?Xt(e.senderPublicKey,Lt):void 0,i=typeof e.iv<"u"?Xt(e.iv,Lt):Cr(Nr),n=new dn(Xt(e.symKey,Lt)).seal(i,Xt(e.message,dr));return nn({type:t,sealed:n,iv:i,senderPublicKey:r,encoding:e.encoding})}function Bu(e,t){const r=rn(Sr),i=Cr(Nr),n=Xt(e,dr);return nn({type:r,sealed:n,iv:i,encoding:t})}function Cu(e){const t=new dn(Xt(e.symKey,Lt)),{sealed:r,iv:i}=Wr({encoded:e.encoded,encoding:e?.encoding}),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return Qt(n,dr)}function Ru(e,t){const{sealed:r}=Wr({encoded:e,encoding:t});return Qt(r,dr)}function nn(e){const{encoding:t=$i}=e;if($e(e.type)===Sr)return Qt(vi([e.type,e.sealed]),t);if($e(e.type)===pr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Qt(vi([e.type,e.senderPublicKey,e.iv,e.sealed]),t)}return Qt(vi([e.type,e.iv,e.sealed]),t)}function Wr(e){const{encoded:t,encoding:r=$i}=e,i=Xt(t,r),n=i.slice(xu,ro),o=ro;if($e(n)===pr){const v=o+en,w=v+Nr,y=i.slice(o,v),S=i.slice(v,w),I=i.slice(w);return{type:n,sealed:I,iv:S,senderPublicKey:y}}if($e(n)===Sr){const v=i.slice(o),w=Cr(Nr);return{type:n,sealed:v,iv:w}}const h=o+Nr,p=i.slice(o,h),A=i.slice(h);return{type:n,sealed:A,iv:p}}function Ou(e,t){const r=Wr({encoded:e,encoding:t?.encoding});return io({type:$e(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?Qt(r.senderPublicKey,Lt):void 0,receiverPublicKey:t?.receiverPublicKey})}function io(e){const t=e?.type||tn;if(t===pr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function Pu(e){return e.type===pr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}function Du(e){return e.type===Sr}function no(e){return new Ho("p256").keyFromPublic({x:Buffer.from(e.x,"base64").toString("hex"),y:Buffer.from(e.y,"base64").toString("hex")},"hex")}function Fu(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");const r=t.length%4;return r>0&&(t+="=".repeat(4-r)),t}function Tu(e){return Buffer.from(Fu(e),"base64")}function Uu(e,t){const[r,i,n]=e.split("."),o=Tu(n);if(o.length!==64)throw new Error("Invalid signature length");const h=o.slice(0,32).toString("hex"),p=o.slice(32,64).toString("hex"),A=`${r}.${i}`,v=new pn().update(Buffer.from(A)).digest(),w=no(t),y=Buffer.from(v).toString("hex");if(!w.verify(y,{r:h,s:p}))throw new Error("Invalid signature");return Lo(e).payload}const fo="irn";function ku(e){return e?.relay||{protocol:fo}}function qu(e){const t=zo[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Ku=Object.defineProperty,Hu=Object.defineProperties,Lu=Object.getOwnPropertyDescriptors,oo=Object.getOwnPropertySymbols,zu=Object.prototype.hasOwnProperty,ju=Object.prototype.propertyIsEnumerable,so=(e,t,r)=>t in e?Ku(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ao=(e,t)=>{for(var r in t||(t={}))zu.call(t,r)&&so(e,r,t[r]);if(oo)for(var r of oo(t))ju.call(t,r)&&so(e,r,t[r]);return e},Qu=(e,t)=>Hu(e,Lu(t));function uo(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Ju(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Br.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:ho(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:uo(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function ho(e){return e.startsWith("//")?e.substring(2):e}function co(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Gu(e){return`${e.protocol}:${e.topic}@${e.version}?`+Br.stringify(ao(Qu(ao({symKey:e.symKey},co(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}function Yu(e,t,r){return`${e}?wc_ev=${r}&topic=${t}`}var Vu=Object.defineProperty,Wu=Object.defineProperties,Xu=Object.getOwnPropertyDescriptors,lo=Object.getOwnPropertySymbols,Zu=Object.prototype.hasOwnProperty,$u=Object.prototype.propertyIsEnumerable,po=(e,t,r)=>t in e?Vu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,th=(e,t)=>{for(var r in t||(t={}))Zu.call(t,r)&&po(e,r,t[r]);if(lo)for(var r of lo(t))$u.call(t,r)&&po(e,r,t[r]);return e},eh=(e,t)=>Wu(e,Xu(t));function tr(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function vo(e){const t=[];return Object.values(e).forEach(r=>{t.push(...tr(r.accounts))}),t}function go(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.methods)}),r}function mo(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.events)}),r}function rh(e,t){const r=_o(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function ih(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=on(t),o=on(r),h={};Object.keys(i).forEach(v=>{const w=i[v].chains,y=i[v].methods,S=i[v].events,I=i[v].accounts;w.forEach(N=>{if(!I.some(C=>C.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${v}`)}),h[v]={chains:w,methods:y,events:S,accounts:I}});const p=Co(t,h,"approve()");if(p)throw new Error(p.message);const A={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(v=>{const w=i[v].chains.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.chains)==null?void 0:F.includes(N)}),y=i[v].methods.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.methods)==null?void 0:F.includes(N)}),S=i[v].events.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[v].accounts.filter(C=>C.includes(`${N}:`))).flat();A[v]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(v=>{var w,y,S,I,N,C;if(!i[v])return;const F=(y=(w=o[v])==null?void 0:w.chains)==null?void 0:y.filter(G=>i[v].chains.includes(G)),U=i[v].methods.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.methods)==null?void 0:L.includes(G)}),J=i[v].events.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.events)==null?void 0:L.includes(G)}),Bt=F?.map(G=>i[v].accounts.filter(H=>H.includes(`${G}:`))).flat();A[v]={chains:me((S=A[v])==null?void 0:S.chains,F),methods:me((I=A[v])==null?void 0:I.methods,U),events:me((N=A[v])==null?void 0:N.events,J),accounts:me((C=A[v])==null?void 0:C.accounts,Bt)}}),A)}function fn(e){return e.includes(":")}function Ao(e){return fn(e)?e.split(":")[0]:e}function on(e){var t,r,i;const n={};if(!Xr(e))return n;for(const[o,h]of Object.entries(e)){const p=fn(o)?[o]:h.chains,A=h.methods||[],v=h.events||[],w=Ao(o);n[w]=eh(th({},n[w]),{chains:me(p,(t=n[w])==null?void 0:t.chains),methods:me(A,(r=n[w])==null?void 0:r.methods),events:me(v,(i=n[w])==null?void 0:i.events)})}return n}function bo(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function nh(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=bo(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=me(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const yo={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},wo={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function xe(e,t){const{message:r,code:i}=wo[e];return{message:t?`${r} ${t}`:r,code:i}}function er(e,t){const{message:r,code:i}=yo[e];return{message:t?`${r} ${t}`:r,code:i}}function Ir(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Xr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Pe(e){return typeof e>"u"}function Yt(e,t){return t&&Pe(e)?!0:typeof e=="string"&&!!e.trim().length}function Zr(e,t){return t&&Pe(e)?!0:typeof e=="number"&&!isNaN(e)}function fh(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return _e(n,i)?(i.forEach(h=>{const{accounts:p,methods:A,events:v}=e.namespaces[h],w=tr(p),y=r[h];(!_e(Or(h,y),w)||!_e(y.methods,A)||!_e(y.events,v))&&(o=!1)}),o):!1}function _r(e){return Yt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function xo(e){if(Yt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&_r(r)}}return!1}function oh(e){if(Yt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function sh(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function ah(e){return e?.topic}function uh(e,t){let r=null;return Yt(e?.publicKey,!1)||(r=xe("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function sn(e){let t=!0;return Ir(e)?e.length&&(t=e.every(r=>Yt(r,!1))):t=!1,t}function Mo(e,t,r){let i=null;return Ir(t)&&t.length?t.forEach(n=>{i||_r(n)||(i=er("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):_r(e)||(i=er("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Eo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=Mo(n,Or(n,o),`${t} ${r}`);h&&(i=h)}),i}function So(e,t){let r=null;return Ir(e)?e.forEach(i=>{r||xo(i)||(r=er("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=er("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function No(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=So(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function Io(e,t){let r=null;return sn(e?.methods)?sn(e?.events)||(r=er("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=er("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function an(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Io(i,`${t}, namespace`);n&&(r=n)}),r}function hh(e,t,r){let i=null;if(e&&Xr(e)){const n=an(e,t);n&&(i=n);const o=Eo(e,t,r);o&&(i=o)}else i=xe("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function _o(e,t){let r=null;if(e&&Xr(e)){const i=an(e,t);i&&(r=i);const n=No(e,t);n&&(r=n)}else r=xe("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function Bo(e){return Yt(e.protocol,!0)}function ch(e,t){let r=!1;return t&&!e?r=!0:e&&Ir(e)&&e.length&&e.forEach(i=>{r=Bo(i)}),r}function lh(e){return typeof e=="number"}function dh(e){return typeof e<"u"&&typeof e!==null}function ph(e){return!(!e||typeof e!="object"||!e.code||!Zr(e.code,!1)||!e.message||!Yt(e.message,!1))}function vh(e){return!(Pe(e)||!Yt(e.method,!1))}function gh(e){return!(Pe(e)||Pe(e.result)&&Pe(e.error)||!Zr(e.id,!1)||!Yt(e.jsonrpc,!1))}function mh(e){return!(Pe(e)||!Yt(e.name,!1))}function Ah(e,t){return!(!_r(t)||!vo(e).includes(t))}function bh(e,t,r){return Yt(r,!1)?go(e,t).includes(r):!1}function yh(e,t,r){return Yt(r,!1)?mo(e,t).includes(r):!1}function Co(e,t,r){let i=null;const n=wh(e),o=xh(t),h=Object.keys(n),p=Object.keys(o),A=Ro(Object.keys(e)),v=Ro(Object.keys(t)),w=A.filter(y=>!v.includes(y));return w.length&&(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. -+ Required: ${w.toString()} -+ Received: ${Object.keys(t).toString()}`)),_e(h,p)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. -+ Required: ${h.toString()} -+ Approved: ${p.toString()}`)),Object.keys(t).forEach(y=>{if(!y.includes(":")||i)return;const S=tr(t[y].accounts);S.includes(y)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${y} -+ Required: ${y} -+ Approved: ${S.toString()}`))}),h.forEach(y=>{i||(_e(n[y].methods,o[y].methods)?_e(n[y].events,o[y].events)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function wh(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function Ro(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function xh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=tr(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function Mh(e,t){return Zr(e,!1)&&e<=t.max&&e>=t.min}function Eh(){const e=We();return new Promise(t=>{switch(e){case qt.browser:t(Oo());break;case qt.reactNative:t(Po());break;case qt.node:t(Do());break;default:t(!0)}})}function Oo(){return gr()&&navigator?.onLine}async function Po(){if(rr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Do(){return!0}function Sh(e){switch(We()){case qt.browser:Fo(e);break;case qt.reactNative:To(e);break;case qt.node:break}}function Fo(e){!rr()&&gr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function To(e){rr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const un={};class Nh{static get(t){return un[t]}static set(t,r){un[t]=r}static delete(t){delete un[t]}}export{Zi as BASE10,Lt as BASE16,$i as BASE64,wu as BASE64URL,Zo as COLON,Ai as DEFAULT_DEPTH,Pr as EMPTY_SPACE,qt as ENV_MAP,wo as INTERNAL_ERRORS,Nh as MemoryStore,$o as ONE_THOUSAND,Nn as REACT_NATIVE_PRODUCT,fo as RELAYER_DEFAULT_PROTOCOL,yo as SDK_ERRORS,_n as SDK_TYPE,In as SLASH,tn as TYPE_0,pr as TYPE_1,Sr as TYPE_2,dr as UTF8,$f as addResourceToRecap,Bn as appendToQueryString,fs as assertType,Vi as assignAbilityToActions,Xf as base64Decode,Wf as base64Encode,ih as buildApprovedNamespaces,du as buildAuthObject,nh as buildNamespacesFromAuth,eo as buildRecapStatement,ms as calcExpiry,cs as capitalize,Fn as capitalizeWord,ls as createDelayedPromise,mu as createEncodedRecap,ds as createExpiringPromise,Zf as createRecap,Oe as decodeRecap,$e as decodeTypeByte,Ru as decodeTypeTwoEnvelope,Cu as decrypt,Su as deriveSymKey,Wr as deserialize,Yr as encodeRecap,rn as encodeTypeByte,Bu as encodeTypeTwoEnvelope,_u as encrypt,bs as engineEvent,hs as enumify,bn as formatAccountId,jo as formatAccountWithChain,An as formatChainId,yi as formatExpirerTarget,vs as formatIdTarget,Jf as formatMessage,os as formatMessageContext,co as formatRelayParams,is as formatRelayRpcUrl,Xi as formatStatementFromRecap,ps as formatTopicTarget,On as formatUA,Gu as formatUri,Mu as generateKeyPair,Eu as generateRandomBytes32,tr as getAccountsChains,Jo as getAccountsFromNamespaces,yn as getAddressFromAccount,Qo as getAddressesFromAccounts,es as getAppMetadata,Oo as getBrowserOnlineStatus,ts as getBundleId,wn as getChainFromAccount,xn as getChainsFromAccounts,Or as getChainsFromNamespace,Go as getChainsFromNamespaces,yu as getChainsFromRecap,Yo as getChainsFromRequiredNamespaces,wi as getCommonValuesInArrays,no as getCryptoKeyFromKeyData,Gf as getDecodedRecapFromResources,ws as getDeepLink,Yi as getDidAddress,Gr as getDidAddressSegments,Gi as getDidChainId,We as getEnvironment,ns as getHttpUrl,xe as getInternalError,Rn as getJavascriptID,Cn as getJavascriptOS,Dn as getLastItems,Yu as getLinkModeURL,bu as getMethodsFromRecap,cu as getNamespacedDidChainId,vo as getNamespacesChains,mo as getNamespacesEventsForChainId,bo as getNamespacesFromAccounts,go as getNamespacesMethodsForChainId,Do as getNodeOnlineStatus,Vf as getReCapActions,Po as getReactNativeOnlineStatus,gu as getRecapAbilitiesFromResource,Vr as getRecapFromResources,Yf as getRecapResource,rs as getRelayClientMetadata,qu as getRelayProtocolApi,ku as getRelayProtocolName,rh as getRequiredNamespacesFromNamespaces,er as getSdkError,xs as getSearchParamFromURL,mi as getUniqueValues,ys as handleDeeplinkRedirect,_e as hasOverlap,Nu as hashKey,Iu as hashMessage,gr as isBrowser,fn as isCaipNamespace,Co as isConformingNamespaces,As as isExpired,bi as isNode,Eh as isOnline,sh as isProposalStruct,rr as isReactNative,Wi as isRecap,fh as isSessionCompatible,ah as isSessionStruct,Pu as isTypeOneEnvelope,Du as isTypeTwoEnvelope,Pe as isUndefined,xo as isValidAccountId,So as isValidAccounts,Io as isValidActions,Ir as isValidArray,_r as isValidChainId,Mo as isValidChains,uh as isValidController,Lf as isValidEip1271Signature,Hf as isValidEip191Signature,ph as isValidErrorReason,mh as isValidEvent,lh as isValidId,No as isValidNamespaceAccounts,an as isValidNamespaceActions,Eo as isValidNamespaceChains,sn as isValidNamespaceMethodsOrEvents,_o as isValidNamespaces,Ah as isValidNamespacesChainId,yh as isValidNamespacesEvent,bh as isValidNamespacesRequest,Zr as isValidNumber,Xr as isValidObject,dh as isValidParams,ge as isValidRecap,Bo as isValidRelay,ch as isValidRelays,vh as isValidRequest,Mh as isValidRequestExpiry,hh as isValidRequiredNamespaces,gh as isValidResponse,Yt as isValidString,oh as isValidUrl,us as mapEntries,ss as mapToObj,me as mergeArrays,Au as mergeEncodedRecaps,to as mergeRecaps,on as normalizeNamespaces,as as objToMap,gi as parseAccountId,mn as parseChainId,Pn as parseContextNames,gs as parseExpirerTarget,Ao as parseNamespaceKey,uo as parseRelayParams,ho as parseTopic,Ju as parseUri,pu as populateAuthPayload,vu as recapHasResource,nn as serialize,Fo as subscribeToBrowserNetworkChange,Sh as subscribeToNetworkChange,To as subscribeToReactNativeNetworkChange,Ms as uuidv4,Ou as validateDecoding,io as validateEncoding,lu as validateSignedCacao,Uu as verifyP256Jwt,Kf as verifySignature}; -+//# sourceMappingURL=index.es.js.map -diff --git a/node_modules/@walletconnect/utils/dist/index.es.js.map b/node_modules/@walletconnect/utils/dist/index.es.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..1eeba5f0a497cd2413ea5f8a874b75483ee9d6f4 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.es.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.es.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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jB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAA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GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI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AG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CA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CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;KACd,WAAW,GAAG,UAAU,CAAC;IAC1B;AACH;GACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;KACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;KAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C;AACA;AACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;OACrB,OAAO,GAAG,CAAC,CAAC;AAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;OACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;SAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;AAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;SACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;AACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;SACzB,MAAM,IAAI,SAAS,CAAC;QACrB;OACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;OACrB,KAAK,GAAG,MAAM,CAAC;OACf,MAAM,GAAG,OAAO,CAAC;MAClB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3B,MAAK,MAAM;AACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;MACd;AACL;AACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IACrB;AACH;GACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACvC;AACA;AACA;KACI,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC;AACH;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;KAC7C,IAAI,GAAG,CAAC;KACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;OAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;OACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;OACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,MAAK,MAAM;OACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MAClC;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AAqMJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;OAC/C,KAAK,KAAK,EAAE,CAAC;OACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;AACnC;AACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;OACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;MAChC;AACL;AACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;AACL;KACI,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;KACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;AACA;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;KACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;OAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;MACvB;AACL;AACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;OAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;SACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;SACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB;MACF;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;KAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;KACrD,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;AACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;SAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/B;AACP;OACM,IAAI,KAAK,EAAE;SACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;MACF;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC;AACP;OACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;AACP;AACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;MAClB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AAC7C;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;AAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;KAC9C,IAAI,CAAC,CAAC;KACN,IAAI,IAAI,EAAE;OACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACpC,MAAK,MAAM;OACL,CAAC,GAAG,CAAC,CAAC;MACP;AACL;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;KACI,CAAC,IAAI,CAAC,CAAC;KACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;AACA;KACI,IAAI,WAAW,EAAE;AACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC;AACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;MACxB;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC;AACP,MAAK,MAAM;OACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;KACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;OAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;AACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;MACrB;AACL;AACA;AACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;OAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;MACjD;AACL;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;OACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;MACjB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7D;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;KACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;AACA;KACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;AACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;KAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;KAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;KACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;OACpB,OAAO,IAAI,CAAC;MACb;AACL;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;OACX,CAAC,EAAE,CAAC;MACL;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;MACrC;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;KACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;AAC3D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACP;AACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;AACA;KACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;OAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;OAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;SACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAO,MAAM;SACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrB;MACF;AACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;OAClB,OAAO,IAAI,CAAC;MACb;AACL;KACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACxB,MAAK,MAAM;AACX;OACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;SACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACxB;MACF;AACL;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;AACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;KACI,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;KACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;KAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;KAC7B,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;KACI,IAAI,CAAC,CAAC;AACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;AACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MACvC;KACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MACvC;AACL;KACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1C;AACA;AACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB,KAAK,GAAG,CAAC,CAAC;AACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;OAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;MAC/B;AACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;AACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;KACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;AACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACjC;AACL;AACA;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;KAC5B,IAAI,CAAC,CAAC;AACV;AACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;OACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB;MACF;AACL;AACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;OACvB,CAAC,GAAG,IAAI,CAAC;OACT,IAAI,CAAC,EAAE;SACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB;MACF;AACL;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;AACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;AACA;AACA;AACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;OACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACvB,EAAE,EAAE,CAAC;AACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;SACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;UACjB;QACF;OACD,IAAI,CAAC,EAAE;SACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB;MACF;KACD,IAAI,CAAC,EAAE;AACX,OAAM,CAAC,CAAC,MAAM,EAAE,CAAC;MACZ;AACL,KAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACf;AACA;KACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;MACjB;AACL;AACA,KAAI,OAAO;AACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;OACd,GAAG,EAAE,CAAC;AACZ,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACvB,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB,QAAO,CAAC;MACH;AACL;AACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB;AACP;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACf;QACF;AACP;AACA,OAAM,OAAO;SACL,GAAG,EAAE,GAAG;SACR,GAAG,EAAE,GAAG;AAChB,QAAO,CAAC;MACH;AACL;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB;AACP;AACA,OAAM,OAAO;SACL,GAAG,EAAE,GAAG;AAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;AACpB,QAAO,CAAC;MACH;AACL;KACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;AAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;SAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UACf;QACF;AACP;AACA,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;SACZ,GAAG,EAAE,GAAG;AAChB,QAAO,CAAC;MACH;AACL;AACA;AACA;AACA;AACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACvD,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACd,GAAG,EAAE,IAAI;AACjB,QAAO,CAAC;MACH;AACL;AACA;AACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1B,SAAQ,OAAO;AACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;WAC5B,GAAG,EAAE,IAAI;AACnB,UAAS,CAAC;QACH;AACP;AACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1B,SAAQ,OAAO;WACL,GAAG,EAAE,IAAI;AACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,UAAS,CAAC;QACH;AACP;AACA,OAAM,OAAO;AACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAO,CAAC;MACH;AACL;KACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AAC7C,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;KAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;AACA;AACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;KACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;KACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AAC1D;AACA;KACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;KACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;MAC7C;AACL;AACA,KAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AACjC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;AACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;MACjB;AACL;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;KACd,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;OACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;MACf;AACL;AACA;KACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;AACA;KACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;KACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACZ,EAAE,CAAC,CAAC;MACL;AACL;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;AACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;AACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;WACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ;AACX;AACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;QACF;AACP;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;WACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ;AACX;AACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;QACF;AACP;OACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,QAAO,MAAM;AACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX;MACF;AACL;AACA,KAAI,OAAO;OACL,CAAC,EAAE,CAAC;OACJ,CAAC,EAAE,CAAC;AACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;AACA;AACA;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;KACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;KACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;OACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;MACf;AACL;KACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;AACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB;AACX;AACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACd;QACF;AACP;AACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;AAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB;AACX;AACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACd;QACF;AACP;OACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,QAAO,MAAM;AACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb;MACF;AACL;KACI,IAAI,GAAG,CAAC;KACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;OACnB,GAAG,GAAG,EAAE,CAAC;AACf,MAAK,MAAM;OACL,GAAG,GAAG,EAAE,CAAC;MACV;AACL;KACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACb;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;KACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;AACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;AACA;AACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;AAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;AACL;AACA,KAAI,GAAG;AACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;AACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACP;OACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB;AACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;SACV,CAAC,GAAG,CAAC,CAAC;SACN,CAAC,GAAG,CAAC,CAAC;AACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7C,SAAQ,MAAM;QACP;AACP;AACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACX,QAAQ,IAAI,EAAE;AACnB;AACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;KACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;AACA;AACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;OACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;OACnB,OAAO,IAAI,CAAC;MACb;AACL;AACA;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1B,CAAC,IAAI,KAAK,CAAC;AACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;OACjB,CAAC,IAAI,SAAS,CAAC;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACnB;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;MACf;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACpD,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;KAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;KACI,IAAI,GAAG,CAAC;AACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;OACnB,GAAG,GAAG,CAAC,CAAC;AACd,MAAK,MAAM;OACL,IAAI,QAAQ,EAAE;AACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;QACZ;AACP;OACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;OACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;MACxC;AACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;KACzC,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;KACzC,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAC1C;KACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;AACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;OACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;AACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;AAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;AACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;AACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;SAChB,GAAG,GAAG,CAAC,CAAC;QACT;AACP,OAAM,MAAM;MACP;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;KACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;KACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;KAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;KAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;KACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;AACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KACf,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;KAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;AAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;KAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;KAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;KACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;KACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;KACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAG,CAAC;AACJ;GACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;AAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;KAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA;GACE,IAAI,MAAM,GAAG;KACX,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,IAAI,EAAE,IAAI;KACV,MAAM,EAAE,IAAI;AAChB,IAAG,CAAC;AACJ;AACA;AACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;AAC5B;AACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;KACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACxB;AACH;GACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;KACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KAC9C,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;AACpD;AACA;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;KACZ,IAAI,IAAI,CAAC;AACb;AACA,KAAI,GAAG;OACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;OACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;AAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;KACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;OACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;OAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;AACjC;AACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;AAClB,QAAO,MAAM;AACb;AACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACZ;MACF;AACL;KACI,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACjC,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;KAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,yEAAyE,CAAC,CAAC;IAC9E;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AACxD;AACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;AACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAClC;AACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;AACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;OACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,OAAM,OAAO;MACR;AACL;AACA;KACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;AACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;OAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;OAC3D,IAAI,GAAG,IAAI,CAAC;MACb;KACD,IAAI,MAAM,EAAE,CAAC;KACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;KAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;AACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;MACnB;AACL,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAC9C;KACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;AACA;AACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;OACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;OAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;AACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;MACxC;AACL;AACA;AACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;MACF;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,gEAAgE,CAAC,CAAC;IACrE;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;GACE,SAAS,IAAI,IAAI;KACf,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,MAAM;OACN,uDAAuD,CAAC,CAAC;IAC5D;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;GACE,SAAS,MAAM,IAAI;AACrB;KACI,MAAM,CAAC,IAAI;AACf,OAAM,IAAI;AACV,OAAM,OAAO;OACP,qEAAqE,CAAC,CAAC;IAC1E;AACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;GACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;AAChD;AACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;AACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;OACxB,EAAE,MAAM,EAAE,CAAC;AACjB;OACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;OAClB,KAAK,GAAG,EAAE,CAAC;MACZ;AACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;MACjC;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;GACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;AACpC;KACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;KACI,IAAI,KAAK,CAAC;AACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;AAC3B,MAAK,MAAM;OACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;MAC1C;AACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;KACI,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;AACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;OACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,MAAK,MAAM;OACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;MACnB;IACF;AACH;GACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;KAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;KAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;AACrD,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;AACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;AAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;OAC7B,iCAAiC,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE;AACA,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACxC,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;AACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;MAClB;AACL;AACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;KACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MAClB;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;KACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;KACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;AACA;AACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;OACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;MACzB;AACL;AACA;AACA;AACA;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;OACtC,CAAC,EAAE,CAAC;AACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACb;KACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA;AACA;AACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;AACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;MACjB;AACL;KACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;KACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;AAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACpB;AACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;OACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;OACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAChB,CAAC,GAAG,CAAC,CAAC;MACP;AACL;KACI,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;KACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;OACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACrC,MAAK,MAAM;AACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MACvB;AACL,IAAG,CAAC;AACJ;AACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;AACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;KACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;AACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;MAClC;AACL;AACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;AACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;KACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;AACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;OACf,KAAK,GAAG,EAAE,CAAC;MACZ;AACL;AACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;OACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;WAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACrB;AACT;SACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;WAC9B,UAAU,GAAG,CAAC,CAAC;AACzB,WAAU,SAAS;UACV;AACT;SACQ,OAAO,KAAK,CAAC,CAAC;SACd,OAAO,IAAI,GAAG,CAAC;SACf,UAAU,EAAE,CAAC;AACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;AACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;SAClC,UAAU,GAAG,CAAC,CAAC;SACf,OAAO,GAAG,CAAC,CAAC;QACb;OACD,KAAK,GAAG,EAAE,CAAC;MACZ;AACL;KACI,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;KACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;KACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,IAAG,CAAC;AACJ;GACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;AACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;KACf,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;GACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,IAAG,CAAC;AACJ;AACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;KAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;KACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;AAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;MACtC;AACL;AACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;KACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC;AACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;GACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;AACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;AAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;KACb,OAAO,CAAC,CAAC;AACb,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;KACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;OAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;OACb,OAAO,CAAC,CAAC;MACV;AACL;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;KACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB;AACL;AACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;KACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;KACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;KACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;OACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;OACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;MACtB;AACL;AACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;AACJ;GACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;AAC1C;KACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAG,CAAC;EACH,EAAmC,MAAM,EAAEC,cAAI,CAAC,CAAA;;;;;AC19G1C,MAAMrE,SAAO,GAAG,iBAAiB;;ACSxC,IAAI,EAAE,GAAGsE,IAAG,CAAC,EAAE,CAAC;AAIhB,MAAMF,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC,MAAMuE,mBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAC3B,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;AAC1D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACpE,QAAQ,WAAW,CAAC,KAAK,CAAC;AAC1B,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC;AACrC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC;AACD;AACA,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAC1B,MAAM,SAAS,CAAC;AACvB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;AACvC,QAAQ,IAAI,gBAAgB,KAAKA,mBAAiB,EAAE;AACpD,YAAYH,QAAM,CAAC,UAAU,CAAC,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC3H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,GAAG,GAAG;AACV,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AACxB,YAAYI,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAYA,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;AAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACtC,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAYA,YAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,QAAQ,OAAOJ,QAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/G,YAAY,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AAClC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,GAAG;AACf;AACA,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AACrC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC3C,oBAAoB,oBAAoB,GAAG,IAAI,CAAC;AAChD,oBAAoBA,QAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AACzG,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAC1C,gBAAgBA,QAAM,CAAC,UAAU,CAAC,gFAAgF,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC3J,aAAa;AACb,iBAAiB;AACjB,gBAAgBA,QAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC1H,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE;AAChB,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9D,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,YAAY,SAAS,EAAE;AACxC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACjD,gBAAgB,OAAO,IAAI,SAAS,CAACG,mBAAiB,EAAEE,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC3C,gBAAgB,OAAO,IAAI,SAAS,CAACF,mBAAiB,EAAEE,OAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9E,aAAa;AACb,YAAY,OAAOL,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3B,gBAAgBI,YAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;AACzD,gBAAgBA,YAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAChE,aAAa;AACb,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AAC5C,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB;AACA,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;AACtC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAoB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;AACxC;AACA,gBAAgB,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;AAClE,oBAAoB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACvC,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAoB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,wBAAwB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAOJ,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;AAC9B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/C,KAAK;AACL,CAAC;AACD;AACA,SAASK,OAAK,CAAC,KAAK,EAAE;AACtB;AACA,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAQ,OAAOA,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC1B;AACA,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC9B,YAAYL,QAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrE,SAAS;AACT;AACA,QAAQ,KAAK,GAAGK,OAAK,CAAC,KAAK,CAAC,CAAC;AAC7B;AACA,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;AAC9B,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT;AACA,QAAQ,OAAO,GAAG,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACxC,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;AACxB,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;AACjE,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AACD,SAAS,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACpD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxB,QAAQ,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACpD,KAAK;AACL,IAAI,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AACD,SAASD,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAOJ,QAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AACD;AACO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5C;;ACvSA,MAAMA,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AAEnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM0E,MAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC1D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAON,QAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AACD;AACA,IAAI,KAAK,GAAG,GAAG,CAAC;AAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;AAC3B,IAAI,KAAK,IAAI,KAAK,CAAC;AACnB,CAAC;AACD;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAQ,IAAI;AACZ,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE,GAAG;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC/F,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;AACpD,KAAK;AACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnF,CAAC;AACM,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAACM,MAAI,CAAC,CAAC;AACpC,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL;AACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;AACnD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,QAAQ,KAAK,GAAG,KAAK,CAAC;AACtB,KAAK;AACL,SAAS;AACT,QAAQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACM,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC5C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC/C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpE,QAAQN,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACrD,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;AACvB,QAAQA,QAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,KAAK,GAAG,GAAG,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAClD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,QAAQ,UAAU,CAAC,uCAAuC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACvF,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;AACzB,QAAQ,QAAQ,GAAG,GAAG,CAAC;AACvB,KAAK;AACL;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD,QAAQ,QAAQ,IAAI,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9D,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACM,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3D,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3F,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE;AAC1C,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,KAAK,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE,CAEtB;AACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;AACzC,gBAAgB,MAAM,GAAG,KAAK,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC1E,gBAAgB,IAAI,CAAC,KAAK,EAAE;AAC5B,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvF,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,gBAAgB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAa;AACb,SAAS;AACT,aAAa,IAAI,KAAK,EAAE;AACxB,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK;AACvD,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;AACxC,oBAAoB,OAAO,YAAY,CAAC;AACxC,iBAAiB;AACjB,gBAAgB,IAAI,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;AAClD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,iBAAiB;AACjB,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,aAAa,CAAC;AACd,YAAY,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACxD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACpD,YAAY,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7D,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AAC9G,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;AAC3B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,2CAA2C,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAChH,SAAS;AACT,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3E,KAAK;AACL,CAAC;AACM,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC/H,gBAAgB,SAAS,EAAE,iBAAiB;AAC5C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACpD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACvG,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;AAC9C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;AAC/C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA,IAAI,KAAK,CAAC,QAAQ,EAAE;AACpB,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,SAAS;AACT;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;AAC7D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,EAAE;AACzC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACzF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AAC9D,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxC,KAAK;AACL,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;AAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACtG,QAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,aAAa,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;AAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrB,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC9C;AACA,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC7E,YAAY,MAAM,GAAG,QAAQ,CAAC;AAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;AACrC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAACM,MAAI,CAAC,EAAE;AACrD,YAAY,UAAU,CAAC,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;AACvB,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACxC,YAAY,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AACpC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;AAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5D,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;AAChC,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACnG,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AAC/B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AACzC,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB;AACA,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC/D,gBAAgB,MAAM,KAAK,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,OAAON,QAAM,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;AAChC,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACjD,KAAK;AACL,CAAC;AACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;ACvW7B,MAAMpE,SAAO,GAAG,eAAe;;ACItC,MAAMoE,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC;AACO,IAAI,wBAAwB,CAAC;AACpC,CAAC,UAAU,wBAAwB,EAAE;AACrC,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAC7C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAC5C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;AAEzD,IAAI,eAAe,CAAC;AAC3B,CAAC,UAAU,eAAe,EAAE;AAC5B;AACA;AACA,IAAI,eAAe,CAAC,qBAAqB,CAAC,GAAG,8BAA8B,CAAC;AAC5E;AACA;AACA,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;AAC3D;AACA;AACA,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;AAClD;AACA;AACA,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG,2BAA2B,CAAC;AACtE;AACA;AACA;AACA,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;AAC3D;AACA;AACA;AACA,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;AAC5D;AACA;AACA;AACA,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;AAC5D,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;AAE9C,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AAChE,IAAI,OAAOoE,QAAM,CAAC,kBAAkB,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACzG,CAAC;AACD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AACjE;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,UAAU,IAAI,MAAM,KAAK,eAAe,CAAC,mBAAmB,EAAE;AACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACxC,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,CAAC,EAAE,CAAC;AAChB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL;AACA;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE;AAC5C,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;AACzC,KAAK;AACL;AACA,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;AAClE;AACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB;AACA,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAA2B,CAAC,CAAC;AACnE,CAAC;AACD;AAC8B,MAAM,CAAC,MAAM,CAAC;AAC5C,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,OAAO,EAAE,WAAW;AACxB,CAAC,EAAE;AAsFH;AACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE;AAC1E,IAAI,IAAI,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE;AAClD,QAAQA,QAAM,CAAC,cAAc,EAAE,CAAC;AAChC,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;AACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,aAAa,IAAI,CAAC,GAAG,KAAK,EAAE;AAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,aAAa,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE;AACzC,YAAY,CAAC,EAAE,CAAC;AAChB,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM,EAAE;AAC7D,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxD,aAAa;AACb;AACA,YAAY,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;AACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AACrD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AAClD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;AAC3C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5B;;AC1MA,SAAS,MAAM,CAAC,IAAI,EAAE;AACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,IAAI,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACtC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAClC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChC,KAAK,CAAC,CAAC;AACP,CAAC;AAewB,gBAAgB,CAAC,87CAA87C,EAAE;AAC1+C;AACwB,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AA6C3F,WAAW,CAAC,ufAAuf,EAAE;AACrgB,WAAW,CAAC,wdAAwd,EAAE;AACte,WAAW,CAAC,w3DAAw3D,EAAE,MAAM,EAAE;AACj5D,gBAAgB,CAAC,yLAAyL;;ACxG1N,MAAMpE,SAAO,GAAG,YAAY;;ACE5B,SAAS,MAAM,CAAC,QAAQ,EAAE;AACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,QAAQ,KAAK,GAAG,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;AAC3C,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;AACzC,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACzC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3B,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACM,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AACjE;AACA,IAAI,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC;AAC1B,IAAI,GAAG,IAAI,IAAI,CAAC;AAChB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,SAAS,QAAQ,GAAG;AACxB,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;AAC7B;AACA;AACA,YAAY,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5D,YAAY,UAAU,GAAG,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,OAAO,CAAC,WAAW,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;AACjB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAC1B;AACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;AAChD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;AAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC;AAC/B,QAAQ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC;AAC1C,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAgB,GAAG,GAAG,GAAG,CAAC;AAC1B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,KAAK,GAAG,GAAG,CAAC;AAC5B,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,KAAK,IAAI,CAAC;AACtB,YAAY,MAAM;AAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACrE,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;AACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;AAC3D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AACpC,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;AAC9B,YAAY,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;AACzF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,GAAG,GAAG,CAAC,CAAC;AAChB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;AAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;AAC5B,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAC1B,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAClI,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACjG,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD,YAAY,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACO,SAAS,YAAY,CAAC,CAAC,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,CAAC;AACM,SAAS,uBAAuB,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AACD;AACO,SAAS,MAAM,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AAC1B,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACM,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AAChD,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACnB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACO,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM;AAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,YAAY,MAAM;AAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AACM,SAAS,0BAA0B,CAAC,IAAI,EAAE;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,OAAO,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,YAAY,MAAM;AAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AACxB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AACpB,IAAI,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9B,YAAY,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvD,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAS,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AACM,SAAS,eAAe,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI,OAAO,IAAI,EAAE,CAAC;AAClB,IAAI,SAAS,IAAI,GAAG;AACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,IAAI,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACvD,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAChC,gBAAgB,MAAM;AACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzD,QAAQ,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;AAC7B,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAChC,QAAQ,IAAI,KAAK,CAAC,CAAC;AACnB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;AAC9B,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtD,KAAK;AACL;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGO,SAAS,OAAO,GAAG;AAC1B,IAAI,OAAO,uBAAuB,CAAC,MAAM,CAAC,k6cAAk6c,CAAC,CAAC,CAAC;AAC/8c;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMkE,GAAC,GAAG,OAAO,EAAE,CAAC;AAEpB;AACc,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;AAC5B,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;AAC/B,eAAe,CAACA,GAAC,EAAE;AACf,eAAe,CAACA,GAAC;;AC/BrB,IAAI,MAAM,CAAClE,SAAO,EAAE;AAEnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ACLN,MAAM,aAAa,GAAG,gCAAgC,CAAC;AACvD,SAAS2E,aAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC;AAC5B,QAAQ,WAAW,CAAC,aAAa,CAAC;AAClC,QAAQ,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,OAAO;AACf,KAAK,CAAC,CAAC,CAAC;AACR;;ACbO,MAAM3E,SAAO,GAAG,WAAW;;ACKnB,IAAI,MAAM,CAACA,SAAO;;ACL1B,MAAMA,SAAO,GAAG,eAAe;;ACOtC,MAAMoE,QAAM,GAAG,IAAI,MAAM,CAACpE,SAAO,CAAC,CAAC;AACnC,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;AACnC,QAAQoE,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;AAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD;AACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvD,SAAS,YAAY,CAAC,OAAO,EAAE;AAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;AACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;AAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;AACjD;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC7C;AACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;AAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClF,SAAS;AACT;AACA,KAAK;AACL,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;AAC9D;AACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;AAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;AACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;AACnD,KAAK;AACL,SAAS;AACT,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB;;AChGO,MAAMpE,SAAO,GAAG,kBAAkB;;ACCzB,CAACqE,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,EAAE;AAGa,IAAI,MAAM,CAACrE,SAAO,EAAE;AAC5B,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACxC,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,KAAK;AACvB,KAAK,CAAC,CAAC;AACP;;ACnBgB,CAACqE,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,EAAE;AAQa,IAAI,MAAM,CAACrE,SAAO,EAAE;AAEnC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,SAAS,CAAC,IAAI,CAAC,oEAAoE,EAAE;AASxF,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;AACjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;;;;;;ICjClD4E,oBAAc,GAAGC,QAAM,CAAC;AACxB;AACA,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AAC1B,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;AAC/C,CAAC;AACD;AACAA,QAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;;;;ACVD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACzC;AACA,EAAEC,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1D,QAAQ,WAAW,EAAE;AACrB,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,UAAU,EAAE,KAAK;AAC3B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS;AACT,OAAO,EAAC;AACR,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,MAAM;AACP;AACA,EAAEA,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;AAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;AACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;AAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;AACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;AACvC,KAAK;AACL,IAAG;AACH;;ACxBA,IAAID,QAAM,GAAGE,oBAA8B,CAAC;AAC5C,IAAI,QAAQ,GAAGC,0BAAmB,CAAC;AACnC;AACgBC,OAAA,CAAA,QAAA,GAAG,SAAS;AAC5B;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;AACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;AAC/C,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AACpC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;AACrD,CAAC;AACD;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,EAAE,CAAC;AACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;AACd;AACA;AACA;AACA;AACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;AACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;AAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;AACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;AAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS,MAAM;AACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;AACpC,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;AACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;AAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;AACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;AAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;AACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;AACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;AACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;AAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;AAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;AAC5B;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACYA,OAAA,CAAA,KAAA,GAAG,MAAM;AACtB;AACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;AACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;AACxB,EAAEJ,QAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1D,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E;AACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACaI,OAAA,CAAA,MAAA,GAAG,OAAO;AACxB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;AAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC5B,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;AACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACcA,OAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACaD,OAAA,CAAA,MAAA,GAAGC,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AACaF,OAAA,CAAA,MAAA,GAAGE,SAAO;AACxB;AACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AACYH,OAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AACcJ,OAAA,CAAA,OAAA,GAAGI,UAAQ;AAC1B;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AACcL,OAAA,CAAA,OAAA,GAAGK,UAAQ;AAC1B;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AACcN,OAAA,CAAA,OAAA,GAAGM,UAAQ;AAC1B;AACA,SAASC,OAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACpB,CAAC;AACYP,OAAA,CAAA,KAAA,GAAGO,QAAM;AACtB;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACeR,OAAA,CAAA,QAAA,GAAGQ,WAAS;AAC5B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACeT,OAAA,CAAA,QAAA,GAAGS,WAAS;AAC5B;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBV,OAAA,CAAA,UAAA,GAAGU,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBX,OAAA,CAAA,UAAA,GAAGW,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBZ,OAAA,CAAA,UAAA,GAAGY,aAAW;AAChC;AACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;AACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClB,CAAC;AACiBb,OAAA,CAAA,UAAA,GAAGa,aAAW;AAChC;AACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACgBd,OAAA,CAAA,SAAA,GAAGc,YAAU;AAC9B;AACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACgBf,OAAA,CAAA,SAAA,GAAGe,YAAU;AAC9B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;AACpB,CAAC;AACehB,OAAA,CAAA,QAAA,GAAGgB,WAAS;AAC5B;AACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AACDjB,OAAA,CAAA,QAAgB,GAAGiB;;;;ACnRnB,IAAIjB,OAAK,GAAGF,OAAkB,CAAC;AAC/B,IAAIF,QAAM,GAAGG,oBAA8B,CAAC;AAC5C;AACA,SAASmB,WAAS,GAAG;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtC,CAAC;AACgBC,QAAA,CAAA,SAAA,GAAGD,YAAU;AAC9B;AACAA,WAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACvD;AACA,EAAE,GAAG,GAAGlB,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;AACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;AACA;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;AACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;AACA,IAAI,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;AACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACAkB,WAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,EAAEtB,QAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;AACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACAsB,WAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;AAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;AAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;AACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;AACA;AACA,EAAE,GAAG,KAAK,CAAC,CAAC;AACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;AACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1B,GAAG,MAAM;AACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;AAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;;;;;;ACzFD,IAAIlB,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAI,MAAM,GAAGE,OAAK,CAAC,MAAM,CAAC;AAC1B;AACA,SAASoB,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAOC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,KAAK,CAAC;AACb,IAAI,OAAOC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AACWH,QAAA,CAAA,IAAA,GAAGC,OAAK;AACpB;AACA,SAASC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,CAAC;AACWF,QAAA,CAAA,IAAA,GAAGE,OAAK;AACpB;AACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC;AACYH,QAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;AACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AACUH,QAAA,CAAA,GAAA,GAAG,IAAI;AAClB;AACA,SAASI,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AACaJ,QAAA,CAAA,MAAA,GAAGI,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AACaL,QAAA,CAAA,MAAA,GAAGK,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AACaN,QAAA,CAAA,MAAA,GAAGM,SAAO;AACxB;AACA,SAASC,QAAM,CAAC,CAAC,EAAE;AACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC;AACDP,QAAA,CAAA,MAAc,GAAGO;;AC9CjB,IAAI1B,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAI4B,WAAS,GAAGC,QAAmB,CAAC;AACpC;AACA,IAAI1B,QAAM,GAAGF,OAAK,CAAC,MAAM,CAAC;AAC1B,IAAIG,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;AACxB,IAAIM,SAAO,GAAGN,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG2B,WAAS,CAAC,IAAI,CAAC;AAC1B,IAAIT,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,MAAM,GAAG;AACb,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,UAAU,EAAE,UAAU;AACxB,CAAC,CAAC;AACF;AACA,SAAS,IAAI,GAAG;AAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;AACA,EAAED,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;AACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACD;AACAlB,OAAK,CAAC,QAAQ,CAAC,IAAI,EAAEkB,WAAS,CAAC,CAAC;IAChC,EAAc,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;AACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;AACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGhB,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,GAAGI,SAAO,CAACJ,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOH,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;;ACvED,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAI,SAAS,GAAG6B,QAAmB,CAAC;AACpC,IAAIhC,QAAM,GAAGiC,oBAA8B,CAAC;AAC5C;AACA,IAAI1B,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;AACxB,IAAIK,SAAO,GAAGL,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;AAC5B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;AACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,QAAQ,GAAG;AACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAASW,QAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;AAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;AACA,EAAEZ,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AACDlB,OAAK,CAAC,QAAQ,CAAC8B,QAAM,EAAEZ,WAAS,CAAC,CAAC;IAClC,IAAc,GAAGY,QAAM,CAAC;AACxB;AACAA,QAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvBA,QAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,QAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,QAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACAA,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGzB,SAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAET,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,IAAI,IAAI,EAAE,GAAGO,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACrB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA2B,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO9B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;;ACtGD,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;AAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC;AACDC,OAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;AACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD;AACA,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;;AC1BD,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC,IAAIqB,QAAM,GAAGpB,QAAoB,CAAC;AAClC,IAAIH,QAAM,GAAGgC,oBAA8B,CAAC;AAC5C;AACA,IAAI,SAAS,GAAG5B,OAAK,CAAC,SAAS,CAAC;AAChC,IAAI,SAAS,GAAGA,OAAK,CAAC,SAAS,CAAC;AAChC,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;AACxB,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;AAC9B,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC;AACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;AACA,IAAI,QAAQ,GAAG;AACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,CAAC,CAAC;AACF;AACA,SAASY,QAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;AAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;AACA,EAAEb,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AACDlB,OAAK,CAAC,QAAQ,CAAC+B,QAAM,EAAEb,WAAS,CAAC,CAAC;IAClC,IAAc,GAAGa,QAAM,CAAC;AACxB;AACAA,QAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxBA,QAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,QAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,QAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;AACAA,QAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;AACpE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;AACA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU;AACrB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;AACzB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB,GAAG;AACH,CAAC,CAAC;AACF;AACAA,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACxD,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB;AACA,EAAEnC,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACxC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAM,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAChD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB;AACA,IAAI,IAAI,KAAK,GAAG,UAAU;AAC1B,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB,IAAI,IAAI,KAAK,GAAG,UAAU;AAC1B,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAM,CAAC,CAAC;AAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrD,IAAI,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH;AACA,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AACF;AACAmC,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO/B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACrC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACzC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,CAAC,IAAI,WAAW,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC;AACX;;ACvUA,IAAIA,OAAK,GAAGF,OAAmB,CAAC;AAChC;AACA,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;AAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU;AAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;AAC7B,CAAC;AACDC,OAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;AACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1B,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;;AChCW,GAAA,CAAA,IAAA,GAAGF,GAAmB;AACpB,GAAA,CAAA,MAAA,GAAGC,KAAqB;AACxB,GAAA,CAAA,MAAA,GAAG6B,KAAqB;AACxB,GAAA,CAAA,MAAA,GAAGC,KAAqB;AACtC,GAAA,CAAA,MAAc,GAAGG;;;;ACJjB,IAAIhC,OAAK,GAAGF,OAAkB,CAAC;AAC/B,IAAI,MAAM,GAAGC,QAAmB,CAAC;AACjC;AACA,IAAI,MAAM,GAAGC,OAAK,CAAC,MAAM,CAAC;AAC1B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;AACxB,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;AAC5B,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;AACA,SAAS,SAAS,GAAG;AACrB,EAAE,IAAI,EAAE,IAAI,YAAY,SAAS,CAAC;AAClC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;AAC3B;AACA,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC1E,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACzB,CAAC;AACDA,OAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACpB,MAAA,CAAA,SAAA,GAAG,UAAU;AAC9B;AACA,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC;AAC1B,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;AACxB,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC;AAC7B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB;AACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,KAAK;AACjB,MAAM,MAAM;AACZ,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,MAAM,CAAC,CAAC,CAAC;AACT,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,KAAK;AACb,MAAM,MAAM;AACZ,QAAQ,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,MAAM,EAAE,CAAC,CAAC;AACV,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACxB,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,GAAG;AACH,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AACnD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3C;AACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD;AACA,SAAS,CAAC,CAAC,CAAC,EAAE;AACd,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB;AACA,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD;AACA,SAAS,EAAE,CAAC,CAAC,EAAE;AACf,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB,OAAO,IAAI,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,UAAU,CAAC;AACtB;AACA,IAAI,OAAO,UAAU,CAAC;AACtB,CAAC;AACD;AACA,IAAI,CAAC,GAAG;AACR,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AA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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js b/node_modules/@walletconnect/utils/dist/index.umd.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e76a0973fdda33fb46b864846fee9be7495101d1 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.umd.js -@@ -0,0 +1,31 @@ -+(function(K,dr){typeof exports=="object"&&typeof module<"u"?dr(exports):typeof define=="function"&&define.amd?define(["exports"],dr):(K=typeof globalThis<"u"?globalThis:K||self,dr(K["@walletconnect/utils"]={}))})(this,function(K){"use strict";const dr=":";function ua(t){const[e,r]=t.split(dr);return{namespace:e,reference:r}}function ha(t){const{namespace:e,reference:r}=t;return[e,r].join(dr)}function Bn(t){const[e,r,i]=t.split(dr);return{namespace:e,reference:r,address:i}}function ca(t){const{namespace:e,reference:r,address:i}=t;return[e,r,i].join(dr)}function On(t,e){const r=[];return t.forEach(i=>{const f=e(i);r.includes(f)||r.push(f)}),r}function da(t){const{address:e}=Bn(t);return e}function la(t){const{namespace:e,reference:r}=Bn(t);return ha({namespace:e,reference:r})}function Ys(t,e){const{namespace:r,reference:i}=ua(e);return ca({namespace:r,reference:i,address:t})}function Js(t){return On(t,da)}function ba(t){return On(t,la)}function Ws(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...f.accounts)}),r}function Qs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...ba(f.accounts))}),r}function Xs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...zi(i,f))}),r}function zi(t,e){return t.includes(":")?[t]:e.chains||[]}var va=function(t,e,r){if(r||arguments.length===2)for(var i=0,f=e.length,n;i"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new iu:typeof navigator<"u"?ga(navigator.userAgent):hu()}function su(t){return t!==""&&au.reduce(function(e,r){var i=r[0],f=r[1];if(e)return e;var n=f.exec(t);return!!n&&[i,n]},!1)}function ga(t){var e=su(t);if(!e)return null;var r=e[0],i=e[1];if(r==="searchbot")return new ru;var f=i[1]&&i[1].split(".").join("_").split("_").slice(0,3);f?f.length=0;c--)(d=t[c])&&(n=(f<3?d(n):f>3?d(e,r,n):d(e,r))||n);return f>3&&n&&Object.defineProperty(e,r,n),n}function vu(t,e){return function(r,i){e(r,i,t)}}function pu(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function mu(t,e,r,i){function f(n){return n instanceof r?n:new r(function(d){d(n)})}return new(r||(r=Promise))(function(n,d){function c(x){try{A(i.next(x))}catch(E){d(E)}}function y(x){try{A(i.throw(x))}catch(E){d(E)}}function A(x){x.done?n(x.value):f(x.value).then(c,y)}A((i=i.apply(t,e||[])).next())})}function gu(t,e){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,f,n,d;return d={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(d[Symbol.iterator]=function(){return this}),d;function c(A){return function(x){return y([A,x])}}function y(A){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,f&&(n=A[0]&2?f.return:A[0]?f.throw||((n=f.return)&&n.call(f),0):f.next)&&!(n=n.call(f,A[1])).done)return n;switch(f=0,n&&(A=[A[0]&2,n.value]),A[0]){case 0:case 1:n=A;break;case 4:return r.label++,{value:A[1],done:!1};case 5:r.label++,f=A[1],A=[0];continue;case 7:A=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(A[0]===6||A[0]===2)){r=0;continue}if(A[0]===3&&(!n||A[1]>n[0]&&A[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function wa(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var i=r.call(t),f,n=[],d;try{for(;(e===void 0||e-- >0)&&!(f=i.next()).done;)n.push(f.value)}catch(c){d={error:c}}finally{try{f&&!f.done&&(r=i.return)&&r.call(i)}finally{if(d)throw d.error}}return n}function Au(){for(var t=[],e=0;e1||c(N,D)})})}function c(N,D){try{y(i[N](D))}catch(I){E(n[0][3],I)}}function y(N){N.value instanceof yi?Promise.resolve(N.value.v).then(A,x):E(n[0][2],N)}function A(N){c("next",N)}function x(N){c("throw",N)}function E(N,D){N(D),n.shift(),n.length&&c(n[0][0],n[0][1])}}function Mu(t){var e,r;return e={},i("next"),i("throw",function(f){throw f}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(f,n){e[f]=t[f]?function(d){return(r=!r)?{value:yi(t[f](d)),done:f==="return"}:n?n(d):d}:n}}function Eu(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Fn=="function"?Fn(t):t[Symbol.iterator](),r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=t[n]&&function(d){return new Promise(function(c,y){d=t[n](d),f(c,y,d.done,d.value)})}}function f(n,d,c,y){Promise.resolve(y).then(function(A){n({value:A,done:c})},d)}}function Su(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Du(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Iu(t){return t&&t.__esModule?t:{default:t}}function Nu(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function Cu(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var Bu=Object.freeze({__proto__:null,__extends:du,get __assign(){return Tn},__rest:lu,__decorate:bu,__param:vu,__metadata:pu,__awaiter:mu,__generator:gu,__createBinding:yu,__exportStar:wu,__values:Fn,__read:wa,__spread:Au,__spreadArrays:xu,__await:yi,__asyncGenerator:_u,__asyncDelegator:Mu,__asyncValues:Eu,__makeTemplateObject:Su,__importStar:Du,__importDefault:Iu,__classPrivateFieldGet:Nu,__classPrivateFieldSet:Cu}),ki=ya(Bu),Un={},wi={},Aa;function Ou(){if(Aa)return wi;Aa=1,Object.defineProperty(wi,"__esModule",{value:!0}),wi.delay=void 0;function t(e){return new Promise(r=>{setTimeout(()=>{r(!0)},e)})}return wi.delay=t,wi}var Mr={},Ln={},Er={},xa;function Ru(){return xa||(xa=1,Object.defineProperty(Er,"__esModule",{value:!0}),Er.ONE_THOUSAND=Er.ONE_HUNDRED=void 0,Er.ONE_HUNDRED=100,Er.ONE_THOUSAND=1e3),Er}var qn={},_a;function Pu(){return _a||(_a=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.ONE_YEAR=t.FOUR_WEEKS=t.THREE_WEEKS=t.TWO_WEEKS=t.ONE_WEEK=t.THIRTY_DAYS=t.SEVEN_DAYS=t.FIVE_DAYS=t.THREE_DAYS=t.ONE_DAY=t.TWENTY_FOUR_HOURS=t.TWELVE_HOURS=t.SIX_HOURS=t.THREE_HOURS=t.ONE_HOUR=t.SIXTY_MINUTES=t.THIRTY_MINUTES=t.TEN_MINUTES=t.FIVE_MINUTES=t.ONE_MINUTE=t.SIXTY_SECONDS=t.THIRTY_SECONDS=t.TEN_SECONDS=t.FIVE_SECONDS=t.ONE_SECOND=void 0,t.ONE_SECOND=1,t.FIVE_SECONDS=5,t.TEN_SECONDS=10,t.THIRTY_SECONDS=30,t.SIXTY_SECONDS=60,t.ONE_MINUTE=t.SIXTY_SECONDS,t.FIVE_MINUTES=t.ONE_MINUTE*5,t.TEN_MINUTES=t.ONE_MINUTE*10,t.THIRTY_MINUTES=t.ONE_MINUTE*30,t.SIXTY_MINUTES=t.ONE_MINUTE*60,t.ONE_HOUR=t.SIXTY_MINUTES,t.THREE_HOURS=t.ONE_HOUR*3,t.SIX_HOURS=t.ONE_HOUR*6,t.TWELVE_HOURS=t.ONE_HOUR*12,t.TWENTY_FOUR_HOURS=t.ONE_HOUR*24,t.ONE_DAY=t.TWENTY_FOUR_HOURS,t.THREE_DAYS=t.ONE_DAY*3,t.FIVE_DAYS=t.ONE_DAY*5,t.SEVEN_DAYS=t.ONE_DAY*7,t.THIRTY_DAYS=t.ONE_DAY*30,t.ONE_WEEK=t.SEVEN_DAYS,t.TWO_WEEKS=t.ONE_WEEK*2,t.THREE_WEEKS=t.ONE_WEEK*3,t.FOUR_WEEKS=t.ONE_WEEK*4,t.ONE_YEAR=t.ONE_DAY*365}(qn)),qn}var Ma;function Ea(){return Ma||(Ma=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ru(),t),e.__exportStar(Pu(),t)}(Ln)),Ln}var Sa;function Tu(){if(Sa)return Mr;Sa=1,Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.fromMiliseconds=Mr.toMiliseconds=void 0;const t=Ea();function e(i){return i*t.ONE_THOUSAND}Mr.toMiliseconds=e;function r(i){return Math.floor(i/t.ONE_THOUSAND)}return Mr.fromMiliseconds=r,Mr}var Da;function Fu(){return Da||(Da=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ou(),t),e.__exportStar(Tu(),t)}(Un)),Un}var Qr={},Ia;function Uu(){if(Ia)return Qr;Ia=1,Object.defineProperty(Qr,"__esModule",{value:!0}),Qr.Watch=void 0;class t{constructor(){this.timestamps=new Map}start(r){if(this.timestamps.has(r))throw new Error(`Watch already started for label: ${r}`);this.timestamps.set(r,{started:Date.now()})}stop(r){const i=this.get(r);if(typeof i.elapsed<"u")throw new Error(`Watch already stopped for label: ${r}`);const f=Date.now()-i.started;this.timestamps.set(r,{started:i.started,elapsed:f})}get(r){const i=this.timestamps.get(r);if(typeof i>"u")throw new Error(`No timestamp found for label: ${r}`);return i}elapsed(r){const i=this.get(r);return i.elapsed||Date.now()-i.started}}return Qr.Watch=t,Qr.default=t,Qr}var zn={},Ai={},Na;function Lu(){if(Na)return Ai;Na=1,Object.defineProperty(Ai,"__esModule",{value:!0}),Ai.IWatch=void 0;class t{}return Ai.IWatch=t,Ai}var Ca;function qu(){return Ca||(Ca=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),ki.__exportStar(Lu(),t)}(zn)),zn}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Fu(),t),e.__exportStar(Uu(),t),e.__exportStar(qu(),t),e.__exportStar(Ea(),t)})(_r);var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.getLocalStorage=Xe.getLocalStorageOrThrow=Xe.getCrypto=Xe.getCryptoOrThrow=Hn=Xe.getLocation=Xe.getLocationOrThrow=kn=Xe.getNavigator=Xe.getNavigatorOrThrow=Hi=Xe.getDocument=Xe.getDocumentOrThrow=Xe.getFromWindowOrThrow=Xe.getFromWindow=void 0;function Sr(t){let e;return typeof window<"u"&&typeof window[t]<"u"&&(e=window[t]),e}Xe.getFromWindow=Sr;function Xr(t){const e=Sr(t);if(!e)throw new Error(`${t} is not defined in Window`);return e}Xe.getFromWindowOrThrow=Xr;function zu(){return Xr("document")}Xe.getDocumentOrThrow=zu;function ku(){return Sr("document")}var Hi=Xe.getDocument=ku;function Hu(){return Xr("navigator")}Xe.getNavigatorOrThrow=Hu;function Ku(){return Sr("navigator")}var kn=Xe.getNavigator=Ku;function ju(){return Xr("location")}Xe.getLocationOrThrow=ju;function $u(){return Sr("location")}var Hn=Xe.getLocation=$u;function Vu(){return Xr("crypto")}Xe.getCryptoOrThrow=Vu;function Gu(){return Sr("crypto")}Xe.getCrypto=Gu;function Yu(){return Xr("localStorage")}Xe.getLocalStorageOrThrow=Yu;function Ju(){return Sr("localStorage")}Xe.getLocalStorage=Ju;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0});var Ba=Kn.getWindowMetadata=void 0;const Oa=Xe;function Wu(){let t,e;try{t=Oa.getDocumentOrThrow(),e=Oa.getLocationOrThrow()}catch{return null}function r(){const E=t.getElementsByTagName("link"),N=[];for(let D=0;D-1){const H=I.getAttribute("href");if(H)if(H.toLowerCase().indexOf("https:")===-1&&H.toLowerCase().indexOf("http:")===-1&&H.indexOf("//")!==0){let V=e.protocol+"//"+e.host;if(H.indexOf("/")===0)V+=H;else{const z=e.pathname.split("/");z.pop();const j=z.join("/");V+=j+"/"+H}N.push(V)}else if(H.indexOf("//")===0){const V=e.protocol+H;N.push(V)}else N.push(H)}}return N}function i(...E){const N=t.getElementsByTagName("meta");for(let D=0;DI.getAttribute(H)).filter(H=>H?E.includes(H):!1);if(q.length&&q){const H=I.getAttribute("content");if(H)return H}}return""}function f(){let E=i("name","og:site_name","og:title","twitter:title");return E||(E=t.title),E}function n(){return i("description","og:description","twitter:description","keywords")}const d=f(),c=n(),y=e.origin,A=r();return{description:c,url:y,icons:A,name:d}}Ba=Kn.getWindowMetadata=Wu;var xi={},Qu=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),Ra="%[a-f0-9]{2}",Pa=new RegExp("("+Ra+")|([^%]+?)","gi"),Ta=new RegExp("("+Ra+")+","gi");function jn(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),i=t.slice(e);return Array.prototype.concat.call([],jn(r),jn(i))}function Xu(t){try{return decodeURIComponent(t)}catch{for(var e=t.match(Pa)||[],r=1;r{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];const r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]},rh=function(t,e){for(var r={},i=Object.keys(t),f=Array.isArray(e),n=0;nz==null,d=Symbol("encodeFragmentIdentifier");function c(z){switch(z.arrayFormat){case"index":return j=>(F,U)=>{const L=F.length;return U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[",L,"]"].join("")]:[...F,[x(j,z),"[",x(L,z),"]=",x(U,z)].join("")]};case"bracket":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[]"].join("")]:[...F,[x(j,z),"[]=",x(U,z)].join("")];case"colon-list-separator":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),":list="].join("")]:[...F,[x(j,z),":list=",x(U,z)].join("")];case"comma":case"separator":case"bracket-separator":{const j=z.arrayFormat==="bracket-separator"?"[]=":"=";return F=>(U,L)=>L===void 0||z.skipNull&&L===null||z.skipEmptyString&&L===""?U:(L=L===null?"":L,U.length===0?[[x(F,z),j,x(L,z)].join("")]:[[U,x(L,z)].join(z.arrayFormatSeparator)])}default:return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,x(j,z)]:[...F,[x(j,z),"=",x(U,z)].join("")]}}function y(z){let j;switch(z.arrayFormat){case"index":return(F,U,L)=>{if(j=/\[(\d*)\]$/.exec(F),F=F.replace(/\[\d*\]$/,""),!j){L[F]=U;return}L[F]===void 0&&(L[F]={}),L[F][j[1]]=U};case"bracket":return(F,U,L)=>{if(j=/(\[\])$/.exec(F),F=F.replace(/\[\]$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"colon-list-separator":return(F,U,L)=>{if(j=/(:list)$/.exec(F),F=F.replace(/:list$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"comma":case"separator":return(F,U,L)=>{const m=typeof U=="string"&&U.includes(z.arrayFormatSeparator),P=typeof U=="string"&&!m&&E(U,z).includes(z.arrayFormatSeparator);U=P?E(U,z):U;const Y=m||P?U.split(z.arrayFormatSeparator).map(Q=>E(Q,z)):U===null?U:E(U,z);L[F]=Y};case"bracket-separator":return(F,U,L)=>{const m=/(\[\])$/.test(F);if(F=F.replace(/\[\]$/,""),!m){L[F]=U&&E(U,z);return}const P=U===null?[]:U.split(z.arrayFormatSeparator).map(Y=>E(Y,z));if(L[F]===void 0){L[F]=P;return}L[F]=[].concat(L[F],P)};default:return(F,U,L)=>{if(L[F]===void 0){L[F]=U;return}L[F]=[].concat(L[F],U)}}}function A(z){if(typeof z!="string"||z.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function x(z,j){return j.encode?j.strict?e(z):encodeURIComponent(z):z}function E(z,j){return j.decode?r(z):z}function N(z){return Array.isArray(z)?z.sort():typeof z=="object"?N(Object.keys(z)).sort((j,F)=>Number(j)-Number(F)).map(j=>z[j]):z}function D(z){const j=z.indexOf("#");return j!==-1&&(z=z.slice(0,j)),z}function I(z){let j="";const F=z.indexOf("#");return F!==-1&&(j=z.slice(F)),j}function q(z){z=D(z);const j=z.indexOf("?");return j===-1?"":z.slice(j+1)}function H(z,j){return j.parseNumbers&&!Number.isNaN(Number(z))&&typeof z=="string"&&z.trim()!==""?z=Number(z):j.parseBooleans&&z!==null&&(z.toLowerCase()==="true"||z.toLowerCase()==="false")&&(z=z.toLowerCase()==="true"),z}function V(z,j){j=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},j),A(j.arrayFormatSeparator);const F=y(j),U=Object.create(null);if(typeof z!="string"||(z=z.trim().replace(/^[?#&]/,""),!z))return U;for(const L of z.split("&")){if(L==="")continue;let[m,P]=i(j.decode?L.replace(/\+/g," "):L,"=");P=P===void 0?null:["comma","separator","bracket-separator"].includes(j.arrayFormat)?P:E(P,j),F(E(m,j),P,U)}for(const L of Object.keys(U)){const m=U[L];if(typeof m=="object"&&m!==null)for(const P of Object.keys(m))m[P]=H(m[P],j);else U[L]=H(m,j)}return j.sort===!1?U:(j.sort===!0?Object.keys(U).sort():Object.keys(U).sort(j.sort)).reduce((L,m)=>{const P=U[m];return P&&typeof P=="object"&&!Array.isArray(P)?L[m]=N(P):L[m]=P,L},Object.create(null))}t.extract=q,t.parse=V,t.stringify=(z,j)=>{if(!z)return"";j=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},j),A(j.arrayFormatSeparator);const F=P=>j.skipNull&&n(z[P])||j.skipEmptyString&&z[P]==="",U=c(j),L={};for(const P of Object.keys(z))F(P)||(L[P]=z[P]);const m=Object.keys(L);return j.sort!==!1&&m.sort(j.sort),m.map(P=>{const Y=z[P];return Y===void 0?"":Y===null?x(P,j):Array.isArray(Y)?Y.length===0&&j.arrayFormat==="bracket-separator"?x(P,j)+"[]":Y.reduce(U(P),[]).join("&"):x(P,j)+"="+x(Y,j)}).filter(P=>P.length>0).join("&")},t.parseUrl=(z,j)=>{j=Object.assign({decode:!0},j);const[F,U]=i(z,"#");return Object.assign({url:F.split("?")[0]||"",query:V(q(z),j)},j&&j.parseFragmentIdentifier&&U?{fragmentIdentifier:E(U,j)}:{})},t.stringifyUrl=(z,j)=>{j=Object.assign({encode:!0,strict:!0,[d]:!0},j);const F=D(z.url).split("?")[0]||"",U=t.extract(z.url),L=t.parse(U,{sort:!1}),m=Object.assign(L,z.query);let P=t.stringify(m,j);P&&(P=`?${P}`);let Y=I(z.url);return z.fragmentIdentifier&&(Y=`#${j[d]?x(z.fragmentIdentifier,j):z.fragmentIdentifier}`),`${F}${P}${Y}`},t.pick=(z,j,F)=>{F=Object.assign({parseFragmentIdentifier:!0,[d]:!1},F);const{url:U,query:L,fragmentIdentifier:m}=t.parseUrl(z,F);return t.stringifyUrl({url:U,query:f(L,j),fragmentIdentifier:m},F)},t.exclude=(z,j,F)=>{const U=Array.isArray(j)?L=>!j.includes(L):(L,m)=>!j(L,m);return t.pick(z,U,F)}})(xi);var ih=Object.defineProperty,Fa=Object.getOwnPropertySymbols,nh=Object.prototype.hasOwnProperty,fh=Object.prototype.propertyIsEnumerable,Ua=(t,e,r)=>e in t?ih(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,La=(t,e)=>{for(var r in e||(e={}))nh.call(e,r)&&Ua(t,r,e[r]);if(Fa)for(var r of Fa(e))fh.call(e,r)&&Ua(t,r,e[r]);return t};const qa="ReactNative",vt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Ki=" ",ah=":",za="/",$n=2,oh=1e3,ka="js";function Vn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function Zr(){return!Hi()&&!!kn()&&navigator.product===qa}function _i(){return!Vn()&&!!kn()&&!!Hi()}function Dr(){return Zr()?vt.reactNative:Vn()?vt.node:_i()?vt.browser:vt.unknown}function sh(){var t;try{return Zr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Ha(t,e){let r=xi.parse(t);return r=La(La({},r),e),t=xi.stringify(r),t}function uh(){return Ba()||{name:"",description:"",url:"",icons:[""]}}function hh(t,e){var r;const i=Dr(),f={protocol:t,version:e,env:i};return i==="browser"&&(f.host=((r=Hn())==null?void 0:r.host)||"unknown"),f}function Ka(){if(Dr()===vt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const t=ou();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function ja(){var t;const e=Dr();return e===vt.browser?[e,((t=Hn())==null?void 0:t.host)||"unknown"].join(":"):e}function $a(t,e,r){const i=Ka(),f=ja();return[[t,e].join("-"),[ka,r].join("-"),i,f].join("/")}function ch({protocol:t,version:e,relayUrl:r,sdkVersion:i,auth:f,projectId:n,useOnCloseEvent:d,bundleId:c}){const y=r.split("?"),A=$a(t,e,i),x={auth:f,ua:A,projectId:n,useOnCloseEvent:d||void 0,origin:c||void 0},E=Ha(y[1]||"",x);return y[0]+"?"+E}function dh(t){let e=(t.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof e<"u"?t.split("://")[1]:t;return e=e==="wss"?"https":"http",[e,r].join("://")}function lh(t,e,r){if(!t[e]||typeof t[e]!==r)throw new Error(`Missing or invalid "${e}" param`)}function Va(t,e=$n){return Ga(t.split(za),e)}function bh(t){return Va(t).join(Ki)}function lr(t,e){return t.filter(r=>e.includes(r)).length===t.length}function Ga(t,e=$n){return t.slice(Math.max(t.length-e,0))}function vh(t){return Object.fromEntries(t.entries())}function ph(t){return new Map(Object.entries(t))}function mh(t,e){const r={};return Object.keys(t).forEach(i=>{r[i]=e(t[i])}),r}const gh=t=>t;function Ya(t){return t.trim().replace(/^\w/,e=>e.toUpperCase())}function yh(t){return t.split(Ki).map(e=>Ya(e)).join(Ki)}function wh(t=_r.FIVE_MINUTES,e){const r=_r.toMiliseconds(t||_r.FIVE_MINUTES);let i,f,n;return{resolve:d=>{n&&i&&(clearTimeout(n),i(d))},reject:d=>{n&&f&&(clearTimeout(n),f(d))},done:()=>new Promise((d,c)=>{n=setTimeout(()=>{c(new Error(e))},r),i=d,f=c})}}function Ah(t,e,r){return new Promise(async(i,f)=>{const n=setTimeout(()=>f(new Error(r)),e);try{const d=await t;i(d)}catch(d){f(d)}clearTimeout(n)})}function Gn(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function xh(t){return Gn("topic",t)}function _h(t){return Gn("id",t)}function Mh(t){const[e,r]=t.split(":"),i={id:void 0,topic:void 0};if(e==="topic"&&typeof r=="string")i.topic=r;else if(e==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${r}`);return i}function Eh(t,e){return _r.fromMiliseconds((e||Date.now())+_r.toMiliseconds(t))}function Sh(t){return Date.now()>=_r.toMiliseconds(t)}function Dh(t,e){return`${t}${e?`:${e}`:""}`}function fr(t=[],e=[]){return[...new Set([...t,...e])]}async function Ih({id:t,topic:e,wcDeepLink:r}){var i;try{if(!r)return;const f=typeof r=="string"?JSON.parse(r):r;let n=f?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const d=`${n}/wc?requestId=${t}&sessionTopic=${e}`,c=Dr();if(c===vt.browser){if(!((i=Hi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}d.startsWith("https://")||d.startsWith("http://")?window.open(d,"_blank","noreferrer noopener"):window.open(d,"_self","noreferrer noopener")}else c===vt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(d)}catch(f){console.error(f)}}async function Nh(t,e){try{return await t.getItem(e)||(_i()?localStorage.getItem(e):void 0)}catch(r){console.error(r)}}function Yn(t,e){return t.filter(r=>e.includes(r))}function Ch(t,e){if(!t.includes(e))return null;const r=t.split(/([&,?,=])/),i=r.indexOf(e);return r[i+2]}function Bh(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}var Ja={exports:{}};/** -+ * [js-sha3]{@link https://github.com/emn178/js-sha3} -+ * -+ * @version 0.8.0 -+ * @author Chen, Yi-Cyuan [emn178@gmail.com] -+ * @copyright Chen, Yi-Cyuan 2015-2018 -+ * @license MIT -+ */(function(t){(function(){var e="input is invalid type",r="finalize already called",i=typeof window=="object",f=i?window:{};f.JS_SHA3_NO_WINDOW&&(i=!1);var n=!i&&typeof self=="object",d=!f.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?f=Rn:n&&(f=self);var c=!f.JS_SHA3_NO_COMMON_JS&&!0&&t.exports,y=!f.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",A="0123456789abcdef".split(""),x=[31,7936,2031616,520093696],E=[4,1024,262144,67108864],N=[1,256,65536,16777216],D=[6,1536,393216,100663296],I=[0,8,16,24],q=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],H=[224,256,384,512],V=[128,256],z=["hex","buffer","arrayBuffer","array","digest"],j={128:168,256:136};(f.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(M){return Object.prototype.toString.call(M)==="[object Array]"}),y&&(f.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(M){return typeof M=="object"&&M.buffer&&M.buffer.constructor===ArrayBuffer});for(var F=function(M,k,B){return function(T){return new b(M,k,M).update(T)[B]()}},U=function(M,k,B){return function(T,O){return new b(M,k,O).update(T)[B]()}},L=function(M,k,B){return function(T,O,v,R){return a["cshake"+M].update(T,O,v,R)[B]()}},m=function(M,k,B){return function(T,O,v,R){return a["kmac"+M].update(T,O,v,R)[B]()}},P=function(M,k,B,T){for(var O=0;O>5,this.byteCount=this.blockCount<<2,this.outputBlocks=B>>5,this.extraBytes=(B&31)>>3;for(var T=0;T<50;++T)this.s[T]=0}b.prototype.update=function(M){if(this.finalized)throw new Error(r);var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}for(var T=this.blocks,O=this.byteCount,v=M.length,R=this.blockCount,$=0,J=this.s,W,X;$>2]|=M[$]<>2]|=X<>2]|=(192|X>>6)<>2]|=(128|X&63)<=57344?(T[W>>2]|=(224|X>>12)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<>2]|=(240|X>>18)<>2]|=(128|X>>12&63)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<=O){for(this.start=W-O,this.block=T[R],W=0;W>8,B=M&255;B>0;)O.unshift(B),M=M>>8,B=M&255,++T;return k?O.push(T):O.unshift(T),this.update(O),O.length},b.prototype.encodeString=function(M){var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}var T=0,O=M.length;if(k)T=O;else for(var v=0;v=57344?T+=3:(R=65536+((R&1023)<<10|M.charCodeAt(++v)&1023),T+=4)}return T+=this.encode(T*8),this.update(M),T},b.prototype.bytepad=function(M,k){for(var B=this.encode(k),T=0;T>2]|=this.padding[k&3],this.lastByteIndex===this.byteCount)for(M[0]=M[B],k=1;k>4&15]+A[$&15]+A[$>>12&15]+A[$>>8&15]+A[$>>20&15]+A[$>>16&15]+A[$>>28&15]+A[$>>24&15];v%M===0&&(G(k),O=0)}return T&&($=k[O],R+=A[$>>4&15]+A[$&15],T>1&&(R+=A[$>>12&15]+A[$>>8&15]),T>2&&(R+=A[$>>20&15]+A[$>>16&15])),R},b.prototype.arrayBuffer=function(){this.finalize();var M=this.blockCount,k=this.s,B=this.outputBlocks,T=this.extraBytes,O=0,v=0,R=this.outputBits>>3,$;T?$=new ArrayBuffer(B+1<<2):$=new ArrayBuffer(R);for(var J=new Uint32Array($);v>8&255,R[$+2]=J>>16&255,R[$+3]=J>>24&255;v%M===0&&G(k)}return T&&($=v<<2,J=k[O],R[$]=J&255,T>1&&(R[$+1]=J>>8&255),T>2&&(R[$+2]=J>>16&255)),R};function S(M,k,B){b.call(this,M,k,B)}S.prototype=new b,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),b.prototype.finalize.call(this)};var G=function(M){var k,B,T,O,v,R,$,J,W,X,be,ye,fe,Ee,pe,te,se,oe,ee,ae,ne,Z,ve,me,re,ge,we,ie,Ae,xe,_e,je,$e,Me,Ve,Ge,Se,Ie,Ne,ue,Ce,Be,he,Oe,Re,ce,Pe,Te,de,Fe,Ue,le,Le,We,De,Qe,Ye,Je,Ut,Lt,qt,zt,kt;for(T=0;T<48;T+=2)O=M[0]^M[10]^M[20]^M[30]^M[40],v=M[1]^M[11]^M[21]^M[31]^M[41],R=M[2]^M[12]^M[22]^M[32]^M[42],$=M[3]^M[13]^M[23]^M[33]^M[43],J=M[4]^M[14]^M[24]^M[34]^M[44],W=M[5]^M[15]^M[25]^M[35]^M[45],X=M[6]^M[16]^M[26]^M[36]^M[46],be=M[7]^M[17]^M[27]^M[37]^M[47],ye=M[8]^M[18]^M[28]^M[38]^M[48],fe=M[9]^M[19]^M[29]^M[39]^M[49],k=ye^(R<<1|$>>>31),B=fe^($<<1|R>>>31),M[0]^=k,M[1]^=B,M[10]^=k,M[11]^=B,M[20]^=k,M[21]^=B,M[30]^=k,M[31]^=B,M[40]^=k,M[41]^=B,k=O^(J<<1|W>>>31),B=v^(W<<1|J>>>31),M[2]^=k,M[3]^=B,M[12]^=k,M[13]^=B,M[22]^=k,M[23]^=B,M[32]^=k,M[33]^=B,M[42]^=k,M[43]^=B,k=R^(X<<1|be>>>31),B=$^(be<<1|X>>>31),M[4]^=k,M[5]^=B,M[14]^=k,M[15]^=B,M[24]^=k,M[25]^=B,M[34]^=k,M[35]^=B,M[44]^=k,M[45]^=B,k=J^(ye<<1|fe>>>31),B=W^(fe<<1|ye>>>31),M[6]^=k,M[7]^=B,M[16]^=k,M[17]^=B,M[26]^=k,M[27]^=B,M[36]^=k,M[37]^=B,M[46]^=k,M[47]^=B,k=X^(O<<1|v>>>31),B=be^(v<<1|O>>>31),M[8]^=k,M[9]^=B,M[18]^=k,M[19]^=B,M[28]^=k,M[29]^=B,M[38]^=k,M[39]^=B,M[48]^=k,M[49]^=B,Ee=M[0],pe=M[1],ce=M[11]<<4|M[10]>>>28,Pe=M[10]<<4|M[11]>>>28,ie=M[20]<<3|M[21]>>>29,Ae=M[21]<<3|M[20]>>>29,Lt=M[31]<<9|M[30]>>>23,qt=M[30]<<9|M[31]>>>23,Be=M[40]<<18|M[41]>>>14,he=M[41]<<18|M[40]>>>14,Me=M[2]<<1|M[3]>>>31,Ve=M[3]<<1|M[2]>>>31,te=M[13]<<12|M[12]>>>20,se=M[12]<<12|M[13]>>>20,Te=M[22]<<10|M[23]>>>22,de=M[23]<<10|M[22]>>>22,xe=M[33]<<13|M[32]>>>19,_e=M[32]<<13|M[33]>>>19,zt=M[42]<<2|M[43]>>>30,kt=M[43]<<2|M[42]>>>30,We=M[5]<<30|M[4]>>>2,De=M[4]<<30|M[5]>>>2,Ge=M[14]<<6|M[15]>>>26,Se=M[15]<<6|M[14]>>>26,oe=M[25]<<11|M[24]>>>21,ee=M[24]<<11|M[25]>>>21,Fe=M[34]<<15|M[35]>>>17,Ue=M[35]<<15|M[34]>>>17,je=M[45]<<29|M[44]>>>3,$e=M[44]<<29|M[45]>>>3,me=M[6]<<28|M[7]>>>4,re=M[7]<<28|M[6]>>>4,Qe=M[17]<<23|M[16]>>>9,Ye=M[16]<<23|M[17]>>>9,Ie=M[26]<<25|M[27]>>>7,Ne=M[27]<<25|M[26]>>>7,ae=M[36]<<21|M[37]>>>11,ne=M[37]<<21|M[36]>>>11,le=M[47]<<24|M[46]>>>8,Le=M[46]<<24|M[47]>>>8,Oe=M[8]<<27|M[9]>>>5,Re=M[9]<<27|M[8]>>>5,ge=M[18]<<20|M[19]>>>12,we=M[19]<<20|M[18]>>>12,Je=M[29]<<7|M[28]>>>25,Ut=M[28]<<7|M[29]>>>25,ue=M[38]<<8|M[39]>>>24,Ce=M[39]<<8|M[38]>>>24,Z=M[48]<<14|M[49]>>>18,ve=M[49]<<14|M[48]>>>18,M[0]=Ee^~te&oe,M[1]=pe^~se&ee,M[10]=me^~ge&ie,M[11]=re^~we&Ae,M[20]=Me^~Ge&Ie,M[21]=Ve^~Se&Ne,M[30]=Oe^~ce&Te,M[31]=Re^~Pe&de,M[40]=We^~Qe&Je,M[41]=De^~Ye&Ut,M[2]=te^~oe&ae,M[3]=se^~ee&ne,M[12]=ge^~ie&xe,M[13]=we^~Ae&_e,M[22]=Ge^~Ie&ue,M[23]=Se^~Ne&Ce,M[32]=ce^~Te&Fe,M[33]=Pe^~de&Ue,M[42]=Qe^~Je&Lt,M[43]=Ye^~Ut&qt,M[4]=oe^~ae&Z,M[5]=ee^~ne&ve,M[14]=ie^~xe&je,M[15]=Ae^~_e&$e,M[24]=Ie^~ue&Be,M[25]=Ne^~Ce&he,M[34]=Te^~Fe&le,M[35]=de^~Ue&Le,M[44]=Je^~Lt&zt,M[45]=Ut^~qt&kt,M[6]=ae^~Z&Ee,M[7]=ne^~ve&pe,M[16]=xe^~je&me,M[17]=_e^~$e&re,M[26]=ue^~Be&Me,M[27]=Ce^~he&Ve,M[36]=Fe^~le&Oe,M[37]=Ue^~Le&Re,M[46]=Lt^~zt&We,M[47]=qt^~kt&De,M[8]=Z^~Ee&te,M[9]=ve^~pe&se,M[18]=je^~me&ge,M[19]=$e^~re&we,M[28]=Be^~Me&Ge,M[29]=he^~Ve&Se,M[38]=le^~Oe&ce,M[39]=Le^~Re&Pe,M[48]=zt^~We&Qe,M[49]=kt^~De&Ye,M[0]^=q[T],M[1]^=q[T+1]};if(c)t.exports=a;else for(l=0;l{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}const Za=Ph();var Wn;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Wn||(Wn={}));var Ht;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Ht||(Ht={}));const e0="0123456789abcdef";class ke{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const i=e.toLowerCase();ji[i]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Xa>ji[i])&&console.log.apply(console,r)}debug(...e){this._log(ke.levels.DEBUG,e)}info(...e){this._log(ke.levels.INFO,e)}warn(...e){this._log(ke.levels.WARNING,e)}makeError(e,r,i){if(Qa)return this.makeError("censored error",r,{});r||(r=ke.errors.UNKNOWN_ERROR),i||(i={});const f=[];Object.keys(i).forEach(y=>{const A=i[y];try{if(A instanceof Uint8Array){let x="";for(let E=0;E>4],x+=e0[A[E]&15];f.push(y+"=Uint8Array(0x"+x+")")}else f.push(y+"="+JSON.stringify(A))}catch{f.push(y+"="+JSON.stringify(i[y].toString()))}}),f.push(`code=${r}`),f.push(`version=${this.version}`);const n=e;let d="";switch(r){case Ht.NUMERIC_FAULT:{d="NUMERIC_FAULT";const y=e;switch(y){case"overflow":case"underflow":case"division-by-zero":d+="-"+y;break;case"negative-power":case"negative-width":d+="-unsupported";break;case"unbound-bitwise-result":d+="-unbound-result";break}break}case Ht.CALL_EXCEPTION:case Ht.INSUFFICIENT_FUNDS:case Ht.MISSING_NEW:case Ht.NONCE_EXPIRED:case Ht.REPLACEMENT_UNDERPRICED:case Ht.TRANSACTION_REPLACED:case Ht.UNPREDICTABLE_GAS_LIMIT:d=r;break}d&&(e+=" [ See: https://links.ethers.org/v5-errors-"+d+" ]"),f.length&&(e+=" ("+f.join(", ")+")");const c=new Error(e);return c.reason=n,c.code=r,Object.keys(i).forEach(function(y){c[y]=i[y]}),c}throwError(e,r,i){throw this.makeError(e,r,i)}throwArgumentError(e,r,i){return this.throwError(e,ke.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(e,r,i,f){e||this.throwError(r,i,f)}assertArgument(e,r,i,f){e||this.throwArgumentError(r,i,f)}checkNormalize(e){Za&&this.throwError("platform missing String.prototype.normalize",ke.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Za})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,i){i?i=": "+i:i="",er&&this.throwError("too many arguments"+i,ke.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ke.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Jn||(Jn=new ke(Rh)),Jn}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Wa){if(!e)return;this.globalLogger().throwError("error censorship permanent",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Qa=!!e,Wa=!!r}static setLogLevel(e){const r=ji[e.toLowerCase()];if(r==null){ke.globalLogger().warn("invalid log level - "+e);return}Xa=r}static from(e){return new ke(e)}}ke.errors=Ht,ke.levels=Wn;const Th="bytes/5.7.0",it=new ke(Th);function t0(t){return!!t.toHexString}function ei(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return ei(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function Fh(t){return xt(t)&&!(t.length%2)||ti(t)}function r0(t){return typeof t=="number"&&t==t&&t%1===0}function ti(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!r0(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function tt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),ei(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t)&&(t=t.toHexString()),xt(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":it.throwArgumentError("hex data is odd-length","value",t));const i=[];for(let f=0;ftt(f)),r=e.reduce((f,n)=>f+n.length,0),i=new Uint8Array(r);return e.reduce((f,n)=>(i.set(n,f),f+n.length),0),ei(i)}function Lh(t,e){t=tt(t),t.length>e&&it.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),ei(r)}function xt(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const Qn="0123456789abcdef";function pt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=Qn[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t))return t.toHexString();if(xt(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":it.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(ti(t)){let r="0x";for(let i=0;i>4]+Qn[f&15]}return r}return it.throwArgumentError("invalid hexlify value","value",t)}function qh(t){if(typeof t!="string")t=pt(t);else if(!xt(t)||t.length%2)return null;return(t.length-2)/2}function i0(t,e,r){return typeof t!="string"?t=pt(t):(!xt(t)||t.length%2)&&it.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function Vt(t,e){for(typeof t!="string"?t=pt(t):xt(t)||it.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&it.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function n0(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Fh(t)){let r=tt(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64))):r.length===65?(e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64)),e.v=r[64]):it.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:it.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=pt(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const f=Lh(tt(e._vs),32);e._vs=pt(f);const n=f[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=n:e.recoveryParam!==n&&it.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),f[0]&=127;const d=pt(f);e.s==null?e.s=d:e.s!==d&&it.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?it.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const f=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==f&&it.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!xt(e.r)?it.throwArgumentError("signature missing or invalid r","signature",t):e.r=Vt(e.r,32),e.s==null||!xt(e.s)?it.throwArgumentError("signature missing or invalid s","signature",t):e.s=Vt(e.s,32);const r=tt(e.s);r[0]>=128&&it.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const i=pt(r);e._vs&&(xt(e._vs)||it.throwArgumentError("signature invalid _vs","signature",t),e._vs=Vt(e._vs,32)),e._vs==null?e._vs=i:e._vs!==i&&it.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function Xn(t){return"0x"+Oh.keccak_256(tt(t))}var f0={exports:{}},zh={},kh=Object.freeze({__proto__:null,default:zh}),$i=ya(kh);(function(t){(function(e,r){function i(u,a){if(!u)throw new Error(a||"Assertion failed")}function f(u,a){u.super_=a;var o=function(){};o.prototype=a.prototype,u.prototype=new o,u.prototype.constructor=u}function n(u,a,o){if(n.isBN(u))return u;this.negative=0,this.words=null,this.length=0,this.red=null,u!==null&&((a==="le"||a==="be")&&(o=a,a=10),this._init(u||0,a||10,o||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(a){return a instanceof n?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===n.wordSize&&Array.isArray(a.words)},n.max=function(a,o){return a.cmp(o)>0?a:o},n.min=function(a,o){return a.cmp(o)<0?a:o},n.prototype._init=function(a,o,l){if(typeof a=="number")return this._initNumber(a,o,l);if(typeof a=="object")return this._initArray(a,o,l);o==="hex"&&(o=16),i(o===(o|0)&&o>=2&&o<=36),a=a.toString().replace(/\s+/g,"");var w=0;a[0]==="-"&&(w++,this.negative=1),w=0;w-=3)g=a[w]|a[w-1]<<8|a[w-2]<<16,this.words[_]|=g<>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);else if(l==="le")for(w=0,_=0;w>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);return this._strip()};function c(u,a){var o=u.charCodeAt(a);if(o>=48&&o<=57)return o-48;if(o>=65&&o<=70)return o-55;if(o>=97&&o<=102)return o-87;i(!1,"Invalid character in "+u)}function y(u,a,o){var l=c(u,o);return o-1>=a&&(l|=c(u,o-1)<<4),l}n.prototype._parseHex=function(a,o,l){this.length=Math.ceil((a.length-o)/6),this.words=new Array(this.length);for(var w=0;w=o;w-=2)s=y(a,o,w)<<_,this.words[g]|=s&67108863,_>=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8;else{var p=a.length-o;for(w=p%2===0?o+1:o;w=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8}this._strip()};function A(u,a,o,l){for(var w=0,_=0,g=Math.min(u.length,o),s=a;s=49?_=p-49+10:p>=17?_=p-17+10:_=p,i(p>=0&&_1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=E}catch{n.prototype.inspect=E}else n.prototype.inspect=E;function E(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],D=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],I=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(a,o){a=a||10,o=o|0||1;var l;if(a===16||a==="hex"){l="";for(var w=0,_=0,g=0;g>>24-w&16777215,w+=2,w>=26&&(w-=26,g--),_!==0||g!==this.length-1?l=N[6-p.length]+p+l:l=p+l}for(_!==0&&(l=_.toString(16)+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}if(a===(a|0)&&a>=2&&a<=36){var b=D[a],S=I[a];l="";var G=this.clone();for(G.negative=0;!G.isZero();){var M=G.modrn(S).toString(a);G=G.idivn(S),G.isZero()?l=M+l:l=N[b-M.length]+M+l}for(this.isZero()&&(l="0"+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},n.prototype.toJSON=function(){return this.toString(16,2)},d&&(n.prototype.toBuffer=function(a,o){return this.toArrayLike(d,a,o)}),n.prototype.toArray=function(a,o){return this.toArrayLike(Array,a,o)};var q=function(a,o){return a.allocUnsafe?a.allocUnsafe(o):new a(o)};n.prototype.toArrayLike=function(a,o,l){this._strip();var w=this.byteLength(),_=l||Math.max(1,w);i(w<=_,"byte array longer than desired length"),i(_>0,"Requested array length <= 0");var g=q(a,_),s=o==="le"?"LE":"BE";return this["_toArrayLike"+s](g,w),g},n.prototype._toArrayLikeLE=function(a,o){for(var l=0,w=0,_=0,g=0;_>8&255),l>16&255),g===6?(l>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l=0&&(a[l--]=s>>8&255),l>=0&&(a[l--]=s>>16&255),g===6?(l>=0&&(a[l--]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l>=0)for(a[l--]=w;l>=0;)a[l--]=0},Math.clz32?n.prototype._countBits=function(a){return 32-Math.clz32(a)}:n.prototype._countBits=function(a){var o=a,l=0;return o>=4096&&(l+=13,o>>>=13),o>=64&&(l+=7,o>>>=7),o>=8&&(l+=4,o>>>=4),o>=2&&(l+=2,o>>>=2),l+o},n.prototype._zeroBits=function(a){if(a===0)return 26;var o=a,l=0;return o&8191||(l+=13,o>>>=13),o&127||(l+=7,o>>>=7),o&15||(l+=4,o>>>=4),o&3||(l+=2,o>>>=2),o&1||l++,l},n.prototype.bitLength=function(){var a=this.words[this.length-1],o=this._countBits(a);return(this.length-1)*26+o};function H(u){for(var a=new Array(u.bitLength()),o=0;o>>w&1}return a}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,o=0;oa.length?this.clone().ior(a):a.clone().ior(this)},n.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},n.prototype.iuand=function(a){var o;this.length>a.length?o=a:o=this;for(var l=0;la.length?this.clone().iand(a):a.clone().iand(this)},n.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},n.prototype.iuxor=function(a){var o,l;this.length>a.length?(o=this,l=a):(o=a,l=this);for(var w=0;wa.length?this.clone().ixor(a):a.clone().ixor(this)},n.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},n.prototype.inotn=function(a){i(typeof a=="number"&&a>=0);var o=Math.ceil(a/26)|0,l=a%26;this._expand(o),l>0&&o--;for(var w=0;w0&&(this.words[w]=~this.words[w]&67108863>>26-l),this._strip()},n.prototype.notn=function(a){return this.clone().inotn(a)},n.prototype.setn=function(a,o){i(typeof a=="number"&&a>=0);var l=a/26|0,w=a%26;return this._expand(l+1),o?this.words[l]=this.words[l]|1<a.length?(l=this,w=a):(l=a,w=this);for(var _=0,g=0;g>>26;for(;_!==0&&g>>26;if(this.length=l.length,_!==0)this.words[this.length]=_,this.length++;else if(l!==this)for(;ga.length?this.clone().iadd(a):a.clone().iadd(this)},n.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var o=this.iadd(a);return a.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var l=this.cmp(a);if(l===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,_;l>0?(w=this,_=a):(w=a,_=this);for(var g=0,s=0;s<_.length;s++)o=(w.words[s]|0)-(_.words[s]|0)+g,g=o>>26,this.words[s]=o&67108863;for(;g!==0&&s>26,this.words[s]=o&67108863;if(g===0&&s>>26,G=p&67108863,M=Math.min(b,a.length-1),k=Math.max(0,b-u.length+1);k<=M;k++){var B=b-k|0;w=u.words[B]|0,_=a.words[k]|0,g=w*_+G,S+=g/67108864|0,G=g&67108863}o.words[b]=G|0,p=S|0}return p!==0?o.words[b]=p|0:o.length--,o._strip()}var z=function(a,o,l){var w=a.words,_=o.words,g=l.words,s=0,p,b,S,G=w[0]|0,M=G&8191,k=G>>>13,B=w[1]|0,T=B&8191,O=B>>>13,v=w[2]|0,R=v&8191,$=v>>>13,J=w[3]|0,W=J&8191,X=J>>>13,be=w[4]|0,ye=be&8191,fe=be>>>13,Ee=w[5]|0,pe=Ee&8191,te=Ee>>>13,se=w[6]|0,oe=se&8191,ee=se>>>13,ae=w[7]|0,ne=ae&8191,Z=ae>>>13,ve=w[8]|0,me=ve&8191,re=ve>>>13,ge=w[9]|0,we=ge&8191,ie=ge>>>13,Ae=_[0]|0,xe=Ae&8191,_e=Ae>>>13,je=_[1]|0,$e=je&8191,Me=je>>>13,Ve=_[2]|0,Ge=Ve&8191,Se=Ve>>>13,Ie=_[3]|0,Ne=Ie&8191,ue=Ie>>>13,Ce=_[4]|0,Be=Ce&8191,he=Ce>>>13,Oe=_[5]|0,Re=Oe&8191,ce=Oe>>>13,Pe=_[6]|0,Te=Pe&8191,de=Pe>>>13,Fe=_[7]|0,Ue=Fe&8191,le=Fe>>>13,Le=_[8]|0,We=Le&8191,De=Le>>>13,Qe=_[9]|0,Ye=Qe&8191,Je=Qe>>>13;l.negative=a.negative^o.negative,l.length=19,p=Math.imul(M,xe),b=Math.imul(M,_e),b=b+Math.imul(k,xe)|0,S=Math.imul(k,_e);var Ut=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,p=Math.imul(T,xe),b=Math.imul(T,_e),b=b+Math.imul(O,xe)|0,S=Math.imul(O,_e),p=p+Math.imul(M,$e)|0,b=b+Math.imul(M,Me)|0,b=b+Math.imul(k,$e)|0,S=S+Math.imul(k,Me)|0;var Lt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,p=Math.imul(R,xe),b=Math.imul(R,_e),b=b+Math.imul($,xe)|0,S=Math.imul($,_e),p=p+Math.imul(T,$e)|0,b=b+Math.imul(T,Me)|0,b=b+Math.imul(O,$e)|0,S=S+Math.imul(O,Me)|0,p=p+Math.imul(M,Ge)|0,b=b+Math.imul(M,Se)|0,b=b+Math.imul(k,Ge)|0,S=S+Math.imul(k,Se)|0;var qt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qt>>>26)|0,qt&=67108863,p=Math.imul(W,xe),b=Math.imul(W,_e),b=b+Math.imul(X,xe)|0,S=Math.imul(X,_e),p=p+Math.imul(R,$e)|0,b=b+Math.imul(R,Me)|0,b=b+Math.imul($,$e)|0,S=S+Math.imul($,Me)|0,p=p+Math.imul(T,Ge)|0,b=b+Math.imul(T,Se)|0,b=b+Math.imul(O,Ge)|0,S=S+Math.imul(O,Se)|0,p=p+Math.imul(M,Ne)|0,b=b+Math.imul(M,ue)|0,b=b+Math.imul(k,Ne)|0,S=S+Math.imul(k,ue)|0;var zt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zt>>>26)|0,zt&=67108863,p=Math.imul(ye,xe),b=Math.imul(ye,_e),b=b+Math.imul(fe,xe)|0,S=Math.imul(fe,_e),p=p+Math.imul(W,$e)|0,b=b+Math.imul(W,Me)|0,b=b+Math.imul(X,$e)|0,S=S+Math.imul(X,Me)|0,p=p+Math.imul(R,Ge)|0,b=b+Math.imul(R,Se)|0,b=b+Math.imul($,Ge)|0,S=S+Math.imul($,Se)|0,p=p+Math.imul(T,Ne)|0,b=b+Math.imul(T,ue)|0,b=b+Math.imul(O,Ne)|0,S=S+Math.imul(O,ue)|0,p=p+Math.imul(M,Be)|0,b=b+Math.imul(M,he)|0,b=b+Math.imul(k,Be)|0,S=S+Math.imul(k,he)|0;var kt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kt>>>26)|0,kt&=67108863,p=Math.imul(pe,xe),b=Math.imul(pe,_e),b=b+Math.imul(te,xe)|0,S=Math.imul(te,_e),p=p+Math.imul(ye,$e)|0,b=b+Math.imul(ye,Me)|0,b=b+Math.imul(fe,$e)|0,S=S+Math.imul(fe,Me)|0,p=p+Math.imul(W,Ge)|0,b=b+Math.imul(W,Se)|0,b=b+Math.imul(X,Ge)|0,S=S+Math.imul(X,Se)|0,p=p+Math.imul(R,Ne)|0,b=b+Math.imul(R,ue)|0,b=b+Math.imul($,Ne)|0,S=S+Math.imul($,ue)|0,p=p+Math.imul(T,Be)|0,b=b+Math.imul(T,he)|0,b=b+Math.imul(O,Be)|0,S=S+Math.imul(O,he)|0,p=p+Math.imul(M,Re)|0,b=b+Math.imul(M,ce)|0,b=b+Math.imul(k,Re)|0,S=S+Math.imul(k,ce)|0;var qr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qr>>>26)|0,qr&=67108863,p=Math.imul(oe,xe),b=Math.imul(oe,_e),b=b+Math.imul(ee,xe)|0,S=Math.imul(ee,_e),p=p+Math.imul(pe,$e)|0,b=b+Math.imul(pe,Me)|0,b=b+Math.imul(te,$e)|0,S=S+Math.imul(te,Me)|0,p=p+Math.imul(ye,Ge)|0,b=b+Math.imul(ye,Se)|0,b=b+Math.imul(fe,Ge)|0,S=S+Math.imul(fe,Se)|0,p=p+Math.imul(W,Ne)|0,b=b+Math.imul(W,ue)|0,b=b+Math.imul(X,Ne)|0,S=S+Math.imul(X,ue)|0,p=p+Math.imul(R,Be)|0,b=b+Math.imul(R,he)|0,b=b+Math.imul($,Be)|0,S=S+Math.imul($,he)|0,p=p+Math.imul(T,Re)|0,b=b+Math.imul(T,ce)|0,b=b+Math.imul(O,Re)|0,S=S+Math.imul(O,ce)|0,p=p+Math.imul(M,Te)|0,b=b+Math.imul(M,de)|0,b=b+Math.imul(k,Te)|0,S=S+Math.imul(k,de)|0;var zr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zr>>>26)|0,zr&=67108863,p=Math.imul(ne,xe),b=Math.imul(ne,_e),b=b+Math.imul(Z,xe)|0,S=Math.imul(Z,_e),p=p+Math.imul(oe,$e)|0,b=b+Math.imul(oe,Me)|0,b=b+Math.imul(ee,$e)|0,S=S+Math.imul(ee,Me)|0,p=p+Math.imul(pe,Ge)|0,b=b+Math.imul(pe,Se)|0,b=b+Math.imul(te,Ge)|0,S=S+Math.imul(te,Se)|0,p=p+Math.imul(ye,Ne)|0,b=b+Math.imul(ye,ue)|0,b=b+Math.imul(fe,Ne)|0,S=S+Math.imul(fe,ue)|0,p=p+Math.imul(W,Be)|0,b=b+Math.imul(W,he)|0,b=b+Math.imul(X,Be)|0,S=S+Math.imul(X,he)|0,p=p+Math.imul(R,Re)|0,b=b+Math.imul(R,ce)|0,b=b+Math.imul($,Re)|0,S=S+Math.imul($,ce)|0,p=p+Math.imul(T,Te)|0,b=b+Math.imul(T,de)|0,b=b+Math.imul(O,Te)|0,S=S+Math.imul(O,de)|0,p=p+Math.imul(M,Ue)|0,b=b+Math.imul(M,le)|0,b=b+Math.imul(k,Ue)|0,S=S+Math.imul(k,le)|0;var kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kr>>>26)|0,kr&=67108863,p=Math.imul(me,xe),b=Math.imul(me,_e),b=b+Math.imul(re,xe)|0,S=Math.imul(re,_e),p=p+Math.imul(ne,$e)|0,b=b+Math.imul(ne,Me)|0,b=b+Math.imul(Z,$e)|0,S=S+Math.imul(Z,Me)|0,p=p+Math.imul(oe,Ge)|0,b=b+Math.imul(oe,Se)|0,b=b+Math.imul(ee,Ge)|0,S=S+Math.imul(ee,Se)|0,p=p+Math.imul(pe,Ne)|0,b=b+Math.imul(pe,ue)|0,b=b+Math.imul(te,Ne)|0,S=S+Math.imul(te,ue)|0,p=p+Math.imul(ye,Be)|0,b=b+Math.imul(ye,he)|0,b=b+Math.imul(fe,Be)|0,S=S+Math.imul(fe,he)|0,p=p+Math.imul(W,Re)|0,b=b+Math.imul(W,ce)|0,b=b+Math.imul(X,Re)|0,S=S+Math.imul(X,ce)|0,p=p+Math.imul(R,Te)|0,b=b+Math.imul(R,de)|0,b=b+Math.imul($,Te)|0,S=S+Math.imul($,de)|0,p=p+Math.imul(T,Ue)|0,b=b+Math.imul(T,le)|0,b=b+Math.imul(O,Ue)|0,S=S+Math.imul(O,le)|0,p=p+Math.imul(M,We)|0,b=b+Math.imul(M,De)|0,b=b+Math.imul(k,We)|0,S=S+Math.imul(k,De)|0;var Hr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,p=Math.imul(we,xe),b=Math.imul(we,_e),b=b+Math.imul(ie,xe)|0,S=Math.imul(ie,_e),p=p+Math.imul(me,$e)|0,b=b+Math.imul(me,Me)|0,b=b+Math.imul(re,$e)|0,S=S+Math.imul(re,Me)|0,p=p+Math.imul(ne,Ge)|0,b=b+Math.imul(ne,Se)|0,b=b+Math.imul(Z,Ge)|0,S=S+Math.imul(Z,Se)|0,p=p+Math.imul(oe,Ne)|0,b=b+Math.imul(oe,ue)|0,b=b+Math.imul(ee,Ne)|0,S=S+Math.imul(ee,ue)|0,p=p+Math.imul(pe,Be)|0,b=b+Math.imul(pe,he)|0,b=b+Math.imul(te,Be)|0,S=S+Math.imul(te,he)|0,p=p+Math.imul(ye,Re)|0,b=b+Math.imul(ye,ce)|0,b=b+Math.imul(fe,Re)|0,S=S+Math.imul(fe,ce)|0,p=p+Math.imul(W,Te)|0,b=b+Math.imul(W,de)|0,b=b+Math.imul(X,Te)|0,S=S+Math.imul(X,de)|0,p=p+Math.imul(R,Ue)|0,b=b+Math.imul(R,le)|0,b=b+Math.imul($,Ue)|0,S=S+Math.imul($,le)|0,p=p+Math.imul(T,We)|0,b=b+Math.imul(T,De)|0,b=b+Math.imul(O,We)|0,S=S+Math.imul(O,De)|0,p=p+Math.imul(M,Ye)|0,b=b+Math.imul(M,Je)|0,b=b+Math.imul(k,Ye)|0,S=S+Math.imul(k,Je)|0;var Kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,p=Math.imul(we,$e),b=Math.imul(we,Me),b=b+Math.imul(ie,$e)|0,S=Math.imul(ie,Me),p=p+Math.imul(me,Ge)|0,b=b+Math.imul(me,Se)|0,b=b+Math.imul(re,Ge)|0,S=S+Math.imul(re,Se)|0,p=p+Math.imul(ne,Ne)|0,b=b+Math.imul(ne,ue)|0,b=b+Math.imul(Z,Ne)|0,S=S+Math.imul(Z,ue)|0,p=p+Math.imul(oe,Be)|0,b=b+Math.imul(oe,he)|0,b=b+Math.imul(ee,Be)|0,S=S+Math.imul(ee,he)|0,p=p+Math.imul(pe,Re)|0,b=b+Math.imul(pe,ce)|0,b=b+Math.imul(te,Re)|0,S=S+Math.imul(te,ce)|0,p=p+Math.imul(ye,Te)|0,b=b+Math.imul(ye,de)|0,b=b+Math.imul(fe,Te)|0,S=S+Math.imul(fe,de)|0,p=p+Math.imul(W,Ue)|0,b=b+Math.imul(W,le)|0,b=b+Math.imul(X,Ue)|0,S=S+Math.imul(X,le)|0,p=p+Math.imul(R,We)|0,b=b+Math.imul(R,De)|0,b=b+Math.imul($,We)|0,S=S+Math.imul($,De)|0,p=p+Math.imul(T,Ye)|0,b=b+Math.imul(T,Je)|0,b=b+Math.imul(O,Ye)|0,S=S+Math.imul(O,Je)|0;var jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(jr>>>26)|0,jr&=67108863,p=Math.imul(we,Ge),b=Math.imul(we,Se),b=b+Math.imul(ie,Ge)|0,S=Math.imul(ie,Se),p=p+Math.imul(me,Ne)|0,b=b+Math.imul(me,ue)|0,b=b+Math.imul(re,Ne)|0,S=S+Math.imul(re,ue)|0,p=p+Math.imul(ne,Be)|0,b=b+Math.imul(ne,he)|0,b=b+Math.imul(Z,Be)|0,S=S+Math.imul(Z,he)|0,p=p+Math.imul(oe,Re)|0,b=b+Math.imul(oe,ce)|0,b=b+Math.imul(ee,Re)|0,S=S+Math.imul(ee,ce)|0,p=p+Math.imul(pe,Te)|0,b=b+Math.imul(pe,de)|0,b=b+Math.imul(te,Te)|0,S=S+Math.imul(te,de)|0,p=p+Math.imul(ye,Ue)|0,b=b+Math.imul(ye,le)|0,b=b+Math.imul(fe,Ue)|0,S=S+Math.imul(fe,le)|0,p=p+Math.imul(W,We)|0,b=b+Math.imul(W,De)|0,b=b+Math.imul(X,We)|0,S=S+Math.imul(X,De)|0,p=p+Math.imul(R,Ye)|0,b=b+Math.imul(R,Je)|0,b=b+Math.imul($,Ye)|0,S=S+Math.imul($,Je)|0;var $r=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+($r>>>26)|0,$r&=67108863,p=Math.imul(we,Ne),b=Math.imul(we,ue),b=b+Math.imul(ie,Ne)|0,S=Math.imul(ie,ue),p=p+Math.imul(me,Be)|0,b=b+Math.imul(me,he)|0,b=b+Math.imul(re,Be)|0,S=S+Math.imul(re,he)|0,p=p+Math.imul(ne,Re)|0,b=b+Math.imul(ne,ce)|0,b=b+Math.imul(Z,Re)|0,S=S+Math.imul(Z,ce)|0,p=p+Math.imul(oe,Te)|0,b=b+Math.imul(oe,de)|0,b=b+Math.imul(ee,Te)|0,S=S+Math.imul(ee,de)|0,p=p+Math.imul(pe,Ue)|0,b=b+Math.imul(pe,le)|0,b=b+Math.imul(te,Ue)|0,S=S+Math.imul(te,le)|0,p=p+Math.imul(ye,We)|0,b=b+Math.imul(ye,De)|0,b=b+Math.imul(fe,We)|0,S=S+Math.imul(fe,De)|0,p=p+Math.imul(W,Ye)|0,b=b+Math.imul(W,Je)|0,b=b+Math.imul(X,Ye)|0,S=S+Math.imul(X,Je)|0;var Vr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,p=Math.imul(we,Be),b=Math.imul(we,he),b=b+Math.imul(ie,Be)|0,S=Math.imul(ie,he),p=p+Math.imul(me,Re)|0,b=b+Math.imul(me,ce)|0,b=b+Math.imul(re,Re)|0,S=S+Math.imul(re,ce)|0,p=p+Math.imul(ne,Te)|0,b=b+Math.imul(ne,de)|0,b=b+Math.imul(Z,Te)|0,S=S+Math.imul(Z,de)|0,p=p+Math.imul(oe,Ue)|0,b=b+Math.imul(oe,le)|0,b=b+Math.imul(ee,Ue)|0,S=S+Math.imul(ee,le)|0,p=p+Math.imul(pe,We)|0,b=b+Math.imul(pe,De)|0,b=b+Math.imul(te,We)|0,S=S+Math.imul(te,De)|0,p=p+Math.imul(ye,Ye)|0,b=b+Math.imul(ye,Je)|0,b=b+Math.imul(fe,Ye)|0,S=S+Math.imul(fe,Je)|0;var Gr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,p=Math.imul(we,Re),b=Math.imul(we,ce),b=b+Math.imul(ie,Re)|0,S=Math.imul(ie,ce),p=p+Math.imul(me,Te)|0,b=b+Math.imul(me,de)|0,b=b+Math.imul(re,Te)|0,S=S+Math.imul(re,de)|0,p=p+Math.imul(ne,Ue)|0,b=b+Math.imul(ne,le)|0,b=b+Math.imul(Z,Ue)|0,S=S+Math.imul(Z,le)|0,p=p+Math.imul(oe,We)|0,b=b+Math.imul(oe,De)|0,b=b+Math.imul(ee,We)|0,S=S+Math.imul(ee,De)|0,p=p+Math.imul(pe,Ye)|0,b=b+Math.imul(pe,Je)|0,b=b+Math.imul(te,Ye)|0,S=S+Math.imul(te,Je)|0;var Yr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,p=Math.imul(we,Te),b=Math.imul(we,de),b=b+Math.imul(ie,Te)|0,S=Math.imul(ie,de),p=p+Math.imul(me,Ue)|0,b=b+Math.imul(me,le)|0,b=b+Math.imul(re,Ue)|0,S=S+Math.imul(re,le)|0,p=p+Math.imul(ne,We)|0,b=b+Math.imul(ne,De)|0,b=b+Math.imul(Z,We)|0,S=S+Math.imul(Z,De)|0,p=p+Math.imul(oe,Ye)|0,b=b+Math.imul(oe,Je)|0,b=b+Math.imul(ee,Ye)|0,S=S+Math.imul(ee,Je)|0;var Jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,p=Math.imul(we,Ue),b=Math.imul(we,le),b=b+Math.imul(ie,Ue)|0,S=Math.imul(ie,le),p=p+Math.imul(me,We)|0,b=b+Math.imul(me,De)|0,b=b+Math.imul(re,We)|0,S=S+Math.imul(re,De)|0,p=p+Math.imul(ne,Ye)|0,b=b+Math.imul(ne,Je)|0,b=b+Math.imul(Z,Ye)|0,S=S+Math.imul(Z,Je)|0;var Wr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,p=Math.imul(we,We),b=Math.imul(we,De),b=b+Math.imul(ie,We)|0,S=Math.imul(ie,De),p=p+Math.imul(me,Ye)|0,b=b+Math.imul(me,Je)|0,b=b+Math.imul(re,Ye)|0,S=S+Math.imul(re,Je)|0;var oa=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(oa>>>26)|0,oa&=67108863,p=Math.imul(we,Ye),b=Math.imul(we,Je),b=b+Math.imul(ie,Ye)|0,S=Math.imul(ie,Je);var sa=(s+p|0)+((b&8191)<<13)|0;return s=(S+(b>>>13)|0)+(sa>>>26)|0,sa&=67108863,g[0]=Ut,g[1]=Lt,g[2]=qt,g[3]=zt,g[4]=kt,g[5]=qr,g[6]=zr,g[7]=kr,g[8]=Hr,g[9]=Kr,g[10]=jr,g[11]=$r,g[12]=Vr,g[13]=Gr,g[14]=Yr,g[15]=Jr,g[16]=Wr,g[17]=oa,g[18]=sa,s!==0&&(g[19]=s,l.length++),l};Math.imul||(z=V);function j(u,a,o){o.negative=a.negative^u.negative,o.length=u.length+a.length;for(var l=0,w=0,_=0;_>>26)|0,w+=g>>>26,g&=67108863}o.words[_]=s,l=g,g=w}return l!==0?o.words[_]=l:o.length--,o._strip()}function F(u,a,o){return j(u,a,o)}n.prototype.mulTo=function(a,o){var l,w=this.length+a.length;return this.length===10&&a.length===10?l=z(this,a,o):w<63?l=V(this,a,o):w<1024?l=j(this,a,o):l=F(this,a,o),l},n.prototype.mul=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),this.mulTo(a,o)},n.prototype.mulf=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),F(this,a,o)},n.prototype.imul=function(a){return this.clone().mulTo(a,this)},n.prototype.imuln=function(a){var o=a<0;o&&(a=-a),i(typeof a=="number"),i(a<67108864);for(var l=0,w=0;w>=26,l+=_/67108864|0,l+=g>>>26,this.words[w]=g&67108863}return l!==0&&(this.words[w]=l,this.length++),o?this.ineg():this},n.prototype.muln=function(a){return this.clone().imuln(a)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(a){var o=H(a);if(o.length===0)return new n(1);for(var l=this,w=0;w=0);var o=a%26,l=(a-o)/26,w=67108863>>>26-o<<26-o,_;if(o!==0){var g=0;for(_=0;_>>26-o}g&&(this.words[_]=g,this.length++)}if(l!==0){for(_=this.length-1;_>=0;_--)this.words[_+l]=this.words[_];for(_=0;_=0);var w;o?w=(o-o%26)/26:w=0;var _=a%26,g=Math.min((a-_)/26,this.length),s=67108863^67108863>>>_<<_,p=l;if(w-=g,w=Math.max(0,w),p){for(var b=0;bg)for(this.length-=g,b=0;b=0&&(S!==0||b>=w);b--){var G=this.words[b]|0;this.words[b]=S<<26-_|G>>>_,S=G&s}return p&&S!==0&&(p.words[p.length++]=S),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(a,o,l){return i(this.negative===0),this.iushrn(a,o,l)},n.prototype.shln=function(a){return this.clone().ishln(a)},n.prototype.ushln=function(a){return this.clone().iushln(a)},n.prototype.shrn=function(a){return this.clone().ishrn(a)},n.prototype.ushrn=function(a){return this.clone().iushrn(a)},n.prototype.testn=function(a){i(typeof a=="number"&&a>=0);var o=a%26,l=(a-o)/26,w=1<=0);var o=a%26,l=(a-o)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=l)return this;if(o!==0&&l++,this.length=Math.min(l,this.length),o!==0){var w=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(a){if(i(typeof a=="number"),i(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(p/67108864|0),this.words[_+l]=g&67108863}for(;_>26,this.words[_+l]=g&67108863;if(s===0)return this._strip();for(i(s===-1),s=0,_=0;_>26,this.words[_]=g&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(a,o){var l=this.length-a.length,w=this.clone(),_=a,g=_.words[_.length-1]|0,s=this._countBits(g);l=26-s,l!==0&&(_=_.ushln(l),w.iushln(l),g=_.words[_.length-1]|0);var p=w.length-_.length,b;if(o!=="mod"){b=new n(null),b.length=p+1,b.words=new Array(b.length);for(var S=0;S=0;M--){var k=(w.words[_.length+M]|0)*67108864+(w.words[_.length+M-1]|0);for(k=Math.min(k/g|0,67108863),w._ishlnsubmul(_,k,M);w.negative!==0;)k--,w.negative=0,w._ishlnsubmul(_,1,M),w.isZero()||(w.negative^=1);b&&(b.words[M]=k)}return b&&b._strip(),w._strip(),o!=="div"&&l!==0&&w.iushrn(l),{div:b||null,mod:w}},n.prototype.divmod=function(a,o,l){if(i(!a.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var w,_,g;return this.negative!==0&&a.negative===0?(g=this.neg().divmod(a,o),o!=="mod"&&(w=g.div.neg()),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.iadd(a)),{div:w,mod:_}):this.negative===0&&a.negative!==0?(g=this.divmod(a.neg(),o),o!=="mod"&&(w=g.div.neg()),{div:w,mod:g.mod}):this.negative&a.negative?(g=this.neg().divmod(a.neg(),o),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.isub(a)),{div:g.div,mod:_}):a.length>this.length||this.cmp(a)<0?{div:new n(0),mod:this}:a.length===1?o==="div"?{div:this.divn(a.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new n(this.modrn(a.words[0]))}:this._wordDiv(a,o)},n.prototype.div=function(a){return this.divmod(a,"div",!1).div},n.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},n.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},n.prototype.divRound=function(a){var o=this.divmod(a);if(o.mod.isZero())return o.div;var l=o.div.negative!==0?o.mod.isub(a):o.mod,w=a.ushrn(1),_=a.andln(1),g=l.cmp(w);return g<0||_===1&&g===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modrn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=(1<<26)%a,w=0,_=this.length-1;_>=0;_--)w=(l*w+(this.words[_]|0))%a;return o?-w:w},n.prototype.modn=function(a){return this.modrn(a)},n.prototype.idivn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=0,w=this.length-1;w>=0;w--){var _=(this.words[w]|0)+l*67108864;this.words[w]=_/a|0,l=_%a}return this._strip(),o?this.ineg():this},n.prototype.divn=function(a){return this.clone().idivn(a)},n.prototype.egcd=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=new n(0),s=new n(1),p=0;o.isEven()&&l.isEven();)o.iushrn(1),l.iushrn(1),++p;for(var b=l.clone(),S=o.clone();!o.isZero();){for(var G=0,M=1;!(o.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(o.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(b),_.isub(S)),w.iushrn(1),_.iushrn(1);for(var k=0,B=1;!(l.words[0]&B)&&k<26;++k,B<<=1);if(k>0)for(l.iushrn(k);k-- >0;)(g.isOdd()||s.isOdd())&&(g.iadd(b),s.isub(S)),g.iushrn(1),s.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(g),_.isub(s)):(l.isub(o),g.isub(w),s.isub(_))}return{a:g,b:s,gcd:l.iushln(p)}},n.prototype._invmp=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=l.clone();o.cmpn(1)>0&&l.cmpn(1)>0;){for(var s=0,p=1;!(o.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(o.iushrn(s);s-- >0;)w.isOdd()&&w.iadd(g),w.iushrn(1);for(var b=0,S=1;!(l.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(l.iushrn(b);b-- >0;)_.isOdd()&&_.iadd(g),_.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(_)):(l.isub(o),_.isub(w))}var G;return o.cmpn(1)===0?G=w:G=_,G.cmpn(0)<0&&G.iadd(a),G},n.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var o=this.clone(),l=a.clone();o.negative=0,l.negative=0;for(var w=0;o.isEven()&&l.isEven();w++)o.iushrn(1),l.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;l.isEven();)l.iushrn(1);var _=o.cmp(l);if(_<0){var g=o;o=l,l=g}else if(_===0||l.cmpn(1)===0)break;o.isub(l)}while(!0);return l.iushln(w)},n.prototype.invm=function(a){return this.egcd(a).a.umod(a)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(a){return this.words[0]&a},n.prototype.bincn=function(a){i(typeof a=="number");var o=a%26,l=(a-o)/26,w=1<>>26,s&=67108863,this.words[g]=s}return _!==0&&(this.words[g]=_,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(a){var o=a<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this._strip();var l;if(this.length>1)l=1;else{o&&(a=-a),i(a<=67108863,"Number is too big");var w=this.words[0]|0;l=w===a?0:wa.length)return 1;if(this.length=0;l--){var w=this.words[l]|0,_=a.words[l]|0;if(w!==_){w<_?o=-1:w>_&&(o=1);break}}return o},n.prototype.gtn=function(a){return this.cmpn(a)===1},n.prototype.gt=function(a){return this.cmp(a)===1},n.prototype.gten=function(a){return this.cmpn(a)>=0},n.prototype.gte=function(a){return this.cmp(a)>=0},n.prototype.ltn=function(a){return this.cmpn(a)===-1},n.prototype.lt=function(a){return this.cmp(a)===-1},n.prototype.lten=function(a){return this.cmpn(a)<=0},n.prototype.lte=function(a){return this.cmp(a)<=0},n.prototype.eqn=function(a){return this.cmpn(a)===0},n.prototype.eq=function(a){return this.cmp(a)===0},n.red=function(a){return new C(a)},n.prototype.toRed=function(a){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(a){return this.red=a,this},n.prototype.forceRed=function(a){return i(!this.red,"Already a number in reduction context"),this._forceRed(a)},n.prototype.redAdd=function(a){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},n.prototype.redIAdd=function(a){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},n.prototype.redSub=function(a){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},n.prototype.redISub=function(a){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},n.prototype.redShl=function(a){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},n.prototype.redMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},n.prototype.redIMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(a){return i(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var U={k256:null,p224:null,p192:null,p25519:null};function L(u,a){this.name=u,this.p=new n(a,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var a=new n(null);return a.words=new Array(Math.ceil(this.n/13)),a},L.prototype.ireduce=function(a){var o=a,l;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),l=o.bitLength();while(l>this.n);var w=l0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},L.prototype.split=function(a,o){a.iushrn(this.n,0,o)},L.prototype.imulK=function(a){return a.imul(this.k)};function m(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(m,L),m.prototype.split=function(a,o){for(var l=4194303,w=Math.min(a.length,9),_=0;_>>22,g=s}g>>>=22,a.words[_-10]=g,g===0&&a.length>10?a.length-=10:a.length-=9},m.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var o=0,l=0;l>>=26,a.words[l]=_,o=w}return o!==0&&(a.words[a.length++]=o),a},n._prime=function(a){if(U[a])return U[a];var o;if(a==="k256")o=new m;else if(a==="p224")o=new P;else if(a==="p192")o=new Y;else if(a==="p25519")o=new Q;else throw new Error("Unknown prime "+a);return U[a]=o,o};function C(u){if(typeof u=="string"){var a=n._prime(u);this.m=a.p,this.prime=a}else i(u.gtn(1),"modulus must be greater than 1"),this.m=u,this.prime=null}C.prototype._verify1=function(a){i(a.negative===0,"red works only with positives"),i(a.red,"red works only with red numbers")},C.prototype._verify2=function(a,o){i((a.negative|o.negative)===0,"red works only with positives"),i(a.red&&a.red===o.red,"red works only with red numbers")},C.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(x(a,a.umod(this.m)._forceRed(this)),a)},C.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},C.prototype.add=function(a,o){this._verify2(a,o);var l=a.add(o);return l.cmp(this.m)>=0&&l.isub(this.m),l._forceRed(this)},C.prototype.iadd=function(a,o){this._verify2(a,o);var l=a.iadd(o);return l.cmp(this.m)>=0&&l.isub(this.m),l},C.prototype.sub=function(a,o){this._verify2(a,o);var l=a.sub(o);return l.cmpn(0)<0&&l.iadd(this.m),l._forceRed(this)},C.prototype.isub=function(a,o){this._verify2(a,o);var l=a.isub(o);return l.cmpn(0)<0&&l.iadd(this.m),l},C.prototype.shl=function(a,o){return this._verify1(a),this.imod(a.ushln(o))},C.prototype.imul=function(a,o){return this._verify2(a,o),this.imod(a.imul(o))},C.prototype.mul=function(a,o){return this._verify2(a,o),this.imod(a.mul(o))},C.prototype.isqr=function(a){return this.imul(a,a.clone())},C.prototype.sqr=function(a){return this.mul(a,a)},C.prototype.sqrt=function(a){if(a.isZero())return a.clone();var o=this.m.andln(3);if(i(o%2===1),o===3){var l=this.m.add(new n(1)).iushrn(2);return this.pow(a,l)}for(var w=this.m.subn(1),_=0;!w.isZero()&&w.andln(1)===0;)_++,w.iushrn(1);i(!w.isZero());var g=new n(1).toRed(this),s=g.redNeg(),p=this.m.subn(1).iushrn(1),b=this.m.bitLength();for(b=new n(2*b*b).toRed(this);this.pow(b,p).cmp(s)!==0;)b.redIAdd(s);for(var S=this.pow(b,w),G=this.pow(a,w.addn(1).iushrn(1)),M=this.pow(a,w),k=_;M.cmp(g)!==0;){for(var B=M,T=0;B.cmp(g)!==0;T++)B=B.redSqr();i(T=0;_--){for(var S=o.words[_],G=b-1;G>=0;G--){var M=S>>G&1;if(g!==w[0]&&(g=this.sqr(g)),M===0&&s===0){p=0;continue}s<<=1,s|=M,p++,!(p!==l&&(_!==0||G!==0))&&(g=this.mul(g,w[s]),p=0,s=0)}b=26}return g},C.prototype.convertTo=function(a){var o=a.umod(this.m);return o===a?o.clone():o},C.prototype.convertFrom=function(a){var o=a.clone();return o.red=null,o},n.mont=function(a){return new h(a)};function h(u){C.call(this,u),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(h,C),h.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},h.prototype.convertFrom=function(a){var o=this.imod(a.mul(this.rinv));return o.red=null,o},h.prototype.imul=function(a,o){if(a.isZero()||o.isZero())return a.words[0]=0,a.length=1,a;var l=a.imul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.mul=function(a,o){if(a.isZero()||o.isZero())return new n(0)._forceRed(this);var l=a.mul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.invm=function(a){var o=this.imod(a._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(t,Rn)})(f0);var qe=f0.exports;const a0="bignumber/5.7.0";var Vi=qe.BN;const ar=new ke(a0),Zn={},o0=9007199254740991;function Hh(t){return t!=null&&(Ze.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||xt(t)||typeof t=="bigint"||ti(t))}let s0=!1;class Ze{constructor(e,r){e!==Zn&&ar.throwError("cannot call constructor directly; use BigNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return yt(He(this).fromTwos(e))}toTwos(e){return yt(He(this).toTwos(e))}abs(){return this._hex[0]==="-"?Ze.from(this._hex.substring(1)):this}add(e){return yt(He(this).add(He(e)))}sub(e){return yt(He(this).sub(He(e)))}div(e){return Ze.from(e).isZero()&&Nt("division-by-zero","div"),yt(He(this).div(He(e)))}mul(e){return yt(He(this).mul(He(e)))}mod(e){const r=He(e);return r.isNeg()&&Nt("division-by-zero","mod"),yt(He(this).umod(r))}pow(e){const r=He(e);return r.isNeg()&&Nt("negative-power","pow"),yt(He(this).pow(r))}and(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","and"),yt(He(this).and(r))}or(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","or"),yt(He(this).or(r))}xor(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","xor"),yt(He(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&Nt("negative-width","mask"),yt(He(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&Nt("negative-width","shl"),yt(He(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&Nt("negative-width","shr"),yt(He(this).shrn(e))}eq(e){return He(this).eq(He(e))}lt(e){return He(this).lt(He(e))}lte(e){return He(this).lte(He(e))}gt(e){return He(this).gt(He(e))}gte(e){return He(this).gte(He(e))}isNegative(){return this._hex[0]==="-"}isZero(){return He(this).isZero()}toNumber(){try{return He(this).toNumber()}catch{Nt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return ar.throwError("this platform does not support BigInt",ke.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?s0||(s0=!0,ar.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?ar.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",ke.errors.UNEXPECTED_ARGUMENT,{}):ar.throwError("BigNumber.toString does not accept parameters",ke.errors.UNEXPECTED_ARGUMENT,{})),He(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof Ze)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new Ze(Zn,Mi(e)):e.match(/^-?[0-9]+$/)?new Ze(Zn,Mi(new Vi(e))):ar.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&Nt("underflow","BigNumber.from",e),(e>=o0||e<=-o0)&&Nt("overflow","BigNumber.from",e),Ze.from(String(e));const r=e;if(typeof r=="bigint")return Ze.from(r.toString());if(ti(r))return Ze.from(pt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return Ze.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(xt(i)||i[0]==="-"&&xt(i.substring(1))))return Ze.from(i)}return ar.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Mi(t){if(typeof t!="string")return Mi(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&ar.throwArgumentError("invalid hex","value",t),t=Mi(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function yt(t){return Ze.from(Mi(t))}function He(t){const e=Ze.from(t).toHexString();return e[0]==="-"?new Vi("-"+e.substring(3),16):new Vi(e.substring(2),16)}function Nt(t,e,r){const i={fault:t,operation:e};return r!=null&&(i.value=r),ar.throwError(t,ke.errors.NUMERIC_FAULT,i)}function Kh(t){return new Vi(t,36).toString(16)}const mt=new ke(a0),Ei={},u0=Ze.from(0),h0=Ze.from(-1);function c0(t,e,r,i){const f={fault:e,operation:r};return i!==void 0&&(f.value=i),mt.throwError(t,ke.errors.NUMERIC_FAULT,f)}let Si="0";for(;Si.length<256;)Si+=Si;function ef(t){if(typeof t!="number")try{t=Ze.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+Si.substring(0,t):mt.throwArgumentError("invalid decimal size","decimals",t)}function tf(t,e){e==null&&(e=0);const r=ef(e);t=Ze.from(t);const i=t.lt(u0);i&&(t=t.mul(h0));let f=t.mod(r).toString();for(;f.length2&&mt.throwArgumentError("too many decimal points","value",t);let n=f[0],d=f[1];for(n||(n="0"),d||(d="0");d[d.length-1]==="0";)d=d.substring(0,d.length-1);for(d.length>r.length-1&&c0("fractional component exceeds decimals","underflow","parseFixed"),d===""&&(d="0");d.lengthe[d]==null?y:(typeof e[d]!==c&&mt.throwArgumentError("invalid fixed format ("+d+" not "+c+")","format."+d,e[d]),e[d]);r=n("signed","boolean",r),i=n("width","number",i),f=n("decimals","number",f)}return i%8&&mt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),f>80&&mt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",f),new ri(Ei,r,i,f)}}class st{constructor(e,r,i,f){e!==Ei&&mt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=f,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&mt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(d0.toFormat(r.format))),r}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(d0.toFormat(r.format))),r}round(e){e==null&&(e=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&mt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;const i=st.from("1"+Si.substring(0,e),this.format),f=jh.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(f).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&mt.throwArgumentError("invalid byte width","width",e);const r=Ze.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Vt(r,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return st.fromString(this._value,e)}static fromValue(e,r,i){return i==null&&r!=null&&!Hh(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),st.fromString(tf(e,r),ri.from(i))}static fromString(e,r){r==null&&(r="fixed");const i=ri.from(r),f=or(e,i.decimals);!i.signed&&f.lt(u0)&&c0("unsigned value cannot be negative","overflow","value",e);let n=null;i.signed?n=f.toTwos(i.width).toHexString():(n=f.toHexString(),n=Vt(n,i.width/8));const d=tf(f,i.decimals);return new st(Ei,n,d,i)}static fromBytes(e,r){r==null&&(r="fixed");const i=ri.from(r);if(tt(e).length>i.width/8)throw new Error("overflow");let f=Ze.from(e);i.signed&&(f=f.fromTwos(i.width));const n=f.toTwos((i.signed?0:1)+i.width).toHexString(),d=tf(f,i.decimals);return new st(Ei,n,d,i)}static from(e,r){if(typeof e=="string")return st.fromString(e,r);if(ti(e))return st.fromBytes(e,r);try{return st.fromValue(e,0,r)}catch(i){if(i.code!==ke.errors.INVALID_ARGUMENT)throw i}return mt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const d0=st.from(1),jh=st.from("0.5"),$h="strings/5.7.0",l0=new ke($h);var Gi;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Gi||(Gi={}));var ii;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(ii||(ii={}));function Vh(t,e,r,i,f){return l0.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)}function b0(t,e,r,i,f){if(t===ii.BAD_PREFIX||t===ii.UNEXPECTED_CONTINUE){let n=0;for(let d=e+1;d>6===2;d++)n++;return n}return t===ii.OVERRUN?r.length-e-1:0}function Gh(t,e,r,i,f){return t===ii.OVERLONG?(i.push(f),0):(i.push(65533),b0(t,e,r))}Object.freeze({error:Vh,ignore:b0,replace:Gh});function rf(t,e=Gi.current){e!=Gi.current&&(l0.checkNormalize(),t=t.normalize(e));let r=[];for(let i=0;i>6|192),r.push(f&63|128);else if((f&64512)==55296){i++;const n=t.charCodeAt(i);if(i>=t.length||(n&64512)!==56320)throw new Error("invalid utf-8 string");const d=65536+((f&1023)<<10)+(n&1023);r.push(d>>18|240),r.push(d>>12&63|128),r.push(d>>6&63|128),r.push(d&63|128)}else r.push(f>>12|224),r.push(f>>6&63|128),r.push(f&63|128)}return tt(r)}function Yh(t){if(t.length%4!==0)throw new Error("bad data");let e=[];for(let r=0;r{let n=f.split(":");r+=parseInt(n[0],16),i[r]=e(n[1])}),i}function v0(t){let e=0;return t.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let f=e+parseInt(i[0],16);return e=parseInt(i[1],16),{l:f,h:e}})}v0("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nf("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),nf("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),nf("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Yh),v0("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const p0="hash/5.7.0";function Jh(t){t=atob(t);const e=[];for(let r=0;r0&&Array.isArray(c)?f(c,d-1):r.push(c)})};return f(t,e),r}function Wh(t){const e={};for(let r=0;r>--y&1}const E=31,N=Math.pow(2,E),D=N>>>1,I=D>>1,q=N-1;let H=0;for(let U=0;U1;){let Q=L+m>>>1;U>>1|x(),P=P<<1^D,Y=(Y^D)<<1|D|1;z=P,j=1+Y-P}let F=i-4;return V.map(U=>{switch(U-F){case 3:return F+65792+(t[c++]<<16|t[c++]<<8|t[c++]);case 2:return F+256+(t[c++]<<8|t[c++]);case 1:return F+t[c++];default:return U-1}})}function Xh(t){let e=0;return()=>t[e++]}function Zh(t){return Xh(Qh(t))}function ec(t){return t&1?~t>>1:t>>1}function tc(t,e){let r=Array(t);for(let i=0;ie[d]):r}function ic(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(fc(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(ac(r,t))}return Wh(m0(e))}function nc(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(r)}return e}function y0(t,e,r){let i=Array(t).fill(void 0).map(()=>[]);for(let f=0;fi[d].push(n));return i}function fc(t,e){let r=1+e(),i=e(),f=nc(e),n=y0(f.length,1+t,e);return m0(n.map((d,c)=>{const y=d[0],A=d.slice(1);return Array(f[c]).fill(void 0).map((x,E)=>{let N=E*i;return[y+E*r,A.map(D=>D+N)]})}))}function ac(t,e){let r=1+e();return y0(r,1+t,e).map(f=>[f[0],f.slice(1)])}function oc(t){let e=Yi(t).sort((i,f)=>i-f);return r();function r(){let i=[];for(;;){let A=Yi(t,e);if(A.length==0)break;i.push({set:new Set(A),node:r()})}i.sort((A,x)=>x.set.size-A.set.size);let f=t(),n=f%3;f=f/3|0;let d=!!(f&1);f>>=1;let c=f==1,y=f==2;return{branches:i,valid:n,fe0f:d,save:c,check:y}}}function sc(){return Zh(Jh("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"))}const Ji=sc();new Set(Yi(Ji)),new Set(Yi(Ji)),ic(Ji),oc(Ji),new ke(p0),new Uint8Array(32).fill(0);const uc=`Ethereum Signed Message: -+`;function w0(t){return typeof t=="string"&&(t=rf(t)),Xn(Uh([rf(uc),rf(String(t.length)),t]))}const hc="rlp/5.7.0";new ke(hc);const cc="address/5.7.0",Di=new ke(cc);function A0(t){xt(t,20)||Di.throwArgumentError("invalid address","address",t),t=t.toLowerCase();const e=t.substring(2).split(""),r=new Uint8Array(40);for(let f=0;f<40;f++)r[f]=e[f].charCodeAt(0);const i=tt(Xn(r));for(let f=0;f<40;f+=2)i[f>>1]>>4>=8&&(e[f]=e[f].toUpperCase()),(i[f>>1]&15)>=8&&(e[f+1]=e[f+1].toUpperCase());return"0x"+e.join("")}const dc=9007199254740991;function lc(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}const ff={};for(let t=0;t<10;t++)ff[String(t)]=String(t);for(let t=0;t<26;t++)ff[String.fromCharCode(65+t)]=String(10+t);const x0=Math.floor(lc(dc));function bc(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";let e=t.split("").map(i=>ff[i]).join("");for(;e.length>=x0;){let i=e.substring(0,x0);e=parseInt(i,10)%97+e.substring(i.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function vc(t){let e=null;if(typeof t!="string"&&Di.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=A0(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&Di.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==bc(t)&&Di.throwArgumentError("bad icap checksum","address",t),e=Kh(t.substring(4));e.length<40;)e="0"+e;e=A0("0x"+e)}else Di.throwArgumentError("invalid address","address",t);return e}const pc="properties/5.7.0";new ke(pc);function Ii(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}new ke(p0),new Uint8Array(32).fill(0),Ze.from(-1);const mc=Ze.from(0),gc=Ze.from(1);Ze.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Vt(gc.toHexString(),32),Vt(mc.toHexString(),32);var _t={},Ke={},Ir=_0;function _0(t,e){if(!t)throw new Error(e||"Assertion failed")}_0.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)};var ni={exports:{}};typeof Object.create=="function"?ni.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:ni.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}};var yc=Ir,wc=ni.exports;Ke.inherits=wc;function Ac(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function xc(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),f=0;f>6|192,r[i++]=n&63|128):Ac(t,f)?(n=65536+((n&1023)<<10)+(t.charCodeAt(++f)&1023),r[i++]=n>>18|240,r[i++]=n>>12&63|128,r[i++]=n>>6&63|128,r[i++]=n&63|128):(r[i++]=n>>12|224,r[i++]=n>>6&63|128,r[i++]=n&63|128)}else for(f=0;f>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Ke.htonl=M0;function Mc(t,e){for(var r="",i=0;i>>0}return n}Ke.join32=Ec;function Sc(t,e){for(var r=new Array(t.length*4),i=0,f=0;i>>24,r[f+1]=n>>>16&255,r[f+2]=n>>>8&255,r[f+3]=n&255):(r[f+3]=n>>>24,r[f+2]=n>>>16&255,r[f+1]=n>>>8&255,r[f]=n&255)}return r}Ke.split32=Sc;function Dc(t,e){return t>>>e|t<<32-e}Ke.rotr32=Dc;function Ic(t,e){return t<>>32-e}Ke.rotl32=Ic;function Nc(t,e){return t+e>>>0}Ke.sum32=Nc;function Cc(t,e,r){return t+e+r>>>0}Ke.sum32_3=Cc;function Bc(t,e,r,i){return t+e+r+i>>>0}Ke.sum32_4=Bc;function Oc(t,e,r,i,f){return t+e+r+i+f>>>0}Ke.sum32_5=Oc;function Rc(t,e,r,i){var f=t[e],n=t[e+1],d=i+n>>>0,c=(d>>0,t[e+1]=d}Ke.sum64=Rc;function Pc(t,e,r,i){var f=e+i>>>0,n=(f>>0}Ke.sum64_hi=Pc;function Tc(t,e,r,i){var f=e+i;return f>>>0}Ke.sum64_lo=Tc;function Fc(t,e,r,i,f,n,d,c){var y=0,A=e;A=A+i>>>0,y+=A>>0,y+=A>>0,y+=A>>0}Ke.sum64_4_hi=Fc;function Uc(t,e,r,i,f,n,d,c){var y=e+i+n+c;return y>>>0}Ke.sum64_4_lo=Uc;function Lc(t,e,r,i,f,n,d,c,y,A){var x=0,E=e;E=E+i>>>0,x+=E>>0,x+=E>>0,x+=E>>0,x+=E>>0}Ke.sum64_5_hi=Lc;function qc(t,e,r,i,f,n,d,c,y,A){var x=e+i+n+c+A;return x>>>0}Ke.sum64_5_lo=qc;function zc(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Ke.rotr64_hi=zc;function kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.rotr64_lo=kc;function Hc(t,e,r){return t>>>r}Ke.shr64_hi=Hc;function Kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.shr64_lo=Kc;var fi={},D0=Ke,jc=Ir;function Wi(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}fi.BlockHash=Wi,Wi.prototype.update=function(e,r){if(e=D0.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=D0.join32(e,0,e.length-i,this.endian);for(var f=0;f>>24&255,f[n++]=e>>>16&255,f[n++]=e>>>8&255,f[n++]=e&255}else for(f[n++]=e&255,f[n++]=e>>>8&255,f[n++]=e>>>16&255,f[n++]=e>>>24&255,f[n++]=0,f[n++]=0,f[n++]=0,f[n++]=0,d=8;d>>3}Gt.g0_256=Jc;function Wc(t){return Yt(t,17)^Yt(t,19)^t>>>10}Gt.g1_256=Wc;var oi=Ke,Qc=fi,Xc=Gt,af=oi.rotl32,Ni=oi.sum32,Zc=oi.sum32_5,ed=Xc.ft_1,B0=Qc.BlockHash,td=[1518500249,1859775393,2400959708,3395469782];function Jt(){if(!(this instanceof Jt))return new Jt;B0.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}oi.inherits(Jt,B0);var rd=Jt;Jt.blockSize=512,Jt.outSize=160,Jt.hmacStrength=80,Jt.padLength=64,Jt.prototype._update=function(e,r){for(var i=this.W,f=0;f<16;f++)i[f]=e[r+f];for(;fthis.blockSize&&(e=new this.Hash().update(e).digest()),Kd(e.length<=this.blockSize);for(var r=e.length;r>8,N=x&255;E?y.push(E,N):y.push(N)}return y}r.toArray=i;function f(d){return d.length===1?"0"+d:d}r.zero2=f;function n(d){for(var c="",y=0;y(N>>1)-1?q=(N>>1)-H:q=H,D.isubn(q)):q=0,E[I]=q,D.iushrn(1)}return E}r.getNAF=i;function f(y,A){var x=[[],[]];y=y.clone(),A=A.clone();for(var E=0,N=0,D;y.cmpn(-E)>0||A.cmpn(-N)>0;){var I=y.andln(3)+E&3,q=A.andln(3)+N&3;I===3&&(I=-1),q===3&&(q=-1);var H;I&1?(D=y.andln(7)+E&7,(D===3||D===5)&&q===2?H=-I:H=I):H=0,x[0].push(H);var V;q&1?(D=A.andln(7)+N&7,(D===3||D===5)&&I===2?V=-q:V=q):V=0,x[1].push(V),2*E===H+1&&(E=1-E),2*N===V+1&&(N=1-N),y.iushrn(1),A.iushrn(1)}return x}r.getJSF=f;function n(y,A,x){var E="_"+A;y.prototype[A]=function(){return this[E]!==void 0?this[E]:this[E]=x.call(this)}}r.cachedProperty=n;function d(y){return typeof y=="string"?r.toArray(y,"hex"):y}r.parseBytes=d;function c(y){return new qe(y,"hex","le")}r.intFromLE=c}),Xi=Mt.getNAF,Vd=Mt.getJSF,Zi=Mt.assert;function vr(t,e){this.type=t,this.p=new qe(e.p,16),this.red=e.prime?qe.red(e.prime):qe.mont(this.p),this.zero=new qe(0).toRed(this.red),this.one=new qe(1).toRed(this.red),this.two=new qe(2).toRed(this.red),this.n=e.n&&new qe(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Cr=vr;vr.prototype.point=function(){throw new Error("Not implemented")},vr.prototype.validate=function(){throw new Error("Not implemented")},vr.prototype._fixedNafMul=function(e,r){Zi(e.precomputed);var i=e._getDoubles(),f=Xi(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];Zi(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},vr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=Xi(i[I],d[I],this._bitLength),y[q]=Xi(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=Vd(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Ct.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Bt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Bt.prototype.pointFromX=function(e,r){e=new qe(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Bt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Bt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},nt.prototype.isInfinity=function(){return this.inf},nt.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},nt.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},nt.prototype.getX=function(){return this.x.fromRed()},nt.prototype.getY=function(){return this.y.fromRed()},nt.prototype.mul=function(e){return e=new qe(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},nt.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},nt.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},nt.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},nt.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},nt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ut(t,e,r,i){Cr.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new qe(0)):(this.x=new qe(e,16),this.y=new qe(r,16),this.z=new qe(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}df(ut,Cr.BasePoint),Bt.prototype.jpoint=function(e,r,i){return new ut(this,e,r,i)},ut.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ut.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ut.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ut.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ut.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ut.prototype.inspect=function(){return this.isInfinity()?"":""},ut.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var en=ci(function(t,e){var r=e;r.base=Cr,r.short=Yd,r.mont=null,r.edwards=null}),tn=ci(function(t,e){var r=e,i=Mt.assert;function f(c){c.type==="short"?this.curve=new en.short(c):c.type==="edwards"?this.curve=new en.edwards(c):this.curve=new en.mont(c),this.g=this.curve.g,this.n=this.curve.n,this.hash=c.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=f;function n(c,y){Object.defineProperty(r,c,{configurable:!0,enumerable:!0,get:function(){var A=new f(y);return Object.defineProperty(r,c,{configurable:!0,enumerable:!0,value:A}),A}})}n("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:_t.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),n("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:_t.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),n("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:_t.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),n("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:_t.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),n("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:_t.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),n("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["9"]}),n("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var d;try{d=null.crash()}catch{d=void 0}n("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:_t.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",d]})});function pr(t){if(!(this instanceof pr))return new pr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=$t.toArray(t.entropy,t.entropyEnc||"hex"),r=$t.toArray(t.nonce,t.nonceEnc||"hex"),i=$t.toArray(t.pers,t.persEnc||"hex");cf(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var V0=pr;pr.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},pr.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=$t.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var Jd=Mt.assert;function rn(t,e){if(t instanceof rn)return t;this._importDER(t,e)||(Jd(t.r&&t.s,"Signature without r or s"),this.r=new qe(t.r,16),this.s=new qe(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var nn=rn;function Wd(){this.place=0}function vf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function G0(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}rn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=G0(r),i=G0(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];pf(f,r.length),f=f.concat(r),f.push(2),pf(f,i.length);var n=f.concat(i),d=[48];return pf(d,n.length),d=d.concat(n),Mt.encode(d,e)};var Qd=function(){throw new Error("unsupported")},Y0=Mt.assert;function Ot(t){if(!(this instanceof Ot))return new Ot(t);typeof t=="string"&&(Y0(Object.prototype.hasOwnProperty.call(tn,t),"Unknown curve "+t),t=tn[t]),t instanceof tn.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Xd=Ot;Ot.prototype.keyPair=function(e){return new bf(this,e)},Ot.prototype.keyFromPrivate=function(e,r){return bf.fromPrivate(this,e,r)},Ot.prototype.keyFromPublic=function(e,r){return bf.fromPublic(this,e,r)},Ot.prototype.genKeyPair=function(e){e||(e={});for(var r=new V0({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Qd(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new qe(2));;){var n=new qe(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ot.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ot.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new qe(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new V0({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new qe(1)),x=0;;x++){var E=f.k?f.k(x):new qe(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new nn({r:I,s:q,recoveryParam:H})}}}}}},Ot.prototype.verify=function(e,r,i,f){e=this._truncateToN(new qe(e,16)),i=this.keyFromPublic(i,f),r=new nn(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ot.prototype.recoverPubKey=function(t,e,r,i){Y0((3&r)===r,"The recovery param is more than two bits"),e=new nn(e,i);var f=this.n,n=new qe(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ot.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new nn(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Zd=ci(function(t,e){var r=e;r.version="6.5.4",r.utils=Mt,r.rand=function(){throw new Error("unsupported")},r.curve=en,r.curves=tn,r.ec=Xd,r.eddsa=null}),el=Zd.ec;const tl="signing-key/5.7.0",mf=new ke(tl);let gf=null;function er(){return gf||(gf=new el("secp256k1")),gf}class rl{constructor(e){Ii(this,"curve","secp256k1"),Ii(this,"privateKey",pt(e)),qh(this.privateKey)!==32&&mf.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=er().keyFromPrivate(tt(this.privateKey));Ii(this,"publicKey","0x"+r.getPublic(!1,"hex")),Ii(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),Ii(this,"_isSigningKey",!0)}_addPoint(e){const r=er().keyFromPublic(tt(this.publicKey)),i=er().keyFromPublic(tt(e));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=tt(e);i.length!==32&&mf.throwArgumentError("bad digest length","digest",e);const f=r.sign(i,{canonical:!0});return n0({recoveryParam:f.recoveryParam,r:Vt("0x"+f.r.toString(16),32),s:Vt("0x"+f.s.toString(16),32)})}computeSharedSecret(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=er().keyFromPublic(tt(J0(e)));return Vt("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(e){return!!(e&&e._isSigningKey)}}function il(t,e){const r=n0(e),i={r:tt(r.r),s:tt(r.s)};return"0x"+er().recoverPubKey(tt(t),i,r.recoveryParam).encode("hex",!1)}function J0(t,e){const r=tt(t);if(r.length===32){const i=new rl(r);return e?"0x"+er().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return e?pt(r):"0x"+er().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+er().keyFromPublic(r).getPublic(!0,"hex"):pt(r)}return mf.throwArgumentError("invalid public or private key","key","[REDACTED]")}const nl="transactions/5.7.0";new ke(nl);var W0;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(W0||(W0={}));function fl(t){const e=J0(t);return vc(i0(Xn(i0(e,1)),12))}function al(t,e){return fl(il(tt(t),e))}const ol="https://rpc.walletconnect.com/v1";async function Q0(t,e,r,i,f,n){switch(r.t){case"eip191":return X0(t,e,r.s);case"eip1271":return await Z0(t,e,r.s,i,f,n);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function X0(t,e,r){return al(w0(e),r).toLowerCase()===t.toLowerCase()}async function Z0(t,e,r,i,f,n){try{const d="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",y="0000000000000000000000000000000000000000000000000000000000000041",A=r.substring(2),x=w0(e).substring(2),E=d+x+c+y+A,N=await fetch(`${n||ol}/?chainId=${i}&projectId=${f}`,{method:"POST",body:JSON.stringify({id:sl(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:E},"latest"]})}),{result:D}=await N.json();return D?D.slice(0,d.length).toLowerCase()===d.toLowerCase():!1}catch(d){return console.error("isValidEip1271Signature: ",d),!1}}function sl(){return Date.now()+Math.floor(Math.random()*1e3)}var ul=Object.defineProperty,hl=Object.defineProperties,cl=Object.getOwnPropertyDescriptors,eo=Object.getOwnPropertySymbols,dl=Object.prototype.hasOwnProperty,ll=Object.prototype.propertyIsEnumerable,to=(t,e,r)=>e in t?ul(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,yf=(t,e)=>{for(var r in e||(e={}))dl.call(e,r)&&to(t,r,e[r]);if(eo)for(var r of eo(e))ll.call(e,r)&&to(t,r,e[r]);return t},ro=(t,e)=>hl(t,cl(e));const bl="did:pkh:",fn=t=>t?.split(":"),wf=t=>{const e=t&&fn(t);if(e)return t.includes(bl)?e[3]:e[1]},vl=t=>{const e=t&&fn(t);if(e)return e[2]+":"+e[3]},Af=t=>{const e=t&&fn(t);if(e)return e.pop()};async function pl(t){const{cacao:e,projectId:r}=t,{s:i,p:f}=e,n=io(f,f.iss),d=Af(f.iss);return await Q0(d,n,i,wf(f.iss),r)}const io=(t,e)=>{const r=`${t.domain} wants you to sign in with your Ethereum account:`,i=Af(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let f=t.statement||void 0;const n=`URI: ${t.aud||t.uri}`,d=`Version: ${t.version}`,c=`Chain ID: ${wf(e)}`,y=`Nonce: ${t.nonce}`,A=`Issued At: ${t.iat}`,x=t.exp?`Expiration Time: ${t.exp}`:void 0,E=t.nbf?`Not Before: ${t.nbf}`:void 0,N=t.requestId?`Request ID: ${t.requestId}`:void 0,D=t.resources?`Resources:${t.resources.map(q=>` -+- ${q}`).join("")}`:void 0,I=on(t.resources);if(I){const q=mr(I);f=Mf(f,q)}return[r,i,"",f,"",n,d,c,y,A,x,E,N,D].filter(q=>q!=null).join(` -+`)};function ml(t,e,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:t.domain,aud:t.aud,version:t.version,nonce:t.nonce,iat:t.iat,statement:t.statement,requestId:t.requestId,resources:t.resources,nbf:t.nbf,exp:t.exp},s:e}}function gl(t){var e;const{authPayload:r,chains:i,methods:f}=t,n=r.statement||"";if(!(i!=null&&i.length))return r;const d=r.chains,c=Yn(d,i);if(!(c!=null&&c.length))throw new Error("No supported chains");const y=no(r.resources);if(!y)return r;tr(y);const A=fo(y,"eip155");let x=r?.resources||[];if(A!=null&&A.length){const E=ao(A),N=Yn(E,f);if(!(N!=null&&N.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(E)}, supported: ${JSON.stringify(f)}`);const D=xf("request",N,{chains:c}),I=ho(y,"eip155",D);x=((e=r?.resources)==null?void 0:e.slice(0,-1))||[],x.push(an(I))}return ro(yf({},r),{statement:lo(n,on(x)),chains:c,resources:r!=null&&r.resources||x.length>0?x:void 0})}function no(t){const e=on(t);if(e&&_f(e))return mr(e)}function yl(t,e){var r;return(r=t?.att)==null?void 0:r.hasOwnProperty(e)}function fo(t,e){var r,i;return(r=t?.att)!=null&&r[e]?Object.keys((i=t?.att)==null?void 0:i[e]):[]}function wl(t){return t?.map(e=>Object.keys(e))||[]}function ao(t){return t?.map(e=>{var r;return(r=e.split("/"))==null?void 0:r[1]})||[]}function oo(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function so(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function tr(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(r=>{const i=t.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(f=>{const n=i[f];if(!Array.isArray(n))throw new Error(`Ability limits ${f} must be an array of objects, found: ${n}`);if(!n.length)throw new Error(`Value of ${f} is empty array, must be an array with objects`);n.forEach(d=>{if(typeof d!="object")throw new Error(`Ability limits (${f}) must be an array of objects, found: ${d}`)})})})}function uo(t,e,r,i={}){return r?.sort((f,n)=>f.localeCompare(n)),{att:{[t]:xf(e,r,i)}}}function ho(t,e,r){var i;return t.att[e]=yf({},r),((i=Object.keys(t.att))==null?void 0:i.sort((f,n)=>f.localeCompare(n))).reduce((f,n)=>(f.att[n]=t.att[n],f),{att:{}})}function xf(t,e,r={}){e=e?.sort((f,n)=>f.localeCompare(n));const i=e.map(f=>({[`${t}/${f}`]:[r]}));return Object.assign({},...i)}function an(t){return tr(t),`urn:recap:${oo(t).replace(/=/g,"")}`}function mr(t){const e=so(t.replace("urn:recap:",""));return tr(e),e}function Al(t,e,r){const i=uo(t,e,r);return an(i)}function _f(t){return t&&t.includes("urn:recap:")}function xl(t,e){const r=mr(t),i=mr(e),f=co(r,i);return an(f)}function co(t,e){tr(t),tr(e);const r=Object.keys(t.att).concat(Object.keys(e.att)).sort((f,n)=>f.localeCompare(n)),i={att:{}};return r.forEach(f=>{var n,d;Object.keys(((n=t.att)==null?void 0:n[f])||{}).concat(Object.keys(((d=e.att)==null?void 0:d[f])||{})).sort((c,y)=>c.localeCompare(y)).forEach(c=>{var y,A;i.att[f]=ro(yf({},i.att[f]),{[c]:((y=t.att[f])==null?void 0:y[c])||((A=e.att[f])==null?void 0:A[c])})})}),i}function Mf(t="",e){tr(e);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(r))return t;const i=[];let f=0;Object.keys(e.att).forEach(c=>{const y=Object.keys(e.att[c]).map(E=>({ability:E.split("/")[0],action:E.split("/")[1]}));y.sort((E,N)=>E.action.localeCompare(N.action));const A={};y.forEach(E=>{A[E.ability]||(A[E.ability]=[]),A[E.ability].push(E.action)});const x=Object.keys(A).map(E=>(f++,`(${f}) '${E}': '${A[E].join("', '")}' for '${c}'.`));i.push(x.join(", ").replace(".,","."))});const n=i.join(" "),d=`${r}${n}`;return`${t?t+" ":""}${d}`}function _l(t){var e;const r=mr(t);tr(r);const i=(e=r.att)==null?void 0:e.eip155;return i?Object.keys(i).map(f=>f.split("/")[1]):[]}function Ml(t){const e=mr(t);tr(e);const r=[];return Object.values(e.att).forEach(i=>{Object.values(i).forEach(f=>{var n;(n=f?.[0])!=null&&n.chains&&r.push(f[0].chains)})}),[...new Set(r.flat())]}function lo(t,e){if(!e)return t;const r=mr(e);return tr(r),Mf(t,r)}function on(t){if(!t)return;const e=t?.[t.length-1];return _f(e)?e:void 0}var Ef={},sn={},ze={},bo={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(c,y){var A=c>>>16&65535,x=c&65535,E=y>>>16&65535,N=y&65535;return x*N+(A*N+x*E<<16>>>0)|0}t.mul=Math.imul||e;function r(c,y){return c+y|0}t.add=r;function i(c,y){return c-y|0}t.sub=i;function f(c,y){return c<>>32-y}t.rotl=f;function n(c,y){return c<<32-y|c>>>y}t.rotr=n;function d(c){return typeof c=="number"&&isFinite(c)&&Math.floor(c)===c}t.isInteger=Number.isInteger||d,t.MAX_SAFE_INTEGER=9007199254740991,t.isSafeInteger=function(c){return t.isInteger(c)&&c>=-t.MAX_SAFE_INTEGER&&c<=t.MAX_SAFE_INTEGER}})(bo),Object.defineProperty(ze,"__esModule",{value:!0});var vo=bo;function El(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])<<16>>16}ze.readInt16BE=El;function Sl(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])>>>0}ze.readUint16BE=Sl;function Dl(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])<<16>>16}ze.readInt16LE=Dl;function Il(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])>>>0}ze.readUint16LE=Il;function po(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>8,e[r+1]=t>>>0,e}ze.writeUint16BE=po,ze.writeInt16BE=po;function mo(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e}ze.writeUint16LE=mo,ze.writeInt16LE=mo;function Sf(t,e){return e===void 0&&(e=0),t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}ze.readInt32BE=Sf;function Df(t,e){return e===void 0&&(e=0),(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}ze.readUint32BE=Df;function If(t,e){return e===void 0&&(e=0),t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e]}ze.readInt32LE=If;function Nf(t,e){return e===void 0&&(e=0),(t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e])>>>0}ze.readUint32LE=Nf;function un(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>24,e[r+1]=t>>>16,e[r+2]=t>>>8,e[r+3]=t>>>0,e}ze.writeUint32BE=un,ze.writeInt32BE=un;function hn(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e[r+2]=t>>>16,e[r+3]=t>>>24,e}ze.writeUint32LE=hn,ze.writeInt32LE=hn;function Nl(t,e){e===void 0&&(e=0);var r=Sf(t,e),i=Sf(t,e+4);return r*4294967296+i-(i>>31)*4294967296}ze.readInt64BE=Nl;function Cl(t,e){e===void 0&&(e=0);var r=Df(t,e),i=Df(t,e+4);return r*4294967296+i}ze.readUint64BE=Cl;function Bl(t,e){e===void 0&&(e=0);var r=If(t,e),i=If(t,e+4);return i*4294967296+r-(r>>31)*4294967296}ze.readInt64LE=Bl;function Ol(t,e){e===void 0&&(e=0);var r=Nf(t,e),i=Nf(t,e+4);return i*4294967296+r}ze.readUint64LE=Ol;function go(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),un(t/4294967296>>>0,e,r),un(t>>>0,e,r+4),e}ze.writeUint64BE=go,ze.writeInt64BE=go;function yo(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),hn(t>>>0,e,r),hn(t/4294967296>>>0,e,r+4),e}ze.writeUint64LE=yo,ze.writeInt64LE=yo;function Rl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintBE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintBE: array is too short for the given bitLength");for(var i=0,f=1,n=t/8+r-1;n>=r;n--)i+=e[n]*f,f*=256;return i}ze.readUintBE=Rl;function Pl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintLE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintLE: array is too short for the given bitLength");for(var i=0,f=1,n=r;n=i;n--)r[n]=e/f&255,f*=256;return r}ze.writeUintBE=Tl;function Fl(t,e,r,i){if(r===void 0&&(r=new Uint8Array(t/8)),i===void 0&&(i=0),t%8!==0)throw new Error("writeUintLE supports only bitLengths divisible by 8");if(!vo.isSafeInteger(e))throw new Error("writeUintLE value must be an integer");for(var f=1,n=i;n>>32-16|o<<16,C=C+o|0,m^=C,m=m>>>32-12|m<<12,F=F+P|0,l^=F,l=l>>>32-16|l<<16,h=h+l|0,P^=h,P=P>>>32-12|P<<12,U=U+Y|0,w^=U,w=w>>>32-16|w<<16,u=u+w|0,Y^=u,Y=Y>>>32-12|Y<<12,L=L+Q|0,_^=L,_=_>>>32-16|_<<16,a=a+_|0,Q^=a,Q=Q>>>32-12|Q<<12,U=U+Y|0,w^=U,w=w>>>32-8|w<<8,u=u+w|0,Y^=u,Y=Y>>>32-7|Y<<7,L=L+Q|0,_^=L,_=_>>>32-8|_<<8,a=a+_|0,Q^=a,Q=Q>>>32-7|Q<<7,F=F+P|0,l^=F,l=l>>>32-8|l<<8,h=h+l|0,P^=h,P=P>>>32-7|P<<7,j=j+m|0,o^=j,o=o>>>32-8|o<<8,C=C+o|0,m^=C,m=m>>>32-7|m<<7,j=j+P|0,_^=j,_=_>>>32-16|_<<16,u=u+_|0,P^=u,P=P>>>32-12|P<<12,F=F+Y|0,o^=F,o=o>>>32-16|o<<16,a=a+o|0,Y^=a,Y=Y>>>32-12|Y<<12,U=U+Q|0,l^=U,l=l>>>32-16|l<<16,C=C+l|0,Q^=C,Q=Q>>>32-12|Q<<12,L=L+m|0,w^=L,w=w>>>32-16|w<<16,h=h+w|0,m^=h,m=m>>>32-12|m<<12,U=U+Q|0,l^=U,l=l>>>32-8|l<<8,C=C+l|0,Q^=C,Q=Q>>>32-7|Q<<7,L=L+m|0,w^=L,w=w>>>32-8|w<<8,h=h+w|0,m^=h,m=m>>>32-7|m<<7,F=F+Y|0,o^=F,o=o>>>32-8|o<<8,a=a+o|0,Y^=a,Y=Y>>>32-7|Y<<7,j=j+P|0,_^=j,_=_>>>32-8|_<<8,u=u+_|0,P^=u,P=P>>>32-7|P<<7;lt.writeUint32LE(j+i|0,t,0),lt.writeUint32LE(F+f|0,t,4),lt.writeUint32LE(U+n|0,t,8),lt.writeUint32LE(L+d|0,t,12),lt.writeUint32LE(m+c|0,t,16),lt.writeUint32LE(P+y|0,t,20),lt.writeUint32LE(Y+A|0,t,24),lt.writeUint32LE(Q+x|0,t,28),lt.writeUint32LE(C+E|0,t,32),lt.writeUint32LE(h+N|0,t,36),lt.writeUint32LE(u+D|0,t,40),lt.writeUint32LE(a+I|0,t,44),lt.writeUint32LE(o+q|0,t,48),lt.writeUint32LE(l+H|0,t,52),lt.writeUint32LE(w+V|0,t,56),lt.writeUint32LE(_+z|0,t,60)}function wo(t,e,r,i,f){if(f===void 0&&(f=0),t.length!==32)throw new Error("ChaCha: key size must be 32 bytes");if(i.length>>=8,e++;if(i>0)throw new Error("ChaCha: counter overflow")}var Ao={},gr={};Object.defineProperty(gr,"__esModule",{value:!0});function Wl(t,e,r){return~(t-1)&e|t-1&r}gr.select=Wl;function Ql(t,e){return(t|0)-(e|0)-1>>>31&1}gr.lessOrEqual=Ql;function xo(t,e){if(t.length!==e.length)return 0;for(var r=0,i=0;i>>8}gr.compare=xo;function Xl(t,e){return t.length===0||e.length===0?!1:xo(t,e)!==0}gr.equal=Xl,function(t){Object.defineProperty(t,"__esModule",{value:!0});var e=gr,r=Et;t.DIGEST_LENGTH=16;var i=function(){function d(c){this.digestLength=t.DIGEST_LENGTH,this._buffer=new Uint8Array(16),this._r=new Uint16Array(10),this._h=new Uint16Array(10),this._pad=new Uint16Array(8),this._leftover=0,this._fin=0,this._finished=!1;var y=c[0]|c[1]<<8;this._r[0]=y&8191;var A=c[2]|c[3]<<8;this._r[1]=(y>>>13|A<<3)&8191;var x=c[4]|c[5]<<8;this._r[2]=(A>>>10|x<<6)&7939;var E=c[6]|c[7]<<8;this._r[3]=(x>>>7|E<<9)&8191;var N=c[8]|c[9]<<8;this._r[4]=(E>>>4|N<<12)&255,this._r[5]=N>>>1&8190;var D=c[10]|c[11]<<8;this._r[6]=(N>>>14|D<<2)&8191;var I=c[12]|c[13]<<8;this._r[7]=(D>>>11|I<<5)&8065;var q=c[14]|c[15]<<8;this._r[8]=(I>>>8|q<<8)&8191,this._r[9]=q>>>5&127,this._pad[0]=c[16]|c[17]<<8,this._pad[1]=c[18]|c[19]<<8,this._pad[2]=c[20]|c[21]<<8,this._pad[3]=c[22]|c[23]<<8,this._pad[4]=c[24]|c[25]<<8,this._pad[5]=c[26]|c[27]<<8,this._pad[6]=c[28]|c[29]<<8,this._pad[7]=c[30]|c[31]<<8}return d.prototype._blocks=function(c,y,A){for(var x=this._fin?0:2048,E=this._h[0],N=this._h[1],D=this._h[2],I=this._h[3],q=this._h[4],H=this._h[5],V=this._h[6],z=this._h[7],j=this._h[8],F=this._h[9],U=this._r[0],L=this._r[1],m=this._r[2],P=this._r[3],Y=this._r[4],Q=this._r[5],C=this._r[6],h=this._r[7],u=this._r[8],a=this._r[9];A>=16;){var o=c[y+0]|c[y+1]<<8;E+=o&8191;var l=c[y+2]|c[y+3]<<8;N+=(o>>>13|l<<3)&8191;var w=c[y+4]|c[y+5]<<8;D+=(l>>>10|w<<6)&8191;var _=c[y+6]|c[y+7]<<8;I+=(w>>>7|_<<9)&8191;var g=c[y+8]|c[y+9]<<8;q+=(_>>>4|g<<12)&8191,H+=g>>>1&8191;var s=c[y+10]|c[y+11]<<8;V+=(g>>>14|s<<2)&8191;var p=c[y+12]|c[y+13]<<8;z+=(s>>>11|p<<5)&8191;var b=c[y+14]|c[y+15]<<8;j+=(p>>>8|b<<8)&8191,F+=b>>>5|x;var S=0,G=S;G+=E*U,G+=N*(5*a),G+=D*(5*u),G+=I*(5*h),G+=q*(5*C),S=G>>>13,G&=8191,G+=H*(5*Q),G+=V*(5*Y),G+=z*(5*P),G+=j*(5*m),G+=F*(5*L),S+=G>>>13,G&=8191;var M=S;M+=E*L,M+=N*U,M+=D*(5*a),M+=I*(5*u),M+=q*(5*h),S=M>>>13,M&=8191,M+=H*(5*C),M+=V*(5*Q),M+=z*(5*Y),M+=j*(5*P),M+=F*(5*m),S+=M>>>13,M&=8191;var k=S;k+=E*m,k+=N*L,k+=D*U,k+=I*(5*a),k+=q*(5*u),S=k>>>13,k&=8191,k+=H*(5*h),k+=V*(5*C),k+=z*(5*Q),k+=j*(5*Y),k+=F*(5*P),S+=k>>>13,k&=8191;var B=S;B+=E*P,B+=N*m,B+=D*L,B+=I*U,B+=q*(5*a),S=B>>>13,B&=8191,B+=H*(5*u),B+=V*(5*h),B+=z*(5*C),B+=j*(5*Q),B+=F*(5*Y),S+=B>>>13,B&=8191;var T=S;T+=E*Y,T+=N*P,T+=D*m,T+=I*L,T+=q*U,S=T>>>13,T&=8191,T+=H*(5*a),T+=V*(5*u),T+=z*(5*h),T+=j*(5*C),T+=F*(5*Q),S+=T>>>13,T&=8191;var O=S;O+=E*Q,O+=N*Y,O+=D*P,O+=I*m,O+=q*L,S=O>>>13,O&=8191,O+=H*U,O+=V*(5*a),O+=z*(5*u),O+=j*(5*h),O+=F*(5*C),S+=O>>>13,O&=8191;var v=S;v+=E*C,v+=N*Q,v+=D*Y,v+=I*P,v+=q*m,S=v>>>13,v&=8191,v+=H*L,v+=V*U,v+=z*(5*a),v+=j*(5*u),v+=F*(5*h),S+=v>>>13,v&=8191;var R=S;R+=E*h,R+=N*C,R+=D*Q,R+=I*Y,R+=q*P,S=R>>>13,R&=8191,R+=H*m,R+=V*L,R+=z*U,R+=j*(5*a),R+=F*(5*u),S+=R>>>13,R&=8191;var $=S;$+=E*u,$+=N*h,$+=D*C,$+=I*Q,$+=q*Y,S=$>>>13,$&=8191,$+=H*P,$+=V*m,$+=z*L,$+=j*U,$+=F*(5*a),S+=$>>>13,$&=8191;var J=S;J+=E*a,J+=N*u,J+=D*h,J+=I*C,J+=q*Q,S=J>>>13,J&=8191,J+=H*Y,J+=V*P,J+=z*m,J+=j*L,J+=F*U,S+=J>>>13,J&=8191,S=(S<<2)+S|0,S=S+G|0,G=S&8191,S=S>>>13,M+=S,E=G,N=M,D=k,I=B,q=T,H=O,V=v,z=R,j=$,F=J,y+=16,A-=16}this._h[0]=E,this._h[1]=N,this._h[2]=D,this._h[3]=I,this._h[4]=q,this._h[5]=H,this._h[6]=V,this._h[7]=z,this._h[8]=j,this._h[9]=F},d.prototype.finish=function(c,y){y===void 0&&(y=0);var A=new Uint16Array(10),x,E,N,D;if(this._leftover){for(D=this._leftover,this._buffer[D++]=1;D<16;D++)this._buffer[D]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(x=this._h[1]>>>13,this._h[1]&=8191,D=2;D<10;D++)this._h[D]+=x,x=this._h[D]>>>13,this._h[D]&=8191;for(this._h[0]+=x*5,x=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=x,x=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=x,A[0]=this._h[0]+5,x=A[0]>>>13,A[0]&=8191,D=1;D<10;D++)A[D]=this._h[D]+x,x=A[D]>>>13,A[D]&=8191;for(A[9]-=8192,E=(x^1)-1,D=0;D<10;D++)A[D]&=E;for(E=~E,D=0;D<10;D++)this._h[D]=this._h[D]&E|A[D];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,N=this._h[0]+this._pad[0],this._h[0]=N&65535,D=1;D<8;D++)N=(this._h[D]+this._pad[D]|0)+(N>>>16)|0,this._h[D]=N&65535;return c[y+0]=this._h[0]>>>0,c[y+1]=this._h[0]>>>8,c[y+2]=this._h[1]>>>0,c[y+3]=this._h[1]>>>8,c[y+4]=this._h[2]>>>0,c[y+5]=this._h[2]>>>8,c[y+6]=this._h[3]>>>0,c[y+7]=this._h[3]>>>8,c[y+8]=this._h[4]>>>0,c[y+9]=this._h[4]>>>8,c[y+10]=this._h[5]>>>0,c[y+11]=this._h[5]>>>8,c[y+12]=this._h[6]>>>0,c[y+13]=this._h[6]>>>8,c[y+14]=this._h[7]>>>0,c[y+15]=this._h[7]>>>8,this._finished=!0,this},d.prototype.update=function(c){var y=0,A=c.length,x;if(this._leftover){x=16-this._leftover,x>A&&(x=A);for(var E=0;E=16&&(x=A-A%16,this._blocks(c,y,x),y+=x,A-=x),A){for(var E=0;E16)throw new Error("ChaCha20Poly1305: incorrect nonce length");var D=new Uint8Array(16);D.set(A,D.length-A.length);var I=new Uint8Array(32);e.stream(this._key,D,I,4);var q=x.length+this.tagLength,H;if(N){if(N.length!==q)throw new Error("ChaCha20Poly1305: incorrect destination length");H=N}else H=new Uint8Array(q);return e.streamXOR(this._key,D,x,H,4),this._authenticate(H.subarray(H.length-this.tagLength,H.length),I,H.subarray(0,H.length-this.tagLength),E),i.wipe(D),H},y.prototype.open=function(A,x,E,N){if(A.length>16)throw new Error("ChaCha20Poly1305: incorrect nonce length");if(x.length0&&D.update(d.subarray(N.length%16))),D.update(E),E.length%16>0&&D.update(d.subarray(E.length%16));var I=new Uint8Array(8);N&&f.writeUint64LE(N.length,I),D.update(I),f.writeUint64LE(E.length,I),D.update(I);for(var q=D.digest(),H=0;Hthis.blockSize?this._inner.update(r).finish(i).clean():i.set(r);for(var f=0;f1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0},t.prototype.expand=function(e){for(var r=new Uint8Array(e),i=0;i256)throw new Error("randomString charset is too long");let N="";const D=x.length,I=256-256%D;for(;A>0;){const q=f(Math.ceil(A*256/I),E);for(let H=0;H0;H++){const V=q[H];V0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._temp,this._state,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%64<56?64:128;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._state.set(y.state),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.state),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA256=i;var f=new Int32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(c,y,A,x,E){for(;E>=64;){for(var N=y[0],D=y[1],I=y[2],q=y[3],H=y[4],V=y[5],z=y[6],j=y[7],F=0;F<16;F++){var U=x+F*4;c[F]=e.readUint32BE(A,U)}for(var F=16;F<64;F++){var L=c[F-2],m=(L>>>17|L<<32-17)^(L>>>19|L<<32-19)^L>>>10;L=c[F-15];var P=(L>>>7|L<<32-7)^(L>>>18|L<<32-18)^L>>>3;c[F]=(m+c[F-7]|0)+(P+c[F-16]|0)}for(var F=0;F<64;F++){var m=(((H>>>6|H<<26)^(H>>>11|H<<21)^(H>>>25|H<<7))+(H&V^~H&z)|0)+(j+(f[F]+c[F]|0)|0)|0,P=((N>>>2|N<<32-2)^(N>>>13|N<<32-13)^(N>>>22|N<<32-22))+(N&D^N&I^D&I)|0;j=z,z=V,V=H,H=q+m|0,q=I,I=D,D=N,N=m+P|0}y[0]+=N,y[1]+=D,y[2]+=I,y[3]+=q,y[4]+=H,y[5]+=V,y[6]+=z,y[7]+=j,x+=64,E-=64}return x}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(Oi);var Of={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.sharedKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.scalarMultBase=t.scalarMult=t.SHARED_KEY_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=void 0;const e=Br,r=Et;t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=32,t.SHARED_KEY_LENGTH=32;function i(F){const U=new Float64Array(16);if(F)for(let L=0;L>16&1),L[Q-1]&=65535;L[15]=m[15]-32767-(L[14]>>16&1);const Y=L[15]>>16&1;L[14]&=65535,c(m,L,1-Y)}for(let P=0;P<16;P++)F[2*P]=m[P]&255,F[2*P+1]=m[P]>>8}function A(F,U){for(let L=0;L<16;L++)F[L]=U[2*L]+(U[2*L+1]<<8);F[15]&=32767}function x(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]+L[m]}function E(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]-L[m]}function N(F,U,L){let m,P,Y=0,Q=0,C=0,h=0,u=0,a=0,o=0,l=0,w=0,_=0,g=0,s=0,p=0,b=0,S=0,G=0,M=0,k=0,B=0,T=0,O=0,v=0,R=0,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=L[0],te=L[1],se=L[2],oe=L[3],ee=L[4],ae=L[5],ne=L[6],Z=L[7],ve=L[8],me=L[9],re=L[10],ge=L[11],we=L[12],ie=L[13],Ae=L[14],xe=L[15];m=U[0],Y+=m*pe,Q+=m*te,C+=m*se,h+=m*oe,u+=m*ee,a+=m*ae,o+=m*ne,l+=m*Z,w+=m*ve,_+=m*me,g+=m*re,s+=m*ge,p+=m*we,b+=m*ie,S+=m*Ae,G+=m*xe,m=U[1],Q+=m*pe,C+=m*te,h+=m*se,u+=m*oe,a+=m*ee,o+=m*ae,l+=m*ne,w+=m*Z,_+=m*ve,g+=m*me,s+=m*re,p+=m*ge,b+=m*we,S+=m*ie,G+=m*Ae,M+=m*xe,m=U[2],C+=m*pe,h+=m*te,u+=m*se,a+=m*oe,o+=m*ee,l+=m*ae,w+=m*ne,_+=m*Z,g+=m*ve,s+=m*me,p+=m*re,b+=m*ge,S+=m*we,G+=m*ie,M+=m*Ae,k+=m*xe,m=U[3],h+=m*pe,u+=m*te,a+=m*se,o+=m*oe,l+=m*ee,w+=m*ae,_+=m*ne,g+=m*Z,s+=m*ve,p+=m*me,b+=m*re,S+=m*ge,G+=m*we,M+=m*ie,k+=m*Ae,B+=m*xe,m=U[4],u+=m*pe,a+=m*te,o+=m*se,l+=m*oe,w+=m*ee,_+=m*ae,g+=m*ne,s+=m*Z,p+=m*ve,b+=m*me,S+=m*re,G+=m*ge,M+=m*we,k+=m*ie,B+=m*Ae,T+=m*xe,m=U[5],a+=m*pe,o+=m*te,l+=m*se,w+=m*oe,_+=m*ee,g+=m*ae,s+=m*ne,p+=m*Z,b+=m*ve,S+=m*me,G+=m*re,M+=m*ge,k+=m*we,B+=m*ie,T+=m*Ae,O+=m*xe,m=U[6],o+=m*pe,l+=m*te,w+=m*se,_+=m*oe,g+=m*ee,s+=m*ae,p+=m*ne,b+=m*Z,S+=m*ve,G+=m*me,M+=m*re,k+=m*ge,B+=m*we,T+=m*ie,O+=m*Ae,v+=m*xe,m=U[7],l+=m*pe,w+=m*te,_+=m*se,g+=m*oe,s+=m*ee,p+=m*ae,b+=m*ne,S+=m*Z,G+=m*ve,M+=m*me,k+=m*re,B+=m*ge,T+=m*we,O+=m*ie,v+=m*Ae,R+=m*xe,m=U[8],w+=m*pe,_+=m*te,g+=m*se,s+=m*oe,p+=m*ee,b+=m*ae,S+=m*ne,G+=m*Z,M+=m*ve,k+=m*me,B+=m*re,T+=m*ge,O+=m*we,v+=m*ie,R+=m*Ae,$+=m*xe,m=U[9],_+=m*pe,g+=m*te,s+=m*se,p+=m*oe,b+=m*ee,S+=m*ae,G+=m*ne,M+=m*Z,k+=m*ve,B+=m*me,T+=m*re,O+=m*ge,v+=m*we,R+=m*ie,$+=m*Ae,J+=m*xe,m=U[10],g+=m*pe,s+=m*te,p+=m*se,b+=m*oe,S+=m*ee,G+=m*ae,M+=m*ne,k+=m*Z,B+=m*ve,T+=m*me,O+=m*re,v+=m*ge,R+=m*we,$+=m*ie,J+=m*Ae,W+=m*xe,m=U[11],s+=m*pe,p+=m*te,b+=m*se,S+=m*oe,G+=m*ee,M+=m*ae,k+=m*ne,B+=m*Z,T+=m*ve,O+=m*me,v+=m*re,R+=m*ge,$+=m*we,J+=m*ie,W+=m*Ae,X+=m*xe,m=U[12],p+=m*pe,b+=m*te,S+=m*se,G+=m*oe,M+=m*ee,k+=m*ae,B+=m*ne,T+=m*Z,O+=m*ve,v+=m*me,R+=m*re,$+=m*ge,J+=m*we,W+=m*ie,X+=m*Ae,be+=m*xe,m=U[13],b+=m*pe,S+=m*te,G+=m*se,M+=m*oe,k+=m*ee,B+=m*ae,T+=m*ne,O+=m*Z,v+=m*ve,R+=m*me,$+=m*re,J+=m*ge,W+=m*we,X+=m*ie,be+=m*Ae,ye+=m*xe,m=U[14],S+=m*pe,G+=m*te,M+=m*se,k+=m*oe,B+=m*ee,T+=m*ae,O+=m*ne,v+=m*Z,R+=m*ve,$+=m*me,J+=m*re,W+=m*ge,X+=m*we,be+=m*ie,ye+=m*Ae,fe+=m*xe,m=U[15],G+=m*pe,M+=m*te,k+=m*se,B+=m*oe,T+=m*ee,O+=m*ae,v+=m*ne,R+=m*Z,$+=m*ve,J+=m*me,W+=m*re,X+=m*ge,be+=m*we,ye+=m*ie,fe+=m*Ae,Ee+=m*xe,Y+=38*M,Q+=38*k,C+=38*B,h+=38*T,u+=38*O,a+=38*v,o+=38*R,l+=38*$,w+=38*J,_+=38*W,g+=38*X,s+=38*be,p+=38*ye,b+=38*fe,S+=38*Ee,P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),F[0]=Y,F[1]=Q,F[2]=C,F[3]=h,F[4]=u,F[5]=a,F[6]=o,F[7]=l,F[8]=w,F[9]=_,F[10]=g,F[11]=s,F[12]=p,F[13]=b,F[14]=S,F[15]=G}function D(F,U){N(F,U,U)}function I(F,U){const L=i();for(let m=0;m<16;m++)L[m]=U[m];for(let m=253;m>=0;m--)D(L,L),m!==2&&m!==4&&N(L,L,U);for(let m=0;m<16;m++)F[m]=L[m]}function q(F,U){const L=new Uint8Array(32),m=new Float64Array(80),P=i(),Y=i(),Q=i(),C=i(),h=i(),u=i();for(let w=0;w<31;w++)L[w]=F[w];L[31]=F[31]&127|64,L[0]&=248,A(m,U);for(let w=0;w<16;w++)Y[w]=m[w];P[0]=C[0]=1;for(let w=254;w>=0;--w){const _=L[w>>>3]>>>(w&7)&1;c(P,Y,_),c(Q,C,_),x(h,P,Q),E(P,P,Q),x(Q,Y,C),E(Y,Y,C),D(C,h),D(u,P),N(P,Q,P),N(Q,Y,h),x(h,P,Q),E(P,P,Q),D(Y,P),E(Q,C,u),N(P,Q,n),x(P,P,C),N(Q,Q,P),N(P,C,u),N(C,Y,m),D(Y,h),c(P,Y,_),c(Q,C,_)}for(let w=0;w<16;w++)m[w+16]=P[w],m[w+32]=Q[w],m[w+48]=Y[w],m[w+64]=C[w];const a=m.subarray(32),o=m.subarray(16);I(a,a),N(o,o,a);const l=new Uint8Array(32);return y(l,o),l}t.scalarMult=q;function H(F){return q(F,f)}t.scalarMultBase=H;function V(F){if(F.length!==t.SECRET_KEY_LENGTH)throw new Error(`x25519: seed must be ${t.SECRET_KEY_LENGTH} bytes`);const U=new Uint8Array(F);return{publicKey:H(U),secretKey:U}}t.generateKeyPairFromSeed=V;function z(F){const U=(0,e.randomBytes)(32,F),L=V(U);return(0,r.wipe)(U),L}t.generateKeyPair=z;function j(F,U,L=!1){if(F.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect secret key length");if(U.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect public key length");const m=q(F,U);if(L){let P=0;for(let Y=0;Yf+n.length,0));const r=Io(e);let i=0;for(const f of t)r.set(f,i),i+=f.length;return r}function d1(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),i=0;i>>0,F=new Uint8Array(j);V!==z;){for(var U=I[V],L=0,m=j-1;(U!==0||L>>0,F[m]=U%c>>>0,U=U/c>>>0;if(U!==0)throw new Error("Non-zero carry");H=L,V++}for(var P=j-H;P!==j&&F[P]===0;)P++;for(var Y=y.repeat(q);P>>0,j=new Uint8Array(z);I[q];){var F=r[I.charCodeAt(q)];if(F===255)return;for(var U=0,L=z-1;(F!==0||U>>0,j[L]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");V=U,q++}if(I[q]!==" "){for(var m=z-V;m!==z&&j[m]===0;)m++;for(var P=new Uint8Array(H+(z-m)),Y=H;m!==z;)P[Y++]=j[m++];return P}}}function D(I){var q=N(I);if(q)return q;throw new Error(`Non-${e} character`)}return{encode:E,decodeUnsafe:N,decode:D}}var l1=d1,b1=l1;const No=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},v1=t=>new TextEncoder().encode(t),p1=t=>new TextDecoder().decode(t);class m1{constructor(e,r,i){this.name=e,this.prefix=r,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class g1{constructor(e,r,i){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Co(this,e)}}class y1{constructor(e){this.decoders=e}or(e){return Co(this,e)}decode(e){const r=e[0],i=this.decoders[r];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Co=(t,e)=>new y1({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class w1{constructor(e,r,i,f){this.name=e,this.prefix=r,this.baseEncode=i,this.baseDecode=f,this.encoder=new m1(e,r,i),this.decoder=new g1(e,r,f)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const bn=({name:t,prefix:e,encode:r,decode:i})=>new w1(t,e,r,i),Ri=({prefix:t,name:e,alphabet:r})=>{const{encode:i,decode:f}=b1(r,e);return bn({prefix:t,name:e,encode:i,decode:n=>No(f(n))})},A1=(t,e,r,i)=>{const f={};for(let x=0;x=8&&(c-=8,d[A++]=255&y>>c)}if(c>=r||255&y<<8-c)throw new SyntaxError("Unexpected end of data");return d},x1=(t,e,r)=>{const i=e[e.length-1]==="=",f=(1<r;)d-=r,n+=e[f&c>>d];if(d&&(n+=e[f&c<bn({prefix:e,name:t,encode(f){return x1(f,i,r)},decode(f){return A1(f,i,r,t)}}),_1=bn({prefix:"\0",name:"identity",encode:t=>p1(t),decode:t=>v1(t)});var M1=Object.freeze({__proto__:null,identity:_1});const E1=ht({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var S1=Object.freeze({__proto__:null,base2:E1});const D1=ht({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var I1=Object.freeze({__proto__:null,base8:D1});const N1=Ri({prefix:"9",name:"base10",alphabet:"0123456789"});var C1=Object.freeze({__proto__:null,base10:N1});const B1=ht({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),O1=ht({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var R1=Object.freeze({__proto__:null,base16:B1,base16upper:O1});const P1=ht({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),T1=ht({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),F1=ht({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),U1=ht({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),L1=ht({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),q1=ht({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),z1=ht({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),k1=ht({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),H1=ht({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var K1=Object.freeze({__proto__:null,base32:P1,base32upper:T1,base32pad:F1,base32padupper:U1,base32hex:L1,base32hexupper:q1,base32hexpad:z1,base32hexpadupper:k1,base32z:H1});const j1=Ri({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),$1=Ri({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var V1=Object.freeze({__proto__:null,base36:j1,base36upper:$1});const G1=Ri({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Y1=Ri({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var J1=Object.freeze({__proto__:null,base58btc:G1,base58flickr:Y1});const W1=ht({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Q1=ht({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),X1=ht({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Z1=ht({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var e2=Object.freeze({__proto__:null,base64:W1,base64pad:Q1,base64url:X1,base64urlpad:Z1});const Bo=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),t2=Bo.reduce((t,e,r)=>(t[r]=e,t),[]),r2=Bo.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function i2(t){return t.reduce((e,r)=>(e+=t2[r],e),"")}function n2(t){const e=[];for(const r of t){const i=r2[r.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(i)}return new Uint8Array(e)}const f2=bn({prefix:"\u{1F680}",name:"base256emoji",encode:i2,decode:n2});var a2=Object.freeze({__proto__:null,base256emoji:f2}),o2=Ro,Oo=128,s2=127,u2=~s2,h2=Math.pow(2,31);function Ro(t,e,r){e=e||[],r=r||0;for(var i=r;t>=h2;)e[r++]=t&255|Oo,t/=128;for(;t&u2;)e[r++]=t&255|Oo,t>>>=7;return e[r]=t|0,Ro.bytes=r-i+1,e}var c2=Pf,d2=128,Po=127;function Pf(t,i){var r=0,i=i||0,f=0,n=i,d,c=t.length;do{if(n>=c)throw Pf.bytes=0,new RangeError("Could not decode varint");d=t[n++],r+=f<28?(d&Po)<=d2);return Pf.bytes=n-i,r}var l2=Math.pow(2,7),b2=Math.pow(2,14),v2=Math.pow(2,21),p2=Math.pow(2,28),m2=Math.pow(2,35),g2=Math.pow(2,42),y2=Math.pow(2,49),w2=Math.pow(2,56),A2=Math.pow(2,63),x2=function(t){return t(To.encode(t,e,r),e),Uo=t=>To.encodingLength(t),Tf=(t,e)=>{const r=e.byteLength,i=Uo(t),f=i+Uo(r),n=new Uint8Array(f+r);return Fo(t,n,0),Fo(r,n,i),n.set(e,f),new M2(t,r,e,n)};class M2{constructor(e,r,i,f){this.code=e,this.size=r,this.digest=i,this.bytes=f}}const Lo=({name:t,code:e,encode:r})=>new E2(t,e,r);class E2{constructor(e,r,i){this.name=e,this.code=r,this.encode=i}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?Tf(this.code,r):r.then(i=>Tf(this.code,i))}else throw Error("Unknown type, must be binary type")}}const qo=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),S2=Lo({name:"sha2-256",code:18,encode:qo("SHA-256")}),D2=Lo({name:"sha2-512",code:19,encode:qo("SHA-512")});var I2=Object.freeze({__proto__:null,sha256:S2,sha512:D2});const zo=0,N2="identity",ko=No;var C2=Object.freeze({__proto__:null,identity:{code:zo,name:N2,encode:ko,digest:t=>Tf(zo,ko(t))}});new TextEncoder,new TextDecoder;const vn={...M1,...S1,...I1,...C1,...R1,...K1,...V1,...J1,...e2,...a2};({...I2,...C2});function Ho(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const Ko=Ho("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ff=Ho("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=Io(t.length);for(let r=0;r",z2="MIT",k2={url:"https://github.com/indutny/elliptic/issues"},H2="https://github.com/indutny/elliptic",K2={brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},j2={"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},$2={name:B2,version:O2,description:R2,main:P2,files:T2,scripts:F2,repository:U2,keywords:L2,author:q2,license:z2,bugs:k2,homepage:H2,devDependencies:K2,dependencies:j2},Dt={},ir={exports:{}};(function(t){(function(e,r){function i(C,h){if(!C)throw new Error(h||"Assertion failed")}function f(C,h){C.super_=h;var u=function(){};u.prototype=h.prototype,C.prototype=new u,C.prototype.constructor=C}function n(C,h,u){if(n.isBN(C))return C;this.negative=0,this.words=null,this.length=0,this.red=null,C!==null&&((h==="le"||h==="be")&&(u=h,h=10),this._init(C||0,h||10,u||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(h){return h instanceof n?!0:h!==null&&typeof h=="object"&&h.constructor.wordSize===n.wordSize&&Array.isArray(h.words)},n.max=function(h,u){return h.cmp(u)>0?h:u},n.min=function(h,u){return h.cmp(u)<0?h:u},n.prototype._init=function(h,u,a){if(typeof h=="number")return this._initNumber(h,u,a);if(typeof h=="object")return this._initArray(h,u,a);u==="hex"&&(u=16),i(u===(u|0)&&u>=2&&u<=36),h=h.toString().replace(/\s+/g,"");var o=0;h[0]==="-"&&(o++,this.negative=1),o=0;o-=3)w=h[o]|h[o-1]<<8|h[o-2]<<16,this.words[l]|=w<<_&67108863,this.words[l+1]=w>>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);else if(a==="le")for(o=0,l=0;o>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);return this.strip()};function c(C,h){var u=C.charCodeAt(h);return u>=65&&u<=70?u-55:u>=97&&u<=102?u-87:u-48&15}function y(C,h,u){var a=c(C,u);return u-1>=h&&(a|=c(C,u-1)<<4),a}n.prototype._parseHex=function(h,u,a){this.length=Math.ceil((h.length-u)/6),this.words=new Array(this.length);for(var o=0;o=u;o-=2)_=y(h,u,o)<=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8;else{var g=h.length-u;for(o=g%2===0?u+1:u;o=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8}this.strip()};function A(C,h,u,a){for(var o=0,l=Math.min(C.length,u),w=h;w=49?o+=_-49+10:_>=17?o+=_-17+10:o+=_}return o}n.prototype._parseBase=function(h,u,a){this.words=[0],this.length=1;for(var o=0,l=1;l<=67108863;l*=u)o++;o--,l=l/u|0;for(var w=h.length-a,_=w%o,g=Math.min(w,w-_)+a,s=0,p=a;p1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var x=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],E=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(h,u){h=h||10,u=u|0||1;var a;if(h===16||h==="hex"){a="";for(var o=0,l=0,w=0;w>>24-o&16777215,l!==0||w!==this.length-1?a=x[6-g.length]+g+a:a=g+a,o+=2,o>=26&&(o-=26,w--)}for(l!==0&&(a=l.toString(16)+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}if(h===(h|0)&&h>=2&&h<=36){var s=E[h],p=N[h];a="";var b=this.clone();for(b.negative=0;!b.isZero();){var S=b.modn(p).toString(h);b=b.idivn(p),b.isZero()?a=S+a:a=x[s-S.length]+S+a}for(this.isZero()&&(a="0"+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var h=this.words[0];return this.length===2?h+=this.words[1]*67108864:this.length===3&&this.words[2]===1?h+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-h:h},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(h,u){return i(typeof d<"u"),this.toArrayLike(d,h,u)},n.prototype.toArray=function(h,u){return this.toArrayLike(Array,h,u)},n.prototype.toArrayLike=function(h,u,a){var o=this.byteLength(),l=a||Math.max(1,o);i(o<=l,"byte array longer than desired length"),i(l>0,"Requested array length <= 0"),this.strip();var w=u==="le",_=new h(l),g,s,p=this.clone();if(w){for(s=0;!p.isZero();s++)g=p.andln(255),p.iushrn(8),_[s]=g;for(;s=4096&&(a+=13,u>>>=13),u>=64&&(a+=7,u>>>=7),u>=8&&(a+=4,u>>>=4),u>=2&&(a+=2,u>>>=2),a+u},n.prototype._zeroBits=function(h){if(h===0)return 26;var u=h,a=0;return u&8191||(a+=13,u>>>=13),u&127||(a+=7,u>>>=7),u&15||(a+=4,u>>>=4),u&3||(a+=2,u>>>=2),u&1||a++,a},n.prototype.bitLength=function(){var h=this.words[this.length-1],u=this._countBits(h);return(this.length-1)*26+u};function D(C){for(var h=new Array(C.bitLength()),u=0;u>>o}return h}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var h=0,u=0;uh.length?this.clone().ior(h):h.clone().ior(this)},n.prototype.uor=function(h){return this.length>h.length?this.clone().iuor(h):h.clone().iuor(this)},n.prototype.iuand=function(h){var u;this.length>h.length?u=h:u=this;for(var a=0;ah.length?this.clone().iand(h):h.clone().iand(this)},n.prototype.uand=function(h){return this.length>h.length?this.clone().iuand(h):h.clone().iuand(this)},n.prototype.iuxor=function(h){var u,a;this.length>h.length?(u=this,a=h):(u=h,a=this);for(var o=0;oh.length?this.clone().ixor(h):h.clone().ixor(this)},n.prototype.uxor=function(h){return this.length>h.length?this.clone().iuxor(h):h.clone().iuxor(this)},n.prototype.inotn=function(h){i(typeof h=="number"&&h>=0);var u=Math.ceil(h/26)|0,a=h%26;this._expand(u),a>0&&u--;for(var o=0;o0&&(this.words[o]=~this.words[o]&67108863>>26-a),this.strip()},n.prototype.notn=function(h){return this.clone().inotn(h)},n.prototype.setn=function(h,u){i(typeof h=="number"&&h>=0);var a=h/26|0,o=h%26;return this._expand(a+1),u?this.words[a]=this.words[a]|1<h.length?(a=this,o=h):(a=h,o=this);for(var l=0,w=0;w>>26;for(;l!==0&&w>>26;if(this.length=a.length,l!==0)this.words[this.length]=l,this.length++;else if(a!==this)for(;wh.length?this.clone().iadd(h):h.clone().iadd(this)},n.prototype.isub=function(h){if(h.negative!==0){h.negative=0;var u=this.iadd(h);return h.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(h),this.negative=1,this._normSign();var a=this.cmp(h);if(a===0)return this.negative=0,this.length=1,this.words[0]=0,this;var o,l;a>0?(o=this,l=h):(o=h,l=this);for(var w=0,_=0;_>26,this.words[_]=u&67108863;for(;w!==0&&_>26,this.words[_]=u&67108863;if(w===0&&_>>26,b=g&67108863,S=Math.min(s,h.length-1),G=Math.max(0,s-C.length+1);G<=S;G++){var M=s-G|0;o=C.words[M]|0,l=h.words[G]|0,w=o*l+b,p+=w/67108864|0,b=w&67108863}u.words[s]=b|0,g=p|0}return g!==0?u.words[s]=g|0:u.length--,u.strip()}var q=function(h,u,a){var o=h.words,l=u.words,w=a.words,_=0,g,s,p,b=o[0]|0,S=b&8191,G=b>>>13,M=o[1]|0,k=M&8191,B=M>>>13,T=o[2]|0,O=T&8191,v=T>>>13,R=o[3]|0,$=R&8191,J=R>>>13,W=o[4]|0,X=W&8191,be=W>>>13,ye=o[5]|0,fe=ye&8191,Ee=ye>>>13,pe=o[6]|0,te=pe&8191,se=pe>>>13,oe=o[7]|0,ee=oe&8191,ae=oe>>>13,ne=o[8]|0,Z=ne&8191,ve=ne>>>13,me=o[9]|0,re=me&8191,ge=me>>>13,we=l[0]|0,ie=we&8191,Ae=we>>>13,xe=l[1]|0,_e=xe&8191,je=xe>>>13,$e=l[2]|0,Me=$e&8191,Ve=$e>>>13,Ge=l[3]|0,Se=Ge&8191,Ie=Ge>>>13,Ne=l[4]|0,ue=Ne&8191,Ce=Ne>>>13,Be=l[5]|0,he=Be&8191,Oe=Be>>>13,Re=l[6]|0,ce=Re&8191,Pe=Re>>>13,Te=l[7]|0,de=Te&8191,Fe=Te>>>13,Ue=l[8]|0,le=Ue&8191,Le=Ue>>>13,We=l[9]|0,De=We&8191,Qe=We>>>13;a.negative=h.negative^u.negative,a.length=19,g=Math.imul(S,ie),s=Math.imul(S,Ae),s=s+Math.imul(G,ie)|0,p=Math.imul(G,Ae);var Ye=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,g=Math.imul(k,ie),s=Math.imul(k,Ae),s=s+Math.imul(B,ie)|0,p=Math.imul(B,Ae),g=g+Math.imul(S,_e)|0,s=s+Math.imul(S,je)|0,s=s+Math.imul(G,_e)|0,p=p+Math.imul(G,je)|0;var Je=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Je>>>26)|0,Je&=67108863,g=Math.imul(O,ie),s=Math.imul(O,Ae),s=s+Math.imul(v,ie)|0,p=Math.imul(v,Ae),g=g+Math.imul(k,_e)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(B,_e)|0,p=p+Math.imul(B,je)|0,g=g+Math.imul(S,Me)|0,s=s+Math.imul(S,Ve)|0,s=s+Math.imul(G,Me)|0,p=p+Math.imul(G,Ve)|0;var Ut=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul($,ie),s=Math.imul($,Ae),s=s+Math.imul(J,ie)|0,p=Math.imul(J,Ae),g=g+Math.imul(O,_e)|0,s=s+Math.imul(O,je)|0,s=s+Math.imul(v,_e)|0,p=p+Math.imul(v,je)|0,g=g+Math.imul(k,Me)|0,s=s+Math.imul(k,Ve)|0,s=s+Math.imul(B,Me)|0,p=p+Math.imul(B,Ve)|0,g=g+Math.imul(S,Se)|0,s=s+Math.imul(S,Ie)|0,s=s+Math.imul(G,Se)|0,p=p+Math.imul(G,Ie)|0;var Lt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(X,ie),s=Math.imul(X,Ae),s=s+Math.imul(be,ie)|0,p=Math.imul(be,Ae),g=g+Math.imul($,_e)|0,s=s+Math.imul($,je)|0,s=s+Math.imul(J,_e)|0,p=p+Math.imul(J,je)|0,g=g+Math.imul(O,Me)|0,s=s+Math.imul(O,Ve)|0,s=s+Math.imul(v,Me)|0,p=p+Math.imul(v,Ve)|0,g=g+Math.imul(k,Se)|0,s=s+Math.imul(k,Ie)|0,s=s+Math.imul(B,Se)|0,p=p+Math.imul(B,Ie)|0,g=g+Math.imul(S,ue)|0,s=s+Math.imul(S,Ce)|0,s=s+Math.imul(G,ue)|0,p=p+Math.imul(G,Ce)|0;var qt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(fe,ie),s=Math.imul(fe,Ae),s=s+Math.imul(Ee,ie)|0,p=Math.imul(Ee,Ae),g=g+Math.imul(X,_e)|0,s=s+Math.imul(X,je)|0,s=s+Math.imul(be,_e)|0,p=p+Math.imul(be,je)|0,g=g+Math.imul($,Me)|0,s=s+Math.imul($,Ve)|0,s=s+Math.imul(J,Me)|0,p=p+Math.imul(J,Ve)|0,g=g+Math.imul(O,Se)|0,s=s+Math.imul(O,Ie)|0,s=s+Math.imul(v,Se)|0,p=p+Math.imul(v,Ie)|0,g=g+Math.imul(k,ue)|0,s=s+Math.imul(k,Ce)|0,s=s+Math.imul(B,ue)|0,p=p+Math.imul(B,Ce)|0,g=g+Math.imul(S,he)|0,s=s+Math.imul(S,Oe)|0,s=s+Math.imul(G,he)|0,p=p+Math.imul(G,Oe)|0;var zt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zt>>>26)|0,zt&=67108863,g=Math.imul(te,ie),s=Math.imul(te,Ae),s=s+Math.imul(se,ie)|0,p=Math.imul(se,Ae),g=g+Math.imul(fe,_e)|0,s=s+Math.imul(fe,je)|0,s=s+Math.imul(Ee,_e)|0,p=p+Math.imul(Ee,je)|0,g=g+Math.imul(X,Me)|0,s=s+Math.imul(X,Ve)|0,s=s+Math.imul(be,Me)|0,p=p+Math.imul(be,Ve)|0,g=g+Math.imul($,Se)|0,s=s+Math.imul($,Ie)|0,s=s+Math.imul(J,Se)|0,p=p+Math.imul(J,Ie)|0,g=g+Math.imul(O,ue)|0,s=s+Math.imul(O,Ce)|0,s=s+Math.imul(v,ue)|0,p=p+Math.imul(v,Ce)|0,g=g+Math.imul(k,he)|0,s=s+Math.imul(k,Oe)|0,s=s+Math.imul(B,he)|0,p=p+Math.imul(B,Oe)|0,g=g+Math.imul(S,ce)|0,s=s+Math.imul(S,Pe)|0,s=s+Math.imul(G,ce)|0,p=p+Math.imul(G,Pe)|0;var kt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(ee,ie),s=Math.imul(ee,Ae),s=s+Math.imul(ae,ie)|0,p=Math.imul(ae,Ae),g=g+Math.imul(te,_e)|0,s=s+Math.imul(te,je)|0,s=s+Math.imul(se,_e)|0,p=p+Math.imul(se,je)|0,g=g+Math.imul(fe,Me)|0,s=s+Math.imul(fe,Ve)|0,s=s+Math.imul(Ee,Me)|0,p=p+Math.imul(Ee,Ve)|0,g=g+Math.imul(X,Se)|0,s=s+Math.imul(X,Ie)|0,s=s+Math.imul(be,Se)|0,p=p+Math.imul(be,Ie)|0,g=g+Math.imul($,ue)|0,s=s+Math.imul($,Ce)|0,s=s+Math.imul(J,ue)|0,p=p+Math.imul(J,Ce)|0,g=g+Math.imul(O,he)|0,s=s+Math.imul(O,Oe)|0,s=s+Math.imul(v,he)|0,p=p+Math.imul(v,Oe)|0,g=g+Math.imul(k,ce)|0,s=s+Math.imul(k,Pe)|0,s=s+Math.imul(B,ce)|0,p=p+Math.imul(B,Pe)|0,g=g+Math.imul(S,de)|0,s=s+Math.imul(S,Fe)|0,s=s+Math.imul(G,de)|0,p=p+Math.imul(G,Fe)|0;var qr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qr>>>26)|0,qr&=67108863,g=Math.imul(Z,ie),s=Math.imul(Z,Ae),s=s+Math.imul(ve,ie)|0,p=Math.imul(ve,Ae),g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ae,_e)|0,p=p+Math.imul(ae,je)|0,g=g+Math.imul(te,Me)|0,s=s+Math.imul(te,Ve)|0,s=s+Math.imul(se,Me)|0,p=p+Math.imul(se,Ve)|0,g=g+Math.imul(fe,Se)|0,s=s+Math.imul(fe,Ie)|0,s=s+Math.imul(Ee,Se)|0,p=p+Math.imul(Ee,Ie)|0,g=g+Math.imul(X,ue)|0,s=s+Math.imul(X,Ce)|0,s=s+Math.imul(be,ue)|0,p=p+Math.imul(be,Ce)|0,g=g+Math.imul($,he)|0,s=s+Math.imul($,Oe)|0,s=s+Math.imul(J,he)|0,p=p+Math.imul(J,Oe)|0,g=g+Math.imul(O,ce)|0,s=s+Math.imul(O,Pe)|0,s=s+Math.imul(v,ce)|0,p=p+Math.imul(v,Pe)|0,g=g+Math.imul(k,de)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(B,de)|0,p=p+Math.imul(B,Fe)|0,g=g+Math.imul(S,le)|0,s=s+Math.imul(S,Le)|0,s=s+Math.imul(G,le)|0,p=p+Math.imul(G,Le)|0;var zr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zr>>>26)|0,zr&=67108863,g=Math.imul(re,ie),s=Math.imul(re,Ae),s=s+Math.imul(ge,ie)|0,p=Math.imul(ge,Ae),g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(ve,_e)|0,p=p+Math.imul(ve,je)|0,g=g+Math.imul(ee,Me)|0,s=s+Math.imul(ee,Ve)|0,s=s+Math.imul(ae,Me)|0,p=p+Math.imul(ae,Ve)|0,g=g+Math.imul(te,Se)|0,s=s+Math.imul(te,Ie)|0,s=s+Math.imul(se,Se)|0,p=p+Math.imul(se,Ie)|0,g=g+Math.imul(fe,ue)|0,s=s+Math.imul(fe,Ce)|0,s=s+Math.imul(Ee,ue)|0,p=p+Math.imul(Ee,Ce)|0,g=g+Math.imul(X,he)|0,s=s+Math.imul(X,Oe)|0,s=s+Math.imul(be,he)|0,p=p+Math.imul(be,Oe)|0,g=g+Math.imul($,ce)|0,s=s+Math.imul($,Pe)|0,s=s+Math.imul(J,ce)|0,p=p+Math.imul(J,Pe)|0,g=g+Math.imul(O,de)|0,s=s+Math.imul(O,Fe)|0,s=s+Math.imul(v,de)|0,p=p+Math.imul(v,Fe)|0,g=g+Math.imul(k,le)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(B,le)|0,p=p+Math.imul(B,Le)|0,g=g+Math.imul(S,De)|0,s=s+Math.imul(S,Qe)|0,s=s+Math.imul(G,De)|0,p=p+Math.imul(G,Qe)|0;var kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kr>>>26)|0,kr&=67108863,g=Math.imul(re,_e),s=Math.imul(re,je),s=s+Math.imul(ge,_e)|0,p=Math.imul(ge,je),g=g+Math.imul(Z,Me)|0,s=s+Math.imul(Z,Ve)|0,s=s+Math.imul(ve,Me)|0,p=p+Math.imul(ve,Ve)|0,g=g+Math.imul(ee,Se)|0,s=s+Math.imul(ee,Ie)|0,s=s+Math.imul(ae,Se)|0,p=p+Math.imul(ae,Ie)|0,g=g+Math.imul(te,ue)|0,s=s+Math.imul(te,Ce)|0,s=s+Math.imul(se,ue)|0,p=p+Math.imul(se,Ce)|0,g=g+Math.imul(fe,he)|0,s=s+Math.imul(fe,Oe)|0,s=s+Math.imul(Ee,he)|0,p=p+Math.imul(Ee,Oe)|0,g=g+Math.imul(X,ce)|0,s=s+Math.imul(X,Pe)|0,s=s+Math.imul(be,ce)|0,p=p+Math.imul(be,Pe)|0,g=g+Math.imul($,de)|0,s=s+Math.imul($,Fe)|0,s=s+Math.imul(J,de)|0,p=p+Math.imul(J,Fe)|0,g=g+Math.imul(O,le)|0,s=s+Math.imul(O,Le)|0,s=s+Math.imul(v,le)|0,p=p+Math.imul(v,Le)|0,g=g+Math.imul(k,De)|0,s=s+Math.imul(k,Qe)|0,s=s+Math.imul(B,De)|0,p=p+Math.imul(B,Qe)|0;var Hr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,g=Math.imul(re,Me),s=Math.imul(re,Ve),s=s+Math.imul(ge,Me)|0,p=Math.imul(ge,Ve),g=g+Math.imul(Z,Se)|0,s=s+Math.imul(Z,Ie)|0,s=s+Math.imul(ve,Se)|0,p=p+Math.imul(ve,Ie)|0,g=g+Math.imul(ee,ue)|0,s=s+Math.imul(ee,Ce)|0,s=s+Math.imul(ae,ue)|0,p=p+Math.imul(ae,Ce)|0,g=g+Math.imul(te,he)|0,s=s+Math.imul(te,Oe)|0,s=s+Math.imul(se,he)|0,p=p+Math.imul(se,Oe)|0,g=g+Math.imul(fe,ce)|0,s=s+Math.imul(fe,Pe)|0,s=s+Math.imul(Ee,ce)|0,p=p+Math.imul(Ee,Pe)|0,g=g+Math.imul(X,de)|0,s=s+Math.imul(X,Fe)|0,s=s+Math.imul(be,de)|0,p=p+Math.imul(be,Fe)|0,g=g+Math.imul($,le)|0,s=s+Math.imul($,Le)|0,s=s+Math.imul(J,le)|0,p=p+Math.imul(J,Le)|0,g=g+Math.imul(O,De)|0,s=s+Math.imul(O,Qe)|0,s=s+Math.imul(v,De)|0,p=p+Math.imul(v,Qe)|0;var Kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,g=Math.imul(re,Se),s=Math.imul(re,Ie),s=s+Math.imul(ge,Se)|0,p=Math.imul(ge,Ie),g=g+Math.imul(Z,ue)|0,s=s+Math.imul(Z,Ce)|0,s=s+Math.imul(ve,ue)|0,p=p+Math.imul(ve,Ce)|0,g=g+Math.imul(ee,he)|0,s=s+Math.imul(ee,Oe)|0,s=s+Math.imul(ae,he)|0,p=p+Math.imul(ae,Oe)|0,g=g+Math.imul(te,ce)|0,s=s+Math.imul(te,Pe)|0,s=s+Math.imul(se,ce)|0,p=p+Math.imul(se,Pe)|0,g=g+Math.imul(fe,de)|0,s=s+Math.imul(fe,Fe)|0,s=s+Math.imul(Ee,de)|0,p=p+Math.imul(Ee,Fe)|0,g=g+Math.imul(X,le)|0,s=s+Math.imul(X,Le)|0,s=s+Math.imul(be,le)|0,p=p+Math.imul(be,Le)|0,g=g+Math.imul($,De)|0,s=s+Math.imul($,Qe)|0,s=s+Math.imul(J,De)|0,p=p+Math.imul(J,Qe)|0;var jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(jr>>>26)|0,jr&=67108863,g=Math.imul(re,ue),s=Math.imul(re,Ce),s=s+Math.imul(ge,ue)|0,p=Math.imul(ge,Ce),g=g+Math.imul(Z,he)|0,s=s+Math.imul(Z,Oe)|0,s=s+Math.imul(ve,he)|0,p=p+Math.imul(ve,Oe)|0,g=g+Math.imul(ee,ce)|0,s=s+Math.imul(ee,Pe)|0,s=s+Math.imul(ae,ce)|0,p=p+Math.imul(ae,Pe)|0,g=g+Math.imul(te,de)|0,s=s+Math.imul(te,Fe)|0,s=s+Math.imul(se,de)|0,p=p+Math.imul(se,Fe)|0,g=g+Math.imul(fe,le)|0,s=s+Math.imul(fe,Le)|0,s=s+Math.imul(Ee,le)|0,p=p+Math.imul(Ee,Le)|0,g=g+Math.imul(X,De)|0,s=s+Math.imul(X,Qe)|0,s=s+Math.imul(be,De)|0,p=p+Math.imul(be,Qe)|0;var $r=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,g=Math.imul(re,he),s=Math.imul(re,Oe),s=s+Math.imul(ge,he)|0,p=Math.imul(ge,Oe),g=g+Math.imul(Z,ce)|0,s=s+Math.imul(Z,Pe)|0,s=s+Math.imul(ve,ce)|0,p=p+Math.imul(ve,Pe)|0,g=g+Math.imul(ee,de)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ae,de)|0,p=p+Math.imul(ae,Fe)|0,g=g+Math.imul(te,le)|0,s=s+Math.imul(te,Le)|0,s=s+Math.imul(se,le)|0,p=p+Math.imul(se,Le)|0,g=g+Math.imul(fe,De)|0,s=s+Math.imul(fe,Qe)|0,s=s+Math.imul(Ee,De)|0,p=p+Math.imul(Ee,Qe)|0;var Vr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,g=Math.imul(re,ce),s=Math.imul(re,Pe),s=s+Math.imul(ge,ce)|0,p=Math.imul(ge,Pe),g=g+Math.imul(Z,de)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(ve,de)|0,p=p+Math.imul(ve,Fe)|0,g=g+Math.imul(ee,le)|0,s=s+Math.imul(ee,Le)|0,s=s+Math.imul(ae,le)|0,p=p+Math.imul(ae,Le)|0,g=g+Math.imul(te,De)|0,s=s+Math.imul(te,Qe)|0,s=s+Math.imul(se,De)|0,p=p+Math.imul(se,Qe)|0;var Gr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,g=Math.imul(re,de),s=Math.imul(re,Fe),s=s+Math.imul(ge,de)|0,p=Math.imul(ge,Fe),g=g+Math.imul(Z,le)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(ve,le)|0,p=p+Math.imul(ve,Le)|0,g=g+Math.imul(ee,De)|0,s=s+Math.imul(ee,Qe)|0,s=s+Math.imul(ae,De)|0,p=p+Math.imul(ae,Qe)|0;var Yr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,g=Math.imul(re,le),s=Math.imul(re,Le),s=s+Math.imul(ge,le)|0,p=Math.imul(ge,Le),g=g+Math.imul(Z,De)|0,s=s+Math.imul(Z,Qe)|0,s=s+Math.imul(ve,De)|0,p=p+Math.imul(ve,Qe)|0;var Jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,g=Math.imul(re,De),s=Math.imul(re,Qe),s=s+Math.imul(ge,De)|0,p=Math.imul(ge,Qe);var Wr=(_+g|0)+((s&8191)<<13)|0;return _=(p+(s>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,w[0]=Ye,w[1]=Je,w[2]=Ut,w[3]=Lt,w[4]=qt,w[5]=zt,w[6]=kt,w[7]=qr,w[8]=zr,w[9]=kr,w[10]=Hr,w[11]=Kr,w[12]=jr,w[13]=$r,w[14]=Vr,w[15]=Gr,w[16]=Yr,w[17]=Jr,w[18]=Wr,_!==0&&(w[19]=_,a.length++),a};Math.imul||(q=I);function H(C,h,u){u.negative=h.negative^C.negative,u.length=C.length+h.length;for(var a=0,o=0,l=0;l>>26)|0,o+=w>>>26,w&=67108863}u.words[l]=_,a=w,w=o}return a!==0?u.words[l]=a:u.length--,u.strip()}function V(C,h,u){var a=new z;return a.mulp(C,h,u)}n.prototype.mulTo=function(h,u){var a,o=this.length+h.length;return this.length===10&&h.length===10?a=q(this,h,u):o<63?a=I(this,h,u):o<1024?a=H(this,h,u):a=V(this,h,u),a};function z(C,h){this.x=C,this.y=h}z.prototype.makeRBT=function(h){for(var u=new Array(h),a=n.prototype._countBits(h)-1,o=0;o>=1;return o},z.prototype.permute=function(h,u,a,o,l,w){for(var _=0;_>>1)l++;return 1<>>13,a[2*w+1]=l&8191,l=l>>>13;for(w=2*u;w>=26,u+=o/67108864|0,u+=l>>>26,this.words[a]=l&67108863}return u!==0&&(this.words[a]=u,this.length++),this},n.prototype.muln=function(h){return this.clone().imuln(h)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(h){var u=D(h);if(u.length===0)return new n(1);for(var a=this,o=0;o=0);var u=h%26,a=(h-u)/26,o=67108863>>>26-u<<26-u,l;if(u!==0){var w=0;for(l=0;l>>26-u}w&&(this.words[l]=w,this.length++)}if(a!==0){for(l=this.length-1;l>=0;l--)this.words[l+a]=this.words[l];for(l=0;l=0);var o;u?o=(u-u%26)/26:o=0;var l=h%26,w=Math.min((h-l)/26,this.length),_=67108863^67108863>>>l<w)for(this.length-=w,s=0;s=0&&(p!==0||s>=o);s--){var b=this.words[s]|0;this.words[s]=p<<26-l|b>>>l,p=b&_}return g&&p!==0&&(g.words[g.length++]=p),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(h,u,a){return i(this.negative===0),this.iushrn(h,u,a)},n.prototype.shln=function(h){return this.clone().ishln(h)},n.prototype.ushln=function(h){return this.clone().iushln(h)},n.prototype.shrn=function(h){return this.clone().ishrn(h)},n.prototype.ushrn=function(h){return this.clone().iushrn(h)},n.prototype.testn=function(h){i(typeof h=="number"&&h>=0);var u=h%26,a=(h-u)/26,o=1<=0);var u=h%26,a=(h-u)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=a)return this;if(u!==0&&a++,this.length=Math.min(a,this.length),u!==0){var o=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},n.prototype.isubn=function(h){if(i(typeof h=="number"),i(h<67108864),h<0)return this.iaddn(-h);if(this.negative!==0)return this.negative=0,this.iaddn(h),this.negative=1,this;if(this.words[0]-=h,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(g/67108864|0),this.words[l+a]=w&67108863}for(;l>26,this.words[l+a]=w&67108863;if(_===0)return this.strip();for(i(_===-1),_=0,l=0;l>26,this.words[l]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(h,u){var a=this.length-h.length,o=this.clone(),l=h,w=l.words[l.length-1]|0,_=this._countBits(w);a=26-_,a!==0&&(l=l.ushln(a),o.iushln(a),w=l.words[l.length-1]|0);var g=o.length-l.length,s;if(u!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var p=0;p=0;S--){var G=(o.words[l.length+S]|0)*67108864+(o.words[l.length+S-1]|0);for(G=Math.min(G/w|0,67108863),o._ishlnsubmul(l,G,S);o.negative!==0;)G--,o.negative=0,o._ishlnsubmul(l,1,S),o.isZero()||(o.negative^=1);s&&(s.words[S]=G)}return s&&s.strip(),o.strip(),u!=="div"&&a!==0&&o.iushrn(a),{div:s||null,mod:o}},n.prototype.divmod=function(h,u,a){if(i(!h.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var o,l,w;return this.negative!==0&&h.negative===0?(w=this.neg().divmod(h,u),u!=="mod"&&(o=w.div.neg()),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.iadd(h)),{div:o,mod:l}):this.negative===0&&h.negative!==0?(w=this.divmod(h.neg(),u),u!=="mod"&&(o=w.div.neg()),{div:o,mod:w.mod}):this.negative&h.negative?(w=this.neg().divmod(h.neg(),u),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.isub(h)),{div:w.div,mod:l}):h.length>this.length||this.cmp(h)<0?{div:new n(0),mod:this}:h.length===1?u==="div"?{div:this.divn(h.words[0]),mod:null}:u==="mod"?{div:null,mod:new n(this.modn(h.words[0]))}:{div:this.divn(h.words[0]),mod:new n(this.modn(h.words[0]))}:this._wordDiv(h,u)},n.prototype.div=function(h){return this.divmod(h,"div",!1).div},n.prototype.mod=function(h){return this.divmod(h,"mod",!1).mod},n.prototype.umod=function(h){return this.divmod(h,"mod",!0).mod},n.prototype.divRound=function(h){var u=this.divmod(h);if(u.mod.isZero())return u.div;var a=u.div.negative!==0?u.mod.isub(h):u.mod,o=h.ushrn(1),l=h.andln(1),w=a.cmp(o);return w<0||l===1&&w===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},n.prototype.modn=function(h){i(h<=67108863);for(var u=(1<<26)%h,a=0,o=this.length-1;o>=0;o--)a=(u*a+(this.words[o]|0))%h;return a},n.prototype.idivn=function(h){i(h<=67108863);for(var u=0,a=this.length-1;a>=0;a--){var o=(this.words[a]|0)+u*67108864;this.words[a]=o/h|0,u=o%h}return this.strip()},n.prototype.divn=function(h){return this.clone().idivn(h)},n.prototype.egcd=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=new n(0),_=new n(1),g=0;u.isEven()&&a.isEven();)u.iushrn(1),a.iushrn(1),++g;for(var s=a.clone(),p=u.clone();!u.isZero();){for(var b=0,S=1;!(u.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(u.iushrn(b);b-- >0;)(o.isOdd()||l.isOdd())&&(o.iadd(s),l.isub(p)),o.iushrn(1),l.iushrn(1);for(var G=0,M=1;!(a.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(a.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(s),_.isub(p)),w.iushrn(1),_.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(w),l.isub(_)):(a.isub(u),w.isub(o),_.isub(l))}return{a:w,b:_,gcd:a.iushln(g)}},n.prototype._invmp=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=a.clone();u.cmpn(1)>0&&a.cmpn(1)>0;){for(var _=0,g=1;!(u.words[0]&g)&&_<26;++_,g<<=1);if(_>0)for(u.iushrn(_);_-- >0;)o.isOdd()&&o.iadd(w),o.iushrn(1);for(var s=0,p=1;!(a.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(a.iushrn(s);s-- >0;)l.isOdd()&&l.iadd(w),l.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(l)):(a.isub(u),l.isub(o))}var b;return u.cmpn(1)===0?b=o:b=l,b.cmpn(0)<0&&b.iadd(h),b},n.prototype.gcd=function(h){if(this.isZero())return h.abs();if(h.isZero())return this.abs();var u=this.clone(),a=h.clone();u.negative=0,a.negative=0;for(var o=0;u.isEven()&&a.isEven();o++)u.iushrn(1),a.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;a.isEven();)a.iushrn(1);var l=u.cmp(a);if(l<0){var w=u;u=a,a=w}else if(l===0||a.cmpn(1)===0)break;u.isub(a)}while(!0);return a.iushln(o)},n.prototype.invm=function(h){return this.egcd(h).a.umod(h)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(h){return this.words[0]&h},n.prototype.bincn=function(h){i(typeof h=="number");var u=h%26,a=(h-u)/26,o=1<>>26,_&=67108863,this.words[w]=_}return l!==0&&(this.words[w]=l,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(h){var u=h<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this.strip();var a;if(this.length>1)a=1;else{u&&(h=-h),i(h<=67108863,"Number is too big");var o=this.words[0]|0;a=o===h?0:oh.length)return 1;if(this.length=0;a--){var o=this.words[a]|0,l=h.words[a]|0;if(o!==l){ol&&(u=1);break}}return u},n.prototype.gtn=function(h){return this.cmpn(h)===1},n.prototype.gt=function(h){return this.cmp(h)===1},n.prototype.gten=function(h){return this.cmpn(h)>=0},n.prototype.gte=function(h){return this.cmp(h)>=0},n.prototype.ltn=function(h){return this.cmpn(h)===-1},n.prototype.lt=function(h){return this.cmp(h)===-1},n.prototype.lten=function(h){return this.cmpn(h)<=0},n.prototype.lte=function(h){return this.cmp(h)<=0},n.prototype.eqn=function(h){return this.cmpn(h)===0},n.prototype.eq=function(h){return this.cmp(h)===0},n.red=function(h){return new Y(h)},n.prototype.toRed=function(h){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),h.convertTo(this)._forceRed(h)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(h){return this.red=h,this},n.prototype.forceRed=function(h){return i(!this.red,"Already a number in reduction context"),this._forceRed(h)},n.prototype.redAdd=function(h){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,h)},n.prototype.redIAdd=function(h){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,h)},n.prototype.redSub=function(h){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,h)},n.prototype.redISub=function(h){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,h)},n.prototype.redShl=function(h){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,h)},n.prototype.redMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.mul(this,h)},n.prototype.redIMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.imul(this,h)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(h){return i(this.red&&!h.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,h)};var j={k256:null,p224:null,p192:null,p25519:null};function F(C,h){this.name=C,this.p=new n(h,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}F.prototype._tmp=function(){var h=new n(null);return h.words=new Array(Math.ceil(this.n/13)),h},F.prototype.ireduce=function(h){var u=h,a;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),a=u.bitLength();while(a>this.n);var o=a0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},F.prototype.split=function(h,u){h.iushrn(this.n,0,u)},F.prototype.imulK=function(h){return h.imul(this.k)};function U(){F.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(U,F),U.prototype.split=function(h,u){for(var a=4194303,o=Math.min(h.length,9),l=0;l>>22,w=_}w>>>=22,h.words[l-10]=w,w===0&&h.length>10?h.length-=10:h.length-=9},U.prototype.imulK=function(h){h.words[h.length]=0,h.words[h.length+1]=0,h.length+=2;for(var u=0,a=0;a>>=26,h.words[a]=l,u=o}return u!==0&&(h.words[h.length++]=u),h},n._prime=function(h){if(j[h])return j[h];var u;if(h==="k256")u=new U;else if(h==="p224")u=new L;else if(h==="p192")u=new m;else if(h==="p25519")u=new P;else throw new Error("Unknown prime "+h);return j[h]=u,u};function Y(C){if(typeof C=="string"){var h=n._prime(C);this.m=h.p,this.prime=h}else i(C.gtn(1),"modulus must be greater than 1"),this.m=C,this.prime=null}Y.prototype._verify1=function(h){i(h.negative===0,"red works only with positives"),i(h.red,"red works only with red numbers")},Y.prototype._verify2=function(h,u){i((h.negative|u.negative)===0,"red works only with positives"),i(h.red&&h.red===u.red,"red works only with red numbers")},Y.prototype.imod=function(h){return this.prime?this.prime.ireduce(h)._forceRed(this):h.umod(this.m)._forceRed(this)},Y.prototype.neg=function(h){return h.isZero()?h.clone():this.m.sub(h)._forceRed(this)},Y.prototype.add=function(h,u){this._verify2(h,u);var a=h.add(u);return a.cmp(this.m)>=0&&a.isub(this.m),a._forceRed(this)},Y.prototype.iadd=function(h,u){this._verify2(h,u);var a=h.iadd(u);return a.cmp(this.m)>=0&&a.isub(this.m),a},Y.prototype.sub=function(h,u){this._verify2(h,u);var a=h.sub(u);return a.cmpn(0)<0&&a.iadd(this.m),a._forceRed(this)},Y.prototype.isub=function(h,u){this._verify2(h,u);var a=h.isub(u);return a.cmpn(0)<0&&a.iadd(this.m),a},Y.prototype.shl=function(h,u){return this._verify1(h),this.imod(h.ushln(u))},Y.prototype.imul=function(h,u){return this._verify2(h,u),this.imod(h.imul(u))},Y.prototype.mul=function(h,u){return this._verify2(h,u),this.imod(h.mul(u))},Y.prototype.isqr=function(h){return this.imul(h,h.clone())},Y.prototype.sqr=function(h){return this.mul(h,h)},Y.prototype.sqrt=function(h){if(h.isZero())return h.clone();var u=this.m.andln(3);if(i(u%2===1),u===3){var a=this.m.add(new n(1)).iushrn(2);return this.pow(h,a)}for(var o=this.m.subn(1),l=0;!o.isZero()&&o.andln(1)===0;)l++,o.iushrn(1);i(!o.isZero());var w=new n(1).toRed(this),_=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(_)!==0;)s.redIAdd(_);for(var p=this.pow(s,o),b=this.pow(h,o.addn(1).iushrn(1)),S=this.pow(h,o),G=l;S.cmp(w)!==0;){for(var M=S,k=0;M.cmp(w)!==0;k++)M=M.redSqr();i(k=0;l--){for(var p=u.words[l],b=s-1;b>=0;b--){var S=p>>b&1;if(w!==o[0]&&(w=this.sqr(w)),S===0&&_===0){g=0;continue}_<<=1,_|=S,g++,!(g!==a&&(l!==0||b!==0))&&(w=this.mul(w,o[_]),g=0,_=0)}s=26}return w},Y.prototype.convertTo=function(h){var u=h.umod(this.m);return u===h?u.clone():u},Y.prototype.convertFrom=function(h){var u=h.clone();return u.red=null,u},n.mont=function(h){return new Q(h)};function Q(C){Y.call(this,C),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(Q,Y),Q.prototype.convertTo=function(h){return this.imod(h.ushln(this.shift))},Q.prototype.convertFrom=function(h){var u=this.imod(h.mul(this.rinv));return u.red=null,u},Q.prototype.imul=function(h,u){if(h.isZero()||u.isZero())return h.words[0]=0,h.length=1,h;var a=h.imul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.mul=function(h,u){if(h.isZero()||u.isZero())return new n(0)._forceRed(this);var a=h.mul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.invm=function(h){var u=this.imod(h._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(t,Rn)})(ir);var Uf={};(function(t){var e=t;function r(n,d){if(Array.isArray(n))return n.slice();if(!n)return[];var c=[];if(typeof n!="string"){for(var y=0;y>8,E=A&255;x?c.push(x,E):c.push(E)}return c}e.toArray=r;function i(n){return n.length===1?"0"+n:n}e.zero2=i;function f(n){for(var d="",c=0;c(q>>1)-1?V=(q>>1)-z:V=z,H.isubn(V)):V=0,D[I]=V,H.iushrn(1)}return D}e.getNAF=n;function d(x,E){var N=[[],[]];x=x.clone(),E=E.clone();for(var D=0,I=0,q;x.cmpn(-D)>0||E.cmpn(-I)>0;){var H=x.andln(3)+D&3,V=E.andln(3)+I&3;H===3&&(H=-1),V===3&&(V=-1);var z;H&1?(q=x.andln(7)+D&7,(q===3||q===5)&&V===2?z=-H:z=H):z=0,N[0].push(z);var j;V&1?(q=E.andln(7)+I&7,(q===3||q===5)&&H===2?j=-V:j=V):j=0,N[1].push(j),2*D===z+1&&(D=1-D),2*I===j+1&&(I=1-I),x.iushrn(1),E.iushrn(1)}return N}e.getJSF=d;function c(x,E,N){var D="_"+E;x.prototype[E]=function(){return this[D]!==void 0?this[D]:this[D]=N.call(this)}}e.cachedProperty=c;function y(x){return typeof x=="string"?e.toArray(x,"hex"):x}e.parseBytes=y;function A(x){return new r(x,"hex","le")}e.intFromLE=A}(Dt);var pn={exports:{}},Lf;pn.exports=function(e){return Lf||(Lf=new yr(null)),Lf.generate(e)};function yr(t){this.rand=t}if(pn.exports.Rand=yr,yr.prototype.generate=function(e){return this._rand(e)},yr.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var yn=wr;wr.prototype.point=function(){throw new Error("Not implemented")},wr.prototype.validate=function(){throw new Error("Not implemented")},wr.prototype._fixedNafMul=function(e,r){gn(e.precomputed);var i=e._getDoubles(),f=mn(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];gn(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},wr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=mn(i[I],d[I],this._bitLength),y[q]=mn(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=V2(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Pt.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Tt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Tt.prototype.pointFromX=function(e,r){e=new rt(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Tt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Tt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},ft.prototype.isInfinity=function(){return this.inf},ft.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},ft.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},ft.prototype.getX=function(){return this.x.fromRed()},ft.prototype.getY=function(){return this.y.fromRed()},ft.prototype.mul=function(e){return e=new rt(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},ft.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},ft.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},ft.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},ft.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ct(t,e,r,i){di.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new rt(0)):(this.x=new rt(e,16),this.y=new rt(r,16),this.z=new rt(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}zf(ct,di.BasePoint),Tt.prototype.jpoint=function(e,r,i){return new ct(this,e,r,i)},ct.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ct.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ct.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ct.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ct.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ct.prototype.inspect=function(){return this.isInfinity()?"":""},ct.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var li=ir.exports,Go=ni.exports,wn=yn,W2=Dt;function bi(t){wn.call(this,"mont",t),this.a=new li(t.a,16).toRed(this.red),this.b=new li(t.b,16).toRed(this.red),this.i4=new li(4).toRed(this.red).redInvm(),this.two=new li(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Go(bi,wn);var Q2=bi;bi.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),f=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),n=f.redSqrt();return n.redSqr().cmp(f)===0};function at(t,e,r){wn.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new li(e,16),this.z=new li(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Go(at,wn.BasePoint),bi.prototype.decodePoint=function(e,r){return this.point(W2.toArray(e,r),1)},bi.prototype.point=function(e,r){return new at(this,e,r)},bi.prototype.pointFromJSON=function(e){return at.fromJSON(this,e)},at.prototype.precompute=function(){},at.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},at.fromJSON=function(e,r){return new at(e,r[0],r[1]||e.one)},at.prototype.inspect=function(){return this.isInfinity()?"":""},at.prototype.isInfinity=function(){return this.z.cmpn(0)===0},at.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),f=i.redSqr(),n=r.redSub(f),d=r.redMul(f),c=n.redMul(f.redAdd(this.curve.a24.redMul(n)));return this.curve.point(d,c)},at.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),f=this.x.redSub(this.z),n=e.x.redAdd(e.z),d=e.x.redSub(e.z),c=d.redMul(i),y=n.redMul(f),A=r.z.redMul(c.redAdd(y).redSqr()),x=r.x.redMul(c.redISub(y).redSqr());return this.curve.point(A,x)},at.prototype.mul=function(e){for(var r=e.clone(),i=this,f=this.curve.point(null,null),n=this,d=[];r.cmpn(0)!==0;r.iushrn(1))d.push(r.andln(1));for(var c=d.length-1;c>=0;c--)d[c]===0?(i=i.diffAdd(f,n),f=f.dbl()):(f=i.diffAdd(f,n),i=i.dbl());return f},at.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.eq=function(e){return this.getX().cmp(e.getX())===0},at.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},at.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var X2=Dt,hr=ir.exports,Yo=ni.exports,An=yn,Z2=X2.assert;function nr(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,An.call(this,"edwards",t),this.a=new hr(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new hr(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new hr(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),Z2(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Yo(nr,An);var e3=nr;nr.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},nr.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},nr.prototype.jpoint=function(e,r,i,f){return this.point(e,r,i,f)},nr.prototype.pointFromX=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=this.c2.redSub(this.a.redMul(i)),n=this.one.redSub(this.c2.redMul(this.d).redMul(i)),d=f.redMul(n.redInvm()),c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");var y=c.fromRed().isOdd();return(r&&!y||!r&&y)&&(c=c.redNeg()),this.point(e,c)},nr.prototype.pointFromY=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=i.redSub(this.c2),n=i.redMul(this.d).redMul(this.c2).redSub(this.a),d=f.redMul(n.redInvm());if(d.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)},nr.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),f=r.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return f.cmp(n)===0};function et(t,e,r,i,f){An.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new hr(e,16),this.y=new hr(r,16),this.z=i?new hr(i,16):this.curve.one,this.t=f&&new hr(f,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Yo(et,An.BasePoint),nr.prototype.pointFromJSON=function(e){return et.fromJSON(this,e)},nr.prototype.point=function(e,r,i,f){return new et(this,e,r,i,f)},et.fromJSON=function(e,r){return new et(e,r[0],r[1],r[2])},et.prototype.inspect=function(){return this.isInfinity()?"":""},et.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},et.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var f=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),d=f.redAdd(r),c=d.redSub(i),y=f.redSub(r),A=n.redMul(c),x=d.redMul(y),E=n.redMul(y),N=c.redMul(d);return this.curve.point(A,x,N,E)},et.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),f,n,d,c,y,A;if(this.curve.twisted){c=this.curve._mulA(r);var x=c.redAdd(i);this.zOne?(f=e.redSub(r).redSub(i).redMul(x.redSub(this.curve.two)),n=x.redMul(c.redSub(i)),d=x.redSqr().redSub(x).redSub(x)):(y=this.z.redSqr(),A=x.redSub(y).redISub(y),f=e.redSub(r).redISub(i).redMul(A),n=x.redMul(c.redSub(i)),d=x.redMul(A))}else c=r.redAdd(i),y=this.curve._mulC(this.z).redSqr(),A=c.redSub(y).redSub(y),f=this.curve._mulC(e.redISub(c)).redMul(A),n=this.curve._mulC(c).redMul(r.redISub(i)),d=c.redMul(A);return this.curve.point(f,n,d)},et.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},et.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),f=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),d=i.redSub(r),c=n.redSub(f),y=n.redAdd(f),A=i.redAdd(r),x=d.redMul(c),E=y.redMul(A),N=d.redMul(A),D=c.redMul(y);return this.curve.point(x,E,D,N)},et.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),f=this.x.redMul(e.x),n=this.y.redMul(e.y),d=this.curve.d.redMul(f).redMul(n),c=i.redSub(d),y=i.redAdd(d),A=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(f).redISub(n),x=r.redMul(c).redMul(A),E,N;return this.curve.twisted?(E=r.redMul(y).redMul(n.redSub(this.curve._mulA(f))),N=c.redMul(y)):(E=r.redMul(y).redMul(n.redSub(f)),N=this.curve._mulC(c).redMul(y)),this.curve.point(x,E,N)},et.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},et.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},et.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)},et.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)},et.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},et.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},et.prototype.getX=function(){return this.normalize(),this.x.fromRed()},et.prototype.getY=function(){return this.normalize(),this.y.fromRed()},et.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0},et.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),f=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(f),this.x.cmp(r)===0)return!0}},et.prototype.toP=et.prototype.normalize,et.prototype.mixedAdd=et.prototype.add,function(t){var e=t;e.base=yn,e.short=J2,e.mont=Q2,e.edwards=e3}(qf);var xn={},kf,Jo;function t3(){return Jo||(Jo=1,kf={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}),kf}(function(t){var e=t,r=_t,i=qf,f=Dt,n=f.assert;function d(A){A.type==="short"?this.curve=new i.short(A):A.type==="edwards"?this.curve=new i.edwards(A):this.curve=new i.mont(A),this.g=this.curve.g,this.n=this.curve.n,this.hash=A.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}e.PresetCurve=d;function c(A,x){Object.defineProperty(e,A,{configurable:!0,enumerable:!0,get:function(){var E=new d(x);return Object.defineProperty(e,A,{configurable:!0,enumerable:!0,value:E}),E}})}c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:r.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:r.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:r.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:r.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:r.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var y;try{y=t3()}catch{y=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:r.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",y]})})(xn);var r3=_t,Rr=Uf,Wo=Ir;function Ar(t){if(!(this instanceof Ar))return new Ar(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Rr.toArray(t.entropy,t.entropyEnc||"hex"),r=Rr.toArray(t.nonce,t.nonceEnc||"hex"),i=Rr.toArray(t.pers,t.persEnc||"hex");Wo(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i3=Ar;Ar.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},Ar.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=Rr.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var _n=ir.exports,Kf=Dt,o3=Kf.assert;function Mn(t,e){if(t instanceof Mn)return t;this._importDER(t,e)||(o3(t.r&&t.s,"Signature without r or s"),this.r=new _n(t.r,16),this.s=new _n(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var s3=Mn;function u3(){this.place=0}function jf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4||t[e.place]===0)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function Qo(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}Mn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Qo(r),i=Qo(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];$f(f,r.length),f=f.concat(r),f.push(2),$f(f,i.length);var n=f.concat(i),d=[48];return $f(d,n.length),d=d.concat(n),Kf.encode(d,e)};var Pr=ir.exports,Xo=i3,h3=Dt,Vf=xn,c3=pn.exports,Zo=h3.assert,Gf=a3,En=s3;function Ft(t){if(!(this instanceof Ft))return new Ft(t);typeof t=="string"&&(Zo(Object.prototype.hasOwnProperty.call(Vf,t),"Unknown curve "+t),t=Vf[t]),t instanceof Vf.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var d3=Ft;Ft.prototype.keyPair=function(e){return new Gf(this,e)},Ft.prototype.keyFromPrivate=function(e,r){return Gf.fromPrivate(this,e,r)},Ft.prototype.keyFromPublic=function(e,r){return Gf.fromPublic(this,e,r)},Ft.prototype.genKeyPair=function(e){e||(e={});for(var r=new Xo({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||c3(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new Pr(2));;){var n=new Pr(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ft.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ft.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new Pr(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new Xo({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new Pr(1)),x=0;;x++){var E=f.k?f.k(x):new Pr(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new En({r:I,s:q,recoveryParam:H})}}}}}},Ft.prototype.verify=function(e,r,i,f){e=this._truncateToN(new Pr(e,16)),i=this.keyFromPublic(i,f),r=new En(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ft.prototype.recoverPubKey=function(t,e,r,i){Zo((3&r)===r,"The recovery param is more than two bits"),e=new En(e,i);var f=this.n,n=new Pr(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ft.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new En(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Ti=Dt,es=Ti.assert,ts=Ti.parseBytes,vi=Ti.cachedProperty;function ot(t,e){this.eddsa=t,this._secret=ts(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=ts(e.pub)}ot.fromPublic=function(e,r){return r instanceof ot?r:new ot(e,{pub:r})},ot.fromSecret=function(e,r){return r instanceof ot?r:new ot(e,{secret:r})},ot.prototype.secret=function(){return this._secret},vi(ot,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())}),vi(ot,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())}),vi(ot,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,f=r.slice(0,e.encodingLength);return f[0]&=248,f[i]&=127,f[i]|=64,f}),vi(ot,"priv",function(){return this.eddsa.decodeInt(this.privBytes())}),vi(ot,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()}),vi(ot,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)}),ot.prototype.sign=function(e){return es(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},ot.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)},ot.prototype.getSecret=function(e){return es(this._secret,"KeyPair is public only"),Ti.encode(this.secret(),e)},ot.prototype.getPublic=function(e){return Ti.encode(this.pubBytes(),e)};var l3=ot,b3=ir.exports,Sn=Dt,rs=Sn.assert,Dn=Sn.cachedProperty,v3=Sn.parseBytes;function Tr(t,e){this.eddsa=t,typeof e!="object"&&(e=v3(e)),Array.isArray(e)&&(rs(e.length===t.encodingLength*2,"Signature has invalid size"),e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),rs(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof b3&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}Dn(Tr,"S",function(){return this.eddsa.decodeInt(this.Sencoded())}),Dn(Tr,"R",function(){return this.eddsa.decodePoint(this.Rencoded())}),Dn(Tr,"Rencoded",function(){return this.eddsa.encodePoint(this.R())}),Dn(Tr,"Sencoded",function(){return this.eddsa.encodeInt(this.S())}),Tr.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},Tr.prototype.toHex=function(){return Sn.encode(this.toBytes(),"hex").toUpperCase()};var p3=Tr,m3=_t,g3=xn,pi=Dt,y3=pi.assert,is=pi.parseBytes,ns=l3,fs=p3;function At(t){if(y3(t==="ed25519","only tested with ed25519 so far"),!(this instanceof At))return new At(t);t=g3[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=m3.sha512}var w3=At;At.prototype.sign=function(e,r){e=is(e);var i=this.keyFromSecret(r),f=this.hashInt(i.messagePrefix(),e),n=this.g.mul(f),d=this.encodePoint(n),c=this.hashInt(d,i.pubBytes(),e).mul(i.priv()),y=f.add(c).umod(this.curve.n);return this.makeSignature({R:n,S:y,Rencoded:d})},At.prototype.verify=function(e,r,i){if(e=is(e),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var f=this.keyFromPublic(i),n=this.hashInt(r.Rencoded(),f.pubBytes(),e),d=this.g.mul(r.S()),c=r.R().add(f.pub().mul(n));return c.eq(d)},At.prototype.hashInt=function(){for(var e=this.hash(),r=0;r0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%128<112?128:256;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._stateHi.set(y.stateHi),this._stateLo.set(y.stateLo),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.stateHi),r.wipe(y.stateLo),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA512=i;var f=new Int32Array([1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591]);function n(c,y,A,x,E,N,D){for(var I=A[0],q=A[1],H=A[2],V=A[3],z=A[4],j=A[5],F=A[6],U=A[7],L=x[0],m=x[1],P=x[2],Y=x[3],Q=x[4],C=x[5],h=x[6],u=x[7],a,o,l,w,_,g,s,p;D>=128;){for(var b=0;b<16;b++){var S=8*b+N;c[b]=e.readUint32BE(E,S),y[b]=e.readUint32BE(E,S+4)}for(var b=0;b<80;b++){var G=I,M=q,k=H,B=V,T=z,O=j,v=F,R=U,$=L,J=m,W=P,X=Y,be=Q,ye=C,fe=h,Ee=u;if(a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(z>>>14|Q<<32-14)^(z>>>18|Q<<32-18)^(Q>>>41-32|z<<32-(41-32)),o=(Q>>>14|z<<32-14)^(Q>>>18|z<<32-18)^(z>>>41-32|Q<<32-(41-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=z&j^~z&F,o=Q&C^~Q&h,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=f[b*2],o=f[b*2+1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=c[b%16],o=y[b%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,l=s&65535|p<<16,w=_&65535|g<<16,a=l,o=w,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(I>>>28|L<<32-28)^(L>>>34-32|I<<32-(34-32))^(L>>>39-32|I<<32-(39-32)),o=(L>>>28|I<<32-28)^(I>>>34-32|L<<32-(34-32))^(I>>>39-32|L<<32-(39-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=I&q^I&H^q&H,o=L&m^L&P^m&P,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,R=s&65535|p<<16,Ee=_&65535|g<<16,a=B,o=X,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=l,o=w,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,B=s&65535|p<<16,X=_&65535|g<<16,q=G,H=M,V=k,z=B,j=T,F=O,U=v,I=R,m=$,P=J,Y=W,Q=X,C=be,h=ye,u=fe,L=Ee,b%16===15)for(var S=0;S<16;S++)a=c[S],o=y[S],_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=c[(S+9)%16],o=y[(S+9)%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+1)%16],w=y[(S+1)%16],a=(l>>>1|w<<32-1)^(l>>>8|w<<32-8)^l>>>7,o=(w>>>1|l<<32-1)^(w>>>8|l<<32-8)^(w>>>7|l<<32-7),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+14)%16],w=y[(S+14)%16],a=(l>>>19|w<<32-19)^(w>>>61-32|l<<32-(61-32))^l>>>6,o=(w>>>19|l<<32-19)^(l>>>61-32|w<<32-(61-32))^(w>>>6|l<<32-6),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,c[S]=s&65535|p<<16,y[S]=_&65535|g<<16}a=I,o=L,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[0],o=x[0],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[0]=I=s&65535|p<<16,x[0]=L=_&65535|g<<16,a=q,o=m,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[1],o=x[1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[1]=q=s&65535|p<<16,x[1]=m=_&65535|g<<16,a=H,o=P,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[2],o=x[2],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[2]=H=s&65535|p<<16,x[2]=P=_&65535|g<<16,a=V,o=Y,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[3],o=x[3],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[3]=V=s&65535|p<<16,x[3]=Y=_&65535|g<<16,a=z,o=Q,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[4],o=x[4],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[4]=z=s&65535|p<<16,x[4]=Q=_&65535|g<<16,a=j,o=C,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[5],o=x[5],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[5]=j=s&65535|p<<16,x[5]=C=_&65535|g<<16,a=F,o=h,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[6],o=x[6],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[6]=F=s&65535|p<<16,x[6]=h=_&65535|g<<16,a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[7],o=x[7],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[7]=U=s&65535|p<<16,x[7]=u=_&65535|g<<16,N+=128,D-=128}return N}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(as),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertSecretKeyToX25519=t.convertPublicKeyToX25519=t.verify=t.sign=t.extractPublicKeyFromSecretKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.SEED_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=t.SIGNATURE_LENGTH=void 0;const e=Br,r=as,i=Et;t.SIGNATURE_LENGTH=64,t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=64,t.SEED_LENGTH=32;function f(B){const T=new Float64Array(16);if(B)for(let O=0;O>16&1),O[J-1]&=65535;O[15]=v[15]-32767-(O[14]>>16&1);const $=O[15]>>16&1;O[14]&=65535,q(v,O,1-$)}for(let R=0;R<16;R++)B[2*R]=v[R]&255,B[2*R+1]=v[R]>>8}function V(B,T){let O=0;for(let v=0;v<32;v++)O|=B[v]^T[v];return(1&O-1>>>8)-1}function z(B,T){const O=new Uint8Array(32),v=new Uint8Array(32);return H(O,B),H(v,T),V(O,v)}function j(B){const T=new Uint8Array(32);return H(T,B),T[0]&1}function F(B,T){for(let O=0;O<16;O++)B[O]=T[2*O]+(T[2*O+1]<<8);B[15]&=32767}function U(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]+O[v]}function L(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]-O[v]}function m(B,T,O){let v,R,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=0,te=0,se=0,oe=0,ee=0,ae=0,ne=0,Z=0,ve=0,me=0,re=0,ge=0,we=0,ie=0,Ae=0,xe=0,_e=0,je=0,$e=0,Me=0,Ve=0,Ge=0,Se=0,Ie=O[0],Ne=O[1],ue=O[2],Ce=O[3],Be=O[4],he=O[5],Oe=O[6],Re=O[7],ce=O[8],Pe=O[9],Te=O[10],de=O[11],Fe=O[12],Ue=O[13],le=O[14],Le=O[15];v=T[0],$+=v*Ie,J+=v*Ne,W+=v*ue,X+=v*Ce,be+=v*Be,ye+=v*he,fe+=v*Oe,Ee+=v*Re,pe+=v*ce,te+=v*Pe,se+=v*Te,oe+=v*de,ee+=v*Fe,ae+=v*Ue,ne+=v*le,Z+=v*Le,v=T[1],J+=v*Ie,W+=v*Ne,X+=v*ue,be+=v*Ce,ye+=v*Be,fe+=v*he,Ee+=v*Oe,pe+=v*Re,te+=v*ce,se+=v*Pe,oe+=v*Te,ee+=v*de,ae+=v*Fe,ne+=v*Ue,Z+=v*le,ve+=v*Le,v=T[2],W+=v*Ie,X+=v*Ne,be+=v*ue,ye+=v*Ce,fe+=v*Be,Ee+=v*he,pe+=v*Oe,te+=v*Re,se+=v*ce,oe+=v*Pe,ee+=v*Te,ae+=v*de,ne+=v*Fe,Z+=v*Ue,ve+=v*le,me+=v*Le,v=T[3],X+=v*Ie,be+=v*Ne,ye+=v*ue,fe+=v*Ce,Ee+=v*Be,pe+=v*he,te+=v*Oe,se+=v*Re,oe+=v*ce,ee+=v*Pe,ae+=v*Te,ne+=v*de,Z+=v*Fe,ve+=v*Ue,me+=v*le,re+=v*Le,v=T[4],be+=v*Ie,ye+=v*Ne,fe+=v*ue,Ee+=v*Ce,pe+=v*Be,te+=v*he,se+=v*Oe,oe+=v*Re,ee+=v*ce,ae+=v*Pe,ne+=v*Te,Z+=v*de,ve+=v*Fe,me+=v*Ue,re+=v*le,ge+=v*Le,v=T[5],ye+=v*Ie,fe+=v*Ne,Ee+=v*ue,pe+=v*Ce,te+=v*Be,se+=v*he,oe+=v*Oe,ee+=v*Re,ae+=v*ce,ne+=v*Pe,Z+=v*Te,ve+=v*de,me+=v*Fe,re+=v*Ue,ge+=v*le,we+=v*Le,v=T[6],fe+=v*Ie,Ee+=v*Ne,pe+=v*ue,te+=v*Ce,se+=v*Be,oe+=v*he,ee+=v*Oe,ae+=v*Re,ne+=v*ce,Z+=v*Pe,ve+=v*Te,me+=v*de,re+=v*Fe,ge+=v*Ue,we+=v*le,ie+=v*Le,v=T[7],Ee+=v*Ie,pe+=v*Ne,te+=v*ue,se+=v*Ce,oe+=v*Be,ee+=v*he,ae+=v*Oe,ne+=v*Re,Z+=v*ce,ve+=v*Pe,me+=v*Te,re+=v*de,ge+=v*Fe,we+=v*Ue,ie+=v*le,Ae+=v*Le,v=T[8],pe+=v*Ie,te+=v*Ne,se+=v*ue,oe+=v*Ce,ee+=v*Be,ae+=v*he,ne+=v*Oe,Z+=v*Re,ve+=v*ce,me+=v*Pe,re+=v*Te,ge+=v*de,we+=v*Fe,ie+=v*Ue,Ae+=v*le,xe+=v*Le,v=T[9],te+=v*Ie,se+=v*Ne,oe+=v*ue,ee+=v*Ce,ae+=v*Be,ne+=v*he,Z+=v*Oe,ve+=v*Re,me+=v*ce,re+=v*Pe,ge+=v*Te,we+=v*de,ie+=v*Fe,Ae+=v*Ue,xe+=v*le,_e+=v*Le,v=T[10],se+=v*Ie,oe+=v*Ne,ee+=v*ue,ae+=v*Ce,ne+=v*Be,Z+=v*he,ve+=v*Oe,me+=v*Re,re+=v*ce,ge+=v*Pe,we+=v*Te,ie+=v*de,Ae+=v*Fe,xe+=v*Ue,_e+=v*le,je+=v*Le,v=T[11],oe+=v*Ie,ee+=v*Ne,ae+=v*ue,ne+=v*Ce,Z+=v*Be,ve+=v*he,me+=v*Oe,re+=v*Re,ge+=v*ce,we+=v*Pe,ie+=v*Te,Ae+=v*de,xe+=v*Fe,_e+=v*Ue,je+=v*le,$e+=v*Le,v=T[12],ee+=v*Ie,ae+=v*Ne,ne+=v*ue,Z+=v*Ce,ve+=v*Be,me+=v*he,re+=v*Oe,ge+=v*Re,we+=v*ce,ie+=v*Pe,Ae+=v*Te,xe+=v*de,_e+=v*Fe,je+=v*Ue,$e+=v*le,Me+=v*Le,v=T[13],ae+=v*Ie,ne+=v*Ne,Z+=v*ue,ve+=v*Ce,me+=v*Be,re+=v*he,ge+=v*Oe,we+=v*Re,ie+=v*ce,Ae+=v*Pe,xe+=v*Te,_e+=v*de,je+=v*Fe,$e+=v*Ue,Me+=v*le,Ve+=v*Le,v=T[14],ne+=v*Ie,Z+=v*Ne,ve+=v*ue,me+=v*Ce,re+=v*Be,ge+=v*he,we+=v*Oe,ie+=v*Re,Ae+=v*ce,xe+=v*Pe,_e+=v*Te,je+=v*de,$e+=v*Fe,Me+=v*Ue,Ve+=v*le,Ge+=v*Le,v=T[15],Z+=v*Ie,ve+=v*Ne,me+=v*ue,re+=v*Ce,ge+=v*Be,we+=v*he,ie+=v*Oe,Ae+=v*Re,xe+=v*ce,_e+=v*Pe,je+=v*Te,$e+=v*de,Me+=v*Fe,Ve+=v*Ue,Ge+=v*le,Se+=v*Le,$+=38*ve,J+=38*me,W+=38*re,X+=38*ge,be+=38*we,ye+=38*ie,fe+=38*Ae,Ee+=38*xe,pe+=38*_e,te+=38*je,se+=38*$e,oe+=38*Me,ee+=38*Ve,ae+=38*Ge,ne+=38*Se,R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),B[0]=$,B[1]=J,B[2]=W,B[3]=X,B[4]=be,B[5]=ye,B[6]=fe,B[7]=Ee,B[8]=pe,B[9]=te,B[10]=se,B[11]=oe,B[12]=ee,B[13]=ae,B[14]=ne,B[15]=Z}function P(B,T){m(B,T,T)}function Y(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=253;v>=0;v--)P(O,O),v!==2&&v!==4&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function Q(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=250;v>=0;v--)P(O,O),v!==1&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function C(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f(),be=f(),ye=f();L(O,B[1],B[0]),L(ye,T[1],T[0]),m(O,O,ye),U(v,B[0],B[1]),U(ye,T[0],T[1]),m(v,v,ye),m(R,B[3],T[3]),m(R,R,A),m($,B[2],T[2]),U($,$,$),L(J,v,O),L(W,$,R),U(X,$,R),U(be,v,O),m(B[0],J,W),m(B[1],be,X),m(B[2],X,W),m(B[3],J,be)}function h(B,T,O){for(let v=0;v<4;v++)q(B[v],T[v],O)}function u(B,T){const O=f(),v=f(),R=f();Y(R,T[2]),m(O,T[0],R),m(v,T[1],R),H(B,v),B[31]^=j(O)<<7}function a(B,T,O){D(B[0],d),D(B[1],c),D(B[2],c),D(B[3],d);for(let v=255;v>=0;--v){const R=O[v/8|0]>>(v&7)&1;h(B,T,R),C(T,B),C(B,B),h(B,T,R)}}function o(B,T){const O=[f(),f(),f(),f()];D(O[0],x),D(O[1],E),D(O[2],c),m(O[3],x,E),a(B,O,T)}function l(B){if(B.length!==t.SEED_LENGTH)throw new Error(`ed25519: seed must be ${t.SEED_LENGTH} bytes`);const T=(0,r.hash)(B);T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(32),v=[f(),f(),f(),f()];o(v,T),u(O,v);const R=new Uint8Array(64);return R.set(B),R.set(O,32),{publicKey:O,secretKey:R}}t.generateKeyPairFromSeed=l;function w(B){const T=(0,e.randomBytes)(32,B),O=l(T);return(0,i.wipe)(T),O}t.generateKeyPair=w;function _(B){if(B.length!==t.SECRET_KEY_LENGTH)throw new Error(`ed25519: secret key must be ${t.SECRET_KEY_LENGTH} bytes`);return new Uint8Array(B.subarray(32))}t.extractPublicKeyFromSecretKey=_;const g=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function s(B,T){let O,v,R,$;for(v=63;v>=32;--v){for(O=0,R=v-32,$=v-12;R<$;++R)T[R]+=O-16*T[v]*g[R-(v-32)],O=Math.floor((T[R]+128)/256),T[R]-=O*256;T[R]+=O,T[v]=0}for(O=0,R=0;R<32;R++)T[R]+=O-(T[31]>>4)*g[R],O=T[R]>>8,T[R]&=255;for(R=0;R<32;R++)T[R]-=O*g[R];for(v=0;v<32;v++)T[v+1]+=T[v]>>8,B[v]=T[v]&255}function p(B){const T=new Float64Array(64);for(let O=0;O<64;O++)T[O]=B[O];for(let O=0;O<64;O++)B[O]=0;s(B,T)}function b(B,T){const O=new Float64Array(64),v=[f(),f(),f(),f()],R=(0,r.hash)(B.subarray(0,32));R[0]&=248,R[31]&=127,R[31]|=64;const $=new Uint8Array(64);$.set(R.subarray(32),32);const J=new r.SHA512;J.update($.subarray(32)),J.update(T);const W=J.digest();J.clean(),p(W),o(v,W),u($,v),J.reset(),J.update($.subarray(0,32)),J.update(B.subarray(32)),J.update(T);const X=J.digest();p(X);for(let be=0;be<32;be++)O[be]=W[be];for(let be=0;be<32;be++)for(let ye=0;ye<32;ye++)O[be+ye]+=X[be]*R[ye];return s($.subarray(32),O),$}t.sign=b;function S(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f();return D(B[2],c),F(B[1],T),P(R,B[1]),m($,R,y),L(R,R,B[2]),U($,B[2],$),P(J,$),P(W,J),m(X,W,J),m(O,X,R),m(O,O,$),Q(O,O),m(O,O,R),m(O,O,$),m(O,O,$),m(B[0],O,$),P(v,B[0]),m(v,v,$),z(v,R)&&m(B[0],B[0],N),P(v,B[0]),m(v,v,$),z(v,R)?-1:(j(B[0])===T[31]>>7&&L(B[0],d,B[0]),m(B[3],B[0],B[1]),0)}function G(B,T,O){const v=new Uint8Array(32),R=[f(),f(),f(),f()],$=[f(),f(),f(),f()];if(O.length!==t.SIGNATURE_LENGTH)throw new Error(`ed25519: signature must be ${t.SIGNATURE_LENGTH} bytes`);if(S($,B))return!1;const J=new r.SHA512;J.update(O.subarray(0,32)),J.update(B),J.update(T);const W=J.digest();return p(W),a(R,$,W),o($,O.subarray(32)),C(R,$),u(v,R),!V(O,v)}t.verify=G;function M(B){let T=[f(),f(),f(),f()];if(S(T,B))throw new Error("Ed25519: invalid public key");let O=f(),v=f(),R=T[1];U(O,c,R),L(v,c,R),Y(v,v),m(O,O,v);let $=new Uint8Array(32);return H($,O),$}t.convertPublicKeyToX25519=M;function k(B){const T=(0,r.hash)(B.subarray(0,32));T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(T.subarray(0,32));return(0,i.wipe)(T),O}t.convertSecretKeyToX25519=k}(A3);const os=".",ss="base64url",x3="utf8",_3="utf8";function us(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function M3(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?us(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function hs(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const cs=hs("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Yf=hs("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=M3(t.length);for(let r=0;r{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,r=t.replace(e,'$1"$2n"$3');return JSON.parse(r,(i,f)=>typeof f=="string"&&f.match(/^\d+n$/)?BigInt(f.substring(0,f.length-1)):f)};function D3(t){if(typeof t!="string")throw new Error(`Cannot safe json parse value of type ${typeof t}`);try{return S3(t)}catch{return t}}function ls(t){return D3(E3(Jf(t,ss),x3))}function I3(t){return Jf(t,ss)}function N3(t){const e=t.split(os),r=ls(e[0]),i=ls(e[1]),f=I3(e[2]),n=Jf(e.slice(0,2).join(os),_3);return{header:r,payload:i,signature:f,data:n}}const Wf="base10",gt="base16",Qf="base64pad",C3="base64url",mi="utf8",Xf=0,gi=1,Fi=2,B3=0,bs=1,Ui=12,Zf=32;function O3(){const t=Of.generateKeyPair();return{privateKey:St(t.secretKey,gt),publicKey:St(t.publicKey,gt)}}function R3(){const t=Br.randomBytes(Zf);return St(t,gt)}function P3(t,e){const r=Of.sharedKey(Rt(t,gt),Rt(e,gt),!0),i=new n1(Oi.SHA256,r).expand(Zf);return St(i,gt)}function T3(t){const e=Oi.hash(Rt(t,gt));return St(e,gt)}function F3(t){const e=Oi.hash(Rt(t,mi));return St(e,gt)}function ea(t){return Rt(`${t}`,Wf)}function Fr(t){return Number(St(t,Wf))}function U3(t){const e=ea(typeof t.type<"u"?t.type:Xf);if(Fr(e)===gi&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof t.senderPublicKey<"u"?Rt(t.senderPublicKey,gt):void 0,i=typeof t.iv<"u"?Rt(t.iv,gt):Br.randomBytes(Ui),f=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)).seal(i,Rt(t.message,mi));return ta({type:e,sealed:f,iv:i,senderPublicKey:r,encoding:t.encoding})}function L3(t,e){const r=ea(Fi),i=Br.randomBytes(Ui),f=Rt(t,mi);return ta({type:r,sealed:f,iv:i,encoding:e})}function q3(t){const e=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)),{sealed:r,iv:i}=In({encoded:t.encoded,encoding:t?.encoding}),f=e.open(i,r);if(f===null)throw new Error("Failed to decrypt");return St(f,mi)}function z3(t,e){const{sealed:r}=In({encoded:t,encoding:e});return St(r,mi)}function ta(t){const{encoding:e=Qf}=t;if(Fr(t.type)===Fi)return St(Rf([t.type,t.sealed]),e);if(Fr(t.type)===gi){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return St(Rf([t.type,t.senderPublicKey,t.iv,t.sealed]),e)}return St(Rf([t.type,t.iv,t.sealed]),e)}function In(t){const{encoded:e,encoding:r=Qf}=t,i=Rt(e,r),f=i.slice(B3,bs),n=bs;if(Fr(f)===gi){const A=n+Zf,x=A+Ui,E=i.slice(n,A),N=i.slice(A,x),D=i.slice(x);return{type:f,sealed:D,iv:N,senderPublicKey:E}}if(Fr(f)===Fi){const A=i.slice(n),x=Br.randomBytes(Ui);return{type:f,sealed:A,iv:x}}const d=n+Ui,c=i.slice(n,d),y=i.slice(d);return{type:f,sealed:y,iv:c}}function k3(t,e){const r=In({encoded:t,encoding:e?.encoding});return vs({type:Fr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?St(r.senderPublicKey,gt):void 0,receiverPublicKey:e?.receiverPublicKey})}function vs(t){const e=t?.type||Xf;if(e===gi){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function H3(t){return t.type===gi&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function K3(t){return t.type===Fi}function ps(t){return new $o.ec("p256").keyFromPublic({x:Buffer.from(t.x,"base64").toString("hex"),y:Buffer.from(t.y,"base64").toString("hex")},"hex")}function j3(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");const r=e.length%4;return r>0&&(e+="=".repeat(4-r)),e}function $3(t){return Buffer.from(j3(t),"base64")}function V3(t,e){const[r,i,f]=t.split("."),n=$3(f);if(n.length!==64)throw new Error("Invalid signature length");const d=n.slice(0,32).toString("hex"),c=n.slice(32,64).toString("hex"),y=`${r}.${i}`,A=new Oi.SHA256().update(Buffer.from(y)).digest(),x=ps(e),E=Buffer.from(A).toString("hex");if(!x.verify(E,{r:d,s:c}))throw new Error("Invalid signature");return N3(t).payload}const G3={waku:{publish:"waku_publish",batchPublish:"waku_batchPublish",subscribe:"waku_subscribe",batchSubscribe:"waku_batchSubscribe",subscription:"waku_subscription",unsubscribe:"waku_unsubscribe",batchUnsubscribe:"waku_batchUnsubscribe",batchFetchMessages:"waku_batchFetchMessages"},irn:{publish:"irn_publish",batchPublish:"irn_batchPublish",subscribe:"irn_subscribe",batchSubscribe:"irn_batchSubscribe",subscription:"irn_subscription",unsubscribe:"irn_unsubscribe",batchUnsubscribe:"irn_batchUnsubscribe",batchFetchMessages:"irn_batchFetchMessages"},iridium:{publish:"iridium_publish",batchPublish:"iridium_batchPublish",subscribe:"iridium_subscribe",batchSubscribe:"iridium_batchSubscribe",subscription:"iridium_subscription",unsubscribe:"iridium_unsubscribe",batchUnsubscribe:"iridium_batchUnsubscribe",batchFetchMessages:"iridium_batchFetchMessages"}},ms="irn";function Y3(t){return t?.relay||{protocol:ms}}function J3(t){const e=G3[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}var W3=Object.defineProperty,Q3=Object.defineProperties,X3=Object.getOwnPropertyDescriptors,gs=Object.getOwnPropertySymbols,Z3=Object.prototype.hasOwnProperty,eb=Object.prototype.propertyIsEnumerable,ys=(t,e,r)=>e in t?W3(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ws=(t,e)=>{for(var r in e||(e={}))Z3.call(e,r)&&ys(t,r,e[r]);if(gs)for(var r of gs(e))eb.call(e,r)&&ys(t,r,e[r]);return t},tb=(t,e)=>Q3(t,X3(e));function As(t,e="-"){const r={},i="relay"+e;return Object.keys(t).forEach(f=>{if(f.startsWith(i)){const n=f.replace(i,""),d=t[f];r[n]=d}}),r}function rb(t){t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),r=t.indexOf("?")!==-1?t.indexOf("?"):void 0,i=t.substring(0,e),f=t.substring(e+1,r).split("@"),n=typeof r<"u"?t.substring(r):"",d=xi.parse(n),c=typeof d.methods=="string"?d.methods.split(","):void 0;return{protocol:i,topic:xs(f[0]),version:parseInt(f[1],10),symKey:d.symKey,relay:As(d),methods:c,expiryTimestamp:d.expiryTimestamp?parseInt(d.expiryTimestamp,10):void 0}}function xs(t){return t.startsWith("//")?t.substring(2):t}function _s(t,e="-"){const r="relay",i={};return Object.keys(t).forEach(f=>{const n=r+e+f;t[f]&&(i[n]=t[f])}),i}function ib(t){return`${t.protocol}:${t.topic}@${t.version}?`+xi.stringify(ws(tb(ws({symKey:t.symKey},_s(t.relay)),{expiryTimestamp:t.expiryTimestamp}),t.methods?{methods:t.methods.join(",")}:{}))}function nb(t,e,r){return`${t}?wc_ev=${r}&topic=${e}`}var fb=Object.defineProperty,ab=Object.defineProperties,ob=Object.getOwnPropertyDescriptors,Ms=Object.getOwnPropertySymbols,sb=Object.prototype.hasOwnProperty,ub=Object.prototype.propertyIsEnumerable,Es=(t,e,r)=>e in t?fb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,hb=(t,e)=>{for(var r in e||(e={}))sb.call(e,r)&&Es(t,r,e[r]);if(Ms)for(var r of Ms(e))ub.call(e,r)&&Es(t,r,e[r]);return t},cb=(t,e)=>ab(t,ob(e));function Ur(t){const e=[];return t.forEach(r=>{const[i,f]=r.split(":");e.push(`${i}:${f}`)}),e}function Ss(t){const e=[];return Object.values(t).forEach(r=>{e.push(...Ur(r.accounts))}),e}function Ds(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.methods)}),r}function Is(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.events)}),r}function db(t,e){const r=qs(t,e);if(r)throw new Error(r.message);const i={};for(const[f,n]of Object.entries(t))i[f]={methods:n.methods,events:n.events,chains:n.accounts.map(d=>`${d.split(":")[0]}:${d.split(":")[1]}`)};return i}function lb(t){const{proposal:{requiredNamespaces:e,optionalNamespaces:r={}},supportedNamespaces:i}=t,f=ia(e),n=ia(r),d={};Object.keys(i).forEach(A=>{const x=i[A].chains,E=i[A].methods,N=i[A].events,D=i[A].accounts;x.forEach(I=>{if(!D.some(q=>q.includes(I)))throw new Error(`No accounts provided for chain ${I} in namespace ${A}`)}),d[A]={chains:x,methods:E,events:N,accounts:D}});const c=ks(e,d,"approve()");if(c)throw new Error(c.message);const y={};return!Object.keys(e).length&&!Object.keys(r).length?d:(Object.keys(f).forEach(A=>{const x=i[A].chains.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.chains)==null?void 0:H.includes(I)}),E=i[A].methods.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.methods)==null?void 0:H.includes(I)}),N=i[A].events.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.events)==null?void 0:H.includes(I)}),D=x.map(I=>i[A].accounts.filter(q=>q.includes(`${I}:`))).flat();y[A]={chains:x,methods:E,events:N,accounts:D}}),Object.keys(n).forEach(A=>{var x,E,N,D,I,q;if(!i[A])return;const H=(E=(x=n[A])==null?void 0:x.chains)==null?void 0:E.filter(F=>i[A].chains.includes(F)),V=i[A].methods.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.methods)==null?void 0:L.includes(F)}),z=i[A].events.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.events)==null?void 0:L.includes(F)}),j=H?.map(F=>i[A].accounts.filter(U=>U.includes(`${F}:`))).flat();y[A]={chains:fr((N=y[A])==null?void 0:N.chains,H),methods:fr((D=y[A])==null?void 0:D.methods,V),events:fr((I=y[A])==null?void 0:I.events,z),accounts:fr((q=y[A])==null?void 0:q.accounts,j)}}),y)}function ra(t){return t.includes(":")}function Ns(t){return ra(t)?t.split(":")[0]:t}function ia(t){var e,r,i;const f={};if(!Nn(t))return f;for(const[n,d]of Object.entries(t)){const c=ra(n)?[n]:d.chains,y=d.methods||[],A=d.events||[],x=Ns(n);f[x]=cb(hb({},f[x]),{chains:fr(c,(e=f[x])==null?void 0:e.chains),methods:fr(y,(r=f[x])==null?void 0:r.methods),events:fr(A,(i=f[x])==null?void 0:i.events)})}return f}function Cs(t){const e={};return t?.forEach(r=>{const[i,f]=r.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[]}),e[i].accounts.push(r),e[i].chains.push(`${i}:${f}`)}),e}function bb(t,e){e=e.map(i=>i.replace("did:pkh:",""));const r=Cs(e);for(const[i,f]of Object.entries(r))f.methods?f.methods=fr(f.methods,t):f.methods=t,f.events=["chainChanged","accountsChanged"];return r}const Bs={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},Os={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function cr(t,e){const{message:r,code:i}=Os[t];return{message:e?`${r} ${e}`:r,code:i}}function Lr(t,e){const{message:r,code:i}=Bs[t];return{message:e?`${r} ${e}`:r,code:i}}function Li(t,e){return Array.isArray(t)?typeof e<"u"&&t.length?t.every(e):!0:!1}function Nn(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function xr(t){return typeof t>"u"}function It(t,e){return e&&xr(t)?!0:typeof t=="string"&&!!t.trim().length}function Cn(t,e){return e&&xr(t)?!0:typeof t=="number"&&!isNaN(t)}function vb(t,e){const{requiredNamespaces:r}=e,i=Object.keys(t.namespaces),f=Object.keys(r);let n=!0;return lr(f,i)?(i.forEach(d=>{const{accounts:c,methods:y,events:A}=t.namespaces[d],x=Ur(c),E=r[d];(!lr(zi(d,E),x)||!lr(E.methods,y)||!lr(E.events,A))&&(n=!1)}),n):!1}function qi(t){return It(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function Rs(t){if(It(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const r=e[0]+":"+e[1];return!!e[2]&&qi(r)}}return!1}function pb(t){if(It(t,!1))try{return typeof new URL(t)<"u"}catch{return!1}return!1}function mb(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function gb(t){return t?.topic}function yb(t,e){let r=null;return It(t?.publicKey,!1)||(r=cr("MISSING_OR_INVALID",`${e} controller public key should be a string`)),r}function na(t){let e=!0;return Li(t)?t.length&&(e=t.every(r=>It(r,!1))):e=!1,e}function Ps(t,e,r){let i=null;return Li(e)&&e.length?e.forEach(f=>{i||qi(f)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chain ${f} should be a string and conform to "namespace:chainId" format`))}):qi(t)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Ts(t,e,r){let i=null;return Object.entries(t).forEach(([f,n])=>{if(i)return;const d=Ps(f,zi(f,n),`${e} ${r}`);d&&(i=d)}),i}function Fs(t,e){let r=null;return Li(t)?t.forEach(i=>{r||Rs(i)||(r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function Us(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Fs(i?.accounts,`${e} namespace`);f&&(r=f)}),r}function Ls(t,e){let r=null;return na(t?.methods)?na(t?.events)||(r=Lr("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):r=Lr("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),r}function fa(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Ls(i,`${e}, namespace`);f&&(r=f)}),r}function wb(t,e,r){let i=null;if(t&&Nn(t)){const f=fa(t,e);f&&(i=f);const n=Ts(t,e,r);n&&(i=n)}else i=cr("MISSING_OR_INVALID",`${e}, ${r} should be an object with data`);return i}function qs(t,e){let r=null;if(t&&Nn(t)){const i=fa(t,e);i&&(r=i);const f=Us(t,e);f&&(r=f)}else r=cr("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return r}function zs(t){return It(t.protocol,!0)}function Ab(t,e){let r=!1;return e&&!t?r=!0:t&&Li(t)&&t.length&&t.forEach(i=>{r=zs(i)}),r}function xb(t){return typeof t=="number"}function _b(t){return typeof t<"u"&&typeof t!==null}function Mb(t){return!(!t||typeof t!="object"||!t.code||!Cn(t.code,!1)||!t.message||!It(t.message,!1))}function Eb(t){return!(xr(t)||!It(t.method,!1))}function Sb(t){return!(xr(t)||xr(t.result)&&xr(t.error)||!Cn(t.id,!1)||!It(t.jsonrpc,!1))}function Db(t){return!(xr(t)||!It(t.name,!1))}function Ib(t,e){return!(!qi(e)||!Ss(t).includes(e))}function Nb(t,e,r){return It(r,!1)?Ds(t,e).includes(r):!1}function Cb(t,e,r){return It(r,!1)?Is(t,e).includes(r):!1}function ks(t,e,r){let i=null;const f=Bb(t),n=Ob(e),d=Object.keys(f),c=Object.keys(n),y=Hs(Object.keys(t)),A=Hs(Object.keys(e)),x=y.filter(E=>!A.includes(E));return x.length&&(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. -+ Required: ${x.toString()} -+ Received: ${Object.keys(e).toString()}`)),lr(d,c)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. -+ Required: ${d.toString()} -+ Approved: ${c.toString()}`)),Object.keys(e).forEach(E=>{if(!E.includes(":")||i)return;const N=Ur(e[E].accounts);N.includes(E)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${E} -+ Required: ${E} -+ Approved: ${N.toString()}`))}),d.forEach(E=>{i||(lr(f[E].methods,n[E].methods)?lr(f[E].events,n[E].events)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${E}`)):i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${E}`))}),i}function Bb(t){const e={};return Object.keys(t).forEach(r=>{var i;r.includes(":")?e[r]=t[r]:(i=t[r].chains)==null||i.forEach(f=>{e[f]={methods:t[r].methods,events:t[r].events}})}),e}function Hs(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Ob(t){const e={};return Object.keys(t).forEach(r=>{if(r.includes(":"))e[r]=t[r];else{const i=Ur(t[r].accounts);i?.forEach(f=>{e[f]={accounts:t[r].accounts.filter(n=>n.includes(`${f}:`)),methods:t[r].methods,events:t[r].events}})}}),e}function Rb(t,e){return Cn(t,!1)&&t<=e.max&&t>=e.min}function Pb(){const t=Dr();return new Promise(e=>{switch(t){case vt.browser:e(Ks());break;case vt.reactNative:e(js());break;case vt.node:e($s());break;default:e(!0)}})}function Ks(){return _i()&&navigator?.onLine}async function js(){if(Zr()&&typeof global<"u"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t?.isConnected}return!0}function $s(){return!0}function Tb(t){switch(Dr()){case vt.browser:Vs(t);break;case vt.reactNative:Gs(t);break;case vt.node:break}}function Vs(t){!Zr()&&_i()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function Gs(t){Zr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}const aa={};class Fb{static get(e){return aa[e]}static set(e,r){aa[e]=r}static delete(e){delete aa[e]}}K.BASE10=Wf,K.BASE16=gt,K.BASE64=Qf,K.BASE64URL=C3,K.COLON=ah,K.DEFAULT_DEPTH=$n,K.EMPTY_SPACE=Ki,K.ENV_MAP=vt,K.INTERNAL_ERRORS=Os,K.MemoryStore=Fb,K.ONE_THOUSAND=oh,K.REACT_NATIVE_PRODUCT=qa,K.RELAYER_DEFAULT_PROTOCOL=ms,K.SDK_ERRORS=Bs,K.SDK_TYPE=ka,K.SLASH=za,K.TYPE_0=Xf,K.TYPE_1=gi,K.TYPE_2=Fi,K.UTF8=mi,K.addResourceToRecap=ho,K.appendToQueryString=Ha,K.assertType=lh,K.assignAbilityToActions=xf,K.base64Decode=so,K.base64Encode=oo,K.buildApprovedNamespaces=lb,K.buildAuthObject=ml,K.buildNamespacesFromAuth=bb,K.buildRecapStatement=lo,K.calcExpiry=Eh,K.capitalize=yh,K.capitalizeWord=Ya,K.createDelayedPromise=wh,K.createEncodedRecap=Al,K.createExpiringPromise=Ah,K.createRecap=uo,K.decodeRecap=mr,K.decodeTypeByte=Fr,K.decodeTypeTwoEnvelope=z3,K.decrypt=q3,K.deriveSymKey=P3,K.deserialize=In,K.encodeRecap=an,K.encodeTypeByte=ea,K.encodeTypeTwoEnvelope=L3,K.encrypt=U3,K.engineEvent=Dh,K.enumify=gh,K.formatAccountId=ca,K.formatAccountWithChain=Ys,K.formatChainId=ha,K.formatExpirerTarget=Gn,K.formatIdTarget=_h,K.formatMessage=io,K.formatMessageContext=bh,K.formatRelayParams=_s,K.formatRelayRpcUrl=ch,K.formatStatementFromRecap=Mf,K.formatTopicTarget=xh,K.formatUA=$a,K.formatUri=ib,K.generateKeyPair=O3,K.generateRandomBytes32=R3,K.getAccountsChains=Ur,K.getAccountsFromNamespaces=Ws,K.getAddressFromAccount=da,K.getAddressesFromAccounts=Js,K.getAppMetadata=uh,K.getBrowserOnlineStatus=Ks,K.getBundleId=sh,K.getChainFromAccount=la,K.getChainsFromAccounts=ba,K.getChainsFromNamespace=zi,K.getChainsFromNamespaces=Qs,K.getChainsFromRecap=Ml,K.getChainsFromRequiredNamespaces=Xs,K.getCommonValuesInArrays=Yn,K.getCryptoKeyFromKeyData=ps,K.getDecodedRecapFromResources=no,K.getDeepLink=Nh,K.getDidAddress=Af,K.getDidAddressSegments=fn,K.getDidChainId=wf,K.getEnvironment=Dr,K.getHttpUrl=dh,K.getInternalError=cr,K.getJavascriptID=ja,K.getJavascriptOS=Ka,K.getLastItems=Ga,K.getLinkModeURL=nb,K.getMethodsFromRecap=_l,K.getNamespacedDidChainId=vl,K.getNamespacesChains=Ss,K.getNamespacesEventsForChainId=Is,K.getNamespacesFromAccounts=Cs,K.getNamespacesMethodsForChainId=Ds,K.getNodeOnlineStatus=$s,K.getReCapActions=ao,K.getReactNativeOnlineStatus=js,K.getRecapAbilitiesFromResource=wl,K.getRecapFromResources=on,K.getRecapResource=fo,K.getRelayClientMetadata=hh,K.getRelayProtocolApi=J3,K.getRelayProtocolName=Y3,K.getRequiredNamespacesFromNamespaces=db,K.getSdkError=Lr,K.getSearchParamFromURL=Ch,K.getUniqueValues=On,K.handleDeeplinkRedirect=Ih,K.hasOverlap=lr,K.hashKey=T3,K.hashMessage=F3,K.isBrowser=_i,K.isCaipNamespace=ra,K.isConformingNamespaces=ks,K.isExpired=Sh,K.isNode=Vn,K.isOnline=Pb,K.isProposalStruct=mb,K.isReactNative=Zr,K.isRecap=_f,K.isSessionCompatible=vb,K.isSessionStruct=gb,K.isTypeOneEnvelope=H3,K.isTypeTwoEnvelope=K3,K.isUndefined=xr,K.isValidAccountId=Rs,K.isValidAccounts=Fs,K.isValidActions=Ls,K.isValidArray=Li,K.isValidChainId=qi,K.isValidChains=Ps,K.isValidController=yb,K.isValidEip1271Signature=Z0,K.isValidEip191Signature=X0,K.isValidErrorReason=Mb,K.isValidEvent=Db,K.isValidId=xb,K.isValidNamespaceAccounts=Us,K.isValidNamespaceActions=fa,K.isValidNamespaceChains=Ts,K.isValidNamespaceMethodsOrEvents=na,K.isValidNamespaces=qs,K.isValidNamespacesChainId=Ib,K.isValidNamespacesEvent=Cb,K.isValidNamespacesRequest=Nb,K.isValidNumber=Cn,K.isValidObject=Nn,K.isValidParams=_b,K.isValidRecap=tr,K.isValidRelay=zs,K.isValidRelays=Ab,K.isValidRequest=Eb,K.isValidRequestExpiry=Rb,K.isValidRequiredNamespaces=wb,K.isValidResponse=Sb,K.isValidString=It,K.isValidUrl=pb,K.mapEntries=mh,K.mapToObj=vh,K.mergeArrays=fr,K.mergeEncodedRecaps=xl,K.mergeRecaps=co,K.normalizeNamespaces=ia,K.objToMap=ph,K.parseAccountId=Bn,K.parseChainId=ua,K.parseContextNames=Va,K.parseExpirerTarget=Mh,K.parseNamespaceKey=Ns,K.parseRelayParams=As,K.parseTopic=xs,K.parseUri=rb,K.populateAuthPayload=gl,K.recapHasResource=yl,K.serialize=ta,K.subscribeToBrowserNetworkChange=Vs,K.subscribeToNetworkChange=Tb,K.subscribeToReactNativeNetworkChange=Gs,K.uuidv4=Bh,K.validateDecoding=k3,K.validateEncoding=vs,K.validateSignedCacao=pl,K.verifyP256Jwt=V3,K.verifySignature=Q0,Object.defineProperty(K,"__esModule",{value:!0})}); -+//# sourceMappingURL=index.umd.js.map -diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js.map b/node_modules/@walletconnect/utils/dist/index.umd.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..d47c049165a021ba5d43e927092840659f16aee6 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.umd.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.umd.js","sources":["../src/caip.ts","../../../node_modules/detect-browser/es/index.js","../../../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../../node_modules/@walletconnect/time/dist/cjs/index.js","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../../node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../../../node_modules/@stablelib/int/lib/int.js","../../../node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../../../node_modules/@stablelib/hash/lib/hash.js","../../../node_modules/@stablelib/hmac/lib/hmac.js","../../../node_modules/@stablelib/hkdf/lib/hkdf.js","../../../node_modules/@stablelib/random/lib/source/browser.js","../../../node_modules/@stablelib/random/lib/source/node.js","../../../node_modules/@stablelib/random/lib/source/system.js","../../../node_modules/@stablelib/random/lib/random.js","../../../node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/@stablelib/x25519/lib/x25519.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/brorand/index.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../../node_modules/@stablelib/sha512/lib/sha512.js","../../../node_modules/@stablelib/ed25519/lib/ed25519.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/constants.js","../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../node_modules/uint8arrays/esm/src/alloc.js","../../../node_modules/uint8arrays/esm/src/util/bases.js","../../../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/uint8arrays/esm/src/from-string.js","../../../node_modules/@walletconnect/safe-json/dist/esm/index.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/utils.js","../src/crypto.ts","../../../node_modules/@walletconnect/relay-api/dist/index.es.js","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== \"undefined\" && typeof window[name] !== \"undefined\") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow(\"document\");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow(\"document\");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow(\"navigator\");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow(\"navigator\");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow(\"location\");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow(\"location\");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow(\"crypto\");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow(\"crypto\");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow(\"localStorage\");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow(\"localStorage\");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = require(\"@walletconnect/window-getters\");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName(\"link\");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute(\"rel\");\n if (rel) {\n if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n var j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n var j2 = 0x79622D32; // \"2-by\"\n var j3 = 0x6B206574; // \"te k\"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\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 this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var 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);\n 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);\n d0 &= 0x1fff;\n var 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);\n 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);\n d1 &= 0x1fff;\n var 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);\n 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);\n d2 &= 0x1fff;\n var 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);\n 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);\n d3 &= 0x1fff;\n var 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);\n 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);\n d4 &= 0x1fff;\n var 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);\n 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);\n d5 &= 0x1fff;\n var 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);\n 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);\n d6 &= 0x1fff;\n var 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);\n 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);\n d7 &= 0x1fff;\n var 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);\n 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);\n d8 &= 0x1fff;\n var 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);\n 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);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\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 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 Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\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 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 mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n 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 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 mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chacha_1 = require(\"@stablelib/chacha\");\nvar poly1305_1 = require(\"@stablelib/poly1305\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nvar binary_1 = require(\"@stablelib/binary\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== \"undefined\" &&\n typeof h.restoreState !== \"undefined\" &&\n typeof h.cleanSavedState !== \"undefined\");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = require(\"@stablelib/hash\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hmac_1 = require(\"@stablelib/hmac\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeRandomSource = void 0;\nconst wipe_1 = require(\"@stablelib/wipe\");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SystemRandomSource = void 0;\nconst browser_1 = require(\"./browser\");\nconst node_1 = require(\"./node\");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = \"\";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n // No sources, we're out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = require(\"./source/system\");\nconst binary_1 = require(\"@stablelib/binary\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let 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 const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 64;\nexports.BLOCK_SIZE = 128;\n/**\n * SHA-2-512 cryptographic hash algorithm.\n */\nvar SHA512 = /** @class */ (function () {\n function SHA512() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._stateHi = new Int32Array(8); // hash state, high bytes\n this._stateLo = new Int32Array(8); // hash state, low bytes\n this._tempHi = new Int32Array(16); // temporary state, high bytes\n this._tempLo = new Int32Array(16); // temporary state, low bytes\n this._buffer = new Uint8Array(256); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA512.prototype._initState = function () {\n this._stateHi[0] = 0x6a09e667;\n this._stateHi[1] = 0xbb67ae85;\n this._stateHi[2] = 0x3c6ef372;\n this._stateHi[3] = 0xa54ff53a;\n this._stateHi[4] = 0x510e527f;\n this._stateHi[5] = 0x9b05688c;\n this._stateHi[6] = 0x1f83d9ab;\n this._stateHi[7] = 0x5be0cd19;\n this._stateLo[0] = 0xf3bcc908;\n this._stateLo[1] = 0x84caa73b;\n this._stateLo[2] = 0xfe94f82b;\n this._stateLo[3] = 0x5f1d36f1;\n this._stateLo[4] = 0xade682d1;\n this._stateLo[5] = 0x2b3e6c1f;\n this._stateLo[6] = 0xfb41bd6b;\n this._stateLo[7] = 0x137e2179;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA512.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA512.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._tempHi);\n wipe_1.wipe(this._tempLo);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA512.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA512: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA512.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 128 < 112) ? 128 : 256;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 8; i++) {\n binary_1.writeUint32BE(this._stateHi[i], out, i * 8);\n binary_1.writeUint32BE(this._stateLo[i], out, i * 8 + 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA512.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be\n * used with restoreState(). Only chain value is saved, not buffers or\n * other state variables.\n */\n SHA512.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n stateHi: new Int32Array(this._stateHi),\n stateLo: new Int32Array(this._stateLo),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Restores state saved by\n * saveState() and sets bytesHashed to the given value.\n */\n SHA512.prototype.restoreState = function (savedState) {\n this._stateHi.set(savedState.stateHi);\n this._stateLo.set(savedState.stateLo);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA512.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.stateHi);\n wipe_1.wipe(savedState.stateLo);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA512;\n}());\nexports.SHA512 = SHA512;\n// Constants\nvar K = new Int32Array([\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]);\nfunction hashBlocks(wh, wl, hh, hl, m, pos, len) {\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var h, l;\n var th, tl;\n var a, b, c, d;\n while (len >= 128) {\n for (var i = 0; i < 16; i++) {\n var j = 8 * i + pos;\n wh[i] = binary_1.readUint32BE(m, j);\n wl[i] = binary_1.readUint32BE(m, j + 4);\n }\n for (var i = 0; i < 80; i++) {\n var bh0 = ah0;\n var bh1 = ah1;\n var bh2 = ah2;\n var bh3 = ah3;\n var bh4 = ah4;\n var bh5 = ah5;\n var bh6 = ah6;\n var bh7 = ah7;\n var bl0 = al0;\n var bl1 = al1;\n var bl2 = al2;\n var bl3 = al3;\n var bl4 = al4;\n var bl5 = al5;\n var bl6 = al6;\n var bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) |\n (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) |\n (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) |\n (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) |\n (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\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 al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (var j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) |\n (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) |\n (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) |\n (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) |\n (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n len -= 128;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA512();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha512.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;\n/**\n * Package ed25519 implements Ed25519 public-key signature algorithm.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst sha512_1 = require(\"@stablelib/sha512\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.SIGNATURE_LENGTH = 64;\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 64;\nexports.SEED_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst gf0 = gf();\nconst gf1 = gf([1]);\nconst D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203\n]);\nconst D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406\n]);\nconst X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169\n]);\nconst Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666\n]);\nconst I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83\n]);\nfunction set25519(r, a) {\n for (let i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction verify32(x, y) {\n let d = 0;\n for (let i = 0; i < 32; i++) {\n d |= x[i] ^ y[i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction neq25519(a, b) {\n const c = new Uint8Array(32);\n const d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return verify32(c, d);\n}\nfunction par25519(a) {\n const d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 253; a >= 0; a--) {\n square(c, c);\n if (a !== 2 && a !== 4) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction pow2523(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 250; a >= 0; a--) {\n square(c, c);\n if (a !== 1) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction edadd(p, q) {\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n sub(a, p[1], p[0]);\n sub(t, q[1], q[0]);\n mul(a, a, t);\n add(b, p[0], p[1]);\n add(t, q[0], q[1]);\n mul(b, b, t);\n mul(c, p[3], q[3]);\n mul(c, c, D2);\n mul(d, p[2], q[2]);\n add(d, d, d);\n sub(e, b, a);\n sub(f, d, c);\n add(g, d, c);\n add(h, b, a);\n mul(p[0], e, f);\n mul(p[1], h, g);\n mul(p[2], g, f);\n mul(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n for (let i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n const tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n mul(tx, p[0], zi);\n mul(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (let i = 255; i >= 0; --i) {\n const b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n edadd(q, p);\n edadd(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n const q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n mul(q[3], X, Y);\n scalarmult(p, q, s);\n}\n// Generates key pair from secret 32-byte seed.\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SEED_LENGTH) {\n throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);\n }\n const d = (0, sha512_1.hash)(seed);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const publicKey = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n scalarbase(p, d);\n pack(publicKey, p);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\nfunction extractPublicKeyFromSecretKey(secretKey) {\n if (secretKey.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n return new Uint8Array(secretKey.subarray(32));\n}\nexports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;\nconst L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,\n 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 let carry;\n let i;\n let j;\n let 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++) {\n x[j] -= carry * L[j];\n }\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n const x = new Float64Array(64);\n for (let i = 0; i < 64; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 64; i++) {\n r[i] = 0;\n }\n modL(r, x);\n}\n// Returns 64-byte signature of the message under the 64-byte secret key.\nfunction sign(secretKey, message) {\n const x = new Float64Array(64);\n const p = [gf(), gf(), gf(), gf()];\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const signature = new Uint8Array(64);\n signature.set(d.subarray(32), 32);\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(32));\n hs.update(message);\n const r = hs.digest();\n hs.clean();\n reduce(r);\n scalarbase(p, r);\n pack(signature, p);\n hs.reset();\n hs.update(signature.subarray(0, 32));\n hs.update(secretKey.subarray(32));\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n for (let i = 0; i < 32; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 32; i++) {\n for (let j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n modL(signature.subarray(32), x);\n return signature;\n}\nexports.sign = sign;\nfunction unpackneg(r, p) {\n const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n square(num, r[1]);\n mul(den, num, D);\n sub(num, num, r[2]);\n add(den, r[2], den);\n square(den2, den);\n square(den4, den2);\n mul(den6, den4, den2);\n mul(t, den6, num);\n mul(t, t, den);\n pow2523(t, t);\n mul(t, t, num);\n mul(t, t, den);\n mul(t, t, den);\n mul(r[0], t, den);\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n mul(r[0], r[0], I);\n }\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n return -1;\n }\n if (par25519(r[0]) === (p[31] >> 7)) {\n sub(r[0], gf0, r[0]);\n }\n mul(r[3], r[0], r[1]);\n return 0;\n}\nfunction verify(publicKey, message, signature) {\n const t = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n const q = [gf(), gf(), gf(), gf()];\n if (signature.length !== exports.SIGNATURE_LENGTH) {\n throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);\n }\n if (unpackneg(q, publicKey)) {\n return false;\n }\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(0, 32));\n hs.update(publicKey);\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, signature.subarray(32));\n edadd(p, q);\n pack(t, p);\n if (verify32(signature, t)) {\n return false;\n }\n return true;\n}\nexports.verify = verify;\n/**\n * Convert Ed25519 public key to X25519 public key.\n *\n * Throws if given an invalid public key.\n */\nfunction convertPublicKeyToX25519(publicKey) {\n let q = [gf(), gf(), gf(), gf()];\n if (unpackneg(q, publicKey)) {\n throw new Error(\"Ed25519: invalid public key\");\n }\n // Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n let a = gf();\n let b = gf();\n let y = q[1];\n add(a, gf1, y);\n sub(b, gf1, y);\n inv25519(b, b);\n mul(a, a, b);\n let z = new Uint8Array(32);\n pack25519(z, a);\n return z;\n}\nexports.convertPublicKeyToX25519 = convertPublicKeyToX25519;\n/**\n * Convert Ed25519 secret (private) key to X25519 secret key.\n */\nfunction convertSecretKeyToX25519(secretKey) {\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const o = new Uint8Array(d.subarray(0, 32));\n (0, wipe_1.wipe)(d);\n return o;\n}\nexports.convertSecretKeyToX25519 = convertSecretKeyToX25519;\n//# sourceMappingURL=ed25519.js.map","export const JWT_IRIDIUM_ALG = \"EdDSA\";\nexport const JWT_IRIDIUM_TYP = \"JWT\";\nexport const JWT_DELIMITER = \".\";\nexport const JWT_ENCODING = \"base64url\";\nexport const JSON_ENCODING = \"utf8\";\nexport const DATA_ENCODING = \"utf8\";\nexport const DID_DELIMITER = \":\";\nexport const DID_PREFIX = \"did\";\nexport const DID_METHOD = \"key\";\nexport const MULTICODEC_ED25519_ENCODING = \"base58btc\";\nexport const MULTICODEC_ED25519_BASE = \"z\";\nexport const MULTICODEC_ED25519_HEADER = \"K36\";\nexport const MULTICODEC_ED25519_LENGTH = 32;\nexport const KEY_PAIR_SEED_LENGTH = 32;\n//# sourceMappingURL=constants.js.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","const JSONStringify = data => JSON.stringify(data, (_, value) => typeof value === \"bigint\" ? value.toString() + \"n\" : value);\nconst JSONParse = json => {\n const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n const serializedData = json.replace(numbersBiggerThanMaxInt, \"$1\\\"$2n\\\"$3\");\n return JSON.parse(serializedData, (_, value) => {\n const isCustomFormatBigInt = typeof value === \"string\" && value.match(/^\\d+n$/);\n if (isCustomFormatBigInt)\n return BigInt(value.substring(0, value.length - 1));\n return value;\n });\n};\nexport function safeJsonParse(value) {\n if (typeof value !== \"string\") {\n throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n }\n try {\n return JSONParse(value);\n }\n catch (_a) {\n return value;\n }\n}\nexport function safeJsonStringify(value) {\n return typeof value === \"string\" ? value : JSONStringify(value) || \"\";\n}\n//# sourceMappingURL=index.js.map","import { concat } from \"uint8arrays/concat\";\nimport { toString } from \"uint8arrays/to-string\";\nimport { fromString } from \"uint8arrays/from-string\";\nimport { safeJsonParse, safeJsonStringify } from \"@walletconnect/safe-json\";\nimport { DATA_ENCODING, DID_DELIMITER, DID_METHOD, DID_PREFIX, JSON_ENCODING, JWT_DELIMITER, JWT_ENCODING, MULTICODEC_ED25519_BASE, MULTICODEC_ED25519_ENCODING, MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_LENGTH, } from \"./constants\";\nexport function decodeJSON(str) {\n return safeJsonParse(toString(fromString(str, JWT_ENCODING), JSON_ENCODING));\n}\nexport function encodeJSON(val) {\n return toString(fromString(safeJsonStringify(val), JSON_ENCODING), JWT_ENCODING);\n}\nexport function encodeIss(publicKey) {\n const header = fromString(MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_ENCODING);\n const multicodec = MULTICODEC_ED25519_BASE +\n toString(concat([header, publicKey]), MULTICODEC_ED25519_ENCODING);\n return [DID_PREFIX, DID_METHOD, multicodec].join(DID_DELIMITER);\n}\nexport function decodeIss(issuer) {\n const [prefix, method, multicodec] = issuer.split(DID_DELIMITER);\n if (prefix !== DID_PREFIX || method !== DID_METHOD) {\n throw new Error(`Issuer must be a DID with method \"key\"`);\n }\n const base = multicodec.slice(0, 1);\n if (base !== MULTICODEC_ED25519_BASE) {\n throw new Error(`Issuer must be a key in mulicodec format`);\n }\n const bytes = fromString(multicodec.slice(1), MULTICODEC_ED25519_ENCODING);\n const type = toString(bytes.slice(0, 2), MULTICODEC_ED25519_ENCODING);\n if (type !== MULTICODEC_ED25519_HEADER) {\n throw new Error(`Issuer must be a public key with type \"Ed25519\"`);\n }\n const publicKey = bytes.slice(2);\n if (publicKey.length !== MULTICODEC_ED25519_LENGTH) {\n throw new Error(`Issuer must be a public key with length 32 bytes`);\n }\n return publicKey;\n}\nexport function encodeSig(bytes) {\n return toString(bytes, JWT_ENCODING);\n}\nexport function decodeSig(encoded) {\n return fromString(encoded, JWT_ENCODING);\n}\nexport function encodeData(params) {\n return fromString([encodeJSON(params.header), encodeJSON(params.payload)].join(JWT_DELIMITER), DATA_ENCODING);\n}\nexport function decodeData(data) {\n const params = toString(data, DATA_ENCODING).split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n return { header, payload };\n}\nexport function encodeJWT(params) {\n return [\n encodeJSON(params.header),\n encodeJSON(params.payload),\n encodeSig(params.signature),\n ].join(JWT_DELIMITER);\n}\nexport function decodeJWT(jwt) {\n const params = jwt.split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n const signature = decodeSig(params[2]);\n const data = fromString(params.slice(0, 2).join(JWT_DELIMITER), DATA_ENCODING);\n return { header, payload, signature, data };\n}\n//# sourceMappingURL=utils.js.map","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["this","delay_1","delay","require$$0","require$$1","require$$2","watch","require$$3","require$$4","cjs","decode","strictUriEncode","splitOnFirst","h","g","E","x","f","l","T","w.parse","w.stringify","N","y","R","m","d","M","global","version","logger","concat","BN","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","inherits","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","hmac","commonjsRequire","getNAF","getJSF","assert$1","BaseCurve","base","BasePoint","assert$2","ShortCurve","Point","JPoint","hash","HmacDRBG","hmacDrbg","assert$3","KeyPair","key","assert$4","Signature","signature","Position","getLength","rmPadding","constructLength","rand","assert$5","EC","ec","EC$1","c","j","$","A","w","k","wipe_1","hmac_1","require","allocUnsafe","fromString","toString","from","basex","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","sha512","name","base2","base8","base10","base16","base32","base36","base64","base256emoji","createCodec","string","ascii","BASES","bases","brorandModule","brorand","crypto","Base","curve","curves","require$$5","require$$6","parseBytes","cachedProperty","S","u","v.generateKeyPair","o","v.sharedKey","C","K","B","f.parse","f.stringify","z","F","O","b","a","t"],"mappings":"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AG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;SAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;EACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAA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AC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;EACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE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AAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG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E,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UA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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,EAAE,GAAG;EACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,CAAC,GAAG;EACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,E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IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAA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EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,G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,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GA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GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,G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G,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAA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AAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAA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SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,gEAAgE;EACxE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,k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I,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,EAAC,CAAC,CAAC;EACH,CAAA,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;OAC7C,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EACvN,KAAI,IAAI,CAAC,EAAE,CAAC,CAAC;EACb,KAAI,IAAI,EAAE,EAAE,EAAE,CAAC;OACX,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACnB,KAAI,OAAO,GAAG,IAAI,GAAG,EAAE;EACvB,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;eACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EAChC,aAAY,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAChD,aAAY,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C;EACT,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACrC,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAY,IAAI,GAAG,GAAG,GAAG,CAAC;EAC1B;eACY,CAAC,GAAG,GAAG,CAAC;eACR,CAAC,GAAG,GAAG,CAAC;EACpB,aAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,aAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACzB,aAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,aAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACzB;EACA,aAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;EAClE,kBAAiB,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACxF,aAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;EAClE,kBAAiB,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EACxF,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B;EACA,aAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3C,aAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3C,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B;eACY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;eACb,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B;eACY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;eACf,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAC3B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;eACd,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;eAC1B,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;EACtC;eACY,CAAC,GAAG,EAAE,CAAC;eACP,CAAC,GAAG,EAAE,CAAC;EACnB,aAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,aAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACzB,aAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,aAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACzB;eACY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;EACzE,kBAAiB,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;eACnF,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC;EACzE,kBAAiB,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/F,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B;EACA,aAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;EACxD,aAAY,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;EACxD,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;eACd,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;eAC/B,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC3C;eACY,CAAC,GAAG,GAAG,CAAC;eACR,CAAC,GAAG,GAAG,CAAC;EACpB,aAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,aAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACzB,aAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,aAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;eACb,CAAC,GAAG,EAAE,CAAC;eACP,CAAC,GAAG,EAAE,CAAC;EACnB,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EAC5B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAC1B,aAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;eACd,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;eAC/B,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;eAC/B,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;eACV,GAAG,GAAG,GAAG,CAAC;EACtB,aAAY,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;EAC/B,iBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC7C;EACA,qBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC9B,qBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAC9B,qBAAoB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACnC,qBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACjC,qBAAoB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACnC,qBAAoB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;uBACb,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;uBACrB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;EACzC,qBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACpC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACpC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC;uBACoB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;uBACtB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;EAC1C,qBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;EACpE,0BAAyB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;EACvD,qBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;4BAC3C,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5E,qBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACpC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACpC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC;uBACoB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;uBACvB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;uBACvB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;EAC9E,0BAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;uBAC3C,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;4BACrD,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACpF,qBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACpC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACpC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EAClC,qBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EACrD,qBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpC;gBACJ;YACJ;EACT;WACQ,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,CAAC,GAAG,GAAG,CAAC;WACR,CAAC,GAAG,GAAG,CAAC;EAChB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;EACvB,SAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACrB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;EACxB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;EACtB,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;EAC/C,SAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;WACvC,GAAG,IAAI,GAAG,CAAC;WACX,GAAG,IAAI,GAAG,CAAC;QACd;OACD,OAAO,GAAG,CAAC;IACd;GACD,SAAS,IAAI,CAAC,IAAI,EAAE;EACpB,KAAI,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;EACzB,KAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACnB,KAAI,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EAC5B,KAAI,CAAC,CAAC,KAAK,EAAE,CAAC;OACV,OAAO,MAAM,CAAC;IACjB;EACD,CAAA,OAAA,CAAA,IAAA,GAAe,IAAI,CAAC;EACpB,CAAA;;;;ECriBA;EACA;GACA,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9D,CAAA,OAAA,CAAA,wBAAA,GAAmC,OAAmC,CAAA,wBAAA,GAAA,OAAA,CAAA,MAAA,GAAiB,OAAe,CAAA,IAAA,GAAA,OAAA,CAAA,6BAAA,GAAwC,OAA0B,CAAA,eAAA,GAAA,OAAA,CAAA,uBAAA,GAAkC,OAAsB,CAAA,WAAA,GAAA,OAAA,CAAA,iBAAA,GAA4B,OAA4B,CAAA,iBAAA,GAAA,OAAA,CAAA,gBAAA,GAA2B,KAAK,CAAC,CAAC;EAC1T;EACA;EACA;GACA,MAAM,QAAQ,GAAGD,MAA4B,CAAC;GAC9C,MAAM,QAAQ,GAAGC,MAA4B,CAAC;GAC9C,MAAM,MAAM,GAAGC,MAA0B,CAAC;EAC1C,CAAA,OAAA,CAAA,gBAAA,GAA2B,EAAE,CAAC;EAC9B,CAAA,OAAA,CAAA,iBAAA,GAA4B,EAAE,CAAC;EAC/B,CAAA,OAAA,CAAA,iBAAA,GAA4B,EAAE,CAAC;EAC/B,CAAA,OAAA,CAAA,WAAA,GAAsB,EAAE,CAAC;EACzB;EACA;EACA;EACA;EACA;EACA;GACA,SAAS,EAAE,CAAC,IAAI,EAAE;OACd,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;OAC/B,IAAI,IAAI,EAAE;EACd,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;eAClC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB;QACJ;OACD,OAAO,CAAC,CAAC;IACZ;EACD;EACA,CAAA,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EAC9B,CAAA,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACV,CAAA,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC;GACjB,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;GACpB,MAAM,CAAC,GAAG,EAAE,CAAC;EACb,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,EAAC,CAAC,CAAC;GACH,MAAM,EAAE,GAAG,EAAE,CAAC;EACd,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,EAAC,CAAC,CAAC;GACH,MAAM,CAAC,GAAG,EAAE,CAAC;EACb,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,EAAC,CAAC,CAAC;GACH,MAAM,CAAC,GAAG,EAAE,CAAC;EACb,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,EAAC,CAAC,CAAC;GACH,MAAM,CAAC,GAAG,EAAE,CAAC;EACb,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,KAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;EAClE,EAAC,CAAC,CAAC;EACH,CAAA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;EACxB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;WACzB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;IACJ;GACD,SAAS,QAAQ,CAAC,CAAC,EAAE;EACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;WACzB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;WACzB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;WAC1B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB;EACL,KAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC;EACD,CAAA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;OACvB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACvB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,SAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpC,SAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACb;IACJ;EACD,CAAA,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;EACzB,KAAI,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;EACnB,KAAI,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;EACnB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;WACzB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf;EACL,KAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChB,KAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChB,KAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACxB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;EAC7B,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;eACzB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;eAC9C,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC;YACtB;WACD,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;EACrD,SAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;EACpC,SAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;WAChB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB;EACL,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,SAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAC/B,SAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B;IACJ;EACD,CAAA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;EACxB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;WACzB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB;EACL,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC;EACD,CAAA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;OACpB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;OAC7B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACjC,KAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACpB,KAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACpB,KAAI,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB;GACD,SAAS,QAAQ,CAAC,CAAC,EAAE;OACjB,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACjC,KAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACpB,KAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB;EACD,CAAA,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;WACzB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC;EACL,KAAI,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;IACnB;EACD,CAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACtB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,SAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB;IACJ;EACD,CAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACtB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,SAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB;IACJ;EACD,CAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;OAClB,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB;EACA;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/B;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GA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CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAACpF,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAACA,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAACA,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAACA,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAACwI,aAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACX,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC7H,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAACA,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAACA,WAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAACA,WAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;;ACAx7H,QAAC,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAS,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;ECA9yD,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,EAAE,WAAW,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAQ,SAAS,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOP,UAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAACO,iBAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACP,UAAC,CAACL,sBAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAACK,UAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAACA,UAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAQ,SAAS,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAQ,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAACD,gBAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAACwF,WAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,6DAA6D,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAACA,WAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,+KAA+K,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC5F,sBAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC4F,WAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,qEAAqE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAACA,WAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,yFAAyF,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,+BAA+B,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,+BAA+B,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAACA,WAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,mEAAmE,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,WAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAACxF,gBAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAACA,gBAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,EAAE,QAAQ,CAAQ,SAAS,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI,CAAQ,SAAS,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,cAAc,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,eAAe,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,YAAY,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAACF,mBAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACmJ,8BAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,6BAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAClJ,gBAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;AAC92K,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/B,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAACC,UAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAACD,gBAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/B,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,CAACQ,iBAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAACR,gBAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,0DAA0D,EAAE,CAAC,CAAC;AACxO,kBAAkB,EAAE,CAAC,CAAC;AACtB,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGC,UAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAACA,UAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAACD,gBAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,sDAAsD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,gBAAC,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,wDAAwD,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAACQ,iBAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;;ECNrzB,SAAS,QAAQ,EAAE,CAAC,MAAM,CAAC,CAACa,cAAC,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAKmH,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,KAAKA,OAAC,CAAC,WAAW,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,MAAM,KAAKA,OAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAQ,SAAS,sBAAsB,EAAE,CAAC,OAAOW,SAAC,EAAE,GAAG,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAQ,eAAe,0BAA0B,EAAE,CAAC,GAAGC,aAAC,EAAE,EAAE,OAAO,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAM,CAAC,CAAC,CAAQ,SAAS,mBAAmB,EAAE,CAAC,OAAM,CAAC,CAAC,CAAQ,SAAS,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAO/H,cAAC,EAAE,EAAE,KAAKmH,OAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAKA,OAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAKA,OAAC,CAAC,IAAI,CAAC,MAAmB,CAAC,CAAQ,SAAS,+BAA+B,CAAC,CAAC,CAAC,CAAC,CAACY,aAAC,EAAE,EAAED,SAAC,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAQ,SAAS,mCAAmC,CAAC,CAAC,CAAC,CAACC,aAAC,EAAE,EAAE,OAAO,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC;;ECAtuC,MAAM,CAAC,CAAC,EAAE,CAAQ,MAAM,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..35ee8fd15751892fd1c57301faa3bf47477c94d7 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/keychain.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/crypto.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/messages.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/publisher.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/relayer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/history.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/expirer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/store.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/pairing.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/verify.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/echo.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/events.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/core.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/index.d.ts","../../../node_modules/detect-browser/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/error.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/crypto.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/format.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/routing.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/url.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/validators.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/index.d.ts","../../../node_modules/query-string/index.d.ts","../src/misc.ts","../../../node_modules/@ethersproject/hash/lib/id.d.ts","../../../node_modules/@ethersproject/hash/lib/namehash.d.ts","../../../node_modules/@ethersproject/bytes/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/message.d.ts","../../../node_modules/@ethersproject/bignumber/lib/bignumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/fixednumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/index.d.ts","../../../node_modules/@ethersproject/networks/lib/types.d.ts","../../../node_modules/@ethersproject/networks/lib/index.d.ts","../../../node_modules/@ethersproject/properties/lib/index.d.ts","../../../node_modules/@ethersproject/transactions/lib/index.d.ts","../../../node_modules/@ethersproject/web/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-provider/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-signer/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/typed-data.d.ts","../../../node_modules/@ethersproject/hash/lib/index.d.ts","../src/signatures.ts","../src/cacao.ts","../src/caip.ts","../../../node_modules/@stablelib/aead/lib/aead.d.ts","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.d.ts","../../../node_modules/@stablelib/hash/lib/hash.d.ts","../../../node_modules/@stablelib/hkdf/lib/hkdf.d.ts","../../../node_modules/@stablelib/random/lib/source/index.d.ts","../../../node_modules/@stablelib/random/lib/source/system.d.ts","../../../node_modules/@stablelib/random/lib/random.d.ts","../../../node_modules/@stablelib/sha256/lib/sha256.d.ts","../../../node_modules/@stablelib/x25519/lib/x25519.d.ts","../node_modules/uint8arrays/types/src/compare.d.ts","../node_modules/uint8arrays/types/src/concat.d.ts","../node_modules/uint8arrays/types/src/equals.d.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/uint8arrays/types/src/util/bases.d.ts","../node_modules/uint8arrays/types/src/from-string.d.ts","../node_modules/uint8arrays/types/src/to-string.d.ts","../node_modules/uint8arrays/types/src/xor.d.ts","../node_modules/uint8arrays/types/src/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@stablelib/ed25519/lib/ed25519.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/api.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/utils.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/index.d.ts","../src/crypto.ts","../src/errors.ts","../../../node_modules/@walletconnect/relay-api/dist/types/types.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/parsers.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/validators.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/index.d.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts","../src/index.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d","01b86d49aad113300499cf05f714c17ca971ffe25240124bd619e690f75a8b55","3d3202b1aecf61c574d412ed08cc43ac46dcb888c31de5b40d05168f6207cde8","dfbd08d79c0ed94d7563e818229b1f9ac27c6b29099431de81be9fb2334a1c42","4f815aba9db7da7a51661c55236f54bad4e01b682aef431e042b116f9d910470","200650e1ed5d5b2bee679e079619d1b6d162df822b31af327dbd61ff95689562","27b8ca719f38978c9321758b7cfd51873d377db44eac9f3f6e402752faa3f6a5","5b0594c3b261f6eb7e54bbf17588e679abc03e3693ec5076dea9f1cee0bbcf13","101602942b03c24915c706a82361b45cf66fe055f8627f7347fa6bbc0d4811e2","9c6b34ba69cd25457b0a5b27db15705ab7eba470af085e89c37d1d3d6e21c977","7e53626f08f85e10df73876c7517af4c3fc1c46bbca543d77b4682743ed2f163","620148e2b8632dae30a3ce69e8097c9332a6a3b3e172ee1fcd5fbf06750e81af","8f34f8fc1952d8e3987ccb39ccff1a4bc4eb0f04221e3d854529302d56e87226","85aac179d07d2a3d7b95a1e5b285c91a717d91bcc9e60a7e8b9de4008c15a542","52d2d16f42f024e057542940e191c49d10876c50e37a6abfcbdf365b813376fe","e3db3019dd47322ff80e20fd431c893db3a93c52fe9774bab69aa7534518cd82","f0fe1e6ca80532a63a6482b69a40c0ef7117f7148beee8e588c7f1528209dc71","82e9f199e29ff8a029aebec3a7f258ac2f2091a4b17d1ec20123eb9f2f7fa847","002edf832f43162f7cb70da12e2ec9e0054286872e317faec25ab15c4085804f","9d93daff82e921f6ddf56c6d207fdbf76b8f51566cd04d4fe8b34d1d72bad8ed","3d73320d9491b16adfd29d3177af35611cc98a09f4c632b39014bbec165862e2","517c54ef783149f46a5f55eecab11558bc1e33208d6bf6f0bbc134c13d9ab01d","49f5a1d46d63e66efe850b0f269e72bd85485c9458486c304c64c022eb741d50","1e4f096ec42477fa7881f58c52d9e6bf9fa7e71ba01f562d734c3bb6c6bee24d","87ed59b6a8df8efc3f0eaa35c8da0bf788f5510a128d3f62936f6af57edc7e41","15cb254c8108860af77bbc6458f764c66d081ac500e397f3cb8acb9d2b158402","1fbc0aa2bf8e019b2aae8567022e7b55f59b144714d6d1aa6c96b8acf15151a8","10fa6a67f237e9d803110d9f7b29b5edded4adb47809ea3d4355a6d3b644f978","24766e27ffabe6d258cfc54643f841782672a0e63e1d912ba23138deaf40e401","b76f79b98bd953ee71bba656b761f4ba26034ff3f8687c7c65edfc2d9604670f","d9548e5e333b64e6da237002a469401735722ea45caf86bff02db69213e96e31","66682da81646c807fbbb0999fc6d49ad41d10a32880b5803a7dea07fa251d1b9","7902c9ca40697c65549f9a41ab8cd711eab57143ac0d6202af73c18bcd63ca4c","d6536cdf16f68971c9a7f20bc2c353e0655bc3ac6ee742ec9d6da8b48cb89aa9","beea0bd57334b5d3f296eb255a99d6bb4c081faed7b09b8c5d2d7d3666ecb26c","d15bc6928c895f44e02a86f60c0e72d6d09ba7812d5ace831dc7f6c2600317d0","f3285db89f2ab44bb19e8a4e107d8542543a64ceb5a244339a348e36a3ebc938","223c35d0032d2ce91977eb3bced9e74dfbc5ff54d17ace3f471069e8e0935dfa","3f19b01b25d8152c3f023a55b958071c39f29aecc3206d8b953ce22ed1afe2a7","cc8a7843f4b9f96ac5179ec3ee1ecd428dea0caa35c455cab1b3e7a73c740306","776084ff5d871a19ffe2992bc1f7318d0187e34e5a4a7da4eeb78bdf9501e621","612e990e85f99aa8f2329d6d4d755713a44bd5c2041b02baae19c3ed1523f1de","4a259c19075fb64b9c302da22c51feb14fb8ad0775a780fccbef6a9e6c082c63","54223032d8849dd76ec6087684f361e9973c8de9c643b6a9ace67c136b13a326","0ae96d34bca21bb9118f2a8269a625ba4eee909c5d14d475a2eef33cea431552","a38c5518309b0e8f832f6fd53641ac69eeee77b66a03864a2688438e5402d3e5","d8931c54a30eea4ecc0afec72a4c81af8ddfebbec5c424b58c30bc7d5cbacd6c","6ff08c4d0269c9df488ab989923859d733cc35ba0eb65ce146d80f0487445088","2e1cd25ab4b887717e27b7013d9b5f1ee1e21406f3bc60f6db06383839e6d35a","84b504a59014d3e72dd4113089825b496620eb0647c47d2e56eeb105319f95f2","27975250d16d95779140c1c2231e2f7b9d7764f4bb716b19880c01eeea715452",{"version":"f9f9299195f26062d0947743595024ab0cafc766357f914fe2fc541968c9e079","signature":"dd551b50359abbf84b07a1aae29f84686ff2e627d04ad6abfa384896dec211a2"},"45a910666b455daf042c0a0cfa610c20ea59a0aaf702f93d3b467a05f9a27e20","5580ff53b5f6f1ecdb68ecb61327e63112f97660912c15444c1f8a08f69c19dc","1fcb8b15db812281d69a3090d488903f9e93033004aef9d8889ca3ad0753a96f","84fb7c52fc116ddcbd1b34535e387053f2a0134d11c5e39b193f4c1328fb1fb5","bdf5a95eb0a2dd1d39805bdf51b46ba012bb9b92b2ddaae16219595bba7678a5","9f794a0e8550a03baff865a3961cc22afbd85bc4ba9672bdda036971928f85f4","66a697d1e4cdbf25cdce4644a8085a8563041fa8c7731d4d9f5e8f22e66ba72c","4f1ae3f24125216cf07c5211a3f00d2bb4782d7cc76c0681603f8249f9232ff0","d3fb92a5640f83f7844d60b35317a0f95c27e3658a749d76d218c461ad091668","8bc2cad630da1033c1fd8d7df2bffb18af0da6113bd086a8bbec04a2471a1e00","d1f8bfcd91b284657ef8187c55ace7db91a3c43e642c3f14e54364154932f7e4","f54c92bfcae54f360fe79514746efce4870e4ddabc064e95d406bba291e9f672","175fd7186fa6a70f9db9b270a04a503cae23cf01cb77e3905bac115c38424cf7","c993f7ed1b8e1023c1f2ee5b262dbc3b70b27475674e40a53a58591f9972dacc","fd3cd8bf3c90ef4694195a617a5daaac561d8be52ba33c607f170c11f3c50154","6852fc2f309e330e38694bad95bde670c384d1498bf4fbe3a751761b43279934",{"version":"fc46b90ef00ea80de64313ca101e3377e82c7de5b2b8cc82ec324ef64062dfd2","signature":"51d71dbcbf7dfc9fa475d1d2db8c744fc93cb91fb8b4e6e3724377066008e745"},{"version":"5d731342b1c0fd0c367ff68e163309ae71ca2fc8b3461861be64e68296730bf7","signature":"04130e865406d542194f0ca04c131174c7b7230b4c7b1ffe6deb723b411e5122"},{"version":"f287cf1ae78dadca66f0fff910164af2e66d7e1ee1ef4aa53e8bf9ac364d086a","signature":"ca2cd04f36686a52bf72f3a75f34f09d496abefb9410c13d609c968956d23fa8"},"91bdb91e83ad82b3a68955033c35413e11158a56448534cc11dae2734cab0d8f","fc8ed8a75b39d372ea11553e253c763a75b8447f6a5a3b0c3509b21803ce4783","6562fc4b9b470ee474add192278b9ad7d863b1096f57c7aeb26e6b15a86e51a7","19109153165b1279adbddfac3f9182ef2274cacc9dd2dbadbff7983332343348","b7b4da95464f11da1b8de59ed34f6deb740d14fcdd54065fdbbe850741ae958c","64d7747acb1d36374e9c884773b6dbede826dd9684cecad3c7fb4ce7960f90d7","47e62f697f75c990750842294e175977588557f15a9731625e7e3c882b4b1d24","ef5a427017c481641f81327b63c13c810eaf49bf770986ae959de10c12242dff","c633deeb89a5a7142bce011d097bc4d354533c6f51a5b25404355a968414f29a","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","c6591dc2b834e9be50f97edb393c4673e9b66f5689c90d69a71c7da962a0563a","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","adf189301df111a1faa1bf6abd90c1323cb769e73a3757371421a47a7ad38536","7c049c1aee9019c358917750ddb137dcba8210aa70fc0f38cc74c8aa8923a500","9ec3f45588bdc21f53ff886d8ba21f7b32662dcc110addbb6209eb45779b4637","15d3978a362d47f8ed5b868a28d0f8a5dfe6337c89b2700eba2e31d5c9e85bed","5a50144562fb77383e680369d9e3a079a302a4ec0e9c688fe7b7dc927f84af08","81ee761144fa54ff76f0ded5d66430aa3d2853075c298b75421d42c513f5076b",{"version":"48b08f051eb2ec26f1849a39c89983f14f94727be08544aad9d3288dd1c8417e","signature":"993744b36c8bae23bde7b4b5f54de91ddebb944b5a4afbfcb7604b15f0d26608"},{"version":"efe026cccf176ebb4989defd182b1402ad6b432248f85efec8adfdcd1914ef7a","signature":"66fdfd3fb3a180a39b3a465a45c2682e1123505d6bda88f2cd13707806955f0e"},"890fa9b79dae2c3abe454aa7c30c41ed66509b5643d56fd2104c7f5d9febd3f4","cc703e7df0457b35086d815d6ff33cd3452317d7a8d7f152597f8dbc6459c5f9","e24b93132bafb120fa11f2454152834abfe47179a2dd96abdbbc57734ed6472b","82bd382cdf173bc58e91d1e25c7acf91ff443983e5c68978082ad5f2877f9af9","f488ac0001e44c0038e04b5134ff153e6bd666e2eba11bb884543a708be88a95",{"version":"b0cd303641a5575deb48407b2a64c83fdcaa35d4cc4965167b167f13c0564104","signature":"090ea064f7de7b504d1168af39eaf9fd59920450ab581dfd5f7458d1bf3554a0"},{"version":"a37dae9464df53f20ce5494372d098b74807208fc411ce6052001a88b11a3848","signature":"e19b4ad73442eecba082977023d1de9d6de5869d8eea5e90b77d230aa7ff9158"},{"version":"b115b8d6869fe7704e4f658b35520f7a8e20089977d6af2497c4afadc7092cbe","signature":"8738ff26cb6ed57db7a193f0d0dc9dde271aef5abc8c0d75693f230876594d43"},{"version":"429495125cb6cb7b4819c396b535e5aa057730e92ef6ab96d9f0b709f6460c2d","signature":"04eafb317a7fe2573471ce70d5955e03527d1597c120f2483aae6b5815127df9"},{"version":"6b3875e799fc477088fe196fe847e7ee1e56d535abf5ff98056e20c2ad92f939","signature":"ebb66422766f0304bd7a4d53ab79034921277fe632062c464d4227629e1f833d"},{"version":"e02e0d426e98a3c1ba7c2588d7a490afec59d602f861080ca33cfcd5c6dc0a9d","signature":"adbeb36efd0d65689eddce562811b5aaf8d46c2719be7d669e86607f56acfa74"},"45d4c0b459175dd8a78fec4c0597bbb02d7b6a708c2a1400c4575618d717da13","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,177,181,183,184,185,186],[88,177,181,184,187],[88,177],[88,177,179],[88,179,180],[88],[88,175,176,178,189],[88,188],[88,182],[88,177,181],[88,194],[88,200],[88,196],[88,198,199],[88,198],[88,95],[58,61,87,88,95,235,236,237],[88,239],[88,213],[88,242],[88,243],[58,88,95],[88,260],[88,248,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,251,252,253,254,255,256,257,258,259,260],[88,249,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,250,252,253,254,255,256,257,258,259,260],[88,248,249,250,251,253,254,255,256,257,258,259,260],[88,248,249,250,251,252,254,255,256,257,258,259,260],[88,248,249,250,251,252,253,255,256,257,258,259,260],[88,248,249,250,251,252,253,254,256,257,258,259,260],[88,248,249,250,251,252,253,254,255,257,258,259,260],[88,248,249,250,251,252,253,254,255,256,258,259,260],[88,248,249,250,251,252,253,254,255,256,257,259,260],[88,248,249,250,251,252,253,254,255,256,257,258,260],[88,248,249,250,251,252,253,254,255,256,257,258,259],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,270],[88,273],[88,275],[88,164,165],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,166],[88,113,162],[88,162],[88,161,162,163,167,168,169,170,171],[88,113],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[88,223,224,225,226],[88,223],[88,113,223],[88,215],[88,217],[88,216,217,218,219],[88,155,156],[88,151,153,154,157],[88,152],[88,149,150],[88,153],[88,97,103,108,123,124,125,129,130,131,133,134,135,136],[88,113,123,124,137],[88,123],[88,123,137],[88,97,123,137],[88,97,113,123,137],[88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[58,88,95,113,123,129,132,137],[88,97,123,129],[88,97,113,123,126,127,128,137],[88,113,123,137],[88,97,113,123,129],[88,108,123,137],[88,138,146],[88,113,138,141],[58,88,95,123,134,137,138,139,140,141,143,144],[58,88,95,113,129,133,138,139,140,141,142,143,145],[88,139,140,141,142,143,144,145],[88,113,129,139,141,145,146],[88,129,132,145],[88,129,132,139,140,145],[88,206],[61,88,95],[58,88,92,114,115],[88,208],[88,203,204,205,209,210,211],[88,206,207],[42,88,147,174,191],[42,88,147],[42,88,147,195,197,200,201,202,212,214,220],[42,88],[42,88,174,191,192,193,221,222,228,229,230,231,232,233],[42,88,108,147,148,158,159,160,172,173],[42,88,147,174,231],[42,88,174],[42,88,147,227],[42,88,147,185,190],[42,88,147,173],[42,88,113,147,174,193,222,230],[147],[147,214],[108,147,172],[147,227],[113,147]],"referencedMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,147],[193,148],[221,149],[222,150],[234,151],[233,150],[174,152],[230,153],[232,154],[228,155],[191,156],[229,157],[231,158]],"exportedModulesMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,159],[193,159],[221,160],[234,151],[174,161],[230,159],[228,162],[191,159],[229,159],[231,163]],"semanticDiagnosticsPerFile":[187,188,179,180,181,177,175,190,178,176,189,183,182,184,185,186,194,195,215,196,197,200,198,199,201,202,213,238,240,239,214,241,236,242,243,244,245,246,247,261,249,250,248,251,252,253,254,255,256,257,258,259,260,262,263,264,265,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,266,267,268,237,269,271,270,272,274,273,275,276,164,165,166,96,97,101,102,100,103,98,99,113,109,110,111,112,161,167,163,168,172,169,162,170,171,108,107,106,104,105,121,119,117,123,118,120,122,227,225,224,223,226,216,218,220,217,219,157,155,156,158,153,152,150,149,151,154,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141,159,160,148,235,207,206,114,116,173,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,203,204,205,209,212,210,208,211,192,193,221,222,234,233,174,230,232,228,191,229,231]},"version":"4.7.4"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..ab04a5d7f3663e5540876a90e72d674d42b40975 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts -@@ -0,0 +1,54 @@ -+import { AuthTypes } from "@walletconnect/types"; -+export declare const getDidAddressSegments: (iss: string) => string[]; -+export declare const getDidChainId: (iss: string) => string | undefined; -+export declare const getNamespacedDidChainId: (iss: string) => string | undefined; -+export declare const getDidAddress: (iss: string) => string | undefined; -+export declare function validateSignedCacao(params: { -+ cacao: AuthTypes.Cacao; -+ projectId?: string; -+}): Promise; -+export declare const formatMessage: (cacao: AuthTypes.FormatMessageParams, iss: string) => string; -+export declare function buildAuthObject(requestPayload: AuthTypes.PayloadParams, signature: AuthTypes.CacaoSignature, iss: string): AuthTypes.Cacao; -+declare type PopulateAuthPayloadParams = { -+ authPayload: AuthTypes.PayloadParams; -+ chains: string[]; -+ methods: string[]; -+}; -+export declare function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams; -+export declare function getDecodedRecapFromResources(resources?: string[]): RecapType | undefined; -+export declare function recapHasResource(recap: any, resource: string): any; -+export declare function getRecapResource(recap: any, resource: string): any[]; -+export declare function getRecapAbilitiesFromResource(actions: any[]): string[][]; -+export declare function getReCapActions(abilities: any[]): any[]; -+export declare function base64Encode(input: unknown): string; -+export declare function base64Decode(encodedString: string): string; -+export declare function isValidRecap(recap: any): void; -+export declare function createRecap(resource: string, ability: string, actions: string[], limits?: {}): { -+ att: { -+ [x: string]: any; -+ }; -+}; -+declare type RecapType = { -+ att: { -+ [key: string]: Record; -+ }; -+}; -+export declare function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]): { -+ att: {}; -+}; -+export declare function assignAbilityToActions(ability: string, actions: string[], limits?: {}): any; -+export declare function encodeRecap(recap: any): string; -+export declare function decodeRecap(recap: any): RecapType; -+export declare function createEncodedRecap(resource: string, ability: string, actions: string[]): string; -+export declare function isRecap(resource: string): boolean | ""; -+export declare function mergeEncodedRecaps(recap1: string, recap2: string): string; -+export declare function mergeRecaps(recap1: RecapType, recap2: RecapType): { -+ att: {}; -+}; -+export declare function formatStatementFromRecap(statement: string | undefined, recap: RecapType): string; -+export declare function getMethodsFromRecap(recap: string): any[]; -+export declare function getChainsFromRecap(recap: string): string[]; -+export declare function buildRecapStatement(statement: string, recap: unknown): string; -+export declare function getRecapFromResources(resources?: string[]): string | undefined; -+export {}; -+//# sourceMappingURL=cacao.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a47cbed6a7b072608b9c10819eb05c4fb9a9e0c2 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"cacao.d.ts","sourceRoot":"","sources":["../../src/cacao.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts b/node_modules/@walletconnect/utils/dist/types/caip.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..020b018efce1c2463156e9e38bb4845a58d75732 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts -@@ -0,0 +1,24 @@ -+import { SessionTypes, ProposalTypes } from "@walletconnect/types"; -+interface ChainIdParams { -+ namespace: string; -+ reference: string; -+} -+interface AccountIdParams extends ChainIdParams { -+ address: string; -+} -+export declare function parseChainId(chain: string): ChainIdParams; -+export declare function formatChainId(params: ChainIdParams): string; -+export declare function parseAccountId(account: string): AccountIdParams; -+export declare function formatAccountId(params: AccountIdParams): string; -+export declare function getUniqueValues(array: string[], parser: (str: string) => string): string[]; -+export declare function getAddressFromAccount(account: string): string; -+export declare function getChainFromAccount(account: string): string; -+export declare function formatAccountWithChain(address: string, chain: string): string; -+export declare function getAddressesFromAccounts(accounts: string[]): string[]; -+export declare function getChainsFromAccounts(accounts: string[]): string[]; -+export declare function getAccountsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; -+export declare function getChainsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; -+export declare function getChainsFromRequiredNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, keys?: string[]): string[]; -+export declare function getChainsFromNamespace(namespace: string, namespaceProps: ProposalTypes.BaseRequiredNamespace): string[]; -+export {}; -+//# sourceMappingURL=caip.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..1de8c0941403193ef11f9ac955095552c2a32335 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"caip.d.ts","sourceRoot":"","sources":["../../src/caip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAGzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAG/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAG/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAO1F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,UAGpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAIlD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAIpE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAEvD;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,+BAA+B,CAC7C,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,EACpD,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,aAAa,CAAC,qBAAqB,YAIpD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dad378ddeb1330e69062e57bb0e9efc48cb7f20f ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts -@@ -0,0 +1,38 @@ -+import { CryptoTypes } from "@walletconnect/types"; -+import { ec as EC } from "elliptic"; -+export declare const BASE10 = "base10"; -+export declare const BASE16 = "base16"; -+export declare const BASE64 = "base64pad"; -+export declare const BASE64URL = "base64url"; -+export declare const UTF8 = "utf8"; -+export declare const TYPE_0 = 0; -+export declare const TYPE_1 = 1; -+export declare const TYPE_2 = 2; -+export declare type P256KeyDataType = { -+ crv: "P-256"; -+ ext: true; -+ key_ops: ["verify"]; -+ kty: string; -+ x: string; -+ y: string; -+}; -+export declare function generateKeyPair(): CryptoTypes.KeyPair; -+export declare function generateRandomBytes32(): string; -+export declare function deriveSymKey(privateKeyA: string, publicKeyB: string): string; -+export declare function hashKey(key: string): string; -+export declare function hashMessage(message: string): string; -+export declare function encodeTypeByte(type: number): Uint8Array; -+export declare function decodeTypeByte(byte: Uint8Array): number; -+export declare function encrypt(params: CryptoTypes.EncryptParams): string; -+export declare function encodeTypeTwoEnvelope(message: string, encoding?: CryptoTypes.EncodingType): string; -+export declare function decrypt(params: CryptoTypes.DecryptParams): string; -+export declare function decodeTypeTwoEnvelope(encoded: string, encoding?: CryptoTypes.EncodingType): string; -+export declare function serialize(params: CryptoTypes.EncodingParams): string; -+export declare function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams; -+export declare function validateDecoding(encoded: string, opts?: CryptoTypes.DecodeOptions): CryptoTypes.EncodingValidation; -+export declare function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation; -+export declare function isTypeOneEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; -+export declare function isTypeTwoEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; -+export declare function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair; -+export declare function verifyP256Jwt(token: string, keyData: P256KeyDataType): T; -+//# sourceMappingURL=crypto.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..03a08090de1867936f207319b4d5015f1fe4cc91 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,oBAAY,eAAe,GAAG;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAOF,wBAAgB,eAAe,IAAI,WAAW,CAAC,OAAO,CAMrD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAejE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAMR;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAMjE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAGR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,MAAM,CAiBpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAwB1F;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAC/B,WAAW,CAAC,kBAAkB,CAUhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAejG;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAMrC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAErC;AACD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,EAAE,CAAC,OAAO,CAU5E;AAeD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAkCvE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts b/node_modules/@walletconnect/utils/dist/types/errors.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..b77dd19f68a077bd9c0783ef9444802a6ca23402 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts -@@ -0,0 +1,135 @@ -+export declare type SdkErrorKey = keyof typeof SDK_ERRORS; -+export declare type InternalErrorKey = keyof typeof INTERNAL_ERRORS; -+export declare const SDK_ERRORS: { -+ INVALID_METHOD: { -+ message: string; -+ code: number; -+ }; -+ INVALID_EVENT: { -+ message: string; -+ code: number; -+ }; -+ INVALID_UPDATE_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ INVALID_EXTEND_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ INVALID_SESSION_SETTLE_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_METHOD: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_EVENT: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_UPDATE_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_EXTEND_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED_CHAINS: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED_METHODS: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED_EVENTS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_CHAINS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_METHODS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_EVENTS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_ACCOUNTS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_NAMESPACE_KEY: { -+ message: string; -+ code: number; -+ }; -+ USER_DISCONNECTED: { -+ message: string; -+ code: number; -+ }; -+ SESSION_SETTLEMENT_FAILED: { -+ message: string; -+ code: number; -+ }; -+ WC_METHOD_UNSUPPORTED: { -+ message: string; -+ code: number; -+ }; -+}; -+export declare const INTERNAL_ERRORS: { -+ NOT_INITIALIZED: { -+ message: string; -+ code: number; -+ }; -+ NO_MATCHING_KEY: { -+ message: string; -+ code: number; -+ }; -+ RESTORE_WILL_OVERRIDE: { -+ message: string; -+ code: number; -+ }; -+ RESUBSCRIBED: { -+ message: string; -+ code: number; -+ }; -+ MISSING_OR_INVALID: { -+ message: string; -+ code: number; -+ }; -+ EXPIRED: { -+ message: string; -+ code: number; -+ }; -+ UNKNOWN_TYPE: { -+ message: string; -+ code: number; -+ }; -+ MISMATCHED_TOPIC: { -+ message: string; -+ code: number; -+ }; -+ NON_CONFORMING_NAMESPACES: { -+ message: string; -+ code: number; -+ }; -+}; -+export declare function getInternalError(key: InternalErrorKey, context?: string | number): { -+ message: string; -+ code: number; -+}; -+export declare function getSdkError(key: SdkErrorKey, context?: string | number): { -+ message: string; -+ code: number; -+}; -+//# sourceMappingURL=errors.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..826749688352cccdb9fe646511dc4633d0543b0e ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAGA,oBAAY,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC;AAClD,oBAAY,gBAAgB,GAAG,MAAM,OAAO,eAAe,CAAC;AAK5D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FtB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAKF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMtE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts b/node_modules/@walletconnect/utils/dist/types/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71f241ede545bf66a276874b8027cf27af296ad9 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts -@@ -0,0 +1,13 @@ -+export * from "./caip"; -+export * from "./cacao"; -+export * from "./crypto"; -+export * from "./misc"; -+export * from "./relay"; -+export * from "./uri"; -+export * from "./validators"; -+export * from "./errors"; -+export * from "./namespaces"; -+export * from "./network"; -+export * from "./memoryStore"; -+export * from "./signatures"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts.map b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7d73f3c9a71413a0bfa21e447a06c805bd825d5f ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..36ee51297824debf446acb9d8e41b2accecf7388 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts -@@ -0,0 +1,6 @@ -+export declare abstract class MemoryStore { -+ static get(key: string): T | undefined; -+ static set(key: string, value: unknown): void; -+ static delete(key: string): void; -+} -+//# sourceMappingURL=memoryStore.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..0d3a3807db1e281609960d4356d347f404d4470f ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"AAEA,8BAAsB,WAAW;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM;IAInC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAItC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;CAG1B"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts b/node_modules/@walletconnect/utils/dist/types/misc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..3176d31702f84596039647ec194136fc0b22cb06 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts -@@ -0,0 +1,69 @@ -+import { SignClientTypes, RelayerClientMetadata, EngineTypes, RelayerTypes } from "@walletconnect/types"; -+import { ErrorResponse } from "@walletconnect/jsonrpc-utils"; -+import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; -+export declare const REACT_NATIVE_PRODUCT = "ReactNative"; -+export declare const ENV_MAP: { -+ reactNative: string; -+ node: string; -+ browser: string; -+ unknown: string; -+}; -+export declare const EMPTY_SPACE = " "; -+export declare const COLON = ":"; -+export declare const SLASH = "/"; -+export declare const DEFAULT_DEPTH = 2; -+export declare const ONE_THOUSAND = 1000; -+export declare const SDK_TYPE = "js"; -+export declare function isNode(): boolean; -+export declare function isReactNative(): boolean; -+export declare function isBrowser(): boolean; -+export declare function getEnvironment(): string; -+export declare function getBundleId(): string | undefined; -+export declare function appendToQueryString(queryString: string, newQueryParams: any): string; -+export declare function getAppMetadata(): SignClientTypes.Metadata; -+export declare function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata; -+export declare function getJavascriptOS(): string; -+export declare function getJavascriptID(): string; -+export declare function formatUA(protocol: string, version: number, sdkVersion: string): string; -+export declare function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }: RelayerTypes.RpcUrlParams): string; -+export declare function getHttpUrl(url: string): string; -+export declare function assertType(obj: any, key: string, type: string): void; -+export declare function parseContextNames(context: string, depth?: number): any[]; -+export declare function formatMessageContext(context: string): string; -+export declare function hasOverlap(a: any[], b: any[]): boolean; -+export declare function getLastItems(arr: any[], depth?: number): any[]; -+export declare function mapToObj(map: Map): Record; -+export declare function objToMap(obj: Record): Map; -+export declare function mapEntries(obj: Record, cb: (x: A) => B): Record; -+export declare const enumify: (x: T) => T; -+export declare function capitalizeWord(word: string): string; -+export declare function capitalize(str: string): string; -+export declare function createDelayedPromise(expiry?: number, expireErrorMessage?: string): { -+ resolve: (value?: T) => void; -+ reject: (value?: ErrorResponse) => void; -+ done: () => Promise; -+}; -+export declare function createExpiringPromise(promise: Promise, expiry: number, expireErrorMessage?: string): Promise; -+export declare function formatExpirerTarget(type: "topic" | "id", value: string | number): string; -+export declare function formatTopicTarget(topic: string): string; -+export declare function formatIdTarget(id: number): string; -+export declare function parseExpirerTarget(target: string): { -+ id?: number | undefined; -+ topic?: string | undefined; -+}; -+export declare function calcExpiry(ttl: number, now?: number): number; -+export declare function isExpired(expiry: number): boolean; -+export declare function engineEvent(event: EngineTypes.Event, id?: number | string | undefined): string; -+export declare function mergeArrays(a?: T[], b?: T[]): T[]; -+export declare function handleDeeplinkRedirect({ id, topic, wcDeepLink, }: { -+ id: number; -+ topic: string; -+ wcDeepLink: string; -+}): Promise; -+export declare function getDeepLink(store: IKeyValueStorage, key: string): Promise; -+export declare function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[]; -+export declare function getSearchParamFromURL(url: string, param: any): string | null; -+export declare function uuidv4(): string; -+//# sourceMappingURL=misc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5ef0f4f8b9d72b0c75dcc8470704dbf54e730772 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/misc.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,eAAO,MAAM,KAAK,MAAM,CAAC;AAEzB,eAAO,MAAM,KAAK,MAAM,CAAC;AAEzB,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAI7B,wBAAgB,MAAM,IAAI,OAAO,CAMhC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAahD;AAID,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,MAAM,CAQpF;AAID,wBAAgB,cAAc,IAAI,eAAe,CAAC,QAAQ,CASzD;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAQ/F;AAID,wBAAgB,eAAe,WAmB9B;AAED,wBAAgB,eAAe,WAG9B;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAI7E;AAGD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,YAAY,CAAC,YAAY,UAY3B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAOrC;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAI7D;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAgB,SAEvE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAGtD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,SAAgB,GAAG,GAAG,EAAE,CAErE;AAID,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAExE;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAExE;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GACd,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAMnB;AAKD,eAAO,MAAM,OAAO;;+BAAqE,CAAC;AAI1F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,UAE1C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAKrC;AAGD,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,GAAE,MAAqB,EAC7B,kBAAkB,CAAC,EAAE,MAAM;sBAeF,CAAC;qBAMF,aAAa;;EAYtC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,oBAY5B;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAYxF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;EAYhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,WAEvC;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,UAErF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC,EAAO,EAAE,CAAC,GAAE,CAAC,EAAO,GAAG,CAAC,EAAE,CAE5D;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,EAAE,EACF,KAAK,EACL,UAAU,GACX,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,iBAqCA;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,gBAYrE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAO5D;AAED,wBAAgB,MAAM,WAWrB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71ffdcebcfe16506e7d7195f20309a37095b95cc ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts -@@ -0,0 +1,22 @@ -+import { ProposalTypes, SessionTypes } from "@walletconnect/types"; -+export declare function getAccountsChains(accounts: SessionTypes.Namespace["accounts"]): string[]; -+export declare function getNamespacesChains(namespaces: SessionTypes.Namespaces): string[]; -+export declare function getNamespacesMethodsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; -+export declare function getNamespacesEventsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; -+export declare function getRequiredNamespacesFromNamespaces(namespaces: SessionTypes.Namespaces, caller: string): ProposalTypes.RequiredNamespaces; -+export declare type BuildApprovedNamespacesParams = { -+ proposal: ProposalTypes.Struct; -+ supportedNamespaces: Record; -+}; -+export declare function buildApprovedNamespaces(params: BuildApprovedNamespacesParams): SessionTypes.Namespaces; -+export declare function isCaipNamespace(namespace: string): boolean; -+export declare function parseNamespaceKey(namespace: string): string; -+export declare function normalizeNamespaces(namespaces: ProposalTypes.RequiredNamespaces): ProposalTypes.RequiredNamespaces; -+export declare function getNamespacesFromAccounts(accounts: string[]): {}; -+export declare function buildNamespacesFromAuth(methods: string[], accounts: string[]): {}; -+//# sourceMappingURL=namespaces.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..d7dff41be61e83834f25426f938598a46cbd2356 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/namespaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAInE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,YAQ7E;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,YAOtE;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,kBAAkB,CAalC;AAED,oBAAY,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CACzB,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAC9E,CAAC;CACH,CAAC;AASF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,6BAA6B,GACpC,YAAY,CAAC,UAAU,CAmGzB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,UAElD;AAoBD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,aAAa,CAAC,kBAAkB,GAC3C,aAAa,CAAC,kBAAkB,CAgBlC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAgB3D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAc5E"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts b/node_modules/@walletconnect/utils/dist/types/network.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..2b51101ec76eebaeca03c4a171d7f781f43b975c ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts -@@ -0,0 +1,8 @@ -+export declare function isOnline(): Promise; -+export declare function getBrowserOnlineStatus(): boolean; -+export declare function getReactNativeOnlineStatus(): Promise; -+export declare function getNodeOnlineStatus(): boolean; -+export declare function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void): void; -+export declare function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void): void; -+export declare function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void): void; -+//# sourceMappingURL=network.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts.map b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a882e728142d052ff8608548af8377e52f3c7ac0 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAiB3C;AAED,wBAAgB,sBAAsB,YAErC;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED,wBAAgB,mBAAmB,YAKlC;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAerF;AAED,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAK5F;AAGD,wBAAgB,mCAAmC,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAIhG"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts b/node_modules/@walletconnect/utils/dist/types/relay.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..3c2ce6681e2f566cd26619258b0f60c792ebb0a0 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts -@@ -0,0 +1,5 @@ -+import { RelayerTypes } from "@walletconnect/types"; -+export declare const RELAYER_DEFAULT_PROTOCOL = "irn"; -+export declare function getRelayProtocolName(opts?: RelayerTypes.RequestOptions): RelayerTypes.ProtocolOptions; -+export declare function getRelayProtocolApi(protocol: string): import("@walletconnect/relay-api").RelayJsonRpc.Methods; -+//# sourceMappingURL=relay.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..dd8bfc4629378861268f0c87c79b5aa0629b2d5c ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,YAAY,CAAC,eAAe,CAE9B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,2DAMnD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..654326c5bff4655eb71eabce9ea056294423a86b ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts -@@ -0,0 +1,5 @@ -+import { AuthTypes } from "@walletconnect/types"; -+export declare function verifySignature(address: string, reconstructedMessage: string, cacaoSignature: AuthTypes.CacaoSignature, chainId: string, projectId: string, baseRpcUrl?: string): Promise; -+export declare function isValidEip191Signature(address: string, message: string, signature: string): boolean; -+export declare function isValidEip1271Signature(address: string, reconstructedMessage: string, signature: string, chainId: string, projectId: string, baseRpcUrl?: string): Promise; -+//# sourceMappingURL=signatures.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8159f880bf99865282817e01e70b0fcfaff5a026 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../src/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,SAAS,CAAC,cAAc,EACxC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,oBAsCpB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts b/node_modules/@walletconnect/utils/dist/types/uri.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..f58153abd67f0e8345c2371f3282c6288dc8ab29 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts -@@ -0,0 +1,8 @@ -+import { EngineTypes, RelayerTypes } from "@walletconnect/types"; -+export declare function parseRelayParams(params: any, delimiter?: string): RelayerTypes.ProtocolOptions; -+export declare function parseUri(str: string): EngineTypes.UriParameters; -+export declare function parseTopic(topic: string): string; -+export declare function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter?: string): any; -+export declare function formatUri(params: EngineTypes.UriParameters): string; -+export declare function getLinkModeURL(universalLink: string, topic: string, encodedEnvelope: string): string; -+//# sourceMappingURL=uri.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8063f3e6f356d4b63405f0e6648eb5ecc6fc5597 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,SAAM,GAAG,YAAY,CAAC,eAAe,CAW3F;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,aAAa,CA0B/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,eAAe,EAAE,SAAS,SAAM,OAUrF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAUnE;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,MAAM,CAER"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts b/node_modules/@walletconnect/utils/dist/types/validators.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..f17fe4d5550861873cecb5ac1c28c9b62934d993 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts -@@ -0,0 +1,44 @@ -+import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from "@walletconnect/types"; -+import { ErrorResponse } from "@walletconnect/jsonrpc-types"; -+export declare type ErrorObject = { -+ message: string; -+ code: number; -+} | null; -+export declare function isValidArray(arr: any, itemCondition?: (item: any) => boolean): boolean; -+export declare function isValidObject(obj: any): number | false; -+export declare function isUndefined(input: any): input is undefined; -+export declare function isValidString(input: any, optional: boolean): input is string; -+export declare function isValidNumber(input: any, optional: boolean): boolean; -+export declare function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams): boolean; -+export declare function isValidChainId(value: any): boolean; -+export declare function isValidAccountId(value: any): boolean; -+export declare function isValidUrl(value: any): boolean; -+export declare function isProposalStruct(input: any): input is ProposalTypes.Struct; -+export declare function isSessionStruct(input: any): input is SessionTypes.Struct; -+export declare function isValidController(input: any, method: string): ErrorObject; -+export declare function isValidNamespaceMethodsOrEvents(input: any): input is string; -+export declare function isValidChains(key: string, chains: any, context: string): ErrorObject; -+export declare function isValidNamespaceChains(namespaces: any, method: string, type: string): null; -+export declare function isValidAccounts(accounts: any, context: string): ErrorObject; -+export declare function isValidNamespaceAccounts(input: any, method: string): null; -+export declare function isValidActions(namespace: any, context: string): ErrorObject; -+export declare function isValidNamespaceActions(input: any, method: string): null; -+export declare function isValidRequiredNamespaces(input: any, method: string, type: string): ErrorObject; -+export declare function isValidNamespaces(input: any, method: string): ErrorObject; -+export declare function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions; -+export declare function isValidRelays(input: any, optional: boolean): input is RelayerTypes.ProtocolOptions[]; -+export declare function isValidId(input: any): boolean; -+export declare function isValidParams(input: any): boolean; -+export declare function isValidErrorReason(input: any): input is ErrorResponse; -+export declare function isValidRequest(request: any): boolean; -+export declare function isValidResponse(response: any): boolean; -+export declare function isValidEvent(event: any): boolean; -+export declare function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string): boolean; -+export declare function isValidNamespacesRequest(namespaces: SessionTypes.Namespaces, chainId: string, method: string): boolean; -+export declare function isValidNamespacesEvent(namespaces: SessionTypes.Namespaces, chainId: string, eventName: string): boolean; -+export declare function isConformingNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, namespaces: SessionTypes.Namespaces, context: string): ErrorObject; -+export declare function isValidRequestExpiry(expiry: number, boundaries: { -+ min: number; -+ max: number; -+}): boolean; -+//# sourceMappingURL=validators.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..840230079b7372007858eec63312513a8e37bf83 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/package.json b/node_modules/@walletconnect/utils/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..a09f22037d5042cd95e3b8d6094717780a1bbedf ---- /dev/null -+++ b/node_modules/@walletconnect/utils/package.json -@@ -0,0 +1,85 @@ -+{ -+ "name": "@walletconnect/utils", -+ "description": "Utilities for WalletConnect Protocol", -+ "version": "2.16.1", -+ "author": "WalletConnect, Inc. ", -+ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", -+ "license": "Apache-2.0", -+ "main": "dist/index.cjs.js", -+ "module": "dist/index.es.js", -+ "unpkg": "dist/index.umd.js", -+ "types": "dist/types/index.d.ts", -+ "sideEffects": false, -+ "files": [ -+ "dist" -+ ], -+ "keywords": [ -+ "wallet", -+ "walletconnect" -+ ], -+ "scripts": { -+ "clean": "rm -rf dist", -+ "build:pre": "npm run clean", -+ "build:types": "tsc", -+ "build:source": "rollup --config rollup.config.js", -+ "build": "npm run build:pre; npm run build:source; npm run build:types", -+ "test:pre": "rm -rf ./test/test.db", -+ "test:run": "vitest run --dir test", -+ "test": "npm run test:pre; npm run test:run", -+ "test:ignoreUnhandled": "npm run test:pre; npm run test:run -- --dangerouslyIgnoreUnhandledErrors", -+ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", -+ "prettier": "prettier --check '{src,test}/**/*.{js,ts,jsx,tsx}'" -+ }, -+ "dependencies": { -+ "@stablelib/chacha20poly1305": "1.0.1", -+ "@stablelib/hkdf": "1.0.1", -+ "@stablelib/random": "1.0.2", -+ "@stablelib/sha256": "1.0.1", -+ "@stablelib/x25519": "1.0.3", -+ "@walletconnect/relay-api": "1.0.11", -+ "@walletconnect/relay-auth": "1.0.4", -+ "@walletconnect/safe-json": "1.0.2", -+ "@walletconnect/time": "1.0.2", -+ "@walletconnect/types": "2.16.1", -+ "@walletconnect/window-getters": "1.0.1", -+ "@walletconnect/window-metadata": "1.0.1", -+ "detect-browser": "5.3.0", -+ "elliptic": "^6.5.7", -+ "query-string": "7.1.3", -+ "uint8arrays": "3.1.0" -+ }, -+ "devDependencies": { -+ "@types/elliptic": "^6.4.18", -+ "@types/lodash.isequal": "4.5.6" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/README.md b/node_modules/uint8arrays/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..4bc4398f9f4f87fd5a3a190fa7ff61dd7b88b080 ---- /dev/null -+++ b/node_modules/uint8arrays/README.md -@@ -0,0 +1,158 @@ -+# Uint8Arrays -+ -+Some utility functions to make dealing with `Uint8Array`s more pleasant. -+ -+- [API](#api) -+ - [alloc(size)](#allocsize) -+ - [Example](#example) -+ - [allocUnsafe(size)](#allocunsafesize) -+ - [Example](#example-1) -+ - [compare(a, b)](#comparea-b) -+ - [Example](#example-2) -+ - [concat(arrays, [length])](#concatarrays-length) -+ - [Example](#example-3) -+ - [equals(a, b)](#equalsa-b) -+ - [Example](#example-4) -+ - [fromString(string, encoding = 'utf8')](#fromstringstring-encoding--utf8) -+ - [Example](#example-5) -+ - [toString(array, encoding = 'utf8')](#tostringarray-encoding--utf8) -+ - [Example](#example-6) -+ - [xor(a, b)](#xora-b) -+ - [Example](#example-7) -+ -+## API -+ -+### alloc(size) -+ -+Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. -+ -+#### Example -+ -+```js -+import { alloc } from 'uint8arrays/alloc` -+ -+const buf = alloc(100) -+``` -+ -+### allocUnsafe(size) -+ -+Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. -+ -+On platforms that support it, memory referenced by the returned `Uint8Array` will not be initialized. -+ -+#### Example -+ -+```js -+import { allocUnsafe } from 'uint8arrays/alloc` -+ -+const buf = allocUnsafe(100) -+``` -+ -+### compare(a, b) -+ -+Compare two `Uint8Arrays` -+ -+#### Example -+ -+```js -+import { compare } from 'uint8arrays/compare' -+ -+const arrays = [ -+ Uint8Array.from([3, 4, 5]), -+ Uint8Array.from([0, 1, 2]) -+] -+ -+const sorted = arrays.sort(compare) -+ -+console.info(sorted) -+// [ -+// Uint8Array[0, 1, 2] -+// Uint8Array[3, 4, 5] -+// ] -+``` -+ -+### concat(arrays, [length]) -+ -+Concatenate one or more array-likes and return a `Uint8Array` with their contents. -+ -+If you know the length of the arrays, pass it as a second parameter, otherwise it will be calculated by traversing the list of arrays. -+ -+#### Example -+ -+```js -+import { concat } from 'uint8arrays/concat' -+ -+const arrays = [ -+ Uint8Array.from([0, 1, 2]), -+ Uint8Array.from([3, 4, 5]) -+] -+ -+const all = concat(arrays, 6) -+ -+console.info(all) -+// Uint8Array[0, 1, 2, 3, 4, 5] -+``` -+ -+### equals(a, b) -+ -+Returns true if the two arrays are the same array or if they have the same length and contents. -+ -+#### Example -+ -+```js -+import { equals } from 'uint8arrays/equals' -+ -+const a = Uint8Array.from([0, 1, 2]) -+const b = Uint8Array.from([3, 4, 5]) -+const c = Uint8Array.from([0, 1, 2]) -+ -+console.info(equals(a, b)) // false -+console.info(equals(a, c)) // true -+console.info(equals(a, a)) // true -+``` -+ -+### fromString(string, encoding = 'utf8') -+ -+Returns a new `Uint8Array` created from the passed string and interpreted as the passed encoding. -+ -+Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). -+ -+#### Example -+ -+```js -+import { fromString } from 'uint8arrays/from-string' -+ -+console.info(fromString('hello world')) // Uint8Array[104, 101 ... -+console.info(fromString('00010203aabbcc', 'base16')) // Uint8Array[0, 1 ... -+console.info(fromString('AAECA6q7zA', 'base64')) // Uint8Array[0, 1 ... -+console.info(fromString('01234', 'ascii')) // Uint8Array[48, 49 ... -+``` -+ -+### toString(array, encoding = 'utf8') -+ -+Returns a string created from the passed `Uint8Array` in the passed encoding. -+ -+Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). -+ -+#### Example -+ -+```js -+import { toString } from 'uint8arrays/to-string' -+ -+console.info(toString(Uint8Array.from([104, 101...]))) // 'hello world' -+console.info(toString(Uint8Array.from([0, 1, 2...]), 'base16')) // '00010203aabbcc' -+console.info(toString(Uint8Array.from([0, 1, 2...]), 'base64')) // 'AAECA6q7zA' -+console.info(toString(Uint8Array.from([48, 49, 50...]), 'ascii')) // '01234' -+``` -+ -+### xor(a, b) -+ -+Returns a `Uint8Array` containing `a` and `b` xored together. -+ -+#### Example -+ -+```js -+import { xor } from 'uint8arrays/xor' -+ -+console.info(xor(Uint8Array.from([1, 0]), Uint8Array.from([0, 1]))) // Uint8Array[1, 1] -+``` -diff --git a/node_modules/uint8arrays/alloc b/node_modules/uint8arrays/alloc -new file mode 100644 -index 0000000000000000000000000000000000000000..96adbd1c30cc40c637803b469fa5c6491c509843 ---- /dev/null -+++ b/node_modules/uint8arrays/alloc -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/alloc.js') -diff --git a/node_modules/uint8arrays/cjs/src/alloc.js b/node_modules/uint8arrays/cjs/src/alloc.js -new file mode 100644 -index 0000000000000000000000000000000000000000..62f337da370082d906ed5fedd6cc052601b367a3 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/alloc.js -@@ -0,0 +1,19 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function alloc(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { -+ return globalThis.Buffer.alloc(size); -+ } -+ return new Uint8Array(size); -+} -+function allocUnsafe(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { -+ return globalThis.Buffer.allocUnsafe(size); -+ } -+ return new Uint8Array(size); -+} -+ -+exports.alloc = alloc; -+exports.allocUnsafe = allocUnsafe; -diff --git a/node_modules/uint8arrays/cjs/src/compare.js b/node_modules/uint8arrays/cjs/src/compare.js -new file mode 100644 -index 0000000000000000000000000000000000000000..f76a876da6b87c8218d0efda7366189c7d7d46a4 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/compare.js -@@ -0,0 +1,23 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function compare(a, b) { -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] < b[i]) { -+ return -1; -+ } -+ if (a[i] > b[i]) { -+ return 1; -+ } -+ } -+ if (a.byteLength > b.byteLength) { -+ return 1; -+ } -+ if (a.byteLength < b.byteLength) { -+ return -1; -+ } -+ return 0; -+} -+ -+exports.compare = compare; -diff --git a/node_modules/uint8arrays/cjs/src/concat.js b/node_modules/uint8arrays/cjs/src/concat.js -new file mode 100644 -index 0000000000000000000000000000000000000000..b5f6039223c16c8432bf34b601897a0e963e1dd0 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/concat.js -@@ -0,0 +1,20 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var alloc = require('./alloc.js'); -+ -+function concat(arrays, length) { -+ if (!length) { -+ length = arrays.reduce((acc, curr) => acc + curr.length, 0); -+ } -+ const output = alloc.allocUnsafe(length); -+ let offset = 0; -+ for (const arr of arrays) { -+ output.set(arr, offset); -+ offset += arr.length; -+ } -+ return output; -+} -+ -+exports.concat = concat; -diff --git a/node_modules/uint8arrays/cjs/src/equals.js b/node_modules/uint8arrays/cjs/src/equals.js -new file mode 100644 -index 0000000000000000000000000000000000000000..073c46ba1f52e921f55f98d82106a67d542a4321 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/equals.js -@@ -0,0 +1,20 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function equals(a, b) { -+ if (a === b) { -+ return true; -+ } -+ if (a.byteLength !== b.byteLength) { -+ return false; -+ } -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] !== b[i]) { -+ return false; -+ } -+ } -+ return true; -+} -+ -+exports.equals = equals; -diff --git a/node_modules/uint8arrays/cjs/src/from-string.js b/node_modules/uint8arrays/cjs/src/from-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..d4899669d3d3a69ae33b1d6a5de6ed4facab9702 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/from-string.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var bases = require('./util/bases.js'); -+ -+function fromString(string, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(string, 'utf8'); -+ } -+ return base.decoder.decode(`${ base.prefix }${ string }`); -+} -+ -+exports.fromString = fromString; -diff --git a/node_modules/uint8arrays/cjs/src/index.js b/node_modules/uint8arrays/cjs/src/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e04d18c1e8b50930f11469e29d36e3624800ee3e ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/index.js -@@ -0,0 +1,19 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var compare = require('./compare.js'); -+var concat = require('./concat.js'); -+var equals = require('./equals.js'); -+var fromString = require('./from-string.js'); -+var toString = require('./to-string.js'); -+var xor = require('./xor.js'); -+ -+ -+ -+exports.compare = compare.compare; -+exports.concat = concat.concat; -+exports.equals = equals.equals; -+exports.fromString = fromString.fromString; -+exports.toString = toString.toString; -+exports.xor = xor.xor; -diff --git a/node_modules/uint8arrays/cjs/src/to-string.js b/node_modules/uint8arrays/cjs/src/to-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..60041ca99380e4e96896d2e3d314bfedf291abd4 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/to-string.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var bases = require('./util/bases.js'); -+ -+function toString(array, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); -+ } -+ return base.encoder.encode(array).substring(1); -+} -+ -+exports.toString = toString; -diff --git a/node_modules/uint8arrays/cjs/src/util/bases.js b/node_modules/uint8arrays/cjs/src/util/bases.js -new file mode 100644 -index 0000000000000000000000000000000000000000..889ba8ca4f4590ad982343e2e557a86345dbba6e ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/util/bases.js -@@ -0,0 +1,49 @@ -+'use strict'; -+ -+var basics = require('multiformats/basics'); -+var alloc = require('../alloc.js'); -+ -+function createCodec(name, prefix, encode, decode) { -+ return { -+ name, -+ prefix, -+ encoder: { -+ name, -+ prefix, -+ encode -+ }, -+ decoder: { decode } -+ }; -+} -+const string = createCodec('utf8', 'u', buf => { -+ const decoder = new TextDecoder('utf8'); -+ return 'u' + decoder.decode(buf); -+}, str => { -+ const encoder = new TextEncoder(); -+ return encoder.encode(str.substring(1)); -+}); -+const ascii = createCodec('ascii', 'a', buf => { -+ let string = 'a'; -+ for (let i = 0; i < buf.length; i++) { -+ string += String.fromCharCode(buf[i]); -+ } -+ return string; -+}, str => { -+ str = str.substring(1); -+ const buf = alloc.allocUnsafe(str.length); -+ for (let i = 0; i < str.length; i++) { -+ buf[i] = str.charCodeAt(i); -+ } -+ return buf; -+}); -+const BASES = { -+ utf8: string, -+ 'utf-8': string, -+ hex: basics.bases.base16, -+ latin1: ascii, -+ ascii: ascii, -+ binary: ascii, -+ ...basics.bases -+}; -+ -+module.exports = BASES; -diff --git a/node_modules/uint8arrays/cjs/src/xor.js b/node_modules/uint8arrays/cjs/src/xor.js -new file mode 100644 -index 0000000000000000000000000000000000000000..3b7f04d6ad8ca2ac0c75d9527f8abf75c3a32d2b ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/xor.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var alloc = require('./alloc.js'); -+ -+function xor(a, b) { -+ if (a.length !== b.length) { -+ throw new Error('Inputs should have the same length'); -+ } -+ const result = alloc.allocUnsafe(a.length); -+ for (let i = 0; i < a.length; i++) { -+ result[i] = a[i] ^ b[i]; -+ } -+ return result; -+} -+ -+exports.xor = xor; -diff --git a/node_modules/uint8arrays/compare b/node_modules/uint8arrays/compare -new file mode 100644 -index 0000000000000000000000000000000000000000..e5012fd8b14ddd8ae03b8cf34b0803cbb153f54d ---- /dev/null -+++ b/node_modules/uint8arrays/compare -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/compare.js') -diff --git a/node_modules/uint8arrays/concat b/node_modules/uint8arrays/concat -new file mode 100644 -index 0000000000000000000000000000000000000000..77d4c7ff6075cef2ccf07978629ebe9c0b5676c1 ---- /dev/null -+++ b/node_modules/uint8arrays/concat -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/concat.js') -diff --git a/node_modules/uint8arrays/equals b/node_modules/uint8arrays/equals -new file mode 100644 -index 0000000000000000000000000000000000000000..fb9b155afd3f89970606e5bce212653a9edda8a5 ---- /dev/null -+++ b/node_modules/uint8arrays/equals -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/equals.js') -diff --git a/node_modules/uint8arrays/esm/package.json b/node_modules/uint8arrays/esm/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..b0f779bef674eb02c1185e55c0ffd20179a078f9 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/package.json -@@ -0,0 +1,33 @@ -+{ -+ "type": "module", -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/esm/src/alloc.js b/node_modules/uint8arrays/esm/src/alloc.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e9326afa4af656b8f97576f79177e94ab9d12372 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/alloc.js -@@ -0,0 +1,12 @@ -+export function alloc(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { -+ return globalThis.Buffer.alloc(size); -+ } -+ return new Uint8Array(size); -+} -+export function allocUnsafe(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { -+ return globalThis.Buffer.allocUnsafe(size); -+ } -+ return new Uint8Array(size); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/compare.js b/node_modules/uint8arrays/esm/src/compare.js -new file mode 100644 -index 0000000000000000000000000000000000000000..251ba99326ef616a7259ae690a195c55eb69e3c4 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/compare.js -@@ -0,0 +1,17 @@ -+export function compare(a, b) { -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] < b[i]) { -+ return -1; -+ } -+ if (a[i] > b[i]) { -+ return 1; -+ } -+ } -+ if (a.byteLength > b.byteLength) { -+ return 1; -+ } -+ if (a.byteLength < b.byteLength) { -+ return -1; -+ } -+ return 0; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/concat.js b/node_modules/uint8arrays/esm/src/concat.js -new file mode 100644 -index 0000000000000000000000000000000000000000..1becaa52d193e7c41af30fcfb6de675dd5520730 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/concat.js -@@ -0,0 +1,13 @@ -+import { allocUnsafe } from './alloc.js'; -+export function concat(arrays, length) { -+ if (!length) { -+ length = arrays.reduce((acc, curr) => acc + curr.length, 0); -+ } -+ const output = allocUnsafe(length); -+ let offset = 0; -+ for (const arr of arrays) { -+ output.set(arr, offset); -+ offset += arr.length; -+ } -+ return output; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/equals.js b/node_modules/uint8arrays/esm/src/equals.js -new file mode 100644 -index 0000000000000000000000000000000000000000..fbedbe071a446722515778a030724b4d2ab87030 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/equals.js -@@ -0,0 +1,14 @@ -+export function equals(a, b) { -+ if (a === b) { -+ return true; -+ } -+ if (a.byteLength !== b.byteLength) { -+ return false; -+ } -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] !== b[i]) { -+ return false; -+ } -+ } -+ return true; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/from-string.js b/node_modules/uint8arrays/esm/src/from-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..0a98afd2708b0f7f182f92f4b98244655b6c85cb ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/from-string.js -@@ -0,0 +1,11 @@ -+import bases from './util/bases.js'; -+export function fromString(string, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(string, 'utf8'); -+ } -+ return base.decoder.decode(`${ base.prefix }${ string }`); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/index.js b/node_modules/uint8arrays/esm/src/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..2ec817cb7bfaa10be4baf9dfdeae279230041130 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/index.js -@@ -0,0 +1,14 @@ -+import { compare } from './compare.js'; -+import { concat } from './concat.js'; -+import { equals } from './equals.js'; -+import { fromString } from './from-string.js'; -+import { toString } from './to-string.js'; -+import { xor } from './xor.js'; -+export { -+ compare, -+ concat, -+ equals, -+ fromString, -+ toString, -+ xor -+}; -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/to-string.js b/node_modules/uint8arrays/esm/src/to-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..f1fdd01972c3f7ba0abf5d4b5f3539fd60a25ef4 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/to-string.js -@@ -0,0 +1,11 @@ -+import bases from './util/bases.js'; -+export function toString(array, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); -+ } -+ return base.encoder.encode(array).substring(1); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/util/bases.js b/node_modules/uint8arrays/esm/src/util/bases.js -new file mode 100644 -index 0000000000000000000000000000000000000000..ec42186bf5433036f1c4485bed9cf67c4ff66595 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/util/bases.js -@@ -0,0 +1,45 @@ -+import { bases } from 'multiformats/basics'; -+import { allocUnsafe } from '../alloc.js'; -+function createCodec(name, prefix, encode, decode) { -+ return { -+ name, -+ prefix, -+ encoder: { -+ name, -+ prefix, -+ encode -+ }, -+ decoder: { decode } -+ }; -+} -+const string = createCodec('utf8', 'u', buf => { -+ const decoder = new TextDecoder('utf8'); -+ return 'u' + decoder.decode(buf); -+}, str => { -+ const encoder = new TextEncoder(); -+ return encoder.encode(str.substring(1)); -+}); -+const ascii = createCodec('ascii', 'a', buf => { -+ let string = 'a'; -+ for (let i = 0; i < buf.length; i++) { -+ string += String.fromCharCode(buf[i]); -+ } -+ return string; -+}, str => { -+ str = str.substring(1); -+ const buf = allocUnsafe(str.length); -+ for (let i = 0; i < str.length; i++) { -+ buf[i] = str.charCodeAt(i); -+ } -+ return buf; -+}); -+const BASES = { -+ utf8: string, -+ 'utf-8': string, -+ hex: bases.base16, -+ latin1: ascii, -+ ascii: ascii, -+ binary: ascii, -+ ...bases -+}; -+export default BASES; -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/xor.js b/node_modules/uint8arrays/esm/src/xor.js -new file mode 100644 -index 0000000000000000000000000000000000000000..d569ed64b70fb1627a6d8f82b4662f7538f6e694 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/xor.js -@@ -0,0 +1,11 @@ -+import { allocUnsafe } from './alloc.js'; -+export function xor(a, b) { -+ if (a.length !== b.length) { -+ throw new Error('Inputs should have the same length'); -+ } -+ const result = allocUnsafe(a.length); -+ for (let i = 0; i < a.length; i++) { -+ result[i] = a[i] ^ b[i]; -+ } -+ return result; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/from-string b/node_modules/uint8arrays/from-string -new file mode 100644 -index 0000000000000000000000000000000000000000..2cc705ce49836283622c3f82290e910712107007 ---- /dev/null -+++ b/node_modules/uint8arrays/from-string -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/from-string.js') -diff --git a/node_modules/uint8arrays/index.js b/node_modules/uint8arrays/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..580d8d99288b7b972da6c5c480503710e62d4b15 ---- /dev/null -+++ b/node_modules/uint8arrays/index.js -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/index.js') -diff --git a/node_modules/uint8arrays/index.min.js b/node_modules/uint8arrays/index.min.js -new file mode 100644 -index 0000000000000000000000000000000000000000..bcf42aca46b3ca48a137a3a93fe37cd8b17d6eb9 ---- /dev/null -+++ b/node_modules/uint8arrays/index.min.js -@@ -0,0 +1,17 @@ -+(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Uint8arrays = factory()}(typeof self !== 'undefined' ? self : this, function () { -+var Uint8arrays=(()=>{var ue=Object.defineProperty;var $e=r=>ue(r,"__esModule",{value:!0});var h=(r,e)=>{$e(r);for(var t in e)ue(r,t,{get:e[t],enumerable:!0})};var Yt={};h(Yt,{compare:()=>De,concat:()=>ie,equals:()=>ae,fromString:()=>Me,toString:()=>Ve,xor:()=>Pe});function De(r,e){for(let t=0;te[t])return 1}return r.byteLength>e.byteLength?1:r.byteLengths+n.length,0));let t=U(e),o=0;for(let s of r)t.set(s,o),o+=s.length;return t}function ae(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;tKe});function qe(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o>>0,l=new Uint8Array(E);b!==C;){for(var g=u[b],v=0,m=E-1;(g!==0||v>>0,l[m]=g%a>>>0,g=g/a>>>0;if(g!==0)throw new Error("Non-zero carry");j=v,b++}for(var x=E-j;x!==E&&l[x]===0;)x++;for(var k=f.repeat(d);x>>0,E=new Uint8Array(C);u[d];){var l=t[u.charCodeAt(d)];if(l===255)return;for(var g=0,v=C-1;(l!==0||g>>0,E[v]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");b=g,d++}if(u[d]!==" "){for(var m=C-b;m!==C&&E[m]===0;)m++;for(var x=new Uint8Array(j+(C-m)),k=j;m!==C;)x[k++]=E[m++];return x}}}function ke(u){var d=P(u);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:S,decodeUnsafe:P,decode:ke}}var Re=qe,Je=Re,ce=Je;var ur=new Uint8Array(0);var fe=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var de=r=>new TextEncoder().encode(r),he=r=>new TextDecoder().decode(r);var le=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},be=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ce(this,e)}},me=class{constructor(e){this.decoders=e}or(e){return Ce(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ce=(r,e)=>new me({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Ee=class{constructor(e,t,o,s){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=s,this.encoder=new le(e,t,o),this.decoder=new be(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new Ee(r,e,t,o),A=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:s}=ce(t,e);return T({prefix:r,name:e,encode:o,decode:n=>y(s(n))})},Xe=(r,e,t,o)=>{let s={};for(let p=0;p=8&&(a-=8,D[B++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return D},Ge=(r,e,t)=>{let o=e[e.length-1]==="=",s=(1<t;)D-=t,n+=e[s&a>>D];if(D&&(n+=e[s&a<T({prefix:e,name:r,encode(s){return Ge(s,o,t)},decode(s){return Xe(s,o,t,r)}});var Ke=T({prefix:"\0",name:"identity",encode:r=>he(r),decode:r=>de(r)});var X={};h(X,{base2:()=>Qe});var Qe=i({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var G={};h(G,{base8:()=>He});var He=i({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var K={};h(K,{base10:()=>We});var We=A({prefix:"9",name:"base10",alphabet:"0123456789"});var Q={};h(Q,{base16:()=>Ze,base16upper:()=>Ye});var Ze=i({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ye=i({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var H={};h(H,{base32:()=>z,base32hex:()=>rt,base32hexpad:()=>st,base32hexpadupper:()=>nt,base32hexupper:()=>ot,base32pad:()=>et,base32padupper:()=>tt,base32upper:()=>_e,base32z:()=>ut});var z=i({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_e=i({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),et=i({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tt=i({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rt=i({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ot=i({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),st=i({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nt=i({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ut=i({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var W={};h(W,{base36:()=>Dt,base36upper:()=>it});var Dt=A({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),it=A({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z={};h(Z,{base58btc:()=>w,base58flickr:()=>at});var w=A({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),at=A({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Y={};h(Y,{base64:()=>ct,base64pad:()=>ft,base64url:()=>dt,base64urlpad:()=>ht});var ct=i({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ft=i({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),dt=i({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ht=i({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var _={};h(_,{base256emoji:()=>Ct});var ge=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),pt=ge.reduce((r,e,t)=>(r[t]=e,r),[]),lt=ge.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function bt(r){return r.reduce((e,t)=>(e+=pt[t],e),"")}function mt(r){let e=[];for(let t of r){let o=lt[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Ct=T({prefix:"\u{1F680}",name:"base256emoji",encode:bt,decode:mt});var re={};h(re,{sha256:()=>Mt,sha512:()=>Vt});var Et=xe,we=128,gt=127,wt=~gt,xt=Math.pow(2,31);function xe(r,e,t){e=e||[],t=t||0;for(var o=t;r>=xt;)e[t++]=r&255|we,r/=128;for(;r&wt;)e[t++]=r&255|we,r>>>=7;return e[t]=r|0,xe.bytes=t-o+1,e}var yt=ee,vt=128,ye=127;function ee(r,e){var t=0,e=e||0,o=0,s=e,n,D=r.length;do{if(s>=D)throw ee.bytes=0,new RangeError("Could not decode varint");n=r[s++],t+=o<28?(n&ye)<=vt);return ee.bytes=s-e,t}var At=Math.pow(2,7),jt=Math.pow(2,14),Ft=Math.pow(2,21),Bt=Math.pow(2,28),St=Math.pow(2,35),Ut=Math.pow(2,42),Tt=Math.pow(2,49),zt=Math.pow(2,56),It=Math.pow(2,63),Lt=function(r){return r[N.decode(r),N.decode.bytes],I=(r,e,t=0)=>(N.encode(r,e,t),e),L=r=>N.encodingLength(r);var F=(r,e)=>{let t=e.byteLength,o=L(r),s=o+L(t),n=new Uint8Array(s+t);return I(r,n,0),I(t,n,o),n.set(e,s),new M(r,t,e,n)},Ae=r=>{let e=y(r),[t,o]=O(e),[s,n]=O(e.subarray(o)),D=e.subarray(o+n);if(D.byteLength!==s)throw new Error("Incorrect length");return new M(t,s,D,e)},je=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&fe(r.bytes,e.bytes),M=class{constructor(e,t,o,s){this.code=e,this.size=t,this.digest=o,this.bytes=s}};var te=({name:r,code:e,encode:t})=>new Be(r,e,t),Be=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?F(this.code,t):t.then(o=>F(this.code,o))}else throw Error("Unknown type, must be binary type")}};var Ue=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Mt=te({name:"sha2-256",code:18,encode:Ue("SHA-256")}),Vt=te({name:"sha2-512",code:19,encode:Ue("SHA-512")});var oe={};h(oe,{identity:()=>$t});var Te=0,Pt="identity",ze=y,kt=r=>F(Te,ze(r)),$t={code:Te,name:Pt,encode:ze,digest:kt};var Ur=new TextEncoder,Tr=new TextDecoder;var c=class{constructor(e,t,o,s){this.code=t,this.version=e,this.multihash=o,this.bytes=s,this.byteOffset=s.byteOffset,this.byteLength=s.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:q,byteLength:q,code:$,version:$,multihash:$,bytes:$,_baseCache:q,asCID:q})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==V)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kt)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return c.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=F(e,t);return c.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&je(this.multihash,e.multihash)}toString(e){let{bytes:t,version:o,_baseCache:s}=this;switch(o){case 0:return Xt(t,s,e||w.encoder);default:return Gt(t,s,e||z.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return Ht(/^0\.0/,Wt),!!(e&&(e[Le]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof c)return e;if(e!=null&&e.asCID===e){let{version:t,code:o,multihash:s,bytes:n}=e;return new c(t,o,s,n||Ie(t,o,s.bytes))}else if(e!=null&&e[Le]===!0){let{version:t,multihash:o,code:s}=e,n=Ae(o);return c.create(t,s,n)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==V)throw new Error(`Version 0 CID must use dag-pb (code: ${V}) block encoding`);return new c(e,t,o,o.bytes)}case 1:{let s=Ie(e,t,o.bytes);return new c(e,t,o,s)}default:throw new Error("Invalid version")}}static createV0(e){return c.create(0,V,e)}static createV1(e,t){return c.create(1,e,t)}static decode(e){let[t,o]=c.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=c.inspectBytes(e),o=t.size-t.multihashSize,s=y(e.subarray(o,o+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let n=s.subarray(t.multihashSize-t.digestSize),D=new M(t.multihashCode,t.digestSize,n,s);return[t.version===0?c.createV0(D):c.createV1(t.codec,D),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[S,P]=O(e.subarray(t));return t+=P,S},s=o(),n=V;if(s===18?(s=0,t=0):s===1&&(n=o()),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let D=t,a=o(),f=o(),B=t+f,p=B-D;return{version:s,codec:n,multihashCode:a,digestSize:f,multihashSize:p,size:B}}static parse(e,t){let[o,s]=Jt(e,t),n=c.decode(s);return n._baseCache.set(o,e),n}},Jt=(r,e)=>{switch(r[0]){case"Q":{let t=e||w;return[w.prefix,t.decode(`${w.prefix}${r}`)]}case w.prefix:{let t=e||w;return[w.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Xt=(r,e,t)=>{let{prefix:o}=t;if(o!==w.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(o);if(s==null){let n=t.encode(r).slice(1);return e.set(o,n),n}else return s},Gt=(r,e,t)=>{let{prefix:o}=t,s=e.get(o);if(s==null){let n=t.encode(r);return e.set(o,n),n}else return s},V=112,Kt=18,Ie=(r,e,t)=>{let o=L(r),s=o+L(e),n=new Uint8Array(s+t.byteLength);return I(r,n,0),I(e,n,o),n.set(t,s),n},Le=Symbol.for("@ipld/js-cid/CID"),$={writable:!1,configurable:!1,enumerable:!0},q={writable:!1,enumerable:!1,configurable:!1},Qt="0.0.0-dev",Ht=(r,e)=>{if(r.test(Qt))console.warn(e);else throw new Error(e)},Wt=`CID.isCID(v) is deprecated and will be removed in the next major release. -+Following code pattern: -+ -+if (CID.isCID(value)) { -+ doSomethingWithCID(value) -+} -+ -+Is replaced with: -+ -+const cid = CID.asCID(value) -+if (cid) { -+ // Make sure to use cid instead of value -+ doSomethingWithCID(cid) -+} -+`;var se={...J,...X,...G,...K,...Q,...H,...W,...Z,...Y,..._},$r={...re,...oe};function Ne(r,e,t,o){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:o}}}var Oe=Ne("utf8","u",r=>{let e=new TextDecoder("utf8");return"u"+e.decode(r)},r=>new TextEncoder().encode(r.substring(1))),ne=Ne("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);let e=U(r.length);for(let t=0;t", -+ "homepage": "https://github.com/achingbrain/uint8arrays", -+ "bugs": "https://github.com/achingbrain/uint8arrays/issues", -+ "types": "types/src/index.d.ts", -+ "repository": { -+ "type": "git", -+ "url": "https://github.com/achingbrain/uint8arrays.git" -+ }, -+ "scripts": { -+ "test": "aegir test", -+ "lint": "aegir ts -p check && aegir lint", -+ "release": "aegir release", -+ "release-minor": "aegir release --type minor", -+ "release-major": "aegir release --type major", -+ "build": "aegir build" -+ }, -+ "license": "MIT", -+ "dependencies": { -+ "multiformats": "^9.4.2" -+ }, -+ "devDependencies": { -+ "@types/benchmark": "^2.1.1", -+ "aegir": "^35.0.0", -+ "benchmark": "^2.1.4", -+ "util": "^0.12.4" -+ }, -+ "eslintConfig": { -+ "extends": "ipfs", -+ "parserOptions": { -+ "sourceType": "module" -+ }, -+ "ignorePatterns": [ -+ "!.aegir.js" -+ ] -+ }, -+ "typesVersions": { -+ "*": { -+ "*": [ -+ "types/src", -+ "types/src/*" -+ ] -+ } -+ }, -+ "exports": { -+ ".": { -+ "browser": "./esm/src/index.js", -+ "require": "./cjs/src/index.js", -+ "import": "./esm/src/index.js" -+ }, -+ "./alloc": { -+ "browser": "./esm/src/alloc.js", -+ "require": "./cjs/src/alloc.js", -+ "import": "./esm/src/alloc.js" -+ }, -+ "./compare": { -+ "browser": "./esm/src/compare.js", -+ "require": "./cjs/src/compare.js", -+ "import": "./esm/src/compare.js" -+ }, -+ "./concat": { -+ "browser": "./esm/src/concat.js", -+ "require": "./cjs/src/concat.js", -+ "import": "./esm/src/concat.js" -+ }, -+ "./equals": { -+ "browser": "./esm/src/equals.js", -+ "require": "./cjs/src/equals.js", -+ "import": "./esm/src/equals.js" -+ }, -+ "./from-string": { -+ "browser": "./esm/src/from-string.js", -+ "require": "./cjs/src/from-string.js", -+ "import": "./esm/src/from-string.js" -+ }, -+ "./to-string": { -+ "browser": "./esm/src/to-string.js", -+ "require": "./cjs/src/to-string.js", -+ "import": "./esm/src/to-string.js" -+ }, -+ "./xor": { -+ "browser": "./esm/src/xor.js", -+ "require": "./cjs/src/xor.js", -+ "import": "./esm/src/xor.js" -+ } -+ }, -+ "contributors": [ -+ "achingbrain ", -+ "Irakli Gozalishvili ", -+ "Cayman ", -+ "Hugo Dias ", -+ "Mircea Nistor ", -+ "Rafael Ramalho ", -+ "Vasco Santos " -+ ], -+ "browser": { -+ ".": "./cjs/src/index.js", -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify", -+ "./alloc.js": "./cjs/src/alloc.js", -+ "./compare.js": "./cjs/src/compare.js", -+ "./concat.js": "./cjs/src/concat.js", -+ "./equals.js": "./cjs/src/equals.js", -+ "./from-string.js": "./cjs/src/from-string.js", -+ "./to-string.js": "./cjs/src/to-string.js", -+ "./xor.js": "./cjs/src/xor.js" -+ }, -+ "react-native": { -+ ".": "./cjs/src/index.js", -+ "./alloc": "./cjs/src/alloc.js", -+ "./compare": "./cjs/src/compare.js", -+ "./concat": "./cjs/src/concat.js", -+ "./equals": "./cjs/src/equals.js", -+ "./from-string": "./cjs/src/from-string.js", -+ "./to-string": "./cjs/src/to-string.js", -+ "./xor": "./cjs/src/xor.js", -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/to-string b/node_modules/uint8arrays/to-string -new file mode 100644 -index 0000000000000000000000000000000000000000..2708e31dca8063775318af642874a080d638e1fe ---- /dev/null -+++ b/node_modules/uint8arrays/to-string -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/to-string.js') -diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts b/node_modules/uint8arrays/types/src/alloc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71086104a021fa42346cd5d46a72b6da8bb79f1e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/alloc.d.ts -@@ -0,0 +1,18 @@ -+/** -+ * Returns a `Uint8Array` of the requested size. Referenced memory will -+ * be initialized to 0. -+ * -+ * @param {number} [size] -+ * @returns {Uint8Array} -+ */ -+export function alloc(size?: number | undefined): Uint8Array; -+/** -+ * Where possible returns a Uint8Array of the requested size that references -+ * uninitialized memory. Only use if you are certain you will immediately -+ * overwrite every value in the returned `Uint8Array`. -+ * -+ * @param {number} [size] -+ * @returns {Uint8Array} -+ */ -+export function allocUnsafe(size?: number | undefined): Uint8Array; -+//# sourceMappingURL=alloc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts.map b/node_modules/uint8arrays/types/src/alloc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ded98e850419b7387b1b5248b08666f357f0b060 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/alloc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"alloc.d.ts","sourceRoot":"","sources":["../../src/alloc.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kDAFa,UAAU,CAQtB;AAED;;;;;;;GAOG;AACH,wDAFa,UAAU,CAQtB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/compare.d.ts b/node_modules/uint8arrays/types/src/compare.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dd23039272fd0eb5375622e34c718fa3cb1eec04 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/compare.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Can be used with Array.sort to sort and array with Uint8Array entries -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function compare(a: Uint8Array, b: Uint8Array): 0 | 1 | -1; -+//# sourceMappingURL=compare.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/compare.d.ts.map b/node_modules/uint8arrays/types/src/compare.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..e8238ebc28b6d4ebe38f6535d6180e5a99f76194 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/compare.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2BAHW,UAAU,KACV,UAAU,cAsBpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/concat.d.ts b/node_modules/uint8arrays/types/src/concat.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..960ca199e3a7586f586c8766e60aaa542916a851 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/concat.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns a new Uint8Array created by concatenating the passed ArrayLikes -+ * -+ * @param {Array>} arrays -+ * @param {number} [length] -+ */ -+export function concat(arrays: Array>, length?: number | undefined): Uint8Array; -+//# sourceMappingURL=concat.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/concat.d.ts.map b/node_modules/uint8arrays/types/src/concat.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a74679fba41402c50244f031fef3465a11cb81b7 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/concat.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../src/concat.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAHW,MAAM,UAAU,MAAM,CAAC,CAAC,2CAiBlC"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/equals.d.ts b/node_modules/uint8arrays/types/src/equals.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..4c4df17c62640f71f638699722bf9cd68e65cc3e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/equals.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns true if the two passed Uint8Arrays have the same content -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function equals(a: Uint8Array, b: Uint8Array): boolean; -+//# sourceMappingURL=equals.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/equals.d.ts.map b/node_modules/uint8arrays/types/src/equals.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..f4b4fb784dcfa264e6f45b5fbcd779ab77b2e5c5 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/equals.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/equals.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAHW,UAAU,KACV,UAAU,WAkBpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts b/node_modules/uint8arrays/types/src/from-string.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a48d58229830ecc2f00b630e265d71e99d4055 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/from-string.d.ts -@@ -0,0 +1,17 @@ -+/** -+ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings -+ */ -+/** -+ * Create a `Uint8Array` from the passed string -+ * -+ * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module. -+ * -+ * Also `ascii` which is similar to node's 'binary' encoding. -+ * -+ * @param {string} string -+ * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc -+ * @returns {Uint8Array} -+ */ -+export function fromString(string: string, encoding?: import("./util/bases.js").SupportedEncodings | undefined): Uint8Array; -+export type SupportedEncodings = import('./util/bases').SupportedEncodings; -+//# sourceMappingURL=from-string.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts.map b/node_modules/uint8arrays/types/src/from-string.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5f31eb6c8816c3da59a6ebf016cfca7f0f55fa5e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/from-string.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"from-string.d.ts","sourceRoot":"","sources":["../../src/from-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,mCAJW,MAAM,wEAEJ,UAAU,CAetB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/index.d.ts b/node_modules/uint8arrays/types/src/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..7a4a255ddc3b1c194a7907ed2ae972b28fdcecc4 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/index.d.ts -@@ -0,0 +1,8 @@ -+import { compare } from "./compare.js"; -+import { concat } from "./concat.js"; -+import { equals } from "./equals.js"; -+import { fromString } from "./from-string.js"; -+import { toString } from "./to-string.js"; -+import { xor } from "./xor.js"; -+export { compare, concat, equals, fromString, toString, xor }; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/index.d.ts.map b/node_modules/uint8arrays/types/src/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..4b136e26cf4d54488bfbbaf749a89197c074cd91 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":""} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts b/node_modules/uint8arrays/types/src/to-string.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..bf72c50427b41a8c4be85347e966feb710e18aa0 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/to-string.d.ts -@@ -0,0 +1,17 @@ -+/** -+ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings -+ */ -+/** -+ * Turns a `Uint8Array` into a string. -+ * -+ * Supports `utf8`, `utf-8` and any encoding supported by the multibase module. -+ * -+ * Also `ascii` which is similar to node's 'binary' encoding. -+ * -+ * @param {Uint8Array} array - The array to turn into a string -+ * @param {SupportedEncodings} [encoding=utf8] - The encoding to use -+ * @returns {string} -+ */ -+export function toString(array: Uint8Array, encoding?: import("./util/bases.js").SupportedEncodings | undefined): string; -+export type SupportedEncodings = import('./util/bases').SupportedEncodings; -+//# sourceMappingURL=to-string.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts.map b/node_modules/uint8arrays/types/src/to-string.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7290dc82e7b1c782b76b2ff96b2ccd49612db22d ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/to-string.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"to-string.d.ts","sourceRoot":"","sources":["../../src/to-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,gCAJW,UAAU,wEAER,MAAM,CAelB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..7b01d6f35e3821e5d695535d345d3684453d439f ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts -@@ -0,0 +1,10 @@ -+/** -+ * Create a Uint8Array of the specified length - uses -+ * the more performant `Buffer.allocUnsafe` if it is -+ * available or `new Uint8Array` if it is not. -+ * -+ * @param {number} length -+ * @returns {Uint8Array} -+ */ -+export function allocUnsafe(length: number): Uint8Array; -+//# sourceMappingURL=alloc-unsafe.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..78b2cfb583f5830da40a1286bd1dac3b5b977ada ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"alloc-unsafe.d.ts","sourceRoot":"","sources":["../../../src/util/alloc-unsafe.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAHW,MAAM,GACJ,UAAU,CAQtB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts b/node_modules/uint8arrays/types/src/util/bases.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c0dae33bc527a38464924c863af85fbc77667e93 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/bases.d.ts -@@ -0,0 +1,36 @@ -+export default BASES; -+export type MultibaseCodec = import('multiformats/bases/interface').MultibaseCodec; -+export type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof { -+ base256emoji: import("multiformats/bases/base").Codec<"base256emoji", "🚀">; -+ base64: import("multiformats/bases/base").Codec<"base64", "m">; -+ base64pad: import("multiformats/bases/base").Codec<"base64pad", "M">; -+ base64url: import("multiformats/bases/base").Codec<"base64url", "u">; -+ base64urlpad: import("multiformats/bases/base").Codec<"base64urlpad", "U">; -+ base58btc: import("multiformats/bases/base").Codec<"base58btc", "z">; -+ base58flickr: import("multiformats/bases/base").Codec<"base58flickr", "Z">; -+ base36: import("multiformats/bases/base").Codec<"base36", "k">; -+ base36upper: import("multiformats/bases/base").Codec<"base36upper", "K">; -+ base32: import("multiformats/bases/base").Codec<"base32", "b">; -+ base32upper: import("multiformats/bases/base").Codec<"base32upper", "B">; -+ base32pad: import("multiformats/bases/base").Codec<"base32pad", "c">; -+ base32padupper: import("multiformats/bases/base").Codec<"base32padupper", "C">; -+ base32hex: import("multiformats/bases/base").Codec<"base32hex", "v">; -+ base32hexupper: import("multiformats/bases/base").Codec<"base32hexupper", "V">; -+ base32hexpad: import("multiformats/bases/base").Codec<"base32hexpad", "t">; -+ base32hexpadupper: import("multiformats/bases/base").Codec<"base32hexpadupper", "T">; -+ base32z: import("multiformats/bases/base").Codec<"base32z", "h">; -+ base16: import("multiformats/bases/base").Codec<"base16", "f">; -+ base16upper: import("multiformats/bases/base").Codec<"base16upper", "F">; -+ base10: import("multiformats/bases/base").Codec<"base10", "9">; -+ base8: import("multiformats/bases/base").Codec<"base8", "7">; -+ base2: import("multiformats/bases/base").Codec<"base2", "0">; -+ identity: import("multiformats/bases/base").Codec<"identity", "\0">; -+}; -+/** -+ * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings -+ */ -+/** -+ * @type {Record} -+ */ -+declare const BASES: Record>; -+//# sourceMappingURL=bases.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts.map b/node_modules/uint8arrays/types/src/util/bases.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..6956f5335bf63870aa45350f2af1d66b881b6a09 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/bases.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../../src/util/bases.js"],"names":[],"mappings":";6BAIa,OAAO,8BAA8B,EAAE,cAAc,CAAC,GAAG,CAAC;iCAoD1D,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAAW;AADnF;;GAEG;AAEH;;GAEG;AACH,qBAFU,OAAO,kBAAkB,6DAAiB,CAWnD"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/xor.d.ts b/node_modules/uint8arrays/types/src/xor.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..deef5bb965a9e26283eab13a5cc6053bc59ef9ba ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/xor.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns the xor distance between two arrays -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function xor(a: Uint8Array, b: Uint8Array): Uint8Array; -+//# sourceMappingURL=xor.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/xor.d.ts.map b/node_modules/uint8arrays/types/src/xor.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..31db299b05a25b8439726a3e2fed3db618adad83 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/xor.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../src/xor.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,uBAHW,UAAU,KACV,UAAU,cAcpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..94b8c183d597efe32717777259261e28fc9c7853 ---- /dev/null -+++ b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/chai-parentheses/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/chai-bytes/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/aegir/dist/utils/chai.d.ts","../test/alloc.spec.js","../test/compare.spec.js","../test/concat.spec.js","../test/equals.spec.js","../test/from-string.spec.js","../test/to-string.spec.js","../test/xor.spec.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts","../src/concat.ts","../src/util/alloc-unsafe.js","../src/xor.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"c1f79c6d85cd84518fd7349588b3c61bdc189f58e3866f925cbf4631c81e31f9","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},{"version":"c6950fb69844190789c747a2ee2d49f34bd84273d692176d2c54d18d95fa3387","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},"33f12bdfbbb9a552db999b771a6e831fd0c94b321f958a1473def67b2b3e473f",{"version":"51a9c988758740ae2c6c44a76ef2438803df230b415b497293dfa5990508ab5a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b7210f350109bf3192235ed6e6ec55a0f5a19a4616daf84dc4196c052fa7cd18",{"version":"2cd140717148f456597ad7cd68b231e7ca6e5e92c60885b269e59880dae6019f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9368bbbf2a1dd5e9293b1a9ef06b4d0f02cbb18d5bde3b7f8fb134d7f0be4a93",{"version":"731062ffe7b99522b302e5615932f0956d50bcf2439cd6e38dc80af51982c1d7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"860a70e5ee208c81bfacb0bb46148ca0ff1566c65d29ccd8cd0d33963ad8bd40","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"58eb84f5c5f506c9dddeb6912d862fe15a523790d2aaf16dbb11d8dd203a79ca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[127],[63,127],[84,127],[87,127],[88,93,127],[89,99,100,107,116,126,127],[89,90,99,107,127],[91,127],[92,93,100,108,127],[93,116,123,127],[94,96,99,107,127],[95,127],[96,97,127],[98,99,127],[99,127],[99,100,101,116,126,127],[99,100,101,116,127],[102,107,116,126,127],[99,100,102,103,107,116,123,126,127],[102,104,116,123,126,127],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[99,105,127],[106,126,127],[96,99,107,116,127],[108,127],[109,127],[87,110,127],[111,125,127,131],[112,127],[113,127],[99,114,127],[114,115,127,129],[99,116,117,118,127],[116,118,127],[116,117,127],[119,127],[120,127],[99,121,122,127],[121,122,127],[93,107,123,127],[124,127],[107,125,127],[88,102,113,126,127],[93,127],[116,127,128],[127,129],[127,130],[88,93,99,101,110,116,126,127,129,131],[116,127,132],[127,138],[127,140],[99,116,127,134],[63,64,65,66,67,68,127],[63,64,127],[45,127],[52,54,55,56,127],[45,46,127],[53,127],[46,127],[46,48,127],[47,48,49,50,51,127],[41,127],[58,127],[42,43,44,59,60,61,127],[41,45,57,127],[41,69,127],[42,69,127],[43,69,127],[44,69,127],[58,59,60,69,127],[60,69,127],[61,69,127],[58],[45,56]],"referencedMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,62],[44,1],[59,63],[62,64],[60,63],[58,65],[61,62],[70,66],[71,67],[72,68],[73,69],[74,70],[75,71],[76,72]],"exportedModulesMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,73],[60,73],[58,74],[71,67],[73,69]],"semanticDiagnosticsPerFile":[77,64,68,66,63,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,86,133,102,103,104,134,105,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,139,138,140,141,142,69,67,65,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61,70,71,72,73,74,75,76],"affectedFilesPendingEmit":[[77,1],[64,1],[68,1],[66,1],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[86,1],[133,1],[102,1],[103,1],[104,1],[134,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[115,1],[116,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[132,1],[135,1],[136,1],[137,1],[139,1],[138,1],[140,1],[141,1],[142,1],[69,1],[67,1],[65,1],[56,1],[45,1],[57,1],[51,1],[47,1],[53,1],[55,1],[54,1],[48,1],[49,1],[46,1],[52,1],[50,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[41,1],[42,1],[43,1],[143,1],[44,1],[59,1],[62,1],[60,1],[144,1],[58,1],[61,1],[145,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1]]},"version":"4.3.5"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..140901c820b9d415726b42863170d121b6b1c25e ---- /dev/null -+++ b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e",{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[117],[64,117],[74,117],[77,117],[78,83,117],[79,89,90,97,106,116,117],[79,80,89,97,117],[81,117],[82,83,90,98,117],[83,106,113,117],[84,86,89,97,117],[85,117],[86,87,117],[88,89,117],[89,117],[89,90,91,106,116,117],[89,90,91,106,117],[92,97,106,116,117],[89,90,92,93,97,106,113,116,117],[92,94,106,113,116,117],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],[89,95,117],[96,116,117],[86,89,97,106,117],[98,117],[99,117],[77,100,117],[101,115,117,121],[102,117],[103,117],[89,104,117],[104,105,117,119],[89,106,107,108,117],[106,108,117],[106,107,117],[109,117],[110,117],[89,111,112,117],[111,112,117],[83,97,113,117],[114,117],[97,115,117],[78,92,103,116,117],[83,117],[106,117,118],[117,119],[117,120],[78,83,89,91,100,106,116,117,119,121],[106,117,122],[117,128],[117,130],[89,106,117,124],[45,117],[52,54,55,56,117],[45,46,117],[53,117],[46,117],[46,48,117],[47,48,49,50,51,117],[41,117],[58,117],[42,43,44,59,60,61,117],[41,45,57,117],[58],[45,56]],"referencedMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,60],[44,1],[59,61],[62,62],[60,61],[58,63],[61,60]],"exportedModulesMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,64],[60,64],[58,65]],"semanticDiagnosticsPerFile":[63,65,66,67,64,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,123,92,93,94,124,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,125,126,127,129,128,130,131,132,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61]},"version":"4.3.5"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/xor b/node_modules/uint8arrays/xor -new file mode 100644 -index 0000000000000000000000000000000000000000..53e53af9d8ad1a2b2a539e12c490e290d815d919 ---- /dev/null -+++ b/node_modules/uint8arrays/xor -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/xor.js') -diff --git a/package.json b/package.json -index fd6c44d2c7154a27f6049f2e7a50ba6550be8e9e..5cb378458c727a2f070785fb75be6f86330d7358 100644 ---- a/package.json -+++ b/package.json -@@ -53,5 +53,35 @@ - }, - "engines": { - "node": ">=18" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" - } - } diff --git a/.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch b/.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch deleted file mode 100644 index f5ec3618cb..0000000000 --- a/.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch +++ /dev/null @@ -1,4383 +0,0 @@ -diff --git a/node_modules/@walletconnect/types/LICENSE b/node_modules/@walletconnect/types/LICENSE -new file mode 100644 -index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb ---- /dev/null -+++ b/node_modules/@walletconnect/types/LICENSE -@@ -0,0 +1,190 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ Copyright 2021 WalletConnect, Inc. -+ -+ Licensed under the Apache License, Version 2.0 (the "License"); -+ you may not use this file except in compliance with the License. -+ You may obtain a copy of the License at -+ -+ http://www.apache.org/licenses/LICENSE-2.0 -+ -+ Unless required by applicable law or agreed to in writing, software -+ distributed under the License is distributed on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ See the License for the specific language governing permissions and -+ limitations under the License. -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/README.md b/node_modules/@walletconnect/types/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..24e8d4f88f8d9a482f1b56b9c5f68b81ca8c75fc ---- /dev/null -+++ b/node_modules/@walletconnect/types/README.md -@@ -0,0 +1,3 @@ -+# @walletconnect/types -+ -+Typings for WalletConnect Protocol -diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js b/node_modules/@walletconnect/types/dist/index.cjs.js -new file mode 100644 -index 0000000000000000000000000000000000000000..383ea10b1540f1d6e6754ef233f3973660033adb ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.cjs.js -@@ -0,0 +1,2 @@ -+"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var o=require("@walletconnect/events"),c=require("events");function i(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var n=i(c);class l extends o.IEvents{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class a{constructor(s,e,r){this.core=s,this.logger=e}}class u extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e,this.records=new Map}}class I{constructor(s,e){this.logger=s,this.core=e}}class h extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class g extends o.IEvents{constructor(s){super()}}class p{constructor(s,e,r,m){this.core=s,this.logger=e,this.name=r}}class E{constructor(){this.map=new Map}}class v extends o.IEvents{constructor(s,e){super(),this.relayer=s,this.logger=e}}class d{constructor(s,e){this.core=s,this.logger=e}}class y extends o.IEvents{constructor(s,e){super(),this.core=s,this.logger=e}}class C{constructor(s,e){this.logger=s,this.core=e}}class b{constructor(s,e,r){this.core=s,this.logger=e,this.store=r}}class f{constructor(s,e){this.projectId=s,this.logger=e}}class x{constructor(s,e,r){this.core=s,this.logger=e,this.telemetryEnabled=r}}class S extends n.default{constructor(){super()}}class M{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class P extends c.EventEmitter{constructor(){super()}}class _{constructor(s){this.client=s}}exports.ICore=l,exports.ICrypto=a,exports.IEchoClient=f,exports.IEngine=_,exports.IEngineEvents=P,exports.IEventClient=x,exports.IExpirer=y,exports.IJsonRpcHistory=u,exports.IKeyChain=d,exports.IMessageTracker=I,exports.IPairing=C,exports.IPublisher=h,exports.IRelayer=g,exports.ISignClient=M,exports.ISignClientEvents=S,exports.IStore=p,exports.ISubscriber=v,exports.ISubscriberTopicMap=E,exports.IVerify=b; -+//# sourceMappingURL=index.cjs.js.map -diff --git a/node_modules/@walletconnect/types/dist/index.cjs.js.map b/node_modules/@walletconnect/types/dist/index.cjs.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8a14e09ef9b12a361fb23647494e0a2dbecceccd ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.cjs.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.cjs.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/index.es.js b/node_modules/@walletconnect/types/dist/index.es.js -new file mode 100644 -index 0000000000000000000000000000000000000000..0aa0b206b6a1d30087fcee3ddafc1a909a822ef3 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.es.js -@@ -0,0 +1,2 @@ -+import{IEvents as o}from"@walletconnect/events";import c,{EventEmitter as i}from"events";class n extends o{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class l{constructor(s,t,e){this.core=s,this.logger=t}}class h extends o{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class g extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class u extends o{constructor(s){super()}}class p{constructor(s,t,e,f){this.core=s,this.logger=t,this.name=e}}class I{constructor(){this.map=new Map}}class d extends o{constructor(s,t){super(),this.relayer=s,this.logger=t}}class E{constructor(s,t){this.core=s,this.logger=t}}class x extends o{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t,e){this.core=s,this.logger=t,this.store=e}}class v{constructor(s,t){this.projectId=s,this.logger=t}}class C{constructor(s,t,e){this.core=s,this.logger=t,this.telemetryEnabled=e}}class b extends c{constructor(){super()}}class S{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class w extends i{constructor(){super()}}class M{constructor(s){this.client=s}}export{n as ICore,l as ICrypto,v as IEchoClient,M as IEngine,w as IEngineEvents,C as IEventClient,x as IExpirer,h as IJsonRpcHistory,E as IKeyChain,a as IMessageTracker,m as IPairing,g as IPublisher,u as IRelayer,S as ISignClient,b as ISignClientEvents,p as IStore,d as ISubscriber,I as ISubscriberTopicMap,y as IVerify}; -+//# sourceMappingURL=index.es.js.map -diff --git a/node_modules/@walletconnect/types/dist/index.es.js.map b/node_modules/@walletconnect/types/dist/index.es.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8f45be96f809d07ac1d2b206f7483e7b1620eb3c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.es.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.es.js","sources":["../src/core/core.ts","../src/core/crypto.ts","../src/core/history.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/relayer.ts","../src/core/store.ts","../src/core/subscriber.ts","../src/core/keychain.ts","../src/core/expirer.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/sign-client/client.ts","../src/sign-client/engine.ts"],"sourcesContent":["import { IEvents } from \"@walletconnect/events\";\nimport { IHeartBeat } from \"@walletconnect/heartbeat\";\nimport { IKeyValueStorage, KeyValueStorageOptions } from \"@walletconnect/keyvaluestorage\";\n\nimport { ICrypto } from \"./crypto\";\nimport { IRelayer } from \"./relayer\";\nimport { IKeyChain } from \"./keychain\";\nimport { IJsonRpcHistory } from \"./history\";\nimport { IExpirer } from \"./expirer\";\nimport { IPairing } from \"./pairing\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { IVerify } from \"./verify\";\nimport { IEchoClient } from \"./echo\";\nimport { IEventClient } from \"./events\";\nexport declare namespace CoreTypes {\n interface Options {\n projectId?: string;\n name?: string;\n relayUrl?: string;\n logger?: string | Logger;\n keychain?: IKeyChain;\n storage?: IKeyValueStorage;\n storageOptions?: KeyValueStorageOptions;\n maxLogBlobSizeInBytes?: number;\n customStoragePrefix?: string;\n telemetryEnabled?: boolean;\n }\n\n interface Metadata {\n name: string;\n description: string;\n url: string;\n icons: string[];\n verifyUrl?: string;\n redirect?: {\n native?: string;\n universal?: string;\n linkMode?: boolean;\n };\n }\n}\n\nexport abstract class ICore extends IEvents {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly relayUrl?: string;\n public abstract readonly projectId?: string;\n public abstract readonly customStoragePrefix: string;\n\n public abstract logger: Logger;\n public abstract heartbeat: IHeartBeat;\n public abstract crypto: ICrypto;\n public abstract relayer: IRelayer;\n public abstract storage: IKeyValueStorage;\n public abstract history: IJsonRpcHistory;\n public abstract expirer: IExpirer;\n public abstract pairing: IPairing;\n public abstract verify: IVerify;\n public abstract echoClient: IEchoClient;\n public abstract linkModeSupportedApps: string[];\n public abstract eventClient: IEventClient;\n\n constructor(public opts?: CoreTypes.Options) {\n super();\n }\n\n public abstract start(): Promise;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["IEvents","opts","core","logger","keychain","relayer","name","storagePrefix","store","projectId","telemetryEnabled","EventEmmiter","EventEmitter","client"],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/index.umd.js b/node_modules/@walletconnect/types/dist/index.umd.js -new file mode 100644 -index 0000000000000000000000000000000000000000..87fefecd1119ee6195aae42974facd4e621d51b6 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/index.umd.js -@@ -0,0 +1,2 @@ -+(function(c,l){typeof exports=="object"&&typeof module<"u"?l(exports):typeof define=="function"&&define.amd?define(["exports"],l):(c=typeof globalThis<"u"?globalThis:c||self,l(c["@walletconnect/types"]={}))})(this,function(c){"use strict";class l{}class M extends l{constructor(e){super(),this.opts=e,this.protocol="wc",this.version=2}}class R{constructor(e,n,r){this.core=e,this.logger=n}}class j extends l{constructor(e,n){super(),this.core=e,this.logger=n,this.records=new Map}}class x{constructor(e,n){this.logger=e,this.core=n}}class P extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class N extends l{constructor(e){super()}}class S{constructor(e,n,r,s){this.core=e,this.logger=n,this.name=r}}class T{constructor(){this.map=new Map}}class A extends l{constructor(e,n){super(),this.relayer=e,this.logger=n}}class K{constructor(e,n){this.core=e,this.logger=n}}class F extends l{constructor(e,n){super(),this.core=e,this.logger=n}}class W{constructor(e,n){this.logger=e,this.core=n}}class k{constructor(e,n,r){this.core=e,this.logger=n,this.store=r}}class H{constructor(e,n){this.projectId=e,this.logger=n}}class J{constructor(e,n,r){this.core=e,this.logger=n,this.telemetryEnabled=r}}var v={exports:{}},a=typeof Reflect=="object"?Reflect:null,g=a&&typeof a.apply=="function"?a.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},p;a&&typeof a.ownKeys=="function"?p=a.ownKeys:Object.getOwnPropertySymbols?p=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:p=function(e){return Object.getOwnPropertyNames(e)};function U(t){console&&console.warn&&console.warn(t)}var y=Number.isNaN||function(e){return e!==e};function o(){o.init.call(this)}v.exports=o,v.exports.once=B,o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var m=10;function d(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return m},set:function(t){if(typeof t!="number"||t<0||y(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");m=t}}),o.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||y(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function L(t){return t._maxListeners===void 0?o.defaultMaxListeners:t._maxListeners}o.prototype.getMaxListeners=function(){return L(this)},o.prototype.emit=function(e){for(var n=[],r=1;r0&&(i=n[0]),i instanceof Error)throw i;var f=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw f.context=i,f}var h=u[e];if(h===void 0)return!1;if(typeof h=="function")g(h,this,n);else for(var O=h.length,Z=w(h,O),r=0;r0&&i.length>s&&!i.warned){i.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=t,f.type=e,f.count=i.length,U(f)}return t}o.prototype.addListener=function(e,n){return I(this,e,n,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,n){return I(this,e,n,!0)};function V(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function b(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},s=V.bind(r);return s.listener=n,r.wrapFn=s,s}o.prototype.once=function(e,n){return d(n),this.on(e,b(this,e,n)),this},o.prototype.prependOnceListener=function(e,n){return d(n),this.prependListener(e,b(this,e,n)),this},o.prototype.removeListener=function(e,n){var r,s,u,i,f;if(d(n),s=this._events,s===void 0)return this;if(r=s[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete s[e],s.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(u=-1,i=r.length-1;i>=0;i--)if(r[i]===n||r[i].listener===n){f=r[i].listener,u=i;break}if(u<0)return this;u===0?r.shift():q(r,u),r.length===1&&(s[e]=r[0]),s.removeListener!==void 0&&this.emit("removeListener",e,f||n)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var n,r,s;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var u=Object.keys(r),i;for(s=0;s=0;s--)this.removeListener(e,n[s]);return this};function E(t,e,n){var r=t._events;if(r===void 0)return[];var s=r[e];return s===void 0?[]:typeof s=="function"?n?[s.listener||s]:[s]:n?z(s):w(s,s.length)}o.prototype.listeners=function(e){return E(this,e,!0)},o.prototype.rawListeners=function(e){return E(this,e,!1)},o.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):_.call(t,e)},o.prototype.listenerCount=_;function _(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}o.prototype.eventNames=function(){return this._eventsCount>0?p(this._events):[]};function w(t,e){for(var n=new Array(e),r=0;r;\n public abstract dispatchEnvelope(params: {\n topic: string;\n message: string;\n sessionExists: boolean;\n }): void;\n\n public abstract addLinkModeSupportedApp(universalLink: string): void;\n}\n","import { JsonRpcPayload } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\nimport { IKeyChain } from \"./keychain\";\n\nexport declare namespace CryptoTypes {\n export type EncodingType = \"base64pad\" | \"base64url\";\n\n export interface Participant {\n publicKey: string;\n }\n\n export interface KeyPair {\n privateKey: string;\n publicKey: string;\n }\n\n export interface EncryptParams {\n message: string;\n symKey: string;\n type?: number;\n iv?: string;\n senderPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecryptParams {\n symKey: string;\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingParams {\n type: Uint8Array;\n sealed: Uint8Array;\n iv: Uint8Array;\n senderPublicKey?: Uint8Array;\n encoding?: EncodingType;\n }\n\n export interface DecodingParams {\n encoded: string;\n encoding?: EncodingType;\n }\n\n export interface EncodeOptions {\n type?: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface DecodeOptions {\n receiverPublicKey?: string;\n encoding?: EncodingType;\n }\n\n export interface EncodingValidation {\n type: number;\n senderPublicKey?: string;\n receiverPublicKey?: string;\n }\n\n export interface TypeOneParams {\n type: 1;\n senderPublicKey: string;\n receiverPublicKey: string;\n }\n}\n\nexport abstract class ICrypto {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract keychain: IKeyChain;\n\n public abstract readonly randomSessionIdentifier: string;\n\n constructor(\n public core: ICore,\n public logger: Logger,\n // @ts-ignore\n keychain?: IKeyChain,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract hasKeys(tag: string): boolean;\n\n public abstract getClientId(): Promise;\n\n public abstract generateKeyPair(): Promise;\n\n public abstract generateSharedKey(\n selfPublicKey: string,\n peerPublicKey: string,\n overrideTopic?: string,\n ): Promise;\n\n public abstract setSymKey(symKey: string, overrideTopic?: string): Promise;\n\n public abstract deleteKeyPair(publicKey: string): Promise;\n\n public abstract deleteSymKey(topic: string): Promise;\n\n public abstract encode(\n topic: string,\n payload: JsonRpcPayload,\n opts?: CryptoTypes.EncodeOptions,\n ): Promise;\n\n public abstract decode(\n topic: string,\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n ): Promise;\n\n public abstract signJWT(aud: string): Promise;\n public abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number;\n public abstract getPayloadSenderPublicKey(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n ): string | undefined;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n RequestArguments,\n} from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport interface JsonRpcRecord {\n id: number;\n topic: string;\n request: RequestArguments;\n chainId?: string;\n response?: { result: any } | { error: ErrorResponse };\n expiry?: number;\n}\n\nexport interface RequestEvent {\n topic: string;\n request: JsonRpcRequest;\n chainId?: string;\n}\n\nexport abstract class IJsonRpcHistory extends IEvents {\n public records = new Map();\n\n public abstract readonly context: string;\n\n public abstract readonly size: number;\n\n public abstract readonly keys: number[];\n\n public abstract readonly values: JsonRpcRecord[];\n\n public abstract readonly pending: RequestEvent[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void;\n\n public abstract get(topic: string, id: number): Promise;\n\n public abstract resolve(response: JsonRpcResponse): Promise;\n\n public abstract delete(topic: string, id?: number): void;\n\n public abstract exists(topic: string, id: number): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport type MessageRecord = Record;\n\nexport abstract class IMessageTracker {\n public abstract messages: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract set(topic: string, message: string): Promise;\n\n public abstract get(topic: string): MessageRecord;\n\n public abstract has(topic: string, message: string): boolean;\n\n public abstract del(topic: string): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace PublisherTypes {\n export interface Params {\n topic: string;\n message: string;\n opts: Omit;\n }\n}\n\nexport abstract class IPublisher extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\nimport { IMessageTracker } from \"./messages\";\nimport { IPublisher } from \"./publisher\";\nimport { ISubscriber } from \"./subscriber\";\n\nexport declare namespace RelayerTypes {\n export interface ProtocolOptions {\n protocol: string;\n data?: string;\n }\n export interface PublishOptions {\n relay?: ProtocolOptions;\n ttl?: number;\n prompt?: boolean;\n tag?: number;\n id?: number;\n internal?: {\n throwOnFailedPublish?: boolean;\n };\n attestation?: string;\n }\n\n export type TransportType = \"relay\" | \"link_mode\";\n\n export interface SubscribeOptions {\n relay?: ProtocolOptions;\n transportType?: TransportType;\n }\n\n export interface UnsubscribeOptions {\n id?: string;\n relay: ProtocolOptions;\n }\n\n export type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions;\n\n export interface PublishPayload {\n topic: string;\n message: string;\n opts?: RelayerTypes.PublishOptions;\n }\n export interface MessageEvent {\n topic: string;\n message: string;\n publishedAt: number;\n transportType?: TransportType;\n attestation?: string;\n }\n\n export interface RpcUrlParams {\n protocol: string;\n version: number;\n auth: string;\n relayUrl: string;\n sdkVersion: string;\n projectId?: string;\n useOnCloseEvent?: boolean;\n bundleId?: string;\n }\n}\n\nexport interface RelayerOptions {\n core: ICore;\n logger?: string | Logger;\n relayUrl?: string;\n projectId?: string;\n}\n\nexport interface RelayerClientMetadata {\n protocol: string;\n version: number;\n env: string;\n host?: string;\n}\n\nexport abstract class IRelayer extends IEvents {\n public abstract core: ICore;\n\n public abstract logger: Logger;\n\n public abstract subscriber: ISubscriber;\n\n public abstract publisher: IPublisher;\n\n public abstract messages: IMessageTracker;\n\n public abstract provider: IJsonRpcProvider;\n\n public abstract name: string;\n\n public abstract transportExplicitlyClosed: boolean;\n\n public abstract readonly context: string;\n\n public abstract readonly connected: boolean;\n\n public abstract readonly connecting: boolean;\n\n constructor(\n // @ts-ignore\n opts: RelayerOptions,\n ) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract publish(\n topic: string,\n message: string,\n opts?: RelayerTypes.PublishOptions,\n ): Promise;\n\n public abstract request(request: RequestArguments): Promise;\n\n public abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n public abstract transportClose(): Promise;\n public abstract transportOpen(relayUrl?: string): Promise;\n public abstract restartTransport(relayUrl?: string): Promise;\n public abstract confirmOnlineStateOrThrow(): Promise;\n public abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise;\n public abstract onLinkMessageEvent(\n messageEvent: RelayerTypes.MessageEvent,\n opts?: { sessionExists?: boolean },\n ): Promise;\n}\n","import { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IStore {\n public abstract map: Map;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: Key[];\n\n public abstract readonly values: Value[];\n\n constructor(\n public core: ICore,\n public logger: Logger,\n public name: string,\n // @ts-ignore\n storagePrefix?: string,\n ) {}\n\n public abstract init(): Promise;\n\n public abstract set(key: Key, value: Value): Promise;\n\n public abstract get(key: Key): Value;\n\n public abstract getAll(filter?: Partial): Value[];\n\n public abstract update(key: Key, update: Partial): Promise;\n\n public abstract delete(key: Key, reason: ErrorResponse): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { IRelayer, RelayerTypes } from \"./relayer\";\n\nexport declare namespace SubscriberTypes {\n export interface Params extends RelayerTypes.SubscribeOptions {\n topic: string;\n }\n\n export interface Active extends Params {\n id: string;\n }\n}\n\nexport declare namespace SubscriberEvents {\n export type Created = SubscriberTypes.Active;\n\n export interface Deleted extends SubscriberTypes.Active {\n reason: ErrorResponse;\n }\n\n export type Expired = Deleted;\n}\n\nexport abstract class ISubscriberTopicMap {\n public map = new Map();\n\n public abstract readonly topics: string[];\n\n public abstract set(topic: string, id: string): void;\n\n public abstract get(topic: string): string[];\n\n public abstract exists(topic: string, id: string): boolean;\n\n public abstract delete(topic: string, id?: string): void;\n\n public abstract clear(): void;\n}\n\nexport abstract class ISubscriber extends IEvents {\n public abstract subscriptions: Map;\n\n public abstract topicMap: ISubscriberTopicMap;\n\n public abstract pending: Map;\n\n public abstract readonly length: number;\n\n public abstract readonly ids: string[];\n\n public abstract readonly values: SubscriberTypes.Active[];\n\n public abstract readonly topics: string[];\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public relayer: IRelayer, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract subscribe(\n topic: string,\n opts?: RelayerTypes.SubscribeOptions,\n ): Promise;\n\n public abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise;\n\n public abstract isSubscribed(topic: string): Promise;\n\n public abstract start(): Promise;\n\n public abstract stop(): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport abstract class IKeyChain {\n public abstract keychain: Map;\n\n public abstract name: string;\n\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger) {}\n\n public abstract init(): Promise;\n\n public abstract has(tag: string, opts?: any): boolean;\n\n public abstract set(tag: string, key: string, opts?: any): Promise;\n\n public abstract get(tag: string, opts?: any): string;\n\n public abstract del(tag: string, opts?: any): Promise;\n}\n","import { IEvents } from \"@walletconnect/events\";\nimport { Logger } from \"@walletconnect/logger\";\n\nimport { ICore } from \"./core\";\n\nexport declare namespace ExpirerTypes {\n interface Expiration {\n target: string;\n expiry: number;\n }\n\n interface Created {\n target: string;\n expiration: Expiration;\n }\n\n interface Deleted {\n target: string;\n expiration: Expiration;\n }\n\n interface Expired {\n target: string;\n expiration: Expiration;\n }\n}\n\nexport abstract class IExpirer extends IEvents {\n public abstract name: string;\n\n public abstract readonly context: string;\n\n public abstract readonly length: number;\n\n public abstract readonly keys: string[];\n\n public abstract readonly values: ExpirerTypes.Expiration[];\n\n constructor(public core: ICore, public logger: Logger) {\n super();\n }\n\n public abstract init(): Promise;\n\n public abstract has(key: string | number): boolean;\n\n public abstract set(key: string | number, expiry: number): void;\n\n public abstract get(key: string | number): ExpirerTypes.Expiration;\n\n public abstract del(key: string | number): void;\n}\n","import {\n ErrorResponse,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport EventEmitter from \"events\";\n\nimport { ICore, CoreTypes } from \"./core\";\nimport { IStore } from \"./store\";\n\nimport { RelayerTypes } from \"../core/relayer\";\nimport { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace PairingTypes {\n interface Struct {\n topic: string;\n expiry: number;\n relay: RelayerTypes.ProtocolOptions;\n active: boolean;\n peerMetadata?: CoreTypes.Metadata;\n methods?: string[];\n }\n}\n\nexport declare namespace PairingJsonRpcTypes {\n // -- core ------------------------------------------------------- //\n type DefaultResponse = true | ErrorResponse;\n\n type WcMethod = \"wc_pairingDelete\" | \"wc_pairingPing\";\n\n type Error = ErrorResponse;\n\n // -- requests --------------------------------------------------- //\n\n interface RequestParams {\n wc_pairingDelete: {\n code: number;\n message: string;\n };\n wc_pairingPing: Record;\n }\n\n // -- responses -------------------------------------------------- //\n interface Results {\n wc_pairingDelete: true;\n wc_pairingPing: true;\n }\n\n // -- events ----------------------------------------------------- //\n interface EventCallback {\n topic: string;\n payload: T;\n }\n}\n\nexport type IPairingStore = IStore;\n\nexport abstract class IPairing {\n public abstract name: string;\n public abstract readonly context: string;\n public abstract events: EventEmitter;\n public abstract pairings: IPairingStore;\n\n constructor(public logger: Logger, public core: ICore) {}\n\n public abstract init(): Promise;\n\n public abstract pair(params: {\n uri: string;\n activatePairing?: boolean;\n }): Promise;\n\n // for proposer to create inactive pairing\n public abstract create(params?: {\n methods?: string[];\n transportType?: RelayerTypes.SubscribeOptions[\"transportType\"];\n }): Promise<{ topic: string; uri: string }>;\n\n // for either to activate a previously created pairing\n public abstract activate(params: { topic: string }): Promise;\n\n // for both to subscribe on methods requests\n public abstract register(params: { methods: string[] }): void;\n\n // for either to update the expiry of an existing pairing.\n public abstract updateExpiry(params: { topic: string; expiry: number }): Promise;\n\n // for either to update the metadata of an existing pairing.\n public abstract updateMetadata(params: {\n topic: string;\n metadata: CoreTypes.Metadata;\n }): Promise;\n\n // query pairings\n public abstract getPairings(): PairingTypes.Struct[];\n\n // for either to ping a peer\n public abstract ping(params: { topic: string }): Promise;\n\n // for either peer to disconnect a pairing\n public abstract disconnect(params: { topic: string }): Promise;\n}\n\nexport interface IPairingPrivate {\n sendRequest(\n topic: string,\n method: M,\n params: PairingJsonRpcTypes.RequestParams[M],\n ): Promise;\n\n sendResult(\n id: number,\n topic: string,\n result: PairingJsonRpcTypes.Results[M],\n ): Promise;\n\n sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise;\n\n onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void;\n\n onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise;\n\n onPairingPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onPairingPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onPairingDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise;\n\n onUnknownRpcMethodResponse(method: string): void;\n\n deletePairing(topic: string, expirerHasDeleted?: boolean): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport { ICore } from \"./core\";\n\nexport declare namespace Verify {\n export interface Context {\n verified: {\n origin: string;\n validation: \"UNKNOWN\" | \"VALID\" | \"INVALID\";\n verifyUrl: string;\n isScam?: boolean;\n };\n }\n}\n\nexport abstract class IVerify {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public store: IKeyValueStorage) {}\n\n public abstract register(params: {\n id: string;\n decryptedId: string;\n }): Promise;\n\n public abstract resolve(params: {\n attestationId?: string;\n hash?: string;\n encryptedId?: string;\n verifyUrl?: string;\n }): Promise<{ origin: string; isScam?: boolean }>;\n}\n","import { Logger } from \"@walletconnect/logger\";\n\nexport declare namespace EchoClientTypes {\n type RegisterDeviceTokenParams = {\n clientId: string;\n token: string;\n notificationType: \"fcm\" | \"apns\" | \"apns-sandbox\" | \"noop\";\n enableEncrypted?: boolean;\n };\n}\nexport abstract class IEchoClient {\n public abstract readonly context: string;\n constructor(public projectId: string, public logger: Logger) {}\n\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise;\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport { ICore } from \"./core\";\n\nexport declare namespace EventClientTypes {\n export interface Event {\n eventId: string;\n bundleId: string;\n timestamp: number;\n props: Props;\n addTrace: (trace: string) => void;\n setError: (error: string) => void;\n }\n\n export interface Props {\n event: string;\n type: string;\n properties: Properties;\n }\n\n export interface Properties {\n topic: string;\n trace: Trace;\n }\n\n export type Trace = string[];\n}\n\nexport abstract class IEventClient {\n public abstract readonly context: string;\n\n constructor(public core: ICore, public logger: Logger, public telemetryEnabled: boolean) {}\n\n public abstract createEvent(params: {\n event?: \"ERROR\";\n type?: string;\n properties: {\n topic: string;\n trace: EventClientTypes.Trace;\n };\n }): EventClientTypes.Event;\n\n public abstract getEvent(params: {\n eventId?: string;\n topic?: string;\n }): EventClientTypes.Event | undefined;\n\n public abstract deleteEvent(params: { eventId: string }): void;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { Logger } from \"@walletconnect/logger\";\nimport EventEmmiter from \"events\";\nimport { CoreTypes, ICore } from \"../core/core\";\nimport { IEngine } from \"./engine\";\nimport { IPendingRequest } from \"./pendingRequest\";\nimport { IProposal, ProposalTypes } from \"./proposal\";\nimport { ISession, SessionTypes } from \"./session\";\nimport { Verify } from \"../core/verify\";\nimport { IAuth, AuthTypes } from \"./auth\";\nimport { RelayerTypes } from \"../core\";\n\nexport declare namespace SignClientTypes {\n type Event =\n | \"session_proposal\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"session_delete\"\n | \"session_expire\"\n | \"session_request\"\n | \"session_request_sent\"\n | \"session_event\"\n | \"session_authenticate\"\n | \"proposal_expire\"\n | \"session_request_expire\";\n\n interface BaseEventArgs {\n id: number;\n topic: string;\n params: T;\n }\n interface EventArguments {\n session_proposal: {\n verifyContext: Verify.Context;\n } & Omit, \"topic\">;\n session_update: BaseEventArgs<{ namespaces: SessionTypes.Namespaces }>;\n session_extend: Omit;\n session_ping: Omit;\n session_delete: Omit;\n session_expire: { topic: string };\n session_request: {\n verifyContext: Verify.Context;\n } & BaseEventArgs<{\n request: { method: string; params: any; expiryTimestamp?: number };\n chainId: string;\n }>;\n session_request_sent: {\n request: { method: string; params: any };\n topic: string;\n chainId: string;\n id: number;\n };\n session_event: BaseEventArgs<{\n event: { name: string; data: any };\n chainId: string;\n }>;\n session_authenticate: {\n verifyContext: Verify.Context;\n transportType?: RelayerTypes.TransportType;\n } & BaseEventArgs;\n proposal_expire: { id: number };\n session_request_expire: { id: number };\n }\n\n type Metadata = CoreTypes.Metadata;\n\n type SignConfig = {\n disableRequestQueue?: boolean;\n };\n\n interface Options extends CoreTypes.Options {\n core?: ICore;\n metadata?: Metadata;\n signConfig?: SignConfig;\n }\n}\n\nexport abstract class ISignClientEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: E,\n args: SignClientTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: (\n event: E,\n listener: (args: SignClientTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeAllListeners: (event: E) => this;\n}\n\nexport abstract class ISignClient {\n public readonly protocol = \"wc\";\n public readonly version = 2;\n\n public abstract readonly name: string;\n public abstract readonly context: string;\n public abstract readonly metadata: SignClientTypes.Metadata;\n\n public abstract core: ICore;\n public abstract logger: Logger;\n public abstract events: ISignClientEvents;\n public abstract engine: IEngine;\n public abstract session: ISession;\n public abstract proposal: IProposal;\n public abstract pendingRequest: IPendingRequest;\n public abstract auth: IAuth;\n public abstract signConfig?: SignClientTypes.SignConfig;\n\n constructor(public opts?: SignClientTypes.Options) {}\n\n public abstract connect: IEngine[\"connect\"];\n public abstract pair: IEngine[\"pair\"];\n public abstract approve: IEngine[\"approve\"];\n public abstract reject: IEngine[\"reject\"];\n public abstract update: IEngine[\"update\"];\n public abstract extend: IEngine[\"extend\"];\n public abstract request: IEngine[\"request\"];\n public abstract respond: IEngine[\"respond\"];\n public abstract ping: IEngine[\"ping\"];\n public abstract emit: IEngine[\"emit\"];\n public abstract disconnect: IEngine[\"disconnect\"];\n public abstract find: IEngine[\"find\"];\n public abstract getPendingSessionRequests: IEngine[\"getPendingSessionRequests\"];\n public abstract authenticate: IEngine[\"authenticate\"];\n public abstract formatAuthMessage: IEngine[\"formatAuthMessage\"];\n public abstract approveSessionAuthenticate: IEngine[\"approveSessionAuthenticate\"];\n public abstract rejectSessionAuthenticate: IEngine[\"rejectSessionAuthenticate\"];\n}\n","import {\n JsonRpcResponse,\n JsonRpcRequest,\n ErrorResponse,\n JsonRpcResult,\n JsonRpcError,\n} from \"@walletconnect/jsonrpc-types\";\nimport { ISignClient } from \"./client\";\nimport { RelayerTypes } from \"../core/relayer\";\nimport { SessionTypes } from \"./session\";\nimport { ProposalTypes } from \"./proposal\";\nimport { PairingTypes } from \"../core/pairing\";\nimport { JsonRpcTypes } from \"./jsonrpc\";\nimport { EventEmitter } from \"events\";\nimport { PendingRequestTypes } from \"./pendingRequest\";\nimport { AuthTypes } from \"./auth\";\nimport { CryptoTypes } from \"../core\";\n\nexport declare namespace EngineTypes {\n type Event =\n | \"session_connect\"\n | \"session_approve\"\n | \"session_update\"\n | \"session_extend\"\n | \"session_ping\"\n | \"pairing_ping\"\n | \"session_request\";\n\n interface EventArguments {\n session_connect: {\n error?: ErrorResponse;\n session?: SessionTypes.Struct;\n };\n session_approve: { error?: ErrorResponse };\n session_update: { error?: ErrorResponse };\n session_extend: { error?: ErrorResponse };\n session_ping: { error?: ErrorResponse };\n pairing_ping: { error?: ErrorResponse };\n session_request: { error?: ErrorResponse; result?: any };\n }\n\n interface UriParameters {\n protocol: string;\n version: number;\n topic: string;\n symKey: string;\n relay: RelayerTypes.ProtocolOptions;\n methods?: string[];\n expiryTimestamp?: number;\n }\n\n interface EventCallback {\n topic: string;\n payload: T;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }\n\n interface ConnectParams {\n requiredNamespaces?: ProposalTypes.RequiredNamespaces;\n optionalNamespaces?: ProposalTypes.OptionalNamespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n pairingTopic?: string;\n relays?: RelayerTypes.ProtocolOptions[];\n }\n\n interface PairParams {\n uri: string;\n }\n\n interface ApproveParams {\n id: number;\n namespaces: SessionTypes.Namespaces;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }\n\n interface RejectParams {\n id: number;\n reason: ErrorResponse;\n }\n\n interface UpdateParams {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }\n\n interface ExtendParams {\n topic: string;\n }\n\n interface RequestParams {\n topic: string;\n request: {\n method: string;\n params: any;\n };\n chainId: string;\n expiry?: number;\n }\n\n interface RespondParams {\n topic: string;\n response: JsonRpcResponse;\n }\n\n interface EmitParams {\n topic: string;\n event: {\n name: string;\n data: any;\n };\n chainId: string;\n }\n\n interface PingParams {\n topic: string;\n }\n\n interface DisconnectParams {\n topic: string;\n reason: ErrorResponse;\n }\n\n interface FindParams {\n requiredNamespaces: ProposalTypes.RequiredNamespaces;\n }\n\n type AcknowledgedPromise = Promise<{ acknowledged: () => Promise }>;\n\n type SessionAuthenticateResponsePromise = {\n uri: string;\n response: () => Promise;\n };\n\n interface RpcOpts {\n req: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n res: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n reject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n autoReject?: RelayerTypes.PublishOptions & {\n ttl: number;\n };\n }\n\n type RpcOptsMap = Record;\n\n type EngineQueue = {\n state: \"IDLE\" | \"ACTIVE\";\n queue: T[];\n };\n}\n\nexport abstract class IEngineEvents extends EventEmitter {\n constructor() {\n super();\n }\n\n public abstract emit: (\n event: string,\n args: EngineTypes.EventArguments[E],\n ) => boolean;\n\n public abstract once: (\n event: string,\n listener: (args: EngineTypes.EventArguments[E]) => any,\n ) => this;\n}\n\n// -- private method interface -------------------------------------- //\n\nexport interface EnginePrivate {\n sendRequest(args: {\n topic: string;\n method: M;\n params: JsonRpcTypes.RequestParams[M];\n expiry?: number;\n relayRpcId?: number;\n clientRpcId?: number;\n throwOnFailedPublish?: boolean;\n appLink?: string;\n }): Promise;\n\n sendResult(args: {\n id: number;\n topic: string;\n result: JsonRpcTypes.Results[M];\n throwOnFailedPublish?: boolean;\n encodeOpts?: CryptoTypes.EncodeOptions;\n appLink?: string;\n }): Promise;\n\n sendError(params: {\n id: number;\n topic: string;\n error: JsonRpcTypes.Error;\n encodeOpts?: CryptoTypes.EncodeOptions;\n rpcOpts?: RelayerTypes.PublishOptions;\n appLink?: string;\n }): Promise;\n\n onRelayEventRequest(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventResponse(event: EngineTypes.EventCallback): Promise;\n\n onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise;\n\n shouldIgnorePairingRequest(params: { topic: string; requestMethod: string }): boolean;\n\n deleteSession(params: {\n topic: string;\n expirerHasDeleted?: boolean;\n id?: number;\n emitEvent?: boolean;\n }): Promise;\n\n deleteProposal(id: number, expirerHasDeleted?: boolean): Promise;\n\n setExpiry(topic: string, expiry: number): Promise;\n\n setProposal(id: number, proposal: ProposalTypes.Struct): Promise;\n\n setAuthRequest(\n id: number,\n params: {\n request: AuthTypes.SessionAuthenticateRequest;\n pairingTopic: string;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n },\n ): Promise;\n\n setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise;\n\n deletePendingSessionRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n deletePendingAuthRequest(\n id: number,\n reason: ErrorResponse,\n expirerHasDeleted?: boolean,\n ): Promise;\n\n cleanupDuplicatePairings(session: SessionTypes.Struct): Promise;\n\n cleanup(): Promise;\n\n onSessionProposeRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionProposeResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n transportType?: RelayerTypes.MessageEvent[\"transportType\"],\n ): Promise;\n\n onSessionSettleRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionSettleResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): Promise;\n\n onSessionUpdateRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionUpdateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionExtendRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionExtendResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionPingRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionPingResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionDeleteRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionRequestResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n onSessionEventRequest(\n topic: string,\n payload: JsonRpcRequest,\n ): Promise;\n\n onSessionAuthenticateRequest(params: {\n topic: string;\n payload: JsonRpcRequest;\n transportType?: RelayerTypes.MessageEvent[\"transportType\"];\n attestation?: string;\n encryptedId?: string;\n }): Promise;\n\n onSessionAuthenticateResponse(\n topic: string,\n payload: JsonRpcResult | JsonRpcError,\n ): void;\n\n // -- Validators ---------------------------------------------------- //\n isValidConnect(params: EngineTypes.ConnectParams): Promise;\n\n isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams[\"wc_sessionSettle\"]): void;\n\n isValidApprove(params: EngineTypes.ApproveParams): Promise;\n\n isValidReject(params: EngineTypes.RejectParams): Promise;\n\n isValidUpdate(params: EngineTypes.UpdateParams): Promise;\n\n isValidExtend(params: EngineTypes.ExtendParams): Promise;\n\n isValidRequest(params: EngineTypes.RequestParams): Promise;\n\n isValidRespond(params: EngineTypes.RespondParams): Promise;\n\n isValidPing(params: EngineTypes.PingParams): Promise;\n\n isValidEmit(params: EngineTypes.EmitParams): Promise;\n\n isValidDisconnect(params: EngineTypes.DisconnectParams): Promise;\n}\n\n// -- class interface ----------------------------------------------- //\n\nexport abstract class IEngine {\n constructor(public client: ISignClient) {}\n\n public abstract init(): Promise;\n\n public abstract connect(\n params: EngineTypes.ConnectParams,\n ): Promise<{ uri?: string; approval: () => Promise }>;\n\n public abstract pair(params: EngineTypes.PairParams): Promise;\n\n public abstract approve(\n params: EngineTypes.ApproveParams,\n ): Promise<{ topic: string; acknowledged: () => Promise }>;\n\n public abstract reject(params: EngineTypes.RejectParams): Promise;\n\n public abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise;\n\n public abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise;\n\n public abstract request(params: EngineTypes.RequestParams): Promise;\n\n public abstract respond(params: EngineTypes.RespondParams): Promise;\n\n public abstract emit(params: EngineTypes.EmitParams): Promise;\n\n public abstract ping(params: EngineTypes.PingParams): Promise;\n\n public abstract disconnect(params: EngineTypes.DisconnectParams): Promise;\n\n public abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[];\n\n public abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[];\n\n public abstract authenticate: (\n params: AuthTypes.SessionAuthenticateParams,\n walletUniversalLink?: string,\n ) => Promise;\n\n public abstract approveSessionAuthenticate: (\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ) => Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise;\n\n public abstract processRelayMessageCache(): void;\n}\n"],"names":["r","e","t","eventsModule","events","s"],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..460b34629a0b911734ecaba508d50421126e9edd ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/tsconfig.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../src/core/keychain.ts","../src/core/crypto.ts","../src/core/messages.ts","../src/core/publisher.ts","../src/core/subscriber.ts","../src/core/relayer.ts","../src/core/history.ts","../src/core/expirer.ts","../src/core/store.ts","../src/core/pairing.ts","../src/core/verify.ts","../src/core/echo.ts","../src/core/events.ts","../src/core/core.ts","../src/core/index.ts","../src/sign-client/proposal.ts","../src/sign-client/auth.ts","../src/sign-client/session.ts","../src/sign-client/jsonrpc.ts","../src/sign-client/pendingRequest.ts","../src/sign-client/engine.ts","../src/sign-client/client.ts","../src/sign-client/index.ts","../src/index.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d",{"version":"a771f3182c046f8b2d4a8b253d84037d1d6caf48139a5f329d60f8ca3cb7325d","signature":"1c697d5571b23e58c638327b0959ab8ce7a3a1192f3fa5847c545e8a35a88b81"},{"version":"b4cf311d307aad665c290a647adfa63c0d4c4978e90e1a800ac3284d9b6e768a","signature":"cac3cd6c55cbdb4092834342a8c256cc34ede50f83c8d33586236889bc7dd47b"},{"version":"211fbc870d26d33bd0530050e15ea959079e66d57c31b2c768cb835057090da5","signature":"8b8ae4783419c0cbba56335ae9af63181593d876a542d61a823a887a5b3fc713"},{"version":"db4f07433024766257b45c8633374c7b0863de92234b569bf89548f81f0a4366","signature":"970786dd0f7e0a4d2770980b3e30f84d78eb9e996bfc3beb8aec0fc79041baa3"},{"version":"135bc48d525c18e1f19bf4bff7c29a21dcc7dd3f0abbafad6e6a62f3d0ca2933","signature":"0e934b71219109c4714b29017a6886a1b9c08adbf4df9d7ba7ae36146390a79d"},{"version":"80832fb8ba22c5ecbce1c33c2a6a698aca342a02bbe847698150965b1d9a1e20","signature":"34975c50cf90a46824f60e8e68611d548c6a0065157f6ead4448739ce1e78cbc"},{"version":"8233ab90f5a0bb54dedf025800e9a1823ed0ee42e9f3a4fd135f272095f74134","signature":"091e3045270bd0b0b12765940128af773344d085621395001c2e4649c0c33c67"},{"version":"fe0f6ec258642189211e9d67504033d92f79e7823fcd73b304ca1c913aebabe6","signature":"f0d56ec8d982bcb82230aa47b0d2747b6ccc8be1b439f4f3e24b20021ac12f30"},{"version":"2a653343cd29fb91f423de0aa2c51e5ce5b576f9f7684dc928e0d8c9a85203c6","signature":"c1f143281fa2178579eaef19ebe393a0270cac3fafb71a5ec521f149e872c26f"},{"version":"f0c1218e7af8209b21f55c38178059cf8007792c0c5732f99234c12b53f8ffa1","signature":"e2fdf4b2544bbe1b3347cdf0a7c08862b26af46abd673b3f0e1f3ceb6a49c4a3"},{"version":"643ea5c45b0c77cb9ad78895b65c9b235731cdbd0064a2e1908ea76eb814f063","signature":"e749c3898546ad92b3108a44aef553f19405bf932d6b0001f9503339dedb95c2"},{"version":"e81123bb934323e71b994fcd11f18c33154848391ce4ded8a2203b3b27d72643","signature":"f60bbf96db27dd73d32ca5c0ccbe03c8f72aba2b87760ac96ac15b57c2d9ceb0"},{"version":"c6b348c2674697e96d15f33e44c0d341fe4ce2d143528f47d812c2862e7bc578","signature":"920e95b6d3bcea5ec794a47b5e5a5235d82b1d98bed7e3014f983eb1bd62001f"},{"version":"cbe7c085ede2a53876a3fffd73add76bcc1d5f5fb5b7864445b839d64efc8431","signature":"1f5fe58679cc5c902b7fb9e4fb68d0931a013fb3e750b858fa9ec45d6d0bc10b"},"ceef125d35ab5591ed4d99418619bebe7162ba0ab3a9693cc8ccb0d00585b2fa",{"version":"5b76efa21700a1af1b57a4d9ecf83250350f8153deb72e34c5d37eccda057d28","signature":"c927326561af6e91e91b8f265e7301980e04a2fc891b38cf49728f4708fd073f"},{"version":"be7ac29728e324262d56c3d013369ad849593184d90d3b7579addb58a50b643d","signature":"b52c2789aa7f160911601ad9e8733e0b336be2934bacda2b828aa5086af0a46a"},{"version":"75a3af7bd5e57f0efb399f4fc2f7004b2c1b85f76c2009475452ffd19e230019","signature":"b2600375c2fe289e75b8a6e609e31e495a69348be220beb1558d03e61e8cf4af"},{"version":"014837f0a732216e2b51e048f26f5d0246e070fa8376a54ceeb688337857d6d6","signature":"fcec1ddb829e46b81b98c1563495706b3dca00413b8ebbfc7c82193a226d812f"},{"version":"b6b109487ee24fcecac9515a8ee241d633079927490c81888eecabec2275ad74","signature":"aa44780a5dfa9df4f2524332299f01115f5281e9c8bf1a2e1cac2a5b81e5beff"},{"version":"5674581613842ef7ad27d6ea0416325f8cc664ef640141adf0500e4fc236d7db","signature":"af128a794f0eb1498c25b377066baff09bb11f87257854b389feb038e72bf2f1"},{"version":"588e77410266b14264311b70ee04fffdcc198eb05d661ce5b920739220eec914","signature":"1eb12a4c4f0d8256b321af7e7bce3b74912851eca4f9fad761b7ebefb047b9a5"},"a3d139874ac29911ca82720164581c1cf6985a87f1d95672d1968c08815628e4","7f4d7d3426e39f1be70dc80fe6bb73134591aa355026500d811a8365cfceb429","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,95],[58,61,87,88,95,149,150,151],[88,153],[88],[88,148],[88,157],[88,158],[58,88,95],[88,175],[88,163,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,166,167,168,169,170,171,172,173,174,175],[88,164,165,166,167,168,169,170,171,172,173,174,175],[88,163,164,165,167,168,169,170,171,172,173,174,175],[88,163,164,165,166,168,169,170,171,172,173,174,175],[88,163,164,165,166,167,169,170,171,172,173,174,175],[88,163,164,165,166,167,168,170,171,172,173,174,175],[88,163,164,165,166,167,168,169,171,172,173,174,175],[88,163,164,165,166,167,168,169,170,172,173,174,175],[88,163,164,165,166,167,168,169,170,171,173,174,175],[88,163,164,165,166,167,168,169,170,171,172,174,175],[88,163,164,165,166,167,168,169,170,171,172,173,175],[88,163,164,165,166,167,168,169,170,171,172,173,174],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,185],[88,188],[88,190],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[61,88,95],[58,88,92,114,115],[42,88,97,103,108,123,124,125,129,130,131,133,134,135,136],[42,88,113,123,124,137],[42,88,123],[42,88,123,137],[42,88,97,123,137],[42,88,97,113,123,137],[42,88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[42,58,88,113,123,129,132,137],[42,88,97,123,129],[42,88,97,113,123,126,127,128,137],[42,88,113,123,137],[42,88,97,113,123,129],[42,88,108,123,137],[42,88,138,146],[42,88,113,138,141],[42,58,88,123,134,137,138,139,140,141,143,144],[42,58,88,113,129,133,138,139,140,141,142,143,145],[42,88,139,140,141,142,143,144,145],[42,88,113,129,139,141,145,146],[42,88,129,132,145],[42,88,129,132,139,140,145],[97,103,108,123,124,125,129,130,131,133,134,135,136],[113,123,124,137],[123],[123,137],[97,123,137],[97,113,123,137],[58,113,123,129,132,137],[97,123,129],[97,113,123,126,127,128,137],[113,123,137],[97,113,123,129],[108,123,137],[113,138,141],[58,123,134,137,138,139,140,141,143,144],[58,113,129,133,138,139,140,141,142,143,145],[113,129,139,141,145,146],[138,146],[129,132,145],[129,132,139,140,145]],"referencedMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,91],[125,92],[135,93],[136,94],[131,95],[130,96],[138,97],[124,94],[126,94],[133,98],[127,99],[129,100],[132,101],[128,102],[134,103],[147,104],[140,105],[145,106],[144,107],[146,108],[142,109],[143,104],[139,110],[141,111]],"exportedModulesMap":[[148,1],[152,2],[154,3],[153,4],[155,5],[156,4],[150,4],[157,4],[158,6],[159,7],[160,4],[161,4],[162,8],[176,9],[164,10],[165,11],[163,12],[166,13],[167,14],[168,15],[169,16],[170,17],[171,18],[172,19],[173,20],[174,21],[175,22],[177,4],[178,4],[179,4],[180,4],[43,23],[44,23],[46,24],[47,25],[48,26],[49,27],[50,28],[51,29],[52,30],[53,31],[54,32],[55,33],[56,33],[57,34],[58,35],[59,36],[60,37],[45,38],[94,4],[61,39],[62,40],[63,41],[95,42],[64,43],[65,44],[66,45],[67,46],[68,47],[69,48],[70,49],[71,50],[72,51],[73,52],[74,52],[75,53],[76,54],[78,55],[77,56],[79,57],[80,58],[81,4],[82,59],[83,60],[84,61],[85,62],[86,63],[87,64],[88,65],[89,66],[90,67],[91,68],[92,69],[93,70],[181,4],[182,1],[183,1],[151,71],[184,1],[186,72],[185,4],[187,4],[189,73],[188,4],[190,4],[191,74],[96,8],[97,75],[101,4],[102,76],[100,77],[103,78],[98,79],[99,80],[113,81],[109,4],[110,8],[111,82],[112,4],[108,83],[107,84],[106,85],[104,4],[105,4],[121,86],[119,86],[117,4],[123,87],[118,4],[120,86],[122,88],[149,35],[114,89],[116,90],[115,8],[42,4],[8,4],[10,4],[9,4],[2,4],[11,4],[12,4],[13,4],[14,4],[15,4],[16,4],[17,4],[18,4],[3,4],[4,4],[22,4],[19,4],[20,4],[21,4],[23,4],[24,4],[25,4],[5,4],[26,4],[27,4],[28,4],[29,4],[6,4],[30,4],[31,4],[32,4],[33,4],[7,4],[34,4],[39,4],[40,4],[35,4],[36,4],[37,4],[38,4],[1,4],[41,4],[137,112],[125,113],[135,114],[136,115],[131,116],[130,117],[138,97],[124,115],[126,115],[133,118],[127,119],[129,120],[132,121],[128,122],[134,123],[147,104],[140,124],[145,125],[144,126],[146,108],[142,127],[143,128],[139,129],[141,130]],"semanticDiagnosticsPerFile":[148,152,154,153,155,156,150,157,158,159,160,161,162,176,164,165,163,166,167,168,169,170,171,172,173,174,175,177,178,179,180,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,181,182,183,151,184,186,185,187,189,188,190,191,96,97,101,102,100,103,98,99,113,109,110,111,112,108,107,106,104,105,121,119,117,123,118,120,122,149,114,116,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141]},"version":"4.7.4"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts b/node_modules/@walletconnect/types/dist/types/core/core.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..0391c9df2a40801ff58225e6530397d2f0979dfc ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts -@@ -0,0 +1,70 @@ -+import { IEvents } from "@walletconnect/events"; -+import { IHeartBeat } from "@walletconnect/heartbeat"; -+import { IKeyValueStorage, KeyValueStorageOptions } from "@walletconnect/keyvaluestorage"; -+import { ICrypto } from "./crypto"; -+import { IRelayer } from "./relayer"; -+import { IKeyChain } from "./keychain"; -+import { IJsonRpcHistory } from "./history"; -+import { IExpirer } from "./expirer"; -+import { IPairing } from "./pairing"; -+import { Logger } from "@walletconnect/logger"; -+import { IVerify } from "./verify"; -+import { IEchoClient } from "./echo"; -+import { IEventClient } from "./events"; -+export declare namespace CoreTypes { -+ interface Options { -+ projectId?: string; -+ name?: string; -+ relayUrl?: string; -+ logger?: string | Logger; -+ keychain?: IKeyChain; -+ storage?: IKeyValueStorage; -+ storageOptions?: KeyValueStorageOptions; -+ maxLogBlobSizeInBytes?: number; -+ customStoragePrefix?: string; -+ telemetryEnabled?: boolean; -+ } -+ interface Metadata { -+ name: string; -+ description: string; -+ url: string; -+ icons: string[]; -+ verifyUrl?: string; -+ redirect?: { -+ native?: string; -+ universal?: string; -+ linkMode?: boolean; -+ }; -+ } -+} -+export declare abstract class ICore extends IEvents { -+ opts?: CoreTypes.Options | undefined; -+ readonly protocol = "wc"; -+ readonly version = 2; -+ abstract readonly name: string; -+ abstract readonly context: string; -+ abstract readonly relayUrl?: string; -+ abstract readonly projectId?: string; -+ abstract readonly customStoragePrefix: string; -+ abstract logger: Logger; -+ abstract heartbeat: IHeartBeat; -+ abstract crypto: ICrypto; -+ abstract relayer: IRelayer; -+ abstract storage: IKeyValueStorage; -+ abstract history: IJsonRpcHistory; -+ abstract expirer: IExpirer; -+ abstract pairing: IPairing; -+ abstract verify: IVerify; -+ abstract echoClient: IEchoClient; -+ abstract linkModeSupportedApps: string[]; -+ abstract eventClient: IEventClient; -+ constructor(opts?: CoreTypes.Options | undefined); -+ abstract start(): Promise; -+ abstract dispatchEnvelope(params: { -+ topic: string; -+ message: string; -+ sessionExists: boolean; -+ }): void; -+ abstract addLinkModeSupportedApp(universalLink: string): void; -+} -+//# sourceMappingURL=core.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..79b876b6be25b1233b57cb1b8d05c207a0a9c49c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/core.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/core/core.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..cd6316ac28214711e0a51cdc8430a39d20cd43e5 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts -@@ -0,0 +1,81 @@ -+import { JsonRpcPayload } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+import { IKeyChain } from "./keychain"; -+export declare namespace CryptoTypes { -+ type EncodingType = "base64pad" | "base64url"; -+ interface Participant { -+ publicKey: string; -+ } -+ interface KeyPair { -+ privateKey: string; -+ publicKey: string; -+ } -+ interface EncryptParams { -+ message: string; -+ symKey: string; -+ type?: number; -+ iv?: string; -+ senderPublicKey?: string; -+ encoding?: EncodingType; -+ } -+ interface DecryptParams { -+ symKey: string; -+ encoded: string; -+ encoding?: EncodingType; -+ } -+ interface EncodingParams { -+ type: Uint8Array; -+ sealed: Uint8Array; -+ iv: Uint8Array; -+ senderPublicKey?: Uint8Array; -+ encoding?: EncodingType; -+ } -+ interface DecodingParams { -+ encoded: string; -+ encoding?: EncodingType; -+ } -+ interface EncodeOptions { -+ type?: number; -+ senderPublicKey?: string; -+ receiverPublicKey?: string; -+ encoding?: EncodingType; -+ } -+ interface DecodeOptions { -+ receiverPublicKey?: string; -+ encoding?: EncodingType; -+ } -+ interface EncodingValidation { -+ type: number; -+ senderPublicKey?: string; -+ receiverPublicKey?: string; -+ } -+ interface TypeOneParams { -+ type: 1; -+ senderPublicKey: string; -+ receiverPublicKey: string; -+ } -+} -+export declare abstract class ICrypto { -+ core: ICore; -+ logger: Logger; -+ abstract name: string; -+ abstract readonly context: string; -+ abstract keychain: IKeyChain; -+ abstract readonly randomSessionIdentifier: string; -+ constructor(core: ICore, logger: Logger, keychain?: IKeyChain); -+ abstract init(): Promise; -+ abstract hasKeys(tag: string): boolean; -+ abstract getClientId(): Promise; -+ abstract generateKeyPair(): Promise; -+ abstract generateSharedKey(selfPublicKey: string, peerPublicKey: string, overrideTopic?: string): Promise; -+ abstract setSymKey(symKey: string, overrideTopic?: string): Promise; -+ abstract deleteKeyPair(publicKey: string): Promise; -+ abstract deleteSymKey(topic: string): Promise; -+ abstract encode(topic: string, payload: JsonRpcPayload, opts?: CryptoTypes.EncodeOptions): Promise; -+ abstract decode(topic: string, encoded: string, opts?: CryptoTypes.DecodeOptions): Promise; -+ abstract signJWT(aud: string): Promise; -+ abstract getPayloadType(encoded: string, encoding?: CryptoTypes.EncodingType): number; -+ abstract getPayloadSenderPublicKey(encoded: string, encoding?: CryptoTypes.EncodingType): string | undefined; -+} -+//# sourceMappingURL=crypto.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..4402043b63a14f2daa2291ce030a2c69613bdd2b ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/crypto.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/core/crypto.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..64f99da3f8b9d8652e697d735d139508062f473a ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts -@@ -0,0 +1,17 @@ -+import { Logger } from "@walletconnect/logger"; -+export declare namespace EchoClientTypes { -+ type RegisterDeviceTokenParams = { -+ clientId: string; -+ token: string; -+ notificationType: "fcm" | "apns" | "apns-sandbox" | "noop"; -+ enableEncrypted?: boolean; -+ }; -+} -+export declare abstract class IEchoClient { -+ projectId: string; -+ logger: Logger; -+ abstract readonly context: string; -+ constructor(projectId: string, logger: Logger); -+ abstract registerDeviceToken(params: EchoClientTypes.RegisterDeviceTokenParams): Promise; -+} -+//# sourceMappingURL=echo.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..0d96f2e7263890a1754cefda3d2e7674e6e4ad40 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/echo.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../src/core/echo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,yBAAyB,GAAG;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,gBAAgB,EAAE,KAAK,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC;QAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AACD,8BAAsB,WAAW;IAEZ,SAAS,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM;IAD3D,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBACtB,SAAS,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM;aAE3C,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,yBAAyB,GAChD,OAAO,CAAC,IAAI,CAAC;CACjB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts b/node_modules/@walletconnect/types/dist/types/core/events.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..16673bbdde13ec7fc6d924c1ce3a4e7aed4fd6ca ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts -@@ -0,0 +1,45 @@ -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare namespace EventClientTypes { -+ interface Event { -+ eventId: string; -+ bundleId: string; -+ timestamp: number; -+ props: Props; -+ addTrace: (trace: string) => void; -+ setError: (error: string) => void; -+ } -+ interface Props { -+ event: string; -+ type: string; -+ properties: Properties; -+ } -+ interface Properties { -+ topic: string; -+ trace: Trace; -+ } -+ type Trace = string[]; -+} -+export declare abstract class IEventClient { -+ core: ICore; -+ logger: Logger; -+ telemetryEnabled: boolean; -+ abstract readonly context: string; -+ constructor(core: ICore, logger: Logger, telemetryEnabled: boolean); -+ abstract createEvent(params: { -+ event?: "ERROR"; -+ type?: string; -+ properties: { -+ topic: string; -+ trace: EventClientTypes.Trace; -+ }; -+ }): EventClientTypes.Event; -+ abstract getEvent(params: { -+ eventId?: string; -+ topic?: string; -+ }): EventClientTypes.Event | undefined; -+ abstract deleteEvent(params: { -+ eventId: string; -+ }): void; -+} -+//# sourceMappingURL=events.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..471f6507a8b7e83e4ef0ae15391f57a5b77f9fd4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/events.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/core/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,UAAiB,KAAK;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACnC;IAED,UAAiB,KAAK;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAiB,UAAU;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC;KACd;IAED,KAAY,KAAK,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,8BAAsB,YAAY;IAGb,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,gBAAgB,EAAE,OAAO;IAFvF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,gBAAgB,EAAE,OAAO;aAEvE,WAAW,CAAC,MAAM,EAAE;QAClC,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,EAAE;YACV,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC;SAC/B,CAAC;KACH,GAAG,gBAAgB,CAAC,KAAK;aAEV,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,gBAAgB,CAAC,KAAK,GAAG,SAAS;aAEtB,WAAW,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAC/D"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..e773cbc725fc62e09c3f45e8005f7b9f09962bf4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts -@@ -0,0 +1,37 @@ -+import { IEvents } from "@walletconnect/events"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare namespace ExpirerTypes { -+ interface Expiration { -+ target: string; -+ expiry: number; -+ } -+ interface Created { -+ target: string; -+ expiration: Expiration; -+ } -+ interface Deleted { -+ target: string; -+ expiration: Expiration; -+ } -+ interface Expired { -+ target: string; -+ expiration: Expiration; -+ } -+} -+export declare abstract class IExpirer extends IEvents { -+ core: ICore; -+ logger: Logger; -+ abstract name: string; -+ abstract readonly context: string; -+ abstract readonly length: number; -+ abstract readonly keys: string[]; -+ abstract readonly values: ExpirerTypes.Expiration[]; -+ constructor(core: ICore, logger: Logger); -+ abstract init(): Promise; -+ abstract has(key: string | number): boolean; -+ abstract set(key: string | number, expiry: number): void; -+ abstract get(key: string | number): ExpirerTypes.Expiration; -+ abstract del(key: string | number): void; -+} -+//# sourceMappingURL=expirer.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..039287dcbead4999a93db36dad82c4f61bd85361 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/expirer.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"expirer.d.ts","sourceRoot":"","sources":["../../../src/core/expirer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,UAAU,UAAU;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;IAED,UAAU,OAAO;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;KACxB;CACF;AAED,8BAAsB,QAAS,SAAQ,OAAO;IAWzB,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAVrD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC;gBAExC,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;aAElC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;aAE/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,UAAU;aAElD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAChD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts b/node_modules/@walletconnect/types/dist/types/core/history.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..f246f7694840abc0e8f5e6441455e4553b9caccc ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts -@@ -0,0 +1,39 @@ -+import { IEvents } from "@walletconnect/events"; -+import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, RequestArguments } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export interface JsonRpcRecord { -+ id: number; -+ topic: string; -+ request: RequestArguments; -+ chainId?: string; -+ response?: { -+ result: any; -+ } | { -+ error: ErrorResponse; -+ }; -+ expiry?: number; -+} -+export interface RequestEvent { -+ topic: string; -+ request: JsonRpcRequest; -+ chainId?: string; -+} -+export declare abstract class IJsonRpcHistory extends IEvents { -+ core: ICore; -+ logger: Logger; -+ records: Map; -+ abstract readonly context: string; -+ abstract readonly size: number; -+ abstract readonly keys: number[]; -+ abstract readonly values: JsonRpcRecord[]; -+ abstract readonly pending: RequestEvent[]; -+ constructor(core: ICore, logger: Logger); -+ abstract init(): Promise; -+ abstract set(topic: string, request: JsonRpcRequest, chainId?: string): void; -+ abstract get(topic: string, id: number): Promise; -+ abstract resolve(response: JsonRpcResponse): Promise; -+ abstract delete(topic: string, id?: number): void; -+ abstract exists(topic: string, id: number): Promise; -+} -+//# sourceMappingURL=history.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a8aeccc4612787896f1ca40b84db1b14a849d256 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/history.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/core/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8BAAsB,eAAgB,SAAQ,OAAO;IAahC,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAZ9C,OAAO,6BAAoC;IAElD,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,IAAI,EAAE,MAAM,CAAC;IAEtC,kBAAyB,IAAI,EAAE,MAAM,EAAE,CAAC;IAExC,kBAAyB,MAAM,EAAE,aAAa,EAAE,CAAC;IAEjD,kBAAyB,OAAO,EAAE,YAAY,EAAE,CAAC;gBAE9B,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAIrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;aAEnE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;aAEtD,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CACpE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts b/node_modules/@walletconnect/types/dist/types/core/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..02675dcdb9e3911efa8ed77e7f140ec6f1eca561 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts -@@ -0,0 +1,15 @@ -+export * from "./core"; -+export * from "./crypto"; -+export * from "./history"; -+export * from "./messages"; -+export * from "./publisher"; -+export * from "./relayer"; -+export * from "./store"; -+export * from "./subscriber"; -+export * from "./keychain"; -+export * from "./expirer"; -+export * from "./pairing"; -+export * from "./verify"; -+export * from "./echo"; -+export * from "./events"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..e14ce7e74170113321cfb441e56bf9df7b3992a4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..218c51ae2c58db5eb14446a2062c768c705f1d4f ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts -@@ -0,0 +1,16 @@ -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare abstract class IKeyChain { -+ core: ICore; -+ logger: Logger; -+ abstract keychain: Map; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(core: ICore, logger: Logger); -+ abstract init(): Promise; -+ abstract has(tag: string, opts?: any): boolean; -+ abstract set(tag: string, key: string, opts?: any): Promise; -+ abstract get(tag: string, opts?: any): string; -+ abstract del(tag: string, opts?: any): Promise; -+} -+//# sourceMappingURL=keychain.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..3e0f9a20a7ece06b0ad5ed999e075ec315ad8382 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/keychain.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../../src/core/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,SAAS;IAOV,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO;aAErC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;aAExD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM;aAEpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAC5D"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..34006e8889690dd2bf2922e9c312f60f8c1152eb ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts -@@ -0,0 +1,17 @@ -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare type MessageRecord = Record; -+export declare abstract class IMessageTracker { -+ logger: Logger; -+ core: ICore; -+ abstract messages: Map; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(logger: Logger, core: ICore); -+ abstract init(): Promise; -+ abstract set(topic: string, message: string): Promise; -+ abstract get(topic: string): MessageRecord; -+ abstract has(topic: string, message: string): boolean; -+ abstract del(topic: string): Promise; -+} -+//# sourceMappingURL=messages.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a1ce2fc3ef9ed3b6183fdcd78030ccd6d249298e ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/messages.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/core/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,oBAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,8BAAsB,eAAe;IAOhB,MAAM,EAAE,MAAM;IAAS,IAAI,EAAE,KAAK;IANrD,SAAgB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAErD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,KAAK;aAErC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEpD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;aAEjC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;aAE5C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAClD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..3c2345bf7b4774d3f6de2e8121646e0ec41bb18e ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts -@@ -0,0 +1,94 @@ -+/// -+import { ErrorResponse, JsonRpcRequest, JsonRpcResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; -+import EventEmitter from "events"; -+import { ICore, CoreTypes } from "./core"; -+import { IStore } from "./store"; -+import { RelayerTypes } from "../core/relayer"; -+import { Logger } from "@walletconnect/logger"; -+export declare namespace PairingTypes { -+ interface Struct { -+ topic: string; -+ expiry: number; -+ relay: RelayerTypes.ProtocolOptions; -+ active: boolean; -+ peerMetadata?: CoreTypes.Metadata; -+ methods?: string[]; -+ } -+} -+export declare namespace PairingJsonRpcTypes { -+ type DefaultResponse = true | ErrorResponse; -+ type WcMethod = "wc_pairingDelete" | "wc_pairingPing"; -+ type Error = ErrorResponse; -+ interface RequestParams { -+ wc_pairingDelete: { -+ code: number; -+ message: string; -+ }; -+ wc_pairingPing: Record; -+ } -+ interface Results { -+ wc_pairingDelete: true; -+ wc_pairingPing: true; -+ } -+ interface EventCallback { -+ topic: string; -+ payload: T; -+ } -+} -+export declare type IPairingStore = IStore; -+export declare abstract class IPairing { -+ logger: Logger; -+ core: ICore; -+ abstract name: string; -+ abstract readonly context: string; -+ abstract events: EventEmitter; -+ abstract pairings: IPairingStore; -+ constructor(logger: Logger, core: ICore); -+ abstract init(): Promise; -+ abstract pair(params: { -+ uri: string; -+ activatePairing?: boolean; -+ }): Promise; -+ abstract create(params?: { -+ methods?: string[]; -+ transportType?: RelayerTypes.SubscribeOptions["transportType"]; -+ }): Promise<{ -+ topic: string; -+ uri: string; -+ }>; -+ abstract activate(params: { -+ topic: string; -+ }): Promise; -+ abstract register(params: { -+ methods: string[]; -+ }): void; -+ abstract updateExpiry(params: { -+ topic: string; -+ expiry: number; -+ }): Promise; -+ abstract updateMetadata(params: { -+ topic: string; -+ metadata: CoreTypes.Metadata; -+ }): Promise; -+ abstract getPairings(): PairingTypes.Struct[]; -+ abstract ping(params: { -+ topic: string; -+ }): Promise; -+ abstract disconnect(params: { -+ topic: string; -+ }): Promise; -+} -+export interface IPairingPrivate { -+ sendRequest(topic: string, method: M, params: PairingJsonRpcTypes.RequestParams[M]): Promise; -+ sendResult(id: number, topic: string, result: PairingJsonRpcTypes.Results[M]): Promise; -+ sendError(id: number, topic: string, error: PairingJsonRpcTypes.Error): Promise; -+ onRelayEventRequest(event: PairingJsonRpcTypes.EventCallback): void; -+ onRelayEventResponse(event: PairingJsonRpcTypes.EventCallback): Promise; -+ onPairingPingRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onPairingPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onPairingDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onUnknownRpcMethodRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onUnknownRpcMethodResponse(method: string): void; -+ deletePairing(topic: string, expirerHasDeleted?: boolean): Promise; -+} -+//# sourceMappingURL=pairing.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ddd62cf2f022ebe2e92e18967d92d97fe242061c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/pairing.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../../../src/core/pairing.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..393635615f4b5acfbac68451bd38b12d8a67b309 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts -@@ -0,0 +1,19 @@ -+import { IEvents } from "@walletconnect/events"; -+import { Logger } from "@walletconnect/logger"; -+import { IRelayer, RelayerTypes } from "./relayer"; -+export declare namespace PublisherTypes { -+ interface Params { -+ topic: string; -+ message: string; -+ opts: Omit; -+ } -+} -+export declare abstract class IPublisher extends IEvents { -+ relayer: IRelayer; -+ logger: Logger; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(relayer: IRelayer, logger: Logger); -+ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; -+} -+//# sourceMappingURL=publisher.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..6aee29ba86c24c4df155b29495f368d8da1af161 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/publisher.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../src/core/publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KACrD;CACF;AAED,8BAAsB,UAAW,SAAQ,OAAO;IAK3B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAJ3D,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,OAAO,CAAC,IAAI,CAAC;CACjB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..fe99e9b168ba2818e8d3d703279bed2c715b63e7 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts -@@ -0,0 +1,96 @@ -+import { IEvents } from "@walletconnect/events"; -+import { IJsonRpcProvider, JsonRpcPayload, RequestArguments } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+import { IMessageTracker } from "./messages"; -+import { IPublisher } from "./publisher"; -+import { ISubscriber } from "./subscriber"; -+export declare namespace RelayerTypes { -+ interface ProtocolOptions { -+ protocol: string; -+ data?: string; -+ } -+ interface PublishOptions { -+ relay?: ProtocolOptions; -+ ttl?: number; -+ prompt?: boolean; -+ tag?: number; -+ id?: number; -+ internal?: { -+ throwOnFailedPublish?: boolean; -+ }; -+ attestation?: string; -+ } -+ type TransportType = "relay" | "link_mode"; -+ interface SubscribeOptions { -+ relay?: ProtocolOptions; -+ transportType?: TransportType; -+ } -+ interface UnsubscribeOptions { -+ id?: string; -+ relay: ProtocolOptions; -+ } -+ type RequestOptions = PublishOptions | SubscribeOptions | UnsubscribeOptions; -+ interface PublishPayload { -+ topic: string; -+ message: string; -+ opts?: RelayerTypes.PublishOptions; -+ } -+ interface MessageEvent { -+ topic: string; -+ message: string; -+ publishedAt: number; -+ transportType?: TransportType; -+ attestation?: string; -+ } -+ interface RpcUrlParams { -+ protocol: string; -+ version: number; -+ auth: string; -+ relayUrl: string; -+ sdkVersion: string; -+ projectId?: string; -+ useOnCloseEvent?: boolean; -+ bundleId?: string; -+ } -+} -+export interface RelayerOptions { -+ core: ICore; -+ logger?: string | Logger; -+ relayUrl?: string; -+ projectId?: string; -+} -+export interface RelayerClientMetadata { -+ protocol: string; -+ version: number; -+ env: string; -+ host?: string; -+} -+export declare abstract class IRelayer extends IEvents { -+ abstract core: ICore; -+ abstract logger: Logger; -+ abstract subscriber: ISubscriber; -+ abstract publisher: IPublisher; -+ abstract messages: IMessageTracker; -+ abstract provider: IJsonRpcProvider; -+ abstract name: string; -+ abstract transportExplicitlyClosed: boolean; -+ abstract readonly context: string; -+ abstract readonly connected: boolean; -+ abstract readonly connecting: boolean; -+ constructor(opts: RelayerOptions); -+ abstract init(): Promise; -+ abstract publish(topic: string, message: string, opts?: RelayerTypes.PublishOptions): Promise; -+ abstract request(request: RequestArguments): Promise; -+ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; -+ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; -+ abstract transportClose(): Promise; -+ abstract transportOpen(relayUrl?: string): Promise; -+ abstract restartTransport(relayUrl?: string): Promise; -+ abstract confirmOnlineStateOrThrow(): Promise; -+ abstract handleBatchMessageEvents(messages: RelayerTypes.MessageEvent[]): Promise; -+ abstract onLinkMessageEvent(messageEvent: RelayerTypes.MessageEvent, opts?: { -+ sessionExists?: boolean; -+ }): Promise; -+} -+//# sourceMappingURL=relayer.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8415bb875fcbbd01bf86693f499aaa07d91d9438 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/relayer.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../../src/core/relayer.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts b/node_modules/@walletconnect/types/dist/types/core/store.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..112b87ce75749a3806358364995f470a501239d2 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts -@@ -0,0 +1,21 @@ -+import { ErrorResponse } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { ICore } from "./core"; -+export declare abstract class IStore { -+ core: ICore; -+ logger: Logger; -+ name: string; -+ abstract map: Map; -+ abstract readonly context: string; -+ abstract readonly length: number; -+ abstract readonly keys: Key[]; -+ abstract readonly values: Value[]; -+ constructor(core: ICore, logger: Logger, name: string, storagePrefix?: string); -+ abstract init(): Promise; -+ abstract set(key: Key, value: Value): Promise; -+ abstract get(key: Key): Value; -+ abstract getAll(filter?: Partial): Value[]; -+ abstract update(key: Key, update: Partial): Promise; -+ abstract delete(key: Key, reason: ErrorResponse): Promise; -+} -+//# sourceMappingURL=store.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5a99c125668c0072c989dbd37a4564ff6670653c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/store.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/core/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,8BAAsB,MAAM,CAAC,GAAG,EAAE,KAAK;IAY5B,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;IAbrB,SAAgB,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAErC,kBAAyB,OAAO,EAAE,MAAM,CAAC;IAEzC,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,IAAI,EAAE,GAAG,EAAE,CAAC;IAErC,kBAAyB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAGhC,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAEnB,aAAa,CAAC,EAAE,MAAM;aAGR,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;aAE1C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK;aAEpB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;aAExC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;aAEvD,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CACvE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dd6aea5407bbcc4f20b6f15472bc5d52b17ce2ec ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts -@@ -0,0 +1,49 @@ -+import { IEvents } from "@walletconnect/events"; -+import { ErrorResponse } from "@walletconnect/jsonrpc-types"; -+import { Logger } from "@walletconnect/logger"; -+import { IRelayer, RelayerTypes } from "./relayer"; -+export declare namespace SubscriberTypes { -+ interface Params extends RelayerTypes.SubscribeOptions { -+ topic: string; -+ } -+ interface Active extends Params { -+ id: string; -+ } -+} -+export declare namespace SubscriberEvents { -+ type Created = SubscriberTypes.Active; -+ interface Deleted extends SubscriberTypes.Active { -+ reason: ErrorResponse; -+ } -+ type Expired = Deleted; -+} -+export declare abstract class ISubscriberTopicMap { -+ map: Map; -+ abstract readonly topics: string[]; -+ abstract set(topic: string, id: string): void; -+ abstract get(topic: string): string[]; -+ abstract exists(topic: string, id: string): boolean; -+ abstract delete(topic: string, id?: string): void; -+ abstract clear(): void; -+} -+export declare abstract class ISubscriber extends IEvents { -+ relayer: IRelayer; -+ logger: Logger; -+ abstract subscriptions: Map; -+ abstract topicMap: ISubscriberTopicMap; -+ abstract pending: Map; -+ abstract readonly length: number; -+ abstract readonly ids: string[]; -+ abstract readonly values: SubscriberTypes.Active[]; -+ abstract readonly topics: string[]; -+ abstract name: string; -+ abstract readonly context: string; -+ constructor(relayer: IRelayer, logger: Logger); -+ abstract init(): Promise; -+ abstract subscribe(topic: string, opts?: RelayerTypes.SubscribeOptions): Promise; -+ abstract unsubscribe(topic: string, opts?: RelayerTypes.UnsubscribeOptions): Promise; -+ abstract isSubscribed(topic: string): Promise; -+ abstract start(): Promise; -+ abstract stop(): Promise; -+} -+//# sourceMappingURL=subscriber.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5eebf731cbc2107021b9a9d97c6ec5d75751314d ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../../src/core/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,UAAiB,MAAO,SAAQ,YAAY,CAAC,gBAAgB;QAC3D,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,MAAO,SAAQ,MAAM;QACpC,EAAE,EAAE,MAAM,CAAC;KACZ;CACF;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAY,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC;IAE7C,UAAiB,OAAQ,SAAQ,eAAe,CAAC,MAAM;QACrD,MAAM,EAAE,aAAa,CAAC;KACvB;IAED,KAAY,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,8BAAsB,mBAAmB;IAChC,GAAG,wBAA+B;IAEzC,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;aAE1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;aAEpC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;aAE5B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;aAE1C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;aAExC,KAAK,IAAI,IAAI;CAC9B;AAED,8BAAsB,WAAY,SAAQ,OAAO;IAmB5B,OAAO,EAAE,QAAQ;IAAS,MAAM,EAAE,MAAM;IAlB3D,SAAgB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAEnE,SAAgB,QAAQ,EAAE,mBAAmB,CAAC;IAE9C,SAAgB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAE7D,kBAAyB,MAAM,EAAE,MAAM,CAAC;IAExC,kBAAyB,GAAG,EAAE,MAAM,EAAE,CAAC;IAEvC,kBAAyB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;IAE1D,kBAAyB,MAAM,EAAE,MAAM,EAAE,CAAC;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,QAAQ,EAAS,MAAM,EAAE,MAAM;aAI3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;aAErB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,YAAY,CAAC,gBAAgB,GACnC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aAET,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;aAEjF,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aAE7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;aAEtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CACtC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c0a1d50f4f400826e8b5bd49e263e07d34077e8f ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts -@@ -0,0 +1,34 @@ -+import { Logger } from "@walletconnect/logger"; -+import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; -+import { ICore } from "./core"; -+export declare namespace Verify { -+ interface Context { -+ verified: { -+ origin: string; -+ validation: "UNKNOWN" | "VALID" | "INVALID"; -+ verifyUrl: string; -+ isScam?: boolean; -+ }; -+ } -+} -+export declare abstract class IVerify { -+ core: ICore; -+ logger: Logger; -+ store: IKeyValueStorage; -+ abstract readonly context: string; -+ constructor(core: ICore, logger: Logger, store: IKeyValueStorage); -+ abstract register(params: { -+ id: string; -+ decryptedId: string; -+ }): Promise; -+ abstract resolve(params: { -+ attestationId?: string; -+ hash?: string; -+ encryptedId?: string; -+ verifyUrl?: string; -+ }): Promise<{ -+ origin: string; -+ isScam?: boolean; -+ }>; -+} -+//# sourceMappingURL=verify.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..1a75b1894ecb118f2816f19f016b88cfdd415bf9 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/core/verify.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/core/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,UAAiB,OAAO;QACtB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAC5C,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC;KACH;CACF;AAED,8BAAsB,OAAO;IAGR,IAAI,EAAE,KAAK;IAAS,MAAM,EAAE,MAAM;IAAS,KAAK,EAAE,gBAAgB;IAFrF,kBAAyB,OAAO,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,EAAS,KAAK,EAAE,gBAAgB;aAErE,QAAQ,CAAC,MAAM,EAAE;QAC/B,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;aAEf,OAAO,CAAC,MAAM,EAAE;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts b/node_modules/@walletconnect/types/dist/types/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..ed69742e9ae63a17ff5321c699f7f4e9e50ff5b4 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/index.d.ts -@@ -0,0 +1,3 @@ -+export * from "./core"; -+export * from "./sign-client"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..da476f2661eb396ee5a01a33c5cb5377c8930d90 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..281e39e34acc58f7f544c7f1d6367d3225e45313 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts -@@ -0,0 +1,153 @@ -+import { ErrorResponse, JsonRpcError, JsonRpcRequest, JsonRpcResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; -+import { CoreTypes, ICore, IStore, RelayerTypes, Verify } from "../core"; -+import { SessionTypes } from "./session"; -+export declare namespace AuthTypes { -+ type Event = "session_authenticate"; -+ interface AuthRequestEventArgs { -+ requester: Participant; -+ authPayload: PayloadParams; -+ expiryTimestamp: number; -+ transportType?: RelayerTypes.TransportType; -+ } -+ type AuthResponseEventArgs = { -+ message: string; -+ code: number; -+ } | JsonRpcResult | JsonRpcError; -+ interface BaseEventArgs { -+ id: number; -+ topic: string; -+ params: T; -+ verifyContext?: Verify.Context; -+ } -+ interface EventArguments { -+ auth_request: BaseEventArgs; -+ auth_response: BaseEventArgs; -+ sign_request: BaseEventArgs<{ -+ request: { -+ method: string; -+ params: any; -+ }; -+ chainId: string; -+ }>; -+ sign_response: BaseEventArgs; -+ } -+ interface Options extends CoreTypes.Options { -+ metadata: Metadata; -+ core?: ICore; -+ projectId: string; -+ } -+ interface Metadata { -+ name: string; -+ description: string; -+ url: string; -+ icons: string[]; -+ redirect?: { -+ native?: string; -+ universal?: string; -+ linkMode?: boolean; -+ }; -+ verifyUrl?: string; -+ } -+ interface EventCallback { -+ topic: string; -+ payload: T; -+ } -+ type FormatMessageParams = { -+ aud?: string; -+ uri?: string; -+ } & Omit; -+ interface BaseAuthRequestParams { -+ domain: string; -+ aud: string; -+ nonce: string; -+ version?: string; -+ iat?: string; -+ nbf?: string; -+ exp?: string; -+ chainId?: string; -+ statement?: string; -+ requestId?: string; -+ resources?: string[]; -+ expiry?: number; -+ type?: string; -+ } -+ type RequestParams = { -+ chains: string[]; -+ } & BaseAuthRequestParams; -+ type SessionAuthenticateParams = { -+ pairingTopic?: string; -+ methods?: string[]; -+ uri: string; -+ } & Omit; -+ type PayloadParams = { -+ version: string; -+ iat: string; -+ } & RequestParams; -+ type CacaoPayload = { -+ iss: string; -+ } & BaseAuthRequestParams; -+ interface CacaoHeader { -+ t: "caip122"; -+ } -+ interface CacaoSignature { -+ t: "eip191" | "eip1271"; -+ s: string; -+ m?: string; -+ } -+ interface Cacao { -+ h: CacaoHeader; -+ p: CacaoPayload; -+ s: CacaoSignature; -+ } -+ interface PendingRequest { -+ id: number; -+ pairingTopic: string; -+ requester: Participant; -+ expiryTimestamp: number; -+ authPayload: PayloadParams; -+ verifyContext: Verify.Context; -+ transportType?: RelayerTypes.TransportType; -+ } -+ interface ApproveSessionAuthenticateParams { -+ id: number; -+ auths: Cacao[]; -+ } -+ interface SessionAuthenticateResponseParams { -+ responder: Participant; -+ cacaos: Cacao[]; -+ } -+ interface AuthErrorResponse { -+ id: number; -+ error: ErrorResponse; -+ } -+ type AuthResponse = SessionAuthenticateResponseParams["cacaos"]; -+ interface Participant { -+ publicKey: string; -+ metadata: Metadata; -+ } -+ interface SessionAuthenticateRequestParams { -+ requester: Participant; -+ authPayload: PayloadParams; -+ expiryTimestamp: number; -+ } -+ interface SessionAuthenticateRequest extends SessionAuthenticateRequestParams { -+ verifyContext: Verify.Context; -+ } -+ type AuthenticateResponseResult = { -+ auths?: AuthTypes.AuthResponse; -+ session: SessionTypes.Struct; -+ }; -+} -+export declare type IAuth = { -+ init(): Promise; -+ authKeys: IStore; -+ pairingTopics: IStore; -+ requests: IStore; -+}; -+//# sourceMappingURL=auth.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7b4c07a2d8f16fb60de4771fd2238cbc2c1f89c3 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/sign-client/auth.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..d1661b7120103ce4fe47428e8ee777de9d3a82de ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts -@@ -0,0 +1,123 @@ -+/// -+import { Logger } from "@walletconnect/logger"; -+import EventEmmiter from "events"; -+import { CoreTypes, ICore } from "../core/core"; -+import { IEngine } from "./engine"; -+import { IPendingRequest } from "./pendingRequest"; -+import { IProposal, ProposalTypes } from "./proposal"; -+import { ISession, SessionTypes } from "./session"; -+import { Verify } from "../core/verify"; -+import { IAuth, AuthTypes } from "./auth"; -+import { RelayerTypes } from "../core"; -+export declare namespace SignClientTypes { -+ type Event = "session_proposal" | "session_update" | "session_extend" | "session_ping" | "session_delete" | "session_expire" | "session_request" | "session_request_sent" | "session_event" | "session_authenticate" | "proposal_expire" | "session_request_expire"; -+ interface BaseEventArgs { -+ id: number; -+ topic: string; -+ params: T; -+ } -+ interface EventArguments { -+ session_proposal: { -+ verifyContext: Verify.Context; -+ } & Omit, "topic">; -+ session_update: BaseEventArgs<{ -+ namespaces: SessionTypes.Namespaces; -+ }>; -+ session_extend: Omit; -+ session_ping: Omit; -+ session_delete: Omit; -+ session_expire: { -+ topic: string; -+ }; -+ session_request: { -+ verifyContext: Verify.Context; -+ } & BaseEventArgs<{ -+ request: { -+ method: string; -+ params: any; -+ expiryTimestamp?: number; -+ }; -+ chainId: string; -+ }>; -+ session_request_sent: { -+ request: { -+ method: string; -+ params: any; -+ }; -+ topic: string; -+ chainId: string; -+ id: number; -+ }; -+ session_event: BaseEventArgs<{ -+ event: { -+ name: string; -+ data: any; -+ }; -+ chainId: string; -+ }>; -+ session_authenticate: { -+ verifyContext: Verify.Context; -+ transportType?: RelayerTypes.TransportType; -+ } & BaseEventArgs; -+ proposal_expire: { -+ id: number; -+ }; -+ session_request_expire: { -+ id: number; -+ }; -+ } -+ type Metadata = CoreTypes.Metadata; -+ type SignConfig = { -+ disableRequestQueue?: boolean; -+ }; -+ interface Options extends CoreTypes.Options { -+ core?: ICore; -+ metadata?: Metadata; -+ signConfig?: SignConfig; -+ } -+} -+export declare abstract class ISignClientEvents extends EventEmmiter { -+ constructor(); -+ abstract emit: (event: E, args: SignClientTypes.EventArguments[E]) => boolean; -+ abstract on: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract once: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract off: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract removeListener: (event: E, listener: (args: SignClientTypes.EventArguments[E]) => any) => this; -+ abstract removeAllListeners: (event: E) => this; -+} -+export declare abstract class ISignClient { -+ opts?: SignClientTypes.Options | undefined; -+ readonly protocol = "wc"; -+ readonly version = 2; -+ abstract readonly name: string; -+ abstract readonly context: string; -+ abstract readonly metadata: SignClientTypes.Metadata; -+ abstract core: ICore; -+ abstract logger: Logger; -+ abstract events: ISignClientEvents; -+ abstract engine: IEngine; -+ abstract session: ISession; -+ abstract proposal: IProposal; -+ abstract pendingRequest: IPendingRequest; -+ abstract auth: IAuth; -+ abstract signConfig?: SignClientTypes.SignConfig; -+ constructor(opts?: SignClientTypes.Options | undefined); -+ abstract connect: IEngine["connect"]; -+ abstract pair: IEngine["pair"]; -+ abstract approve: IEngine["approve"]; -+ abstract reject: IEngine["reject"]; -+ abstract update: IEngine["update"]; -+ abstract extend: IEngine["extend"]; -+ abstract request: IEngine["request"]; -+ abstract respond: IEngine["respond"]; -+ abstract ping: IEngine["ping"]; -+ abstract emit: IEngine["emit"]; -+ abstract disconnect: IEngine["disconnect"]; -+ abstract find: IEngine["find"]; -+ abstract getPendingSessionRequests: IEngine["getPendingSessionRequests"]; -+ abstract authenticate: IEngine["authenticate"]; -+ abstract formatAuthMessage: IEngine["formatAuthMessage"]; -+ abstract approveSessionAuthenticate: IEngine["approveSessionAuthenticate"]; -+ abstract rejectSessionAuthenticate: IEngine["rejectSessionAuthenticate"]; -+} -+//# sourceMappingURL=client.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..70e9c049668d90e09de3b54e328400408f0c37ad ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/sign-client/client.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..8f6a650283555f5716605ea714d8ad87290164ee ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts -@@ -0,0 +1,279 @@ -+/// -+import { JsonRpcResponse, JsonRpcRequest, ErrorResponse, JsonRpcResult, JsonRpcError } from "@walletconnect/jsonrpc-types"; -+import { ISignClient } from "./client"; -+import { RelayerTypes } from "../core/relayer"; -+import { SessionTypes } from "./session"; -+import { ProposalTypes } from "./proposal"; -+import { PairingTypes } from "../core/pairing"; -+import { JsonRpcTypes } from "./jsonrpc"; -+import { EventEmitter } from "events"; -+import { PendingRequestTypes } from "./pendingRequest"; -+import { AuthTypes } from "./auth"; -+import { CryptoTypes } from "../core"; -+export declare namespace EngineTypes { -+ type Event = "session_connect" | "session_approve" | "session_update" | "session_extend" | "session_ping" | "pairing_ping" | "session_request"; -+ interface EventArguments { -+ session_connect: { -+ error?: ErrorResponse; -+ session?: SessionTypes.Struct; -+ }; -+ session_approve: { -+ error?: ErrorResponse; -+ }; -+ session_update: { -+ error?: ErrorResponse; -+ }; -+ session_extend: { -+ error?: ErrorResponse; -+ }; -+ session_ping: { -+ error?: ErrorResponse; -+ }; -+ pairing_ping: { -+ error?: ErrorResponse; -+ }; -+ session_request: { -+ error?: ErrorResponse; -+ result?: any; -+ }; -+ } -+ interface UriParameters { -+ protocol: string; -+ version: number; -+ topic: string; -+ symKey: string; -+ relay: RelayerTypes.ProtocolOptions; -+ methods?: string[]; -+ expiryTimestamp?: number; -+ } -+ interface EventCallback { -+ topic: string; -+ payload: T; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ attestation?: string; -+ encryptedId?: string; -+ } -+ interface ConnectParams { -+ requiredNamespaces?: ProposalTypes.RequiredNamespaces; -+ optionalNamespaces?: ProposalTypes.OptionalNamespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ pairingTopic?: string; -+ relays?: RelayerTypes.ProtocolOptions[]; -+ } -+ interface PairParams { -+ uri: string; -+ } -+ interface ApproveParams { -+ id: number; -+ namespaces: SessionTypes.Namespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ sessionConfig?: SessionTypes.SessionConfig; -+ relayProtocol?: string; -+ } -+ interface RejectParams { -+ id: number; -+ reason: ErrorResponse; -+ } -+ interface UpdateParams { -+ topic: string; -+ namespaces: SessionTypes.Namespaces; -+ } -+ interface ExtendParams { -+ topic: string; -+ } -+ interface RequestParams { -+ topic: string; -+ request: { -+ method: string; -+ params: any; -+ }; -+ chainId: string; -+ expiry?: number; -+ } -+ interface RespondParams { -+ topic: string; -+ response: JsonRpcResponse; -+ } -+ interface EmitParams { -+ topic: string; -+ event: { -+ name: string; -+ data: any; -+ }; -+ chainId: string; -+ } -+ interface PingParams { -+ topic: string; -+ } -+ interface DisconnectParams { -+ topic: string; -+ reason: ErrorResponse; -+ } -+ interface FindParams { -+ requiredNamespaces: ProposalTypes.RequiredNamespaces; -+ } -+ type AcknowledgedPromise = Promise<{ -+ acknowledged: () => Promise; -+ }>; -+ type SessionAuthenticateResponsePromise = { -+ uri: string; -+ response: () => Promise; -+ }; -+ interface RpcOpts { -+ req: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ res: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ reject?: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ autoReject?: RelayerTypes.PublishOptions & { -+ ttl: number; -+ }; -+ } -+ type RpcOptsMap = Record; -+ type EngineQueue = { -+ state: "IDLE" | "ACTIVE"; -+ queue: T[]; -+ }; -+} -+export declare abstract class IEngineEvents extends EventEmitter { -+ constructor(); -+ abstract emit: (event: string, args: EngineTypes.EventArguments[E]) => boolean; -+ abstract once: (event: string, listener: (args: EngineTypes.EventArguments[E]) => any) => this; -+} -+export interface EnginePrivate { -+ sendRequest(args: { -+ topic: string; -+ method: M; -+ params: JsonRpcTypes.RequestParams[M]; -+ expiry?: number; -+ relayRpcId?: number; -+ clientRpcId?: number; -+ throwOnFailedPublish?: boolean; -+ appLink?: string; -+ }): Promise; -+ sendResult(args: { -+ id: number; -+ topic: string; -+ result: JsonRpcTypes.Results[M]; -+ throwOnFailedPublish?: boolean; -+ encodeOpts?: CryptoTypes.EncodeOptions; -+ appLink?: string; -+ }): Promise; -+ sendError(params: { -+ id: number; -+ topic: string; -+ error: JsonRpcTypes.Error; -+ encodeOpts?: CryptoTypes.EncodeOptions; -+ rpcOpts?: RelayerTypes.PublishOptions; -+ appLink?: string; -+ }): Promise; -+ onRelayEventRequest(event: EngineTypes.EventCallback): Promise; -+ onRelayEventResponse(event: EngineTypes.EventCallback): Promise; -+ onRelayEventUnknownPayload(event: EngineTypes.EventCallback): Promise; -+ shouldIgnorePairingRequest(params: { -+ topic: string; -+ requestMethod: string; -+ }): boolean; -+ deleteSession(params: { -+ topic: string; -+ expirerHasDeleted?: boolean; -+ id?: number; -+ emitEvent?: boolean; -+ }): Promise; -+ deleteProposal(id: number, expirerHasDeleted?: boolean): Promise; -+ setExpiry(topic: string, expiry: number): Promise; -+ setProposal(id: number, proposal: ProposalTypes.Struct): Promise; -+ setAuthRequest(id: number, params: { -+ request: AuthTypes.SessionAuthenticateRequest; -+ pairingTopic: string; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ }): Promise; -+ setPendingSessionRequest(pendingRequest: PendingRequestTypes.Struct): Promise; -+ deletePendingSessionRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; -+ deletePendingAuthRequest(id: number, reason: ErrorResponse, expirerHasDeleted?: boolean): Promise; -+ cleanupDuplicatePairings(session: SessionTypes.Struct): Promise; -+ cleanup(): Promise; -+ onSessionProposeRequest(params: { -+ topic: string; -+ payload: JsonRpcRequest; -+ attestation?: string; -+ encryptedId?: string; -+ }): Promise; -+ onSessionProposeResponse(topic: string, payload: JsonRpcResult | JsonRpcError, transportType?: RelayerTypes.MessageEvent["transportType"]): Promise; -+ onSessionSettleRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionSettleResponse(topic: string, payload: JsonRpcResult | JsonRpcError): Promise; -+ onSessionUpdateRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionUpdateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionExtendRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionExtendResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionPingRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionPingResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionDeleteRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionRequest(params: { -+ topic: string; -+ payload: JsonRpcRequest; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ attestation?: string; -+ encryptedId?: string; -+ }): Promise; -+ onSessionRequestResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ onSessionEventRequest(topic: string, payload: JsonRpcRequest): Promise; -+ onSessionAuthenticateRequest(params: { -+ topic: string; -+ payload: JsonRpcRequest; -+ transportType?: RelayerTypes.MessageEvent["transportType"]; -+ attestation?: string; -+ encryptedId?: string; -+ }): Promise; -+ onSessionAuthenticateResponse(topic: string, payload: JsonRpcResult | JsonRpcError): void; -+ isValidConnect(params: EngineTypes.ConnectParams): Promise; -+ isValidSessionSettleRequest(params: JsonRpcTypes.RequestParams["wc_sessionSettle"]): void; -+ isValidApprove(params: EngineTypes.ApproveParams): Promise; -+ isValidReject(params: EngineTypes.RejectParams): Promise; -+ isValidUpdate(params: EngineTypes.UpdateParams): Promise; -+ isValidExtend(params: EngineTypes.ExtendParams): Promise; -+ isValidRequest(params: EngineTypes.RequestParams): Promise; -+ isValidRespond(params: EngineTypes.RespondParams): Promise; -+ isValidPing(params: EngineTypes.PingParams): Promise; -+ isValidEmit(params: EngineTypes.EmitParams): Promise; -+ isValidDisconnect(params: EngineTypes.DisconnectParams): Promise; -+} -+export declare abstract class IEngine { -+ client: ISignClient; -+ constructor(client: ISignClient); -+ abstract init(): Promise; -+ abstract connect(params: EngineTypes.ConnectParams): Promise<{ -+ uri?: string; -+ approval: () => Promise; -+ }>; -+ abstract pair(params: EngineTypes.PairParams): Promise; -+ abstract approve(params: EngineTypes.ApproveParams): Promise<{ -+ topic: string; -+ acknowledged: () => Promise; -+ }>; -+ abstract reject(params: EngineTypes.RejectParams): Promise; -+ abstract update(params: EngineTypes.UpdateParams): EngineTypes.AcknowledgedPromise; -+ abstract extend(params: EngineTypes.ExtendParams): EngineTypes.AcknowledgedPromise; -+ abstract request(params: EngineTypes.RequestParams): Promise; -+ abstract respond(params: EngineTypes.RespondParams): Promise; -+ abstract emit(params: EngineTypes.EmitParams): Promise; -+ abstract ping(params: EngineTypes.PingParams): Promise; -+ abstract disconnect(params: EngineTypes.DisconnectParams): Promise; -+ abstract find: (params: EngineTypes.FindParams) => SessionTypes.Struct[]; -+ abstract getPendingSessionRequests: () => PendingRequestTypes.Struct[]; -+ abstract authenticate: (params: AuthTypes.SessionAuthenticateParams, walletUniversalLink?: string) => Promise; -+ abstract approveSessionAuthenticate: (params: AuthTypes.ApproveSessionAuthenticateParams) => Promise<{ -+ session: SessionTypes.Struct | undefined; -+ }>; -+ abstract formatAuthMessage: (params: { -+ request: AuthTypes.BaseAuthRequestParams; -+ iss: string; -+ }) => string; -+ abstract rejectSessionAuthenticate(params: EngineTypes.RejectParams): Promise; -+ abstract processRelayMessageCache(): void; -+} -+//# sourceMappingURL=engine.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..d7f3548f76ea0708c1c5d2c9ccbe16593cf14f7c ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/sign-client/engine.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..242855bed6410d880c0653491d84ce4cb452f9bd ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts -@@ -0,0 +1,8 @@ -+export * from "./client"; -+export * from "./engine"; -+export * from "./jsonrpc"; -+export * from "./proposal"; -+export * from "./session"; -+export * from "./pendingRequest"; -+export * from "./auth"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..63f07513c22550da21ea365c3cbdbbc0d5d65925 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sign-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..5fa4a16c6e1fe95806a2ee82edcf3b4fed072e11 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts -@@ -0,0 +1,82 @@ -+import { ErrorResponse, JsonRpcResult } from "@walletconnect/jsonrpc-types"; -+import { SignClientTypes } from "./client"; -+import { RelayerTypes } from "../core/relayer"; -+import { SessionTypes } from "./session"; -+import { ProposalTypes } from "./proposal"; -+import { AuthTypes } from "."; -+export declare namespace JsonRpcTypes { -+ type DefaultResponse = true | ErrorResponse; -+ type WcMethod = "wc_sessionPropose" | "wc_sessionSettle" | "wc_sessionUpdate" | "wc_sessionExtend" | "wc_sessionDelete" | "wc_sessionPing" | "wc_sessionRequest" | "wc_sessionEvent" | "wc_sessionAuthenticate"; -+ interface RequestParams { -+ wc_pairingDelete: { -+ code: number; -+ message: string; -+ }; -+ wc_pairingPing: Record; -+ wc_sessionPropose: { -+ relays: RelayerTypes.ProtocolOptions[]; -+ requiredNamespaces: ProposalTypes.RequiredNamespaces; -+ optionalNamespaces: ProposalTypes.OptionalNamespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ proposer: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ expiryTimestamp?: number; -+ }; -+ wc_sessionSettle: { -+ relay: RelayerTypes.ProtocolOptions; -+ namespaces: SessionTypes.Namespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ sessionConfig?: SessionTypes.SessionConfig; -+ expiry: number; -+ controller: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ }; -+ wc_sessionUpdate: { -+ namespaces: SessionTypes.Namespaces; -+ }; -+ wc_sessionExtend: Record; -+ wc_sessionDelete: { -+ code: number; -+ message: string; -+ }; -+ wc_sessionPing: Record; -+ wc_sessionRequest: { -+ request: { -+ method: string; -+ params: any; -+ expiryTimestamp?: number; -+ }; -+ chainId: string; -+ }; -+ wc_sessionEvent: { -+ event: { -+ name: string; -+ data: unknown; -+ }; -+ chainId: string; -+ }; -+ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateRequestParams; -+ } -+ interface Results { -+ wc_pairingDelete: true; -+ wc_pairingPing: true; -+ wc_sessionPropose: { -+ relay: RelayerTypes.ProtocolOptions; -+ responderPublicKey: string; -+ }; -+ wc_sessionSettle: true; -+ wc_sessionUpdate: true; -+ wc_sessionExtend: true; -+ wc_sessionDelete: true; -+ wc_sessionPing: true; -+ wc_sessionRequest: JsonRpcResult; -+ wc_sessionEvent: true; -+ wc_sessionAuthenticate: AuthTypes.SessionAuthenticateResponseParams; -+ } -+ type Error = ErrorResponse; -+} -+//# sourceMappingURL=jsonrpc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..92d29f0e811ea9bdbcd4d8b38b7d88a7bb3cd99e ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../../../src/sign-client/jsonrpc.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c061f9d1ec576e1f27323b621e96f530a037caae ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts -@@ -0,0 +1,12 @@ -+import { IStore, Verify } from "../core"; -+import { SignClientTypes } from "./"; -+export declare namespace PendingRequestTypes { -+ interface Struct { -+ topic: string; -+ id: number; -+ params: SignClientTypes.EventArguments["session_request"]["params"]; -+ verifyContext: Verify.Context; -+ } -+} -+export declare type IPendingRequest = IStore; -+//# sourceMappingURL=pendingRequest.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7a301fe8ff59b665f0e3146dfaa1f193928cba41 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"pendingRequest.d.ts","sourceRoot":"","sources":["../../../src/sign-client/pendingRequest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAErC,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,UAAiB,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC;KAC/B;CACF;AACD,oBAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..5503a33768c89d9720900d25303efd2422691ab8 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts -@@ -0,0 +1,30 @@ -+import { SignClientTypes } from "./client"; -+import { RelayerTypes } from "../core/relayer"; -+import { IStore } from "../core/store"; -+export declare namespace ProposalTypes { -+ interface BaseRequiredNamespace { -+ chains?: string[]; -+ methods: string[]; -+ events: string[]; -+ } -+ type RequiredNamespace = BaseRequiredNamespace; -+ type RequiredNamespaces = Record; -+ type OptionalNamespaces = Record; -+ type SessionProperties = Record; -+ interface Struct { -+ id: number; -+ expiry?: number; -+ expiryTimestamp: number; -+ relays: RelayerTypes.ProtocolOptions[]; -+ proposer: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ requiredNamespaces: RequiredNamespaces; -+ optionalNamespaces: OptionalNamespaces; -+ sessionProperties?: SessionProperties; -+ pairingTopic: string; -+ } -+} -+export declare type IProposal = IStore; -+//# sourceMappingURL=proposal.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..fa80071c845054bf2a059788bcdf281dbceb5dba ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../../src/sign-client/proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,UAAU,qBAAqB;QAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,iBAAiB,GAAG,qBAAqB,CAAC;IAE/C,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5D,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,UAAiB,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC;QAIX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;QACvC,QAAQ,EAAE;YACR,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,YAAY,EAAE,MAAM,CAAC;KACtB;CACF;AAED,oBAAY,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..61d0d35c1c852a15c742bf7acc09cc60a106de89 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts -@@ -0,0 +1,44 @@ -+import { RelayerTypes } from "../core/relayer"; -+import { IStore } from "../core/store"; -+import { SignClientTypes } from "./client"; -+import { ProposalTypes } from "./proposal"; -+import { AuthTypes } from "./auth"; -+export declare namespace SessionTypes { -+ type Expiry = number; -+ interface BaseNamespace { -+ chains?: string[]; -+ accounts: string[]; -+ methods: string[]; -+ events: string[]; -+ } -+ type Namespace = BaseNamespace; -+ type Namespaces = Record; -+ interface SessionConfig { -+ disableDeepLink?: boolean; -+ } -+ interface Struct { -+ topic: string; -+ pairingTopic: string; -+ relay: RelayerTypes.ProtocolOptions; -+ expiry: Expiry; -+ acknowledged: boolean; -+ controller: string; -+ namespaces: Namespaces; -+ requiredNamespaces: ProposalTypes.RequiredNamespaces; -+ optionalNamespaces: ProposalTypes.OptionalNamespaces; -+ sessionProperties?: ProposalTypes.SessionProperties; -+ sessionConfig?: SessionConfig; -+ self: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ peer: { -+ publicKey: string; -+ metadata: SignClientTypes.Metadata; -+ }; -+ authentication?: AuthTypes.Cacao[]; -+ transportType?: RelayerTypes.TransportType; -+ } -+} -+export declare type ISession = IStore; -+//# sourceMappingURL=session.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ad7c88b332e708b2ffb396aa9ad1298f740216b7 ---- /dev/null -+++ b/node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/sign-client/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,MAAM,GAAG,MAAM,CAAC;IAErB,UAAU,aAAa;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB;IAED,KAAK,SAAS,GAAG,aAAa,CAAC;IAE/B,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE5C,UAAU,aAAa;QACrB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;IAED,UAAU,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,CAAC;QACrD,iBAAiB,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;QACpD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,IAAI,EAAE;YACJ,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;SACpC,CAAC;QACF,cAAc,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,EAAE,YAAY,CAAC,aAAa,CAAC;KAC5C;CACF;AAED,oBAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/types/package.json b/node_modules/@walletconnect/types/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..6c714822590402efcf168b7a275f8a4a67ab9779 ---- /dev/null -+++ b/node_modules/@walletconnect/types/package.json -@@ -0,0 +1,67 @@ -+{ -+ "name": "@walletconnect/types", -+ "description": "Typings for WalletConnect Protocol", -+ "version": "2.16.1", -+ "author": "WalletConnect, Inc. ", -+ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", -+ "license": "Apache-2.0", -+ "main": "dist/index.cjs.js", -+ "module": "dist/index.es.js", -+ "unpkg": "dist/index.umd.js", -+ "types": "dist/types/index.d.ts", -+ "sideEffects": false, -+ "files": [ -+ "dist" -+ ], -+ "keywords": [ -+ "wallet", -+ "walletconnect" -+ ], -+ "scripts": { -+ "clean": "rm -rf dist", -+ "build:pre": "npm run clean", -+ "build:types": "tsc", -+ "build:source": "rollup --config rollup.config.js", -+ "build": "npm run build:pre; npm run build:source; npm run build:types", -+ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", -+ "prettier": "prettier --check 'src/**/*.{js,ts,jsx,tsx}'" -+ }, -+ "dependencies": { -+ "@walletconnect/events": "1.0.1", -+ "@walletconnect/heartbeat": "1.2.2", -+ "@walletconnect/jsonrpc-types": "1.0.4", -+ "@walletconnect/keyvaluestorage": "1.1.1", -+ "@walletconnect/logger": "2.1.2", -+ "events": "3.3.0" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/@walletconnect/utils/LICENSE b/node_modules/@walletconnect/utils/LICENSE -new file mode 100644 -index 0000000000000000000000000000000000000000..ecead118aace2ae4fae1f4edbb88d062164e16eb ---- /dev/null -+++ b/node_modules/@walletconnect/utils/LICENSE -@@ -0,0 +1,190 @@ -+ Apache License -+ Version 2.0, January 2004 -+ http://www.apache.org/licenses/ -+ -+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -+ -+ 1. Definitions. -+ -+ "License" shall mean the terms and conditions for use, reproduction, -+ and distribution as defined by Sections 1 through 9 of this document. -+ -+ "Licensor" shall mean the copyright owner or entity authorized by -+ the copyright owner that is granting the License. -+ -+ "Legal Entity" shall mean the union of the acting entity and all -+ other entities that control, are controlled by, or are under common -+ control with that entity. For the purposes of this definition, -+ "control" means (i) the power, direct or indirect, to cause the -+ direction or management of such entity, whether by contract or -+ otherwise, or (ii) ownership of fifty percent (50%) or more of the -+ outstanding shares, or (iii) beneficial ownership of such entity. -+ -+ "You" (or "Your") shall mean an individual or Legal Entity -+ exercising permissions granted by this License. -+ -+ "Source" form shall mean the preferred form for making modifications, -+ including but not limited to software source code, documentation -+ source, and configuration files. -+ -+ "Object" form shall mean any form resulting from mechanical -+ transformation or translation of a Source form, including but -+ not limited to compiled object code, generated documentation, -+ and conversions to other media types. -+ -+ "Work" shall mean the work of authorship, whether in Source or -+ Object form, made available under the License, as indicated by a -+ copyright notice that is included in or attached to the work -+ (an example is provided in the Appendix below). -+ -+ "Derivative Works" shall mean any work, whether in Source or Object -+ form, that is based on (or derived from) the Work and for which the -+ editorial revisions, annotations, elaborations, or other modifications -+ represent, as a whole, an original work of authorship. For the purposes -+ of this License, Derivative Works shall not include works that remain -+ separable from, or merely link (or bind by name) to the interfaces of, -+ the Work and Derivative Works thereof. -+ -+ "Contribution" shall mean any work of authorship, including -+ the original version of the Work and any modifications or additions -+ to that Work or Derivative Works thereof, that is intentionally -+ submitted to Licensor for inclusion in the Work by the copyright owner -+ or by an individual or Legal Entity authorized to submit on behalf of -+ the copyright owner. For the purposes of this definition, "submitted" -+ means any form of electronic, verbal, or written communication sent -+ to the Licensor or its representatives, including but not limited to -+ communication on electronic mailing lists, source code control systems, -+ and issue tracking systems that are managed by, or on behalf of, the -+ Licensor for the purpose of discussing and improving the Work, but -+ excluding communication that is conspicuously marked or otherwise -+ designated in writing by the copyright owner as "Not a Contribution." -+ -+ "Contributor" shall mean Licensor and any individual or Legal Entity -+ on behalf of whom a Contribution has been received by Licensor and -+ subsequently incorporated within the Work. -+ -+ 2. Grant of Copyright License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ copyright license to reproduce, prepare Derivative Works of, -+ publicly display, publicly perform, sublicense, and distribute the -+ Work and such Derivative Works in Source or Object form. -+ -+ 3. Grant of Patent License. Subject to the terms and conditions of -+ this License, each Contributor hereby grants to You a perpetual, -+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable -+ (except as stated in this section) patent license to make, have made, -+ use, offer to sell, sell, import, and otherwise transfer the Work, -+ where such license applies only to those patent claims licensable -+ by such Contributor that are necessarily infringed by their -+ Contribution(s) alone or by combination of their Contribution(s) -+ with the Work to which such Contribution(s) was submitted. If You -+ institute patent litigation against any entity (including a -+ cross-claim or counterclaim in a lawsuit) alleging that the Work -+ or a Contribution incorporated within the Work constitutes direct -+ or contributory patent infringement, then any patent licenses -+ granted to You under this License for that Work shall terminate -+ as of the date such litigation is filed. -+ -+ 4. Redistribution. You may reproduce and distribute copies of the -+ Work or Derivative Works thereof in any medium, with or without -+ modifications, and in Source or Object form, provided that You -+ meet the following conditions: -+ -+ (a) You must give any other recipients of the Work or -+ Derivative Works a copy of this License; and -+ -+ (b) You must cause any modified files to carry prominent notices -+ stating that You changed the files; and -+ -+ (c) You must retain, in the Source form of any Derivative Works -+ that You distribute, all copyright, patent, trademark, and -+ attribution notices from the Source form of the Work, -+ excluding those notices that do not pertain to any part of -+ the Derivative Works; and -+ -+ (d) If the Work includes a "NOTICE" text file as part of its -+ distribution, then any Derivative Works that You distribute must -+ include a readable copy of the attribution notices contained -+ within such NOTICE file, excluding those notices that do not -+ pertain to any part of the Derivative Works, in at least one -+ of the following places: within a NOTICE text file distributed -+ as part of the Derivative Works; within the Source form or -+ documentation, if provided along with the Derivative Works; or, -+ within a display generated by the Derivative Works, if and -+ wherever such third-party notices normally appear. The contents -+ of the NOTICE file are for informational purposes only and -+ do not modify the License. You may add Your own attribution -+ notices within Derivative Works that You distribute, alongside -+ or as an addendum to the NOTICE text from the Work, provided -+ that such additional attribution notices cannot be construed -+ as modifying the License. -+ -+ You may add Your own copyright statement to Your modifications and -+ may provide additional or different license terms and conditions -+ for use, reproduction, or distribution of Your modifications, or -+ for any such Derivative Works as a whole, provided Your use, -+ reproduction, and distribution of the Work otherwise complies with -+ the conditions stated in this License. -+ -+ 5. Submission of Contributions. Unless You explicitly state otherwise, -+ any Contribution intentionally submitted for inclusion in the Work -+ by You to the Licensor shall be under the terms and conditions of -+ this License, without any additional terms or conditions. -+ Notwithstanding the above, nothing herein shall supersede or modify -+ the terms of any separate license agreement you may have executed -+ with Licensor regarding such Contributions. -+ -+ 6. Trademarks. This License does not grant permission to use the trade -+ names, trademarks, service marks, or product names of the Licensor, -+ except as required for reasonable and customary use in describing the -+ origin of the Work and reproducing the content of the NOTICE file. -+ -+ 7. Disclaimer of Warranty. Unless required by applicable law or -+ agreed to in writing, Licensor provides the Work (and each -+ Contributor provides its Contributions) on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -+ implied, including, without limitation, any warranties or conditions -+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -+ PARTICULAR PURPOSE. You are solely responsible for determining the -+ appropriateness of using or redistributing the Work and assume any -+ risks associated with Your exercise of permissions under this License. -+ -+ 8. Limitation of Liability. In no event and under no legal theory, -+ whether in tort (including negligence), contract, or otherwise, -+ unless required by applicable law (such as deliberate and grossly -+ negligent acts) or agreed to in writing, shall any Contributor be -+ liable to You for damages, including any direct, indirect, special, -+ incidental, or consequential damages of any character arising as a -+ result of this License or out of the use or inability to use the -+ Work (including but not limited to damages for loss of goodwill, -+ work stoppage, computer failure or malfunction, or any and all -+ other commercial damages or losses), even if such Contributor -+ has been advised of the possibility of such damages. -+ -+ 9. Accepting Warranty or Additional Liability. While redistributing -+ the Work or Derivative Works thereof, You may choose to offer, -+ and charge a fee for, acceptance of support, warranty, indemnity, -+ or other liability obligations and/or rights consistent with this -+ License. However, in accepting such obligations, You may act only -+ on Your own behalf and on Your sole responsibility, not on behalf -+ of any other Contributor, and only if You agree to indemnify, -+ defend, and hold each Contributor harmless for any liability -+ incurred by, or claims asserted against, such Contributor by reason -+ of your accepting any such warranty or additional liability. -+ -+ END OF TERMS AND CONDITIONS -+ -+ Copyright 2021 WalletConnect, Inc. -+ -+ Licensed under the Apache License, Version 2.0 (the "License"); -+ you may not use this file except in compliance with the License. -+ You may obtain a copy of the License at -+ -+ http://www.apache.org/licenses/LICENSE-2.0 -+ -+ Unless required by applicable law or agreed to in writing, software -+ distributed under the License is distributed on an "AS IS" BASIS, -+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ See the License for the specific language governing permissions and -+ limitations under the License. -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/README.md b/node_modules/@walletconnect/utils/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..35490d649f553e0200a1e1fd2e0a5b964346c234 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/README.md -@@ -0,0 +1,3 @@ -+# @walletconnect/utils -+ -+Utilities for WalletConnect Protocol -diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js b/node_modules/@walletconnect/utils/dist/index.cjs.js -new file mode 100644 -index 0000000000000000000000000000000000000000..580be0b4ae700ad636da44de67ae1e2d30919b98 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.cjs.js -@@ -0,0 +1,35 @@ -+ -+ -+ -+ -+function uniq(arr) { -+ const seen = Object.create(null); -+ const out = []; -+ for (let i = 0, len = arr.length; i < len; i++) { -+ const val = arr[i]; -+ // key must be string — handles numbers, strings, booleans fine -+ const key = typeof val + val; -+ if (seen[key] === undefined) { -+ seen[key] = true; -+ out.push(val); -+ } -+ } -+ return out; -+} -+ -+"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var Zt = require("detect-browser"), U = require("@walletconnect/time"), P = require("@walletconnect/window-getters"), Xt = require("@walletconnect/window-metadata"), en = require("query-string"), Te = require("@ethersproject/hash"), tn = require("@ethersproject/transactions"), Ae = require("@stablelib/chacha20poly1305"), nn = require("@stablelib/hkdf"), B = require("@stablelib/random"), H = require("@stablelib/sha256"), rn = require("@stablelib/x25519"), p = require("uint8arrays"), on = require("elliptic"), sn = require("@walletconnect/relay-auth"), an = require("@walletconnect/relay-api"); function Ie(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach(function (n) { if (n !== "default") { var r = Object.getOwnPropertyDescriptor(e, n); Object.defineProperty(t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] } }) } }), t.default = e, Object.freeze(t) } var J = Ie(en), Pe = Ie(rn); const W = ":"; function ne(e) { const [t, n] = e.split(W); return { namespace: t, reference: n } } function Ce(e) { const { namespace: t, reference: n } = e; return [t, n].join(W) } function re(e) { const [t, n, r] = e.split(W); return { namespace: t, reference: n, address: r } } function $e(e) { const { namespace: t, reference: n, address: r } = e; return [t, n, r].join(W) } function oe(e, t) { const n = []; return e.forEach(r => { const o = t(r); n.includes(o) || n.push(o) }), n } function je(e) { const { address: t } = re(e); return t } function _e(e) { const { namespace: t, reference: n } = re(e); return Ce({ namespace: t, reference: n }) } function cn(e, t) { const { namespace: n, reference: r } = ne(t); return $e({ namespace: n, reference: r, address: e }) } function un(e) { return oe(e, je) } function Ue(e) { return oe(e, _e) } function ln(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...o.accounts) }), n } function dn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...Ue(o.accounts)) }), n } function pn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...z(r, o)) }), n } function z(e, t) { return e.includes(":") ? [e] : t.chains || [] } var fn = Object.defineProperty, De = Object.getOwnPropertySymbols, mn = Object.prototype.hasOwnProperty, gn = Object.prototype.propertyIsEnumerable, Ve = (e, t, n) => t in e ? fn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, ke = (e, t) => { for (var n in t || (t = {})) mn.call(t, n) && Ve(e, n, t[n]); if (De) for (var n of De(t)) gn.call(t, n) && Ve(e, n, t[n]); return e }; const xe = "ReactNative", y = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Y = " ", hn = ":", Me = "/", se = 2, yn = 1e3, Fe = "js"; function ie() { return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u" } function D() { return !P.getDocument() && !!P.getNavigator() && navigator.product === xe } function M() { return !ie() && !!P.getNavigator() && !!P.getDocument() } function C() { return D() ? y.reactNative : ie() ? y.node : M() ? y.browser : y.unknown } function vn() { var e; try { return D() && typeof global < "u" && typeof (global == null ? void 0 : global.Application) < "u" ? (e = global.Application) == null ? void 0 : e.applicationId : void 0 } catch { return } } function Le(e, t) { let n = J.parse(e); return n = ke(ke({}, n), t), e = J.stringify(n), e } function En() { return Xt.getWindowMetadata() || { name: "", description: "", url: "", icons: [""] } } function bn(e, t) { var n; const r = C(), o = { protocol: e, version: t, env: r }; return r === "browser" && (o.host = ((n = P.getLocation()) == null ? void 0 : n.host) || "unknown"), o } function Ke() { if (C() === y.reactNative && typeof global < "u" && typeof (global == null ? void 0 : global.Platform) < "u") { const { OS: n, Version: r } = global.Platform; return [n, r].join("-") } const e = Zt.detect(); if (e === null) return "unknown"; const t = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown"; return e.type === "browser" ? [t, e.name, e.version].join("-") : [t, e.version].join("-") } function qe() { var e; const t = C(); return t === y.browser ? [t, ((e = P.getLocation()) == null ? void 0 : e.host) || "unknown"].join(":") : t } function Be(e, t, n) { const r = Ke(), o = qe(); return [[e, t].join("-"), [Fe, n].join("-"), r, o].join("/") } function Nn({ protocol: e, version: t, relayUrl: n, sdkVersion: r, auth: o, projectId: s, useOnCloseEvent: i, bundleId: u }) { const l = n.split("?"), a = Be(e, t, r), d = { auth: o, ua: a, projectId: s, useOnCloseEvent: i || void 0, origin: u || void 0 }, c = Le(l[1] || "", d); return l[0] + "?" + c } function On(e) { let t = (e.match(/^[^:]+(?=:\/\/)/gi) || [])[0]; const n = typeof t < "u" ? e.split("://")[1] : e; return t = t === "wss" ? "https" : "http", [t, n].join("://") } function Sn(e, t, n) { if (!e[t] || typeof e[t] !== n) throw new Error(`Missing or invalid "${t}" param`) } function He(e, t = se) { return Je(e.split(Me), t) } function wn(e) { return He(e).join(Y) } function w(e, t) { return e.filter(n => t.includes(n)).length === e.length } function Je(e, t = se) { return e.slice(Math.max(e.length - t, 0)) } function Rn(e) { return Object.fromEntries(e.entries()) } function Tn(e) { return new Map(Object.entries(e)) } function An(e, t) { const n = {}; return Object.keys(e).forEach(r => { n[r] = t(e[r]) }), n } const In = e => e; function We(e) { return e.trim().replace(/^\w/, t => t.toUpperCase()) } function Pn(e) { return e.split(Y).map(t => We(t)).join(Y) } function Cn(e = U.FIVE_MINUTES, t) { const n = U.toMiliseconds(e || U.FIVE_MINUTES); let r, o, s; return { resolve: i => { s && r && (clearTimeout(s), r(i)) }, reject: i => { s && o && (clearTimeout(s), o(i)) }, done: () => new Promise((i, u) => { s = setTimeout(() => { u(new Error(t)) }, n), r = i, o = u }) } } function $n(e, t, n) { return new Promise(async (r, o) => { const s = setTimeout(() => o(new Error(n)), t); try { const i = await e; r(i) } catch (i) { o(i) } clearTimeout(s) }) } function ae(e, t) { if (typeof t == "string" && t.startsWith(`${e}:`)) return t; if (e.toLowerCase() === "topic") { if (typeof t != "string") throw new Error('Value must be "string" for expirer target type: topic'); return `topic:${t}` } else if (e.toLowerCase() === "id") { if (typeof t != "number") throw new Error('Value must be "number" for expirer target type: id'); return `id:${t}` } throw new Error(`Unknown expirer target type: ${e}`) } function jn(e) { return ae("topic", e) } function _n(e) { return ae("id", e) } function Un(e) { const [t, n] = e.split(":"), r = { id: void 0, topic: void 0 }; if (t === "topic" && typeof n == "string") r.topic = n; else if (t === "id" && Number.isInteger(Number(n))) r.id = Number(n); else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`); return r } function Dn(e, t) { return U.fromMiliseconds((t || Date.now()) + U.toMiliseconds(e)) } function Vn(e) { return Date.now() >= U.toMiliseconds(e) } function kn(e, t) { return `${e}${t ? `:${t}` : ""}` } function O(e = [], t = []) { return [...uniq([...e, ...t])] } async function xn({ id: e, topic: t, wcDeepLink: n }) { var r; try { if (!n) return; const o = typeof n == "string" ? JSON.parse(n) : n, s = o?.href; if (typeof s != "string") return; const i = ze(s, e, t), u = C(); if (u === y.browser) { if (!((r = P.getDocument()) != null && r.hasFocus())) { console.warn("Document does not have focus, skipping deeplink."); return } i.startsWith("https://") || i.startsWith("http://") ? window.open(i, "_blank", "noreferrer noopener") : window.open(i, Ye() ? "_blank" : "_self", "noreferrer noopener") } else u === y.reactNative && typeof (global == null ? void 0 : global.Linking) < "u" && await global.Linking.openURL(i) } catch (o) { console.error(o) } } function ze(e, t, n) { const r = `requestId=${t}&sessionTopic=${n}`; e.endsWith("/") && (e = e.slice(0, -1)); let o = `${e}`; if (e.startsWith("https://t.me")) { const s = e.includes("?") ? "&startapp=" : "?startapp="; o = `${o}${s}${Ge(r, !0)}` } else o = `${o}/wc?${r}`; return o } async function Mn(e, t) { let n = ""; try { if (M() && (n = localStorage.getItem(t), n)) return n; n = await e.getItem(t) } catch (r) { console.error(r) } return n } function ce(e, t) { return e.filter(n => t.includes(n)) } function Fn(e, t) { if (!e.includes(t)) return null; const n = e.split(/([&,?,=])/), r = n.indexOf(t); return n[r + 2] } function Ln() { return typeof crypto < "u" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu, e => { const t = Math.random() * 16 | 0; return (e === "x" ? t : t & 3 | 8).toString(16) }) } function Kn() { return typeof process < "u" && process.env.IS_VITEST === "true" } function Ye() { return typeof window < "u" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto) } function Ge(e, t = !1) { const n = Buffer.from(e).toString("base64"); return t ? n.replace(/[=]/g, "") : n } function ue(e) { return Buffer.from(e, "base64").toString("utf-8") } const qn = "https://rpc.walletconnect.org/v1"; async function Qe(e, t, n, r, o, s) { switch (n.t) { case "eip191": return Ze(e, t, n.s); case "eip1271": return await Xe(e, t, n.s, r, o, s); default: throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`) } } function Ze(e, t, n) { return tn.recoverAddress(Te.hashMessage(t), n).toLowerCase() === e.toLowerCase() } async function Xe(e, t, n, r, o, s) { const i = ne(r); if (!i.namespace || !i.reference) throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`); try { const u = "0x1626ba7e", l = "0000000000000000000000000000000000000000000000000000000000000040", a = "0000000000000000000000000000000000000000000000000000000000000041", d = n.substring(2), c = Te.hashMessage(t).substring(2), f = u + c + l + a + d, h = await fetch(`${s || qn}/?chainId=${r}&projectId=${o}`, { method: "POST", body: JSON.stringify({ id: Bn(), jsonrpc: "2.0", method: "eth_call", params: [{ to: e, data: f }, "latest"] }) }), { result: m } = await h.json(); return m ? m.slice(0, u.length).toLowerCase() === u.toLowerCase() : !1 } catch (u) { return console.error("isValidEip1271Signature: ", u), !1 } } function Bn() { return Date.now() + Math.floor(Math.random() * 1e3) } var Hn = Object.defineProperty, Jn = Object.defineProperties, Wn = Object.getOwnPropertyDescriptors, et = Object.getOwnPropertySymbols, zn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, tt = (e, t, n) => t in e ? Hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, le = (e, t) => { for (var n in t || (t = {})) zn.call(t, n) && tt(e, n, t[n]); if (et) for (var n of et(t)) Yn.call(t, n) && tt(e, n, t[n]); return e }, nt = (e, t) => Jn(e, Wn(t)); const Gn = "did:pkh:", G = e => e?.split(":"), rt = e => { const t = e && G(e); if (t) return e.includes(Gn) ? t[3] : t[1] }, ot = e => { const t = e && G(e); if (t) return t[2] + ":" + t[3] }, de = e => { const t = e && G(e); if (t) return t.pop() }; async function Qn(e) { const { cacao: t, projectId: n } = e, { s: r, p: o } = t, s = st(o, o.iss), i = de(o.iss); return await Qe(i, s, r, ot(o.iss), n) } const st = (e, t) => { -+ const n = `${e.domain} wants you to sign in with your Ethereum account:`, r = de(t); if (!e.aud && !e.uri) throw new Error("Either `aud` or `uri` is required to construct the message"); let o = e.statement || void 0; const s = `URI: ${e.aud || e.uri}`, i = `Version: ${e.version}`, u = `Chain ID: ${rt(t)}`, l = `Nonce: ${e.nonce}`, a = `Issued At: ${e.iat}`, d = e.exp ? `Expiration Time: ${e.exp}` : void 0, c = e.nbf ? `Not Before: ${e.nbf}` : void 0, f = e.requestId ? `Request ID: ${e.requestId}` : void 0, h = e.resources ? `Resources:${e.resources.map(g => ` -+- ${g}`).join("")}` : void 0, m = Z(e.resources); if (m) { const g = R(m); o = me(o, g) } return [n, r, "", o, "", s, i, u, l, a, d, c, f, h].filter(g => g != null).join(` -+`) -+}; function Zn(e, t, n) { return n.includes("did:pkh:") || (n = `did:pkh:${n}`), { h: { t: "caip122" }, p: { iss: n, domain: e.domain, aud: e.aud, version: e.version, nonce: e.nonce, iat: e.iat, statement: e.statement, requestId: e.requestId, resources: e.resources, nbf: e.nbf, exp: e.exp }, s: t } } function Xn(e) { var t; const { authPayload: n, chains: r, methods: o } = e, s = n.statement || ""; if (!(r != null && r.length)) return n; const i = n.chains, u = ce(i, r); if (!(u != null && u.length)) throw new Error("No supported chains"); const l = it(n.resources); if (!l) return n; N(l); const a = at(l, "eip155"); let d = n?.resources || []; if (a != null && a.length) { const c = ct(a), f = ce(c, o); if (!(f != null && f.length)) throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`); const h = pe("request", f, { chains: u }), m = pt(l, "eip155", h); d = ((t = n?.resources) == null ? void 0 : t.slice(0, -1)) || [], d.push(Q(m)) } return nt(le({}, n), { statement: mt(s, Z(d)), chains: u, resources: n != null && n.resources || d.length > 0 ? d : void 0 }) } function it(e) { const t = Z(e); if (t && fe(t)) return R(t) } function er(e, t) { var n; return (n = e?.att) == null ? void 0 : n.hasOwnProperty(t) } function at(e, t) { var n, r; return (n = e?.att) != null && n[t] ? Object.keys((r = e?.att) == null ? void 0 : r[t]) : [] } function tr(e) { return e?.map(t => Object.keys(t)) || [] } function ct(e) { return e?.map(t => { var n; return (n = t.split("/")) == null ? void 0 : n[1] }) || [] } function ut(e) { return Buffer.from(JSON.stringify(e)).toString("base64") } function lt(e) { return JSON.parse(Buffer.from(e, "base64").toString("utf-8")) } function N(e) { if (!e) throw new Error("No recap provided, value is undefined"); if (!e.att) throw new Error("No `att` property found"); const t = Object.keys(e.att); if (!(t != null && t.length)) throw new Error("No resources found in `att` property"); t.forEach(n => { const r = e.att[n]; if (Array.isArray(r)) throw new Error(`Resource must be an object: ${n}`); if (typeof r != "object") throw new Error(`Resource must be an object: ${n}`); if (!Object.keys(r).length) throw new Error(`Resource object is empty: ${n}`); Object.keys(r).forEach(o => { const s = r[o]; if (!Array.isArray(s)) throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`); if (!s.length) throw new Error(`Value of ${o} is empty array, must be an array with objects`); s.forEach(i => { if (typeof i != "object") throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`) }) }) }) } function dt(e, t, n, r = {}) { return n?.sort((o, s) => o.localeCompare(s)), { att: { [e]: pe(t, n, r) } } } function pt(e, t, n) { var r; return e.att[t] = le({}, n), ((r = Object.keys(e.att)) == null ? void 0 : r.sort((o, s) => o.localeCompare(s))).reduce((o, s) => (o.att[s] = e.att[s], o), { att: {} }) } function pe(e, t, n = {}) { t = t?.sort((o, s) => o.localeCompare(s)); const r = t.map(o => ({ [`${e}/${o}`]: [n] })); return Object.assign({}, ...r) } function Q(e) { return N(e), `urn:recap:${ut(e).replace(/=/g, "")}` } function R(e) { const t = lt(e.replace("urn:recap:", "")); return N(t), t } function nr(e, t, n) { const r = dt(e, t, n); return Q(r) } function fe(e) { return e && e.includes("urn:recap:") } function rr(e, t) { const n = R(e), r = R(t), o = ft(n, r); return Q(o) } function ft(e, t) { N(e), N(t); const n = Object.keys(e.att).concat(Object.keys(t.att)).sort((o, s) => o.localeCompare(s)), r = { att: {} }; return n.forEach(o => { var s, i; Object.keys(((s = e.att) == null ? void 0 : s[o]) || {}).concat(Object.keys(((i = t.att) == null ? void 0 : i[o]) || {})).sort((u, l) => u.localeCompare(l)).forEach(u => { var l, a; r.att[o] = nt(le({}, r.att[o]), { [u]: ((l = e.att[o]) == null ? void 0 : l[u]) || ((a = t.att[o]) == null ? void 0 : a[u]) }) }) }), r } function me(e = "", t) { N(t); const n = "I further authorize the stated URI to perform the following actions on my behalf: "; if (e.includes(n)) return e; const r = []; let o = 0; Object.keys(t.att).forEach(u => { const l = Object.keys(t.att[u]).map(c => ({ ability: c.split("/")[0], action: c.split("/")[1] })); l.sort((c, f) => c.action.localeCompare(f.action)); const a = {}; l.forEach(c => { a[c.ability] || (a[c.ability] = []), a[c.ability].push(c.action) }); const d = Object.keys(a).map(c => (o++, `(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`)); r.push(d.join(", ").replace(".,", ".")) }); const s = r.join(" "), i = `${n}${s}`; return `${e ? e + " " : ""}${i}` } function or(e) { var t; const n = R(e); N(n); const r = (t = n.att) == null ? void 0 : t.eip155; return r ? Object.keys(r).map(o => o.split("/")[1]) : [] } function sr(e) { const t = R(e); N(t); const n = []; return Object.values(t.att).forEach(r => { Object.values(r).forEach(o => { var s; (s = o?.[0]) != null && s.chains && n.push(o[0].chains) }) }), [...uniq(n.flat())] } function mt(e, t) { if (!t) return e; const n = R(t); return N(n), me(e, n) } function Z(e) { if (!e) return; const t = e?.[e.length - 1]; return fe(t) ? t : void 0 } const ge = "base10", v = "base16", he = "base64pad", ir = "base64url", V = "utf8", ye = 0, k = 1, F = 2, ar = 0, gt = 1, L = 12, ve = 32; function cr() { const e = Pe.generateKeyPair(); return { privateKey: p.toString(e.secretKey, v), publicKey: p.toString(e.publicKey, v) } } function ur() { const e = B.randomBytes(ve); return p.toString(e, v) } function lr(e, t) { const n = Pe.sharedKey(p.fromString(e, v), p.fromString(t, v), !0), r = new nn.HKDF(H.SHA256, n).expand(ve); return p.toString(r, v) } function dr(e) { const t = H.hash(p.fromString(e, v)); return p.toString(t, v) } function pr(e) { const t = H.hash(p.fromString(e, V)); return p.toString(t, v) } function Ee(e) { return p.fromString(`${e}`, ge) } function $(e) { return Number(p.toString(e, ge)) } function fr(e) { const t = Ee(typeof e.type < "u" ? e.type : ye); if ($(t) === k && typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); const n = typeof e.senderPublicKey < "u" ? p.fromString(e.senderPublicKey, v) : void 0, r = typeof e.iv < "u" ? p.fromString(e.iv, v) : B.randomBytes(L), o = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)).seal(r, p.fromString(e.message, V)); return be({ type: t, sealed: o, iv: r, senderPublicKey: n, encoding: e.encoding }) } function mr(e, t) { const n = Ee(F), r = B.randomBytes(L), o = p.fromString(e, V); return be({ type: n, sealed: o, iv: r, encoding: t }) } function gr(e) { const t = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)), { sealed: n, iv: r } = X({ encoded: e.encoded, encoding: e?.encoding }), o = t.open(r, n); if (o === null) throw new Error("Failed to decrypt"); return p.toString(o, V) } function hr(e, t) { const { sealed: n } = X({ encoded: e, encoding: t }); return p.toString(n, V) } function be(e) { const { encoding: t = he } = e; if ($(e.type) === F) return p.toString(p.concat([e.type, e.sealed]), t); if ($(e.type) === k) { if (typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); return p.toString(p.concat([e.type, e.senderPublicKey, e.iv, e.sealed]), t) } return p.toString(p.concat([e.type, e.iv, e.sealed]), t) } function X(e) { const { encoded: t, encoding: n = he } = e, r = p.fromString(t, n), o = r.slice(ar, gt), s = gt; if ($(o) === k) { const a = s + ve, d = a + L, c = r.slice(s, a), f = r.slice(a, d), h = r.slice(d); return { type: o, sealed: h, iv: f, senderPublicKey: c } } if ($(o) === F) { const a = r.slice(s), d = B.randomBytes(L); return { type: o, sealed: a, iv: d } } const i = s + L, u = r.slice(s, i), l = r.slice(i); return { type: o, sealed: l, iv: u } } function yr(e, t) { const n = X({ encoded: e, encoding: t?.encoding }); return ht({ type: $(n.type), senderPublicKey: typeof n.senderPublicKey < "u" ? p.toString(n.senderPublicKey, v) : void 0, receiverPublicKey: t?.receiverPublicKey }) } function ht(e) { const t = e?.type || ye; if (t === k) { if (typeof e?.senderPublicKey > "u") throw new Error("missing sender public key"); if (typeof e?.receiverPublicKey > "u") throw new Error("missing receiver public key") } return { type: t, senderPublicKey: e?.senderPublicKey, receiverPublicKey: e?.receiverPublicKey } } function vr(e) { return e.type === k && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string" } function Er(e) { return e.type === F } function yt(e) { return new on.ec("p256").keyFromPublic({ x: Buffer.from(e.x, "base64").toString("hex"), y: Buffer.from(e.y, "base64").toString("hex") }, "hex") } function br(e) { let t = e.replace(/-/g, "+").replace(/_/g, "/"); const n = t.length % 4; return n > 0 && (t += "=".repeat(4 - n)), t } function Nr(e) { return Buffer.from(br(e), "base64") } function Or(e, t) { const [n, r, o] = e.split("."), s = Nr(o); if (s.length !== 64) throw new Error("Invalid signature length"); const i = s.slice(0, 32).toString("hex"), u = s.slice(32, 64).toString("hex"), l = `${n}.${r}`, a = new H.SHA256().update(Buffer.from(l)).digest(), d = yt(t), c = Buffer.from(a).toString("hex"); if (!d.verify(c, { r: i, s: u })) throw new Error("Invalid signature"); return sn.decodeJWT(e).payload } const vt = "irn"; function Sr(e) { return e?.relay || { protocol: vt } } function wr(e) { const t = an.RELAY_JSONRPC[e]; if (typeof t > "u") throw new Error(`Relay Protocol not supported: ${e}`); return t } var Rr = Object.defineProperty, Tr = Object.defineProperties, Ar = Object.getOwnPropertyDescriptors, Et = Object.getOwnPropertySymbols, Ir = Object.prototype.hasOwnProperty, Pr = Object.prototype.propertyIsEnumerable, bt = (e, t, n) => t in e ? Rr(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Nt = (e, t) => { for (var n in t || (t = {})) Ir.call(t, n) && bt(e, n, t[n]); if (Et) for (var n of Et(t)) Pr.call(t, n) && bt(e, n, t[n]); return e }, Cr = (e, t) => Tr(e, Ar(t)); function Ot(e, t = "-") { const n = {}, r = "relay" + t; return Object.keys(e).forEach(o => { if (o.startsWith(r)) { const s = o.replace(r, ""), i = e[o]; n[s] = i } }), n } function $r(e) { if (!e.includes("wc:")) { const l = ue(e); l != null && l.includes("wc:") && (e = l) } e = e.includes("wc://") ? e.replace("wc://", "") : e, e = e.includes("wc:") ? e.replace("wc:", "") : e; const t = e.indexOf(":"), n = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r = e.substring(0, t), o = e.substring(t + 1, n).split("@"), s = typeof n < "u" ? e.substring(n) : "", i = J.parse(s), u = typeof i.methods == "string" ? i.methods.split(",") : void 0; return { protocol: r, topic: St(o[0]), version: parseInt(o[1], 10), symKey: i.symKey, relay: Ot(i), methods: u, expiryTimestamp: i.expiryTimestamp ? parseInt(i.expiryTimestamp, 10) : void 0 } } function St(e) { return e.startsWith("//") ? e.substring(2) : e } function wt(e, t = "-") { const n = "relay", r = {}; return Object.keys(e).forEach(o => { const s = n + t + o; e[o] && (r[s] = e[o]) }), r } function jr(e) { return `${e.protocol}:${e.topic}@${e.version}?` + J.stringify(Nt(Cr(Nt({ symKey: e.symKey }, wt(e.relay)), { expiryTimestamp: e.expiryTimestamp }), e.methods ? { methods: e.methods.join(",") } : {})) } function _r(e, t, n) { return `${e}?wc_ev=${n}&topic=${t}` } var Ur = Object.defineProperty, Dr = Object.defineProperties, Vr = Object.getOwnPropertyDescriptors, Rt = Object.getOwnPropertySymbols, kr = Object.prototype.hasOwnProperty, xr = Object.prototype.propertyIsEnumerable, Tt = (e, t, n) => t in e ? Ur(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Mr = (e, t) => { for (var n in t || (t = {})) kr.call(t, n) && Tt(e, n, t[n]); if (Rt) for (var n of Rt(t)) xr.call(t, n) && Tt(e, n, t[n]); return e }, Fr = (e, t) => Dr(e, Vr(t)); function j(e) { const t = []; return e.forEach(n => { const [r, o] = n.split(":"); t.push(`${r}:${o}`) }), t } function At(e) { const t = []; return Object.values(e).forEach(n => { t.push(...j(n.accounts)) }), t } function It(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.methods) }), n } function Pt(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.events) }), n } function Lr(e, t) { const n = Ft(e, t); if (n) throw new Error(n.message); const r = {}; for (const [o, s] of Object.entries(e)) r[o] = { methods: s.methods, events: s.events, chains: s.accounts.map(i => `${i.split(":")[0]}:${i.split(":")[1]}`) }; return r } function Kr(e) { const { proposal: { requiredNamespaces: t, optionalNamespaces: n = {} }, supportedNamespaces: r } = e, o = Oe(t), s = Oe(n), i = {}; Object.keys(r).forEach(a => { const d = r[a].chains, c = r[a].methods, f = r[a].events, h = r[a].accounts; d.forEach(m => { if (!h.some(g => g.includes(m))) throw new Error(`No accounts provided for chain ${m} in namespace ${a}`) }), i[a] = { chains: d, methods: c, events: f, accounts: h } }); const u = Kt(t, i, "approve()"); if (u) throw new Error(u.message); const l = {}; return !Object.keys(t).length && !Object.keys(n).length ? i : (Object.keys(o).forEach(a => { const d = r[a].chains.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.chains) == null ? void 0 : b.includes(m) }), c = r[a].methods.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.methods) == null ? void 0 : b.includes(m) }), f = r[a].events.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.events) == null ? void 0 : b.includes(m) }), h = d.map(m => r[a].accounts.filter(g => g.includes(`${m}:`))).flat(); l[a] = { chains: d, methods: c, events: f, accounts: h } }), Object.keys(s).forEach(a => { var d, c, f, h, m, g; if (!r[a]) return; const b = (c = (d = s[a]) == null ? void 0 : d.chains) == null ? void 0 : c.filter(A => r[a].chains.includes(A)), Yt = r[a].methods.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.methods) == null ? void 0 : x.includes(A) }), Gt = r[a].events.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.events) == null ? void 0 : x.includes(A) }), Qt = b?.map(A => r[a].accounts.filter(I => I.includes(`${A}:`))).flat(); l[a] = { chains: O((f = l[a]) == null ? void 0 : f.chains, b), methods: O((h = l[a]) == null ? void 0 : h.methods, Yt), events: O((m = l[a]) == null ? void 0 : m.events, Gt), accounts: O((g = l[a]) == null ? void 0 : g.accounts, Qt) } }), l) } function Ne(e) { return e.includes(":") } function Ct(e) { return Ne(e) ? e.split(":")[0] : e } function Oe(e) { var t, n, r; const o = {}; if (!ee(e)) return o; for (const [s, i] of Object.entries(e)) { const u = Ne(s) ? [s] : i.chains, l = i.methods || [], a = i.events || [], d = Ct(s); o[d] = Fr(Mr({}, o[d]), { chains: O(u, (t = o[d]) == null ? void 0 : t.chains), methods: O(l, (n = o[d]) == null ? void 0 : n.methods), events: O(a, (r = o[d]) == null ? void 0 : r.events) }) } return o } function $t(e) { const t = {}; return e?.forEach(n => { const [r, o] = n.split(":"); t[r] || (t[r] = { accounts: [], chains: [], events: [] }), t[r].accounts.push(n), t[r].chains.push(`${r}:${o}`) }), t } function qr(e, t) { t = t.map(r => r.replace("did:pkh:", "")); const n = $t(t); for (const [r, o] of Object.entries(n)) o.methods ? o.methods = O(o.methods, e) : o.methods = e, o.events = ["chainChanged", "accountsChanged"]; return n } const jt = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, _t = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } }; function S(e, t) { const { message: n, code: r } = _t[e]; return { message: t ? `${n} ${t}` : n, code: r } } function _(e, t) { const { message: n, code: r } = jt[e]; return { message: t ? `${n} ${t}` : n, code: r } } function K(e, t) { return Array.isArray(e) ? typeof t < "u" && e.length ? e.every(t) : !0 : !1 } function ee(e) { return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length } function T(e) { return typeof e > "u" } function E(e, t) { return t && T(e) ? !0 : typeof e == "string" && !!e.trim().length } function te(e, t) { return t && T(e) ? !0 : typeof e == "number" && !isNaN(e) } function Br(e, t) { const { requiredNamespaces: n } = t, r = Object.keys(e.namespaces), o = Object.keys(n); let s = !0; return w(o, r) ? (r.forEach(i => { const { accounts: u, methods: l, events: a } = e.namespaces[i], d = j(u), c = n[i]; (!w(z(i, c), d) || !w(c.methods, l) || !w(c.events, a)) && (s = !1) }), s) : !1 } function q(e) { return E(e, !1) && e.includes(":") ? e.split(":").length === 2 : !1 } function Ut(e) { if (E(e, !1) && e.includes(":")) { const t = e.split(":"); if (t.length === 3) { const n = t[0] + ":" + t[1]; return !!t[2] && q(n) } } return !1 } function Hr(e) { function t(n) { try { return typeof new URL(n) < "u" } catch { return !1 } } try { if (E(e, !1)) { if (t(e)) return !0; const n = ue(e); return t(n) } } catch { } return !1 } function Jr(e) { var t; return (t = e?.proposer) == null ? void 0 : t.publicKey } function Wr(e) { return e?.topic } function zr(e, t) { let n = null; return E(e?.publicKey, !1) || (n = S("MISSING_OR_INVALID", `${t} controller public key should be a string`)), n } function Se(e) { let t = !0; return K(e) ? e.length && (t = e.every(n => E(n, !1))) : t = !1, t } function Dt(e, t, n) { let r = null; return K(t) && t.length ? t.forEach(o => { r || q(o) || (r = _("UNSUPPORTED_CHAINS", `${n}, chain ${o} should be a string and conform to "namespace:chainId" format`)) }) : q(e) || (r = _("UNSUPPORTED_CHAINS", `${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)), r } function Vt(e, t, n) { let r = null; return Object.entries(e).forEach(([o, s]) => { if (r) return; const i = Dt(o, z(o, s), `${t} ${n}`); i && (r = i) }), r } function kt(e, t) { let n = null; return K(e) ? e.forEach(r => { n || Ut(r) || (n = _("UNSUPPORTED_ACCOUNTS", `${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`)) }) : n = _("UNSUPPORTED_ACCOUNTS", `${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), n } function xt(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = kt(r?.accounts, `${t} namespace`); o && (n = o) }), n } function Mt(e, t) { let n = null; return Se(e?.methods) ? Se(e?.events) || (n = _("UNSUPPORTED_EVENTS", `${t}, events should be an array of strings or empty array for no events`)) : n = _("UNSUPPORTED_METHODS", `${t}, methods should be an array of strings or empty array for no methods`), n } function we(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = Mt(r, `${t}, namespace`); o && (n = o) }), n } function Yr(e, t, n) { let r = null; if (e && ee(e)) { const o = we(e, t); o && (r = o); const s = Vt(e, t, n); s && (r = s) } else r = S("MISSING_OR_INVALID", `${t}, ${n} should be an object with data`); return r } function Ft(e, t) { let n = null; if (e && ee(e)) { const r = we(e, t); r && (n = r); const o = xt(e, t); o && (n = o) } else n = S("MISSING_OR_INVALID", `${t}, namespaces should be an object with data`); return n } function Lt(e) { return E(e.protocol, !0) } function Gr(e, t) { let n = !1; return t && !e ? n = !0 : e && K(e) && e.length && e.forEach(r => { n = Lt(r) }), n } function Qr(e) { return typeof e == "number" } function Zr(e) { return typeof e < "u" && typeof e !== null } function Xr(e) { return !(!e || typeof e != "object" || !e.code || !te(e.code, !1) || !e.message || !E(e.message, !1)) } function eo(e) { return !(T(e) || !E(e.method, !1)) } function to(e) { return !(T(e) || T(e.result) && T(e.error) || !te(e.id, !1) || !E(e.jsonrpc, !1)) } function no(e) { return !(T(e) || !E(e.name, !1)) } function ro(e, t) { return !(!q(t) || !At(e).includes(t)) } function oo(e, t, n) { return E(n, !1) ? It(e, t).includes(n) : !1 } function so(e, t, n) { return E(n, !1) ? Pt(e, t).includes(n) : !1 } function Kt(e, t, n) { -+ let r = null; const o = io(e), s = ao(t), i = Object.keys(o), u = Object.keys(s), l = qt(Object.keys(e)), a = qt(Object.keys(t)), d = l.filter(c => !a.includes(c)); return d.length && (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces keys don't satisfy requiredNamespaces. -+ Required: ${d.toString()} -+ Received: ${Object.keys(t).toString()}`)), w(i, u) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces chains don't satisfy required namespaces. -+ Required: ${i.toString()} -+ Approved: ${u.toString()}`)), Object.keys(t).forEach(c => { -+ if (!c.includes(":") || r) return; const f = j(t[c].accounts); f.includes(c) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces accounts don't satisfy namespace accounts for ${c} -+ Required: ${c} -+ Approved: ${f.toString()}`)) -+ }), i.forEach(c => { r || (w(o[c].methods, s[c].methods) ? w(o[c].events, s[c].events) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces events don't satisfy namespace events for ${c}`)) : r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces methods don't satisfy namespace methods for ${c}`)) }), r -+} function io(e) { const t = {}; return Object.keys(e).forEach(n => { var r; n.includes(":") ? t[n] = e[n] : (r = e[n].chains) == null || r.forEach(o => { t[o] = { methods: e[n].methods, events: e[n].events } }) }), t } function qt(e) { return [...uniq(e.map(t => t.includes(":") ? t.split(":")[0] : t))] } function ao(e) { const t = {}; return Object.keys(e).forEach(n => { if (n.includes(":")) t[n] = e[n]; else { const r = j(e[n].accounts); r?.forEach(o => { t[o] = { accounts: e[n].accounts.filter(s => s.includes(`${o}:`)), methods: e[n].methods, events: e[n].events } }) } }), t } function co(e, t) { return te(e, !1) && e <= t.max && e >= t.min } function uo() { const e = C(); return new Promise(t => { switch (e) { case y.browser: t(Bt()); break; case y.reactNative: t(Ht()); break; case y.node: t(Jt()); break; default: t(!0) } }) } function Bt() { return M() && navigator?.onLine } async function Ht() { if (D() && typeof global < "u" && global != null && global.NetInfo) { const e = await (global == null ? void 0 : global.NetInfo.fetch()); return e?.isConnected } return !0 } function Jt() { return !0 } function lo(e) { switch (C()) { case y.browser: Wt(e); break; case y.reactNative: zt(e); break; case y.node: break } } function Wt(e) { !D() && M() && (window.addEventListener("online", () => e(!0)), window.addEventListener("offline", () => e(!1))) } function zt(e) { D() && typeof global < "u" && global != null && global.NetInfo && global?.NetInfo.addEventListener(t => e(t?.isConnected)) } const Re = {}; class po { static get(t) { return Re[t] } static set(t, n) { Re[t] = n } static delete(t) { delete Re[t] } } exports.BASE10 = ge, exports.BASE16 = v, exports.BASE64 = he, exports.BASE64URL = ir, exports.COLON = hn, exports.DEFAULT_DEPTH = se, exports.EMPTY_SPACE = Y, exports.ENV_MAP = y, exports.INTERNAL_ERRORS = _t, exports.MemoryStore = po, exports.ONE_THOUSAND = yn, exports.REACT_NATIVE_PRODUCT = xe, exports.RELAYER_DEFAULT_PROTOCOL = vt, exports.SDK_ERRORS = jt, exports.SDK_TYPE = Fe, exports.SLASH = Me, exports.TYPE_0 = ye, exports.TYPE_1 = k, exports.TYPE_2 = F, exports.UTF8 = V, exports.addResourceToRecap = pt, exports.appendToQueryString = Le, exports.assertType = Sn, exports.assignAbilityToActions = pe, exports.base64Decode = lt, exports.base64Encode = ut, exports.buildApprovedNamespaces = Kr, exports.buildAuthObject = Zn, exports.buildNamespacesFromAuth = qr, exports.buildRecapStatement = mt, exports.calcExpiry = Dn, exports.capitalize = Pn, exports.capitalizeWord = We, exports.createDelayedPromise = Cn, exports.createEncodedRecap = nr, exports.createExpiringPromise = $n, exports.createRecap = dt, exports.decodeRecap = R, exports.decodeTypeByte = $, exports.decodeTypeTwoEnvelope = hr, exports.decrypt = gr, exports.deriveSymKey = lr, exports.deserialize = X, exports.encodeRecap = Q, exports.encodeTypeByte = Ee, exports.encodeTypeTwoEnvelope = mr, exports.encrypt = fr, exports.engineEvent = kn, exports.enumify = In, exports.formatAccountId = $e, exports.formatAccountWithChain = cn, exports.formatChainId = Ce, exports.formatDeeplinkUrl = ze, exports.formatExpirerTarget = ae, exports.formatIdTarget = _n, exports.formatMessage = st, exports.formatMessageContext = wn, exports.formatRelayParams = wt, exports.formatRelayRpcUrl = Nn, exports.formatStatementFromRecap = me, exports.formatTopicTarget = jn, exports.formatUA = Be, exports.formatUri = jr, exports.fromBase64 = ue, exports.generateKeyPair = cr, exports.generateRandomBytes32 = ur, exports.getAccountsChains = j, exports.getAccountsFromNamespaces = ln, exports.getAddressFromAccount = je, exports.getAddressesFromAccounts = un, exports.getAppMetadata = En, exports.getBrowserOnlineStatus = Bt, exports.getBundleId = vn, exports.getChainFromAccount = _e, exports.getChainsFromAccounts = Ue, exports.getChainsFromNamespace = z, exports.getChainsFromNamespaces = dn, exports.getChainsFromRecap = sr, exports.getChainsFromRequiredNamespaces = pn, exports.getCommonValuesInArrays = ce, exports.getCryptoKeyFromKeyData = yt, exports.getDecodedRecapFromResources = it, exports.getDeepLink = Mn, exports.getDidAddress = de, exports.getDidAddressSegments = G, exports.getDidChainId = rt, exports.getEnvironment = C, exports.getHttpUrl = On, exports.getInternalError = S, exports.getJavascriptID = qe, exports.getJavascriptOS = Ke, exports.getLastItems = Je, exports.getLinkModeURL = _r, exports.getMethodsFromRecap = or, exports.getNamespacedDidChainId = ot, exports.getNamespacesChains = At, exports.getNamespacesEventsForChainId = Pt, exports.getNamespacesFromAccounts = $t, exports.getNamespacesMethodsForChainId = It, exports.getNodeOnlineStatus = Jt, exports.getReCapActions = ct, exports.getReactNativeOnlineStatus = Ht, exports.getRecapAbilitiesFromResource = tr, exports.getRecapFromResources = Z, exports.getRecapResource = at, exports.getRelayClientMetadata = bn, exports.getRelayProtocolApi = wr, exports.getRelayProtocolName = Sr, exports.getRequiredNamespacesFromNamespaces = Lr, exports.getSdkError = _, exports.getSearchParamFromURL = Fn, exports.getUniqueValues = oe, exports.handleDeeplinkRedirect = xn, exports.hasOverlap = w, exports.hashKey = dr, exports.hashMessage = pr, exports.isBrowser = M, exports.isCaipNamespace = Ne, exports.isConformingNamespaces = Kt, exports.isExpired = Vn, exports.isNode = ie, exports.isOnline = uo, exports.isProposalStruct = Jr, exports.isReactNative = D, exports.isRecap = fe, exports.isSessionCompatible = Br, exports.isSessionStruct = Wr, exports.isTelegram = Ye, exports.isTestRun = Kn, exports.isTypeOneEnvelope = vr, exports.isTypeTwoEnvelope = Er, exports.isUndefined = T, exports.isValidAccountId = Ut, exports.isValidAccounts = kt, exports.isValidActions = Mt, exports.isValidArray = K, exports.isValidChainId = q, exports.isValidChains = Dt, exports.isValidController = zr, exports.isValidEip1271Signature = Xe, exports.isValidEip191Signature = Ze, exports.isValidErrorReason = Xr, exports.isValidEvent = no, exports.isValidId = Qr, exports.isValidNamespaceAccounts = xt, exports.isValidNamespaceActions = we, exports.isValidNamespaceChains = Vt, exports.isValidNamespaceMethodsOrEvents = Se, exports.isValidNamespaces = Ft, exports.isValidNamespacesChainId = ro, exports.isValidNamespacesEvent = so, exports.isValidNamespacesRequest = oo, exports.isValidNumber = te, exports.isValidObject = ee, exports.isValidParams = Zr, exports.isValidRecap = N, exports.isValidRelay = Lt, exports.isValidRelays = Gr, exports.isValidRequest = eo, exports.isValidRequestExpiry = co, exports.isValidRequiredNamespaces = Yr, exports.isValidResponse = to, exports.isValidString = E, exports.isValidUrl = Hr, exports.mapEntries = An, exports.mapToObj = Rn, exports.mergeArrays = O, exports.mergeEncodedRecaps = rr, exports.mergeRecaps = ft, exports.normalizeNamespaces = Oe, exports.objToMap = Tn, exports.parseAccountId = re, exports.parseChainId = ne, exports.parseContextNames = He, exports.parseExpirerTarget = Un, exports.parseNamespaceKey = Ct, exports.parseRelayParams = Ot, exports.parseTopic = St, exports.parseUri = $r, exports.populateAuthPayload = Xn, exports.recapHasResource = er, exports.serialize = be, exports.subscribeToBrowserNetworkChange = Wt, exports.subscribeToNetworkChange = lo, exports.subscribeToReactNativeNetworkChange = zt, exports.toBase64 = Ge, exports.uuidv4 = Ln, exports.validateDecoding = yr, exports.validateEncoding = ht, exports.validateSignedCacao = Qn, exports.verifyP256Jwt = Or, exports.verifySignature = Qe; -+//# sourceMappingURL=index.cjs.js.map -diff --git a/node_modules/@walletconnect/utils/dist/index.cjs.js.map b/node_modules/@walletconnect/utils/dist/index.cjs.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..031b7fb5ae91e997312d6fdb999f34e4e18315d4 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.cjs.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.cjs.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAMA,EAAiB,GAEhB,CAAA,SAAS,aAAaC,CAA8B,CAAA,CACzD,KAAM,CAACC,CAAAA,CAAWC,CAAS,CAAA,CAAIF,EAAM,KAAMD,CAAAA,CAAc,EACzD,OAAO,CAAE,UAAAE,CAAW,CAAA,SAAA,CAAAC,CAAU,CAChC,CAEgB,SAAA,aAAA,CAAcC,EAA+B,CAC3D,KAAM,CAAE,SAAAF,CAAAA,CAAAA,CAAW,SAAAC,CAAAA,CAAU,EAAIC,CACjC,CAAA,OAAO,CAACF,CAAWC,CAAAA,CAAS,EAAE,IAAKH,CAAAA,CAAc,CACnD,UAEgB,cAAeK,CAAAA,CAAAA,CAAkC,CAC/D,KAAM,CAACH,EAAWC,CAAWG,CAAAA,CAAO,CAAID,CAAAA,CAAAA,CAAQ,MAAML,CAAc,CAAA,CACpE,OAAO,CAAE,SAAA,CAAAE,EAAW,SAAAC,CAAAA,CAAAA,CAAW,OAAAG,CAAAA,CAAQ,CACzC,CAEO,SAAS,gBAAgBF,CAAiC,CAAA,CAC/D,KAAM,CAAE,SAAA,CAAAF,EAAW,SAAAC,CAAAA,CAAAA,CAAW,QAAAG,CAAQ,CAAA,CAAIF,EAC1C,OAAO,CAACF,EAAWC,CAAWG,CAAAA,CAAO,CAAE,CAAA,IAAA,CAAKN,CAAc,CAC5D,UAEgB,eAAgBO,CAAAA,CAAAA,CAAiBC,EAA2C,CAC1F,MAAMC,CAAmB,CAAA,GACzB,OAAAF,CAAAA,CAAM,QAASG,CAAQ,EAAA,CACrB,MAAMC,CAAQH,CAAAA,CAAAA,CAAOE,CAAG,CAAA,CACnBD,EAAO,QAASE,CAAAA,CAAK,GAAGF,CAAO,CAAA,IAAA,CAAKE,CAAK,EAChD,CAAC,EACMF,CACT,UAEgB,qBAAsBJ,CAAAA,CAAAA,CAAiB,CACrD,KAAM,CAAE,QAAAC,CAAQ,CAAA,CAAI,cAAeD,CAAAA,CAAO,EAC1C,OAAOC,CACT,CAEgB,SAAA,mBAAA,CAAoBD,EAAiB,CACnD,KAAM,CAAE,SAAA,CAAAH,EAAW,SAAAC,CAAAA,CAAU,EAAI,cAAeE,CAAAA,CAAO,EAEvD,OADc,aAAA,CAAc,CAAE,SAAA,CAAAH,EAAW,SAAAC,CAAAA,CAAU,CAAC,CAEtD,UAEgB,sBAAuBG,CAAAA,CAAAA,CAAiBL,EAAe,CACrE,KAAM,CAAE,SAAAC,CAAAA,CAAAA,CAAW,UAAAC,CAAU,CAAA,CAAI,aAAaF,CAAK,CAAA,CAEnD,OADgB,eAAA,CAAgB,CAAE,SAAAC,CAAAA,CAAAA,CAAW,UAAAC,CAAW,CAAA,OAAA,CAAAG,CAAQ,CAAC,CAEnE,CAEO,SAAS,yBAAyBM,CAAoB,CAAA,CAC3D,OAAO,eAAgBA,CAAAA,CAAAA,CAAU,qBAAqB,CACxD,CAEgB,SAAA,qBAAA,CAAsBA,EAAoB,CACxD,OAAO,gBAAgBA,CAAU,CAAA,mBAAmB,CACtD,CAEO,SAAS,0BACdC,CACAC,CAAAA,CAAAA,CAAiB,EACP,CAAA,CACV,MAAMF,CAAqB,CAAA,GAC3B,OAAO,MAAA,CAAA,IAAA,CAAKC,CAAU,CAAA,CAAE,QAASE,CAAQ,EAAA,CACvC,GAAID,CAAK,CAAA,MAAA,EAAU,CAACA,CAAK,CAAA,QAAA,CAASC,CAAG,CAAA,CAAG,OACxC,MAAMC,CAAAA,CAAKH,EAAWE,CAAG,CAAA,CACzBH,EAAS,IAAK,CAAA,GAAGI,CAAG,CAAA,QAAQ,EAC9B,CAAC,CAAA,CACMJ,CACT,CAEO,SAAS,wBACdC,CACAC,CAAAA,CAAAA,CAAiB,EACP,CAAA,CACV,MAAMG,CAAmB,CAAA,GACzB,OAAO,MAAA,CAAA,IAAA,CAAKJ,CAAU,CAAE,CAAA,OAAA,CAASE,CAAQ,EAAA,CACvC,GAAID,CAAK,CAAA,MAAA,EAAU,CAACA,CAAK,CAAA,QAAA,CAASC,CAAG,CAAG,CAAA,OACxC,MAAMC,CAAAA,CAAKH,EAAWE,CAAG,CAAA,CACzBE,EAAO,IAAK,CAAA,GAAG,sBAAsBD,CAAG,CAAA,QAAQ,CAAC,EACnD,CAAC,CACMC,CAAAA,CACT,CAEgB,SAAA,+BAAA,CACdC,EACAJ,CAAiB,CAAA,GACP,CACV,MAAMG,EAAmB,EAAC,CAC1B,cAAO,IAAKC,CAAAA,CAAkB,EAAE,OAASH,CAAAA,CAAAA,EAAQ,CAC/C,GAAID,EAAK,MAAU,EAAA,CAACA,EAAK,QAASC,CAAAA,CAAG,EAAG,OACxC,MAAMC,CAAKE,CAAAA,CAAAA,CAAmBH,CAAG,CACjCE,CAAAA,CAAAA,CAAO,KAAK,GAAG,sBAAA,CAAuBF,EAAKC,CAAE,CAAC,EAChD,CAAC,EACMC,CACT,UAEgB,sBACdf,CAAAA,CAAAA,CACAiB,EACA,CAEA,OAAOjB,EAAU,QAAS,CAAA,GAAG,EAAI,CAACA,CAAS,EAAIiB,CAAe,CAAA,MAAA,EAAU,EAC1E;;AChHA,IAAAC,GAAA,CAAA,MAAA,CAAA,cAAA,CAAA,IAAAC,GAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAAC,GAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAAC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAAH,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAD,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAAF,GAAA,CAAA,IAAA,IAAA,CAAA,IAAAA,GAAA,CAAA,CAAA,CAAA,CAAAC,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAeO,MAAM,qBAAuB,aAEvB,CAAA,OAAA,CAAU,CACrB,WAAA,CAAa,eACb,IAAM,CAAA,MAAA,CACN,OAAS,CAAA,SAAA,CACT,OAAS,CAAA,SACX,CAEa,CAAA,WAAA,CAAc,IAEd,KAAQ,CAAA,GAAA,CAER,KAAQ,CAAA,GAAA,CAER,aAAgB,CAAA,CAAA,CAEhB,YAAe,CAAA,GAAA,CAEf,SAAW,KAIjB,SAAS,MAAkB,EAAA,CAChC,OACE,OAAO,OAAY,EAAA,WAAA,EACnB,OAAO,OAAQ,CAAA,QAAA,EAAa,WAC5B,EAAA,OAAO,QAAQ,QAAS,CAAA,IAAA,EAAS,WAErC,UAEgB,aAAyB,EAAA,CACvC,OAAO,CAACE,yBAAY,EAAA,EAAK,CAAC,CAACC,4BAAkB,EAAA,SAAA,CAAU,OAAY,GAAA,oBACrE,CAEO,SAAS,SAAqB,EAAA,CACnC,OAAO,CAAC,MAAA,EAAY,EAAA,CAAC,CAACA,0BAAAA,EAAkB,EAAA,CAAC,CAACD,yBAAY,EACxD,CAEO,SAAS,gBAAyB,CACvC,OAAI,aAAc,EAAA,CAAU,QAAQ,WAChC,CAAA,MAAA,EAAiB,CAAA,OAAA,CAAQ,IACzB,CAAA,SAAA,EAAoB,CAAA,OAAA,CAAQ,QACzB,OAAQ,CAAA,OACjB,CAEO,SAAS,aAAkC,CA7DlD,IAAAE,CA8DE,CAAA,GAAI,CACF,OACE,aAAA,EACA,EAAA,OAAO,MAAW,EAAA,WAAA,EAClB,OAAQ,MAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAgB,cAAgB,WAEhCA,CAAAA,CAAAA,CAAAA,CAAA,MAAe,CAAA,WAAA,GAAf,YAAAA,CAA4B,CAAA,aAAA,CAEtC,KACF,CAAA,CAAA,MAAQC,EAAN,CACA,MACF,CACF,CAIgB,SAAA,mBAAA,CAAoBC,CAAqBC,CAAAA,CAAAA,CAA6B,CACpF,IAAIC,CAAAA,CAAcC,YAAG,CAAA,KAAA,CAAMH,CAAW,CAAA,CAEtC,OAAAE,CAAAA,CAAcE,QAAA,EAAKF,CAAAA,CAAAA,CAAAA,CAAgBD,CAEnCD,CAAAA,CAAAA,CAAAA,CAAcG,YAAG,CAAA,SAAA,CAAUD,CAAW,CAAA,CAE/BF,CACT,CAIO,SAAS,cAA2C,EAAA,CACzD,OACEK,gCAAkB,EAAA,EAAK,CACrB,IAAA,CAAM,GACN,WAAa,CAAA,EAAA,CACb,GAAK,CAAA,EAAA,CACL,KAAO,CAAA,CAAC,EAAE,CACZ,CAEJ,CAEO,SAAS,sBAAuBC,CAAAA,CAAAA,CAAkBC,EAAwC,CArGjG,IAAAT,CAsGE,CAAA,MAAMU,EAAM,cAAe,EAAA,CAErBC,CAAkC,CAAA,CAAE,QAAAH,CAAAA,CAAAA,CAAU,OAAAC,CAAAA,CAAAA,CAAS,IAAAC,CAAI,CAAA,CACjE,OAAIA,CAAAA,GAAQ,YACVC,CAAS,CAAA,IAAA,CAAA,CAAA,CAAOX,CAAAY,CAAAA,yBAAAA,KAAA,IAAAZ,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,IAAQ,GAAA,SAAA,CAAA,CAElCW,CACT,CAIgB,SAAA,eAAA,EAAkB,CAGhC,GAFY,cAAA,EAGF,GAAA,OAAA,CAAQ,WAChB,EAAA,OAAO,MAAW,EAAA,WAAA,EAClB,OAAQ,MAAgB,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,QAAA,CAAA,EAAa,WACrC,CAAA,CACA,KAAM,CAAE,EAAAE,CAAAA,CAAAA,CAAI,QAAAC,CAAQ,CAAA,CAAK,MAAe,CAAA,QAAA,CACxC,OAAO,CAACD,CAAAA,CAAIC,CAAO,CAAA,CAAE,KAAK,GAAG,CAAA,CAG/B,MAAMC,CAAAA,CAAOC,oBAAO,EAAA,CACpB,GAAID,CAAAA,GAAS,KAAM,OAAO,SAAA,CAC1B,MAAME,CAAAA,CAAKF,EAAK,EAAKA,CAAAA,CAAAA,CAAK,EAAG,CAAA,OAAA,CAAQ,IAAK,EAAE,CAAA,CAAE,WAAY,EAAA,CAAI,SAC9D,CAAA,OAAIA,CAAK,CAAA,IAAA,GAAS,UACT,CAACE,CAAAA,CAAIF,CAAK,CAAA,IAAA,CAAMA,EAAK,OAAO,CAAA,CAAE,IAAK,CAAA,GAAG,EAExC,CAACE,CAAAA,CAAIF,CAAK,CAAA,OAAO,CAAE,CAAA,IAAA,CAAK,GAAG,CACpC,CAEgB,SAAA,eAAA,EAAkB,CAtIlC,IAAAf,CAuIE,CAAA,MAAMU,CAAM,CAAA,cAAA,GACZ,OAAOA,CAAAA,GAAQ,OAAQ,CAAA,OAAA,CAAU,CAACA,CAAAA,CAAAA,CAAAA,CAAKV,CAAAY,CAAAA,yBAAAA,KAAA,IAAAZ,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,IAAQ,GAAA,SAAS,EAAE,IAAK,CAAA,GAAG,CAAIU,CAAAA,CACvF,CAEgB,SAAA,QAAA,CAASF,CAAkBC,CAAAA,CAAAA,CAAiBS,CAAoB,CAAA,CAC9E,MAAMD,CAAAA,CAAK,iBACLE,CAAAA,CAAAA,CAAK,eAAgB,EAAA,CAC3B,OAAO,CAAC,CAACX,CAAAA,CAAUC,CAAO,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAAG,CAAC,QAAA,CAAUS,CAAU,CAAA,CAAE,KAAK,GAAG,CAAA,CAAGD,CAAIE,CAAAA,CAAE,EAAE,IAAK,CAAA,GAAG,CAC3F,UAGgB,iBAAkB,CAAA,CAChC,QAAAX,CAAAA,CAAAA,CACA,OAAAC,CAAAA,CAAAA,CACA,QAAAW,CAAAA,CAAAA,CACA,WAAAF,CACA,CAAA,IAAA,CAAAG,CACA,CAAA,SAAA,CAAAC,CACA,CAAA,eAAA,CAAAC,CACA,CAAA,QAAA,CAAAC,CACF,CAA8B,CAAA,CAC5B,MAAMC,CAAAA,CAAWL,CAAS,CAAA,KAAA,CAAM,GAAG,CAAA,CAC7BM,EAAK,QAASlB,CAAAA,CAAAA,CAAUC,CAASS,CAAAA,CAAU,EAC3CzC,CAAS,CAAA,CACb,IAAA4C,CAAAA,CAAAA,CACA,GAAAK,CACA,CAAA,SAAA,CAAAJ,CACA,CAAA,eAAA,CAAiBC,CAAmB,EAAA,KAAA,CAAA,CACpC,MAAQC,CAAAA,CAAAA,EAAY,MACtB,CACMtB,CAAAA,CAAAA,CAAc,mBAAoBuB,CAAAA,CAAAA,CAAS,CAAC,CAAK,EAAA,EAAA,CAAIhD,CAAM,CAAA,CACjE,OAAOgD,CAAS,CAAA,CAAC,CAAI,CAAA,GAAA,CAAMvB,CAC7B,CAEgB,SAAA,UAAA,CAAWyB,EAAa,CAGtC,IAAInB,CADYmB,CAAAA,CAAAA,CAAAA,CAAI,MAAM,mBAAmB,CAAA,EAAK,EAAC,EAC5B,CAAC,CACxB,CAAA,MAAMC,CAAS,CAAA,OAAOpB,CAAa,EAAA,WAAA,CAAcmB,CAAI,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,CAAC,CAAIA,CAAAA,CAAAA,CACvE,OAAAnB,CAAAA,CAAWA,CAAa,GAAA,KAAA,CAAQ,QAAU,MACnC,CAAA,CAACA,CAAUoB,CAAAA,CAAM,CAAE,CAAA,IAAA,CAAK,KAAK,CACtC,CAIgB,SAAA,UAAA,CAAWC,CAAUzC,CAAAA,CAAAA,CAAa0C,EAAc,CAC9D,GAAI,CAACD,CAAAA,CAAIzC,CAAG,CAAK,EAAA,OAAOyC,CAAIzC,CAAAA,CAAG,CAAM0C,GAAAA,CAAAA,CACnC,MAAM,IAAI,MAAM,CAAuB1C,oBAAAA,EAAAA,CAAAA,CAAAA,OAAAA,CAAY,CAEvD,UAIgB,iBAAkB2C,CAAAA,CAAAA,CAAiBC,CAAQ,CAAA,aAAA,CAAe,CACxE,OAAO,YAAA,CAAaD,CAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAGC,CAAK,CACjD,CAEgB,SAAA,oBAAA,CAAqBD,CAAyB,CAAA,CAC5D,OAAO,iBAAkBA,CAAAA,CAAO,CAAE,CAAA,IAAA,CAAK,WAAW,CACpD,CAIgB,SAAA,UAAA,CAAWE,CAAUC,CAAAA,CAAAA,CAAmB,CAEtD,OADgBD,EAAE,MAAQrC,CAAAA,CAAAA,EAAMsC,CAAE,CAAA,QAAA,CAAStC,CAAC,CAAC,CAC9B,CAAA,MAAA,GAAWqC,EAAE,MAC9B,CAEgB,SAAA,YAAA,CAAaE,CAAYH,CAAAA,CAAAA,CAAQ,aAAsB,CAAA,CACrE,OAAOG,CAAI,CAAA,KAAA,CAAM,IAAK,CAAA,GAAA,CAAIA,EAAI,MAASH,CAAAA,CAAAA,CAAO,CAAC,CAAC,CAClD,CAIO,SAAS,QAAkBI,CAAAA,CAAAA,CAAwC,CACxE,OAAO,MAAO,CAAA,WAAA,CAAYA,EAAI,OAAQ,EAAC,CACzC,UAEgB,QAAkBP,CAAAA,CAAAA,CAAwC,CACxE,OAAO,IAAI,GAAe,CAAA,MAAA,CAAO,OAAWA,CAAAA,CAAG,CAAC,CAClD,CAEO,SAAS,WACdA,CACAQ,CAAAA,CAAAA,CACmB,CACnB,MAAMC,EAAM,EAAC,CACb,OAAO,MAAA,CAAA,IAAA,CAAKT,CAAG,CAAE,CAAA,OAAA,CAASzC,CAAQ,EAAA,CAChCkD,CAAIlD,CAAAA,CAAG,CAAIiD,CAAAA,CAAAA,CAAGR,EAAIzC,CAAG,CAAC,EACxB,CAAC,CACMkD,CAAAA,CACT,CAKO,MAAM,QAA+D1C,CAAYA,EAAAA,EAIxE,SAAA,cAAA,CAAe2C,CAAc,CAAA,CAC3C,OAAOA,CAAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,KAAQC,CAAAA,CAAAA,EAAMA,EAAE,WAAY,EAAC,CAC1D,UAEgB,UAAWzD,CAAAA,CAAAA,CAAa,CACtC,OAAOA,CACJ,CAAA,KAAA,CAAM,WAAW,CAAA,CACjB,IAAK0D,CAAM,EAAA,cAAA,CAAeA,CAAC,CAAC,CAC5B,CAAA,IAAA,CAAK,WAAW,CACrB,CAGgB,SAAA,oBAAA,CACdC,CAAiBC,CAAAA,iBAAAA,CACjBC,CACA,CAAA,CACA,MAAMC,CAAAA,CAAUC,mBAAcJ,CAAUC,EAAAA,iBAAY,CACpD,CAAA,IAAII,EACAC,CACAC,CAAAA,CAAAA,CAuBJ,OAAO,CACL,QAdejE,CAAc,EAAA,CACzBiE,CAAgBF,EAAAA,CAAAA,GAClB,YAAaE,CAAAA,CAAY,CACzBF,CAAAA,CAAAA,CAAa/D,CAAU,CAE3B,EAAA,CAAA,CAUE,MATcA,CAAAA,CAAAA,EAA0B,CACpCiE,CAAAA,EAAgBD,CAClB,GAAA,YAAA,CAAaC,CAAY,CACzBD,CAAAA,CAAAA,CAAYhE,CAAK,CAAA,EAErB,CAKE,CAAA,IAAA,CAxBW,IACX,IAAI,QAAW,CAACkE,CAAAA,CAAgBC,CAAkB,GAAA,CAChDF,EAAe,UAAW,CAAA,IAAM,CAC9BE,CAAAA,CAAc,IAAI,KAAMP,CAAAA,CAAkB,CAAC,EAC7C,CAAGC,CAAAA,CAAO,CACVE,CAAAA,CAAAA,CAAeG,EACfF,CAAcG,CAAAA,EAChB,CAAC,CAkBH,CACF,CAEO,SAAS,qBACdC,CAAAA,CAAAA,CACAV,EACAE,CACA,CAAA,CACA,OAAO,IAAI,OAAQ,CAAA,MAAOS,CAASC,CAAAA,CAAAA,GAAW,CAC5C,MAAMT,CAAAA,CAAU,UAAW,CAAA,IAAMS,EAAO,IAAI,KAAA,CAAMV,CAAkB,CAAC,EAAGF,CAAM,CAAA,CAC9E,GAAI,CACF,MAAMa,CAAAA,CAAS,MAAMH,CAAAA,CACrBC,EAAQE,CAAM,EAChB,CAASC,MAAAA,CAAAA,CAAP,CACAF,CAAAA,CAAOE,CAAK,EACd,CACA,YAAaX,CAAAA,CAAO,EACtB,CAAC,CACH,CAIgB,SAAA,mBAAA,CAAoBf,EAAsB9C,CAAgC,CAAA,CACxF,GAAI,OAAOA,GAAU,QAAYA,EAAAA,CAAAA,CAAM,UAAW,CAAA,CAAA,EAAG8C,IAAO,CAAG,CAAA,OAAO9C,CACtE,CAAA,GAAI8C,CAAK,CAAA,WAAA,EAAkB,GAAA,OAAA,CAAS,CAClC,GAAI,OAAO9C,CAAU,EAAA,QAAA,CACnB,MAAM,IAAI,KAAA,CAAM,uDAAuD,CAAA,CACzE,OAAO,CAASA,MAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,GACP8C,CAAK,CAAA,WAAA,EAAkB,GAAA,IAAA,CAAM,CACtC,GAAI,OAAO9C,CAAU,EAAA,QAAA,CACnB,MAAM,IAAI,MAAM,oDAAoD,CAAA,CACtE,OAAO,CAAA,GAAA,EAAMA,IAEf,MAAM,IAAI,KAAM,CAAA,CAAA,6BAAA,EAAgC8C,CAAM,CAAA,CAAA,CACxD,CAEO,SAAS,kBAAkB2B,CAAuB,CAAA,CACvD,OAAO,mBAAA,CAAoB,OAASA,CAAAA,CAAK,CAC3C,UAEgB,cAAetC,CAAAA,CAAAA,CAAoB,CACjD,OAAO,mBAAoB,CAAA,IAAA,CAAMA,CAAE,CACrC,CAEgB,SAAA,kBAAA,CAAmBuC,CAAgB,CAAA,CACjD,KAAM,CAAC5B,CAAAA,CAAM9C,CAAK,CAAA,CAAI0E,EAAO,KAAM,CAAA,GAAG,CAChCC,CAAAA,CAAAA,CAA0C,CAAE,EAAA,CAAI,KAAW,CAAA,CAAA,KAAA,CAAO,MAAU,CAClF,CAAA,GAAI7B,CAAS,GAAA,OAAA,EAAW,OAAO9C,CAAU,EAAA,QAAA,CACvC2E,CAAO,CAAA,KAAA,CAAQ3E,UACN8C,CAAS,GAAA,IAAA,EAAQ,MAAO,CAAA,SAAA,CAAU,MAAO9C,CAAAA,CAAK,CAAC,CAAA,CACxD2E,EAAO,EAAK,CAAA,MAAA,CAAO3E,CAAK,CAAA,CAAA,WAElB,IAAI,KAAA,CAAM,CAA2D8C,wDAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAQ9C,GAAO,CAG5F,CAAA,OAAO2E,CACT,CAEgB,SAAA,UAAA,CAAWC,CAAaC,CAAAA,CAAAA,CAAsB,CAC5D,OAAOC,oBAAAA,CAAAA,CAAiBD,CAAO,EAAA,IAAA,CAAK,GAAI,EAAA,EAAKf,kBAAcc,CAAAA,CAAG,CAAC,CACjE,CAEgB,SAAA,SAAA,CAAUlB,CAAgB,CAAA,CACxC,OAAO,IAAA,CAAK,KAASI,EAAAA,kBAAAA,CAAcJ,CAAM,CAC3C,CAIgB,SAAA,WAAA,CAAYqB,CAA0B5C,CAAAA,CAAAA,CAAkC,CACtF,OAAO,CAAA,EAAG4C,CAAQ5C,CAAAA,EAAAA,CAAAA,CAAK,CAAIA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAO,EACpC,CAAA,CAAA,UAEgB,WAAec,CAAAA,CAAAA,CAAS,EAAC,CAAGC,EAAS,EAAC,CAAQ,CAC5D,OAAO,CAAC,GAAG,IAAI,GAAI,CAAA,CAAC,GAAGD,CAAAA,CAAG,GAAGC,CAAC,CAAC,CAAC,CAClC,CAEA,eAAsB,uBAAuB,CAC3C,EAAA,CAAAf,CACA,CAAA,KAAA,CAAAsC,EACA,UAAAO,CAAAA,CACF,CAIG,CAAA,CA7WH,IAAAhE,CAAAA,CA8WE,GAAI,CACF,GAAI,CAACgE,CAAAA,CAAY,OAEjB,MAAMC,CAAO,CAAA,OAAOD,CAAe,EAAA,QAAA,CAAW,KAAK,KAAMA,CAAAA,CAAU,CAAIA,CAAAA,CAAAA,CACvE,IAAIE,CAAAA,CAAWD,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAAM,IAErB,CAAA,GAAI,OAAOC,CAAAA,EAAa,SAAU,OAE9BA,CAAAA,CAAS,QAAS,CAAA,GAAG,IAAGA,CAAWA,CAAAA,CAAAA,CAAS,KAAM,CAAA,CAAA,CAAG,CAAE,CAAA,CAAA,CAAA,CAE3D,MAAMC,CAAAA,CAAO,GAAGD,CAAyB/C,CAAAA,cAAAA,EAAAA,CAAAA,CAAAA,cAAAA,EAAmBsC,CAEtD/C,CAAAA,CAAAA,CAAAA,CAAAA,CAAM,gBAEZ,CAAA,GAAIA,CAAQ,GAAA,OAAA,CAAQ,QAAS,CAC3B,GAAI,EAACV,CAAAA,CAAAA,CAAAF,yBAAY,EAAA,GAAZ,IAAAE,EAAAA,CAAAA,CAAe,YAAY,CAC9B,OAAA,CAAQ,IAAK,CAAA,kDAAkD,EAC/D,MAGEmE,CAAAA,CAAAA,CAAK,UAAW,CAAA,UAAU,GAAKA,CAAK,CAAA,UAAA,CAAW,SAAS,CAAA,CAC1D,MAAO,CAAA,IAAA,CAAKA,CAAM,CAAA,QAAA,CAAU,qBAAqB,CAEjD,CAAA,MAAA,CAAO,IAAKA,CAAAA,CAAAA,CAAM,OAAS,CAAA,qBAAqB,EAEzCzD,CAAAA,KAAAA,CAAAA,GAAQ,QAAQ,WAErB,EAAA,OAAQ,MAAgB,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,EAAY,WACtC,EAAA,MAAO,MAAe,CAAA,OAAA,CAAQ,QAAQyD,CAAI,EAGhD,CAASC,MAAAA,CAAAA,CAAP,CAGA,OAAQ,CAAA,KAAA,CAAMA,CAAG,EACnB,CACF,CAEA,eAAsB,WAAYC,CAAAA,CAAAA,CAAyBjF,CAAa,CAAA,CACtE,GAAI,CACF,MAAMkF,CAAW,CAAA,MAAMD,CAAM,CAAA,OAAA,CAAQjF,CAAG,CACxC,CAAA,OAAIkF,CAGC,GAAA,SAAA,GACE,YAAa,CAAA,OAAA,CAAQlF,CAAG,CAAA,CADb,KAEpB,CAAA,CAAA,CAAA,MAASgF,CAAP,CAAA,CAEA,QAAQ,KAAMA,CAAAA,CAAG,EACnB,CACF,CAEgB,SAAA,uBAAA,CAAuDG,CAAWC,CAAAA,CAAAA,CAAgB,CAChG,OAAOD,CAAAA,CAAK,MAAQvF,CAAAA,CAAAA,EAAUwF,CAAK,CAAA,QAAA,CAASxF,CAAK,CAAC,CACpD,CAEO,SAAS,qBAAsB2C,CAAAA,CAAAA,CAAa8C,CAAY,CAAA,CAE7D,GAAI,CADY9C,EAAI,QAAS8C,CAAAA,CAAK,CACpB,CAAA,OAAO,IACrB,CAAA,MAAMhG,CAASkD,CAAAA,CAAAA,CAAI,MAAM,WAAW,CAAA,CAC9B+C,CAAQjG,CAAAA,CAAAA,CAAO,QAAQgG,CAAK,CAAA,CAElC,OADchG,CAAAA,CAAOiG,EAAQ,CAAC,CAEhC,CAEO,SAAS,MAAS,EAAA,CACvB,OAAI,OAAO,QAAW,WAAe,GAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAQ,UACpC,CAAA,CAAA,MAAA,CAAO,YAGT,CAAA,sCAAA,CAAuC,OAAQ,CAAA,QAAA,CAAWlC,GAAM,CACrE,MAAMmC,CAAK,CAAA,IAAA,CAAK,MAAO,EAAA,CAAI,EAAM,CAAA,CAAA,CAGjC,QAFUnC,CAAM,GAAA,GAAA,CAAMmC,CAAKA,CAAAA,CAAAA,CAAI,EAAO,CAE7B,EAAA,QAAA,CAAS,EAAE,CACtB,CAAC,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClbA;AACA,CAAA,CAAC,YAAY;AAEb;AACA,GAAE,IAAI,WAAW,GAAG,uBAAuB,CAAC;AAC5C,GAAE,IAAI,cAAc,GAAG,yBAAyB,CAAC;AACjD,GAAE,IAAI,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;GACxC,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;AAClC,GAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;KAC1B,MAAM,GAAG,KAAK,CAAC;IAChB;GACD,IAAI,UAAU,GAAG,CAAC,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;GACrD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;GACnH,IAAI,OAAO,EAAE;KACX,IAAI,GAAGC,cAAM,CAAC;IACf,MAAM,IAAI,UAAU,EAAE;KACrB,IAAI,GAAG,IAAI,CAAC;IACb;AACH,GAAE,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,QAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;AAE7F,GAAE,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,OAAO,WAAW,KAAK,WAAW,CAAC;GACvF,IAAI,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,GAAE,IAAI,aAAa,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACrD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACnD,GAAE,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,GAAE,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7C,GAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;GAC3B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU;KACvF,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;AAC/E,KAAI,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;AAC3E,KAAI,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU;AACpF,KAAI,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACtF,GAAE,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;GAChC,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,GAAE,IAAI,YAAY,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;GACvE,IAAI,cAAc,GAAG;KACnB,KAAK,EAAE,GAAG;KACV,KAAK,EAAE,GAAG;AACd,IAAG,CAAC;AACJ;GACE,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACjD,KAAI,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,EAAE;AACnC,OAAM,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC;AACtE,MAAK,CAAC;IACH;AACH;AACA,GAAE,IAAI,YAAY,KAAK,IAAI,CAAC,+BAA+B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACrF,KAAI,WAAW,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE;AACxC,OAAM,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;AAC7F,MAAK,CAAC;IACH;AACH;GACE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;KAC5D,OAAO,UAAU,OAAO,EAAE;AAC9B,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3E,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,uBAAuB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AACrE,KAAI,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE;AAC1C,OAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACjF,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,wBAAwB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;KAClE,OAAO,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;OAC1C,OAAO,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACtF,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,sBAAsB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;KAChE,OAAO,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;OAC5C,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACtF,MAAK,CAAC;AACN,IAAG,CAAC;AACJ;GACE,IAAI,mBAAmB,GAAG,UAAU,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3E,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAClD,OAAM,IAAI,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACjC,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;MAClD;KACD,OAAO,MAAM,CAAC;AAClB,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;KAC1C,IAAI,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1D,KAAI,MAAM,CAAC,MAAM,GAAG,YAAY;OAC1B,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,MAAK,CAAC;AACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;OACjC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1E,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,iBAAiB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;KAC/C,IAAI,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/D,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE;OACpC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACnD,MAAK,CAAC;KACF,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE;AACnD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/E,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,kBAAkB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AACpD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B,IAAI,MAAM,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KAC5D,MAAM,CAAC,MAAM,GAAG,UAAU,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;AAChD,OAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpB,SAAQ,OAAO,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,QAAO,MAAM;SACL,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE;AACP,MAAK,CAAC;AACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE;AACzD,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7D,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChF,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,gBAAgB,GAAG,UAAU,IAAI,EAAE,OAAO,EAAE;AAClD,KAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B,IAAI,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KAC1D,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;AAClD,OAAM,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,MAAK,CAAC;AACN,KAAI,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;AAC3D,OAAM,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/D,MAAK,CAAC;KACF,OAAO,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,IAAG,CAAC;AACJ;GACE,IAAI,UAAU,GAAG;AACnB,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;AACvF,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE;AAC9E,KAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE;AAChG,KAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE;AACnG,KAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE;AAC/F,IAAG,CAAC;AACJ;GACE,IAAI,OAAO,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,CAAC;AACrC;AACA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC9C,KAAI,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAClC,KAAI,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC9B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1C,OAAM,IAAI,UAAU,GAAG,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtD,OAAM,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,OAAM,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/E,OAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;SAC7B,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,SAAQ,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAChC,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C;MACF;IACF;AACH;GACE,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AAC7C,KAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACrB,KAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAChB,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACnB,KAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;KAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;AAC1C,KAAI,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,CAAC,CAAC;KACpC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7C;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACf;IACF;AACH;GACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,OAAO,EAAE;AAC/C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;MACjC;AACL,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,OAAO,CAAC;AACzC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC7B,SAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B,MAAM,IAAI,YAAY,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE;AACxE,WAAU,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;UACnC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;WAClC,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC7D,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B;UACF;AACT,QAAO,MAAM;AACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B;OACD,SAAS,GAAG,IAAI,CAAC;MAClB;AACL,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM;AACjF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACnE;AACA,KAAI,OAAO,KAAK,GAAG,MAAM,EAAE;AAC3B,OAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAC7C,WAAU,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACf;QACF;OACD,IAAI,SAAS,EAAE;AACrB,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;AACvE,WAAU,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;UACpD;AACT,QAAO,MAAM;AACb,SAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE;WAC7D,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3C,WAAU,IAAI,IAAI,GAAG,IAAI,EAAE;AAC3B,aAAY,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD,YAAW,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;aACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;aAC1C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACvE,YAAW,MAAM;aACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;aAClF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aACnE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5D;UACF;QACF;AACP,OAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC7B,OAAM,IAAI,CAAC,IAAI,SAAS,EAAE;AAC1B,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;SAChC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;WAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;UACnB;AACT,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACb,SAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAO,MAAM;AACb,SAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAChB;MACF;KACD,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACf,KAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAChB,KAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAClB,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;OACZ,EAAE,CAAC,CAAC;MACL;KACD,IAAI,KAAK,EAAE;AACf,OAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAK,MAAM;AACX,OAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;MAClB;AACL,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,KAAI,OAAO,KAAK,CAAC,MAAM,CAAC;AACxB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,UAAU,GAAG,EAAE;AACjD,KAAI,IAAI,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,CAAC;AACrC,KAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,OAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC7B,SAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,WAAU,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;UAC9B,MAAM,IAAI,YAAY,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,EAAE;AACpE,WAAU,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;UAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;WAC9B,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACzD,aAAY,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B;UACF;AACT,QAAO,MAAM;AACb,SAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B;OACD,SAAS,GAAG,IAAI,CAAC;MAClB;KACD,IAAI,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;KACnC,IAAI,SAAS,EAAE;OACb,KAAK,GAAG,MAAM,CAAC;AACrB,MAAK,MAAM;AACX,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;SACnC,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,SAAQ,IAAI,IAAI,GAAG,IAAI,EAAE;WACf,KAAK,IAAI,CAAC,CAAC;AACrB,UAAS,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;WACvB,KAAK,IAAI,CAAC,CAAC;UACZ,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;WAC1C,KAAK,IAAI,CAAC,CAAC;AACrB,UAAS,MAAM;WACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;WAC1E,KAAK,IAAI,CAAC,CAAC;UACZ;QACF;MACF;KACD,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACpC,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KACjB,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,CAAC,EAAE;KAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;OACpC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MACrC;KACD,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACrC,KAAI,IAAI,KAAK,GAAG,EAAE,CAAC;AACnB,KAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;AAChC,KAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACnB,OAAO,IAAI,CAAC;AAChB,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;AAC1C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,OAAO;MACR;AACL,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/F,KAAI,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACtC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,SAAS,EAAE;OACzC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACrC,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAC3C,SAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACf;MACF;KACD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;KACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE;OAC/B,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;MACnB;AACL,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACT,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;AAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjD,KAAI,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC;AACxB,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;AAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AAChE,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,SAAQ,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AACvE,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAC1E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;AAC3E,WAAU,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QACrE;AACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SACL,CAAC,GAAG,CAAC,CAAC;QACP;MACF;KACD,IAAI,UAAU,EAAE;AACpB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,OAAM,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACtE,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;SAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzE;AACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;SAClB,GAAG,IAAI,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAC1E;MACF;KACD,OAAO,GAAG,CAAC;AACf,IAAG,CAAC;AACJ;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;AAC7C,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;AAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;KACjC,IAAI,MAAM,CAAC;KACX,IAAI,UAAU,EAAE;AACpB,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,MAAK,MAAM;AACX,OAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;MACjC;KACD,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACxC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;AAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;SACxD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB;AACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACN;MACF;KACD,IAAI,UAAU,EAAE;OACd,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OAChB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;MACjC;KACD,OAAO,MAAM,CAAC;AAClB,IAAG,CAAC;AACJ;GACE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;AACzD;AACA,GAAE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,YAAY;AACjE,KAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB;AACA,KAAI,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY;AAClF,OAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KAC7C,IAAI,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC;AAClC,KAAI,OAAO,CAAC,GAAG,YAAY,EAAE;AAC7B,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;AAChE,SAAQ,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,SAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACrC,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AAChD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;AACjD,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;QAC1C;AACP,OAAM,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AAChC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACN;MACF;KACD,IAAI,UAAU,EAAE;AACpB,OAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,OAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OACb,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACnC,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;QACzC;AACP,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B,SAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC;QAC1C;MACF;KACD,OAAO,KAAK,CAAC;AACjB,IAAG,CAAC;AACJ;GACE,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;AAC3C,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9C;AACH;AACA,GAAE,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;AAChC;AACA,GAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;KACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACnC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,IAAG,CAAC;AACJ;AACA,GAAE,IAAI,CAAC,GAAG,UAAU,CAAC,EAAE;KACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvD,OAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACpF,OAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;OAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;OAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;AACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,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AC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,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C,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,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UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU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EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAA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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/index.es.js b/node_modules/@walletconnect/utils/dist/index.es.js -new file mode 100644 -index 0000000000000000000000000000000000000000..6bb30571f9a75c9921d8cdb6a8b16f461cf9d4f9 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.es.js -@@ -0,0 +1,18 @@ -+import{detect as Uo}from"detect-browser";import{toMiliseconds as di,FIVE_MINUTES as hn,fromMiliseconds as ko}from"@walletconnect/time";import{getDocument as pi,getNavigator as cn,getLocation as ln}from"@walletconnect/window-getters";import{getWindowMetadata as qo}from"@walletconnect/window-metadata";import*as Br from"query-string";import{ChaCha20Poly1305 as dn}from"@stablelib/chacha20poly1305";import{HKDF as Ko}from"@stablelib/hkdf";import{randomBytes as Cr}from"@stablelib/random";import{SHA256 as pn,hash as vn}from"@stablelib/sha256";import*as gn from"@stablelib/x25519";import{toString as Qt,fromString as Xt,concat as vi}from"uint8arrays";import{ec as Ho}from"elliptic";import{decodeJWT as Lo}from"@walletconnect/relay-auth";import{RELAY_JSONRPC as zo}from"@walletconnect/relay-api";const Rr=":";function mn(e){const[t,r]=e.split(Rr);return{namespace:t,reference:r}}function An(e){const{namespace:t,reference:r}=e;return[t,r].join(Rr)}function gi(e){const[t,r,i]=e.split(Rr);return{namespace:t,reference:r,address:i}}function bn(e){const{namespace:t,reference:r,address:i}=e;return[t,r,i].join(Rr)}function mi(e,t){const r=[];return e.forEach(i=>{const n=t(i);r.includes(n)||r.push(n)}),r}function yn(e){const{address:t}=gi(e);return t}function wn(e){const{namespace:t,reference:r}=gi(e);return An({namespace:t,reference:r})}function jo(e,t){const{namespace:r,reference:i}=mn(t);return bn({namespace:r,reference:i,address:e})}function Qo(e){return mi(e,yn)}function xn(e){return mi(e,wn)}function Jo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...n.accounts)}),r}function Go(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...xn(n.accounts))}),r}function Yo(e,t=[]){const r=[];return Object.keys(e).forEach(i=>{if(t.length&&!t.includes(i))return;const n=e[i];r.push(...Or(i,n))}),r}function Or(e,t){return e.includes(":")?[e]:t.chains||[]}var Vo=Object.defineProperty,Mn=Object.getOwnPropertySymbols,Wo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable,En=(e,t,r)=>t in e?Vo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Sn=(e,t)=>{for(var r in t||(t={}))Wo.call(t,r)&&En(e,r,t[r]);if(Mn)for(var r of Mn(t))Xo.call(t,r)&&En(e,r,t[r]);return e};const Nn="ReactNative",qt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Pr=" ",Zo=":",In="/",Ai=2,$o=1e3,_n="js";function bi(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function rr(){return!pi()&&!!cn()&&navigator.product===Nn}function gr(){return!bi()&&!!cn()&&!!pi()}function We(){return rr()?qt.reactNative:bi()?qt.node:gr()?qt.browser:qt.unknown}function ts(){var e;try{return rr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Bn(e,t){let r=Br.parse(e);return r=Sn(Sn({},r),t),e=Br.stringify(r),e}function es(){return qo()||{name:"",description:"",url:"",icons:[""]}}function rs(e,t){var r;const i=We(),n={protocol:e,version:t,env:i};return i==="browser"&&(n.host=((r=ln())==null?void 0:r.host)||"unknown"),n}function Cn(){if(We()===qt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const e=Uo();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function Rn(){var e;const t=We();return t===qt.browser?[t,((e=ln())==null?void 0:e.host)||"unknown"].join(":"):t}function On(e,t,r){const i=Cn(),n=Rn();return[[e,t].join("-"),[_n,r].join("-"),i,n].join("/")}function is({protocol:e,version:t,relayUrl:r,sdkVersion:i,auth:n,projectId:o,useOnCloseEvent:h,bundleId:p}){const A=r.split("?"),v=On(e,t,i),w={auth:n,ua:v,projectId:o,useOnCloseEvent:h||void 0,origin:p||void 0},y=Bn(A[1]||"",w);return A[0]+"?"+y}function ns(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,r].join("://")}function fs(e,t,r){if(!e[t]||typeof e[t]!==r)throw new Error(`Missing or invalid "${t}" param`)}function Pn(e,t=Ai){return Dn(e.split(In),t)}function os(e){return Pn(e).join(Pr)}function _e(e,t){return e.filter(r=>t.includes(r)).length===e.length}function Dn(e,t=Ai){return e.slice(Math.max(e.length-t,0))}function ss(e){return Object.fromEntries(e.entries())}function as(e){return new Map(Object.entries(e))}function us(e,t){const r={};return Object.keys(e).forEach(i=>{r[i]=t(e[i])}),r}const hs=e=>e;function Fn(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function cs(e){return e.split(Pr).map(t=>Fn(t)).join(Pr)}function ls(e=hn,t){const r=di(e||hn);let i,n,o;return{resolve:h=>{o&&i&&(clearTimeout(o),i(h))},reject:h=>{o&&n&&(clearTimeout(o),n(h))},done:()=>new Promise((h,p)=>{o=setTimeout(()=>{p(new Error(t))},r),i=h,n=p})}}function ds(e,t,r){return new Promise(async(i,n)=>{const o=setTimeout(()=>n(new Error(r)),t);try{const h=await e;i(h)}catch(h){n(h)}clearTimeout(o)})}function yi(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function ps(e){return yi("topic",e)}function vs(e){return yi("id",e)}function gs(e){const[t,r]=e.split(":"),i={id:void 0,topic:void 0};if(t==="topic"&&typeof r=="string")i.topic=r;else if(t==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${r}`);return i}function ms(e,t){return ko((t||Date.now())+di(e))}function As(e){return Date.now()>=di(e)}function bs(e,t){return`${e}${t?`:${t}`:""}`}function me(e=[],t=[]){return[...new Set([...e,...t])]}async function ys({id:e,topic:t,wcDeepLink:r}){var i;try{if(!r)return;const n=typeof r=="string"?JSON.parse(r):r;let o=n?.href;if(typeof o!="string")return;o.endsWith("/")&&(o=o.slice(0,-1));const h=`${o}/wc?requestId=${e}&sessionTopic=${t}`,p=We();if(p===qt.browser){if(!((i=pi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}h.startsWith("https://")||h.startsWith("http://")?window.open(h,"_blank","noreferrer noopener"):window.open(h,"_self","noreferrer noopener")}else p===qt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(h)}catch(n){console.error(n)}}async function ws(e,t){try{return await e.getItem(t)||(gr()?localStorage.getItem(t):void 0)}catch(r){console.error(r)}}function wi(e,t){return e.filter(r=>t.includes(r))}function xs(e,t){if(!e.includes(t))return null;const r=e.split(/([&,?,=])/),i=r.indexOf(t);return r[i+2]}function Ms(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Es(e){var t=e.default;if(typeof t=="function"){var r=function(){return t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(r,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),r}var Un={exports:{}};/** -+ * [js-sha3]{@link https://github.com/emn178/js-sha3} -+ * -+ * @version 0.8.0 -+ * @author Chen, Yi-Cyuan [emn178@gmail.com] -+ * @copyright Chen, Yi-Cyuan 2015-2018 -+ * @license MIT -+ */(function(e){(function(){var t="input is invalid type",r="finalize already called",i=typeof window=="object",n=i?window:{};n.JS_SHA3_NO_WINDOW&&(i=!1);var o=!i&&typeof self=="object",h=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;h?n=Tn:o&&(n=self);var p=!n.JS_SHA3_NO_COMMON_JS&&!0&&e.exports,A=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",v="0123456789abcdef".split(""),w=[31,7936,2031616,520093696],y=[4,1024,262144,67108864],S=[1,256,65536,16777216],I=[6,1536,393216,100663296],N=[0,8,16,24],C=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],F=[224,256,384,512],U=[128,256],J=["hex","buffer","arrayBuffer","array","digest"],Bt={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(u){return Object.prototype.toString.call(u)==="[object Array]"}),A&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(u){return typeof u=="object"&&u.buffer&&u.buffer.constructor===ArrayBuffer});for(var G=function(u,E,_){return function(B){return new s(u,E,u).update(B)[_]()}},H=function(u,E,_){return function(B,R){return new s(u,E,R).update(B)[_]()}},L=function(u,E,_){return function(B,R,T,P){return f["cshake"+u].update(B,R,T,P)[_]()}},Pt=function(u,E,_){return function(B,R,T,P){return f["kmac"+u].update(B,R,T,P)[_]()}},W=function(u,E,_,B){for(var R=0;R>5,this.byteCount=this.blockCount<<2,this.outputBlocks=_>>5,this.extraBytes=(_&31)>>3;for(var B=0;B<50;++B)this.s[B]=0}s.prototype.update=function(u){if(this.finalized)throw new Error(r);var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}for(var B=this.blocks,R=this.byteCount,T=u.length,P=this.blockCount,O=0,Ct=this.s,D,q;O>2]|=u[O]<>2]|=q<>2]|=(192|q>>6)<>2]|=(128|q&63)<=57344?(B[D>>2]|=(224|q>>12)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<>2]|=(240|q>>18)<>2]|=(128|q>>12&63)<>2]|=(128|q>>6&63)<>2]|=(128|q&63)<=R){for(this.start=D-R,this.block=B[P],D=0;D>8,_=u&255;_>0;)R.unshift(_),u=u>>8,_=u&255,++B;return E?R.push(B):R.unshift(B),this.update(R),R.length},s.prototype.encodeString=function(u){var E,_=typeof u;if(_!=="string"){if(_==="object"){if(u===null)throw new Error(t);if(A&&u.constructor===ArrayBuffer)u=new Uint8Array(u);else if(!Array.isArray(u)&&(!A||!ArrayBuffer.isView(u)))throw new Error(t)}else throw new Error(t);E=!0}var B=0,R=u.length;if(E)B=R;else for(var T=0;T=57344?B+=3:(P=65536+((P&1023)<<10|u.charCodeAt(++T)&1023),B+=4)}return B+=this.encode(B*8),this.update(u),B},s.prototype.bytepad=function(u,E){for(var _=this.encode(E),B=0;B>2]|=this.padding[E&3],this.lastByteIndex===this.byteCount)for(u[0]=u[_],E=1;E<_+1;++E)u[E]=0;for(u[_-1]|=2147483648,E=0;E<_;++E)B[E]^=u[E];k(B)}},s.prototype.toString=s.prototype.hex=function(){this.finalize();for(var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P="",O;T<_;){for(R=0;R>4&15]+v[O&15]+v[O>>12&15]+v[O>>8&15]+v[O>>20&15]+v[O>>16&15]+v[O>>28&15]+v[O>>24&15];T%u===0&&(k(E),R=0)}return B&&(O=E[R],P+=v[O>>4&15]+v[O&15],B>1&&(P+=v[O>>12&15]+v[O>>8&15]),B>2&&(P+=v[O>>20&15]+v[O>>16&15])),P},s.prototype.arrayBuffer=function(){this.finalize();var u=this.blockCount,E=this.s,_=this.outputBlocks,B=this.extraBytes,R=0,T=0,P=this.outputBits>>3,O;B?O=new ArrayBuffer(_+1<<2):O=new ArrayBuffer(P);for(var Ct=new Uint32Array(O);T<_;){for(R=0;R>8&255,P[O+2]=Ct>>16&255,P[O+3]=Ct>>24&255;T%u===0&&k(E)}return B&&(O=T<<2,Ct=E[R],P[O]=Ct&255,B>1&&(P[O+1]=Ct>>8&255),B>2&&(P[O+2]=Ct>>16&255)),P};function g(u,E,_){s.call(this,u,E,_)}g.prototype=new s,g.prototype.finalize=function(){return this.encode(this.outputBits,!0),s.prototype.finalize.call(this)};var k=function(u){var E,_,B,R,T,P,O,Ct,D,q,De,X,Z,Fe,$,tt,Te,et,rt,Ue,it,nt,ke,ft,ot,qe,st,at,Ke,ut,ht,He,ct,lt,Le,dt,pt,ze,vt,gt,je,mt,At,Qe,bt,yt,Je,wt,xt,Ge,Mt,Et,Ye,St,Nt,Ve,It,_t,Me,Ee,Se,Ne,Ie;for(B=0;B<48;B+=2)R=u[0]^u[10]^u[20]^u[30]^u[40],T=u[1]^u[11]^u[21]^u[31]^u[41],P=u[2]^u[12]^u[22]^u[32]^u[42],O=u[3]^u[13]^u[23]^u[33]^u[43],Ct=u[4]^u[14]^u[24]^u[34]^u[44],D=u[5]^u[15]^u[25]^u[35]^u[45],q=u[6]^u[16]^u[26]^u[36]^u[46],De=u[7]^u[17]^u[27]^u[37]^u[47],X=u[8]^u[18]^u[28]^u[38]^u[48],Z=u[9]^u[19]^u[29]^u[39]^u[49],E=X^(P<<1|O>>>31),_=Z^(O<<1|P>>>31),u[0]^=E,u[1]^=_,u[10]^=E,u[11]^=_,u[20]^=E,u[21]^=_,u[30]^=E,u[31]^=_,u[40]^=E,u[41]^=_,E=R^(Ct<<1|D>>>31),_=T^(D<<1|Ct>>>31),u[2]^=E,u[3]^=_,u[12]^=E,u[13]^=_,u[22]^=E,u[23]^=_,u[32]^=E,u[33]^=_,u[42]^=E,u[43]^=_,E=P^(q<<1|De>>>31),_=O^(De<<1|q>>>31),u[4]^=E,u[5]^=_,u[14]^=E,u[15]^=_,u[24]^=E,u[25]^=_,u[34]^=E,u[35]^=_,u[44]^=E,u[45]^=_,E=Ct^(X<<1|Z>>>31),_=D^(Z<<1|X>>>31),u[6]^=E,u[7]^=_,u[16]^=E,u[17]^=_,u[26]^=E,u[27]^=_,u[36]^=E,u[37]^=_,u[46]^=E,u[47]^=_,E=q^(R<<1|T>>>31),_=De^(T<<1|R>>>31),u[8]^=E,u[9]^=_,u[18]^=E,u[19]^=_,u[28]^=E,u[29]^=_,u[38]^=E,u[39]^=_,u[48]^=E,u[49]^=_,Fe=u[0],$=u[1],yt=u[11]<<4|u[10]>>>28,Je=u[10]<<4|u[11]>>>28,at=u[20]<<3|u[21]>>>29,Ke=u[21]<<3|u[20]>>>29,Ee=u[31]<<9|u[30]>>>23,Se=u[30]<<9|u[31]>>>23,mt=u[40]<<18|u[41]>>>14,At=u[41]<<18|u[40]>>>14,lt=u[2]<<1|u[3]>>>31,Le=u[3]<<1|u[2]>>>31,tt=u[13]<<12|u[12]>>>20,Te=u[12]<<12|u[13]>>>20,wt=u[22]<<10|u[23]>>>22,xt=u[23]<<10|u[22]>>>22,ut=u[33]<<13|u[32]>>>19,ht=u[32]<<13|u[33]>>>19,Ne=u[42]<<2|u[43]>>>30,Ie=u[43]<<2|u[42]>>>30,St=u[5]<<30|u[4]>>>2,Nt=u[4]<<30|u[5]>>>2,dt=u[14]<<6|u[15]>>>26,pt=u[15]<<6|u[14]>>>26,et=u[25]<<11|u[24]>>>21,rt=u[24]<<11|u[25]>>>21,Ge=u[34]<<15|u[35]>>>17,Mt=u[35]<<15|u[34]>>>17,He=u[45]<<29|u[44]>>>3,ct=u[44]<<29|u[45]>>>3,ft=u[6]<<28|u[7]>>>4,ot=u[7]<<28|u[6]>>>4,Ve=u[17]<<23|u[16]>>>9,It=u[16]<<23|u[17]>>>9,ze=u[26]<<25|u[27]>>>7,vt=u[27]<<25|u[26]>>>7,Ue=u[36]<<21|u[37]>>>11,it=u[37]<<21|u[36]>>>11,Et=u[47]<<24|u[46]>>>8,Ye=u[46]<<24|u[47]>>>8,Qe=u[8]<<27|u[9]>>>5,bt=u[9]<<27|u[8]>>>5,qe=u[18]<<20|u[19]>>>12,st=u[19]<<20|u[18]>>>12,_t=u[29]<<7|u[28]>>>25,Me=u[28]<<7|u[29]>>>25,gt=u[38]<<8|u[39]>>>24,je=u[39]<<8|u[38]>>>24,nt=u[48]<<14|u[49]>>>18,ke=u[49]<<14|u[48]>>>18,u[0]=Fe^~tt&et,u[1]=$^~Te&rt,u[10]=ft^~qe&at,u[11]=ot^~st&Ke,u[20]=lt^~dt&ze,u[21]=Le^~pt&vt,u[30]=Qe^~yt&wt,u[31]=bt^~Je&xt,u[40]=St^~Ve&_t,u[41]=Nt^~It&Me,u[2]=tt^~et&Ue,u[3]=Te^~rt&it,u[12]=qe^~at&ut,u[13]=st^~Ke&ht,u[22]=dt^~ze>,u[23]=pt^~vt&je,u[32]=yt^~wt&Ge,u[33]=Je^~xt&Mt,u[42]=Ve^~_t&Ee,u[43]=It^~Me&Se,u[4]=et^~Ue&nt,u[5]=rt^~it&ke,u[14]=at^~ut&He,u[15]=Ke^~ht&ct,u[24]=ze^~gt&mt,u[25]=vt^~je&At,u[34]=wt^~Ge&Et,u[35]=xt^~Mt&Ye,u[44]=_t^~Ee&Ne,u[45]=Me^~Se&Ie,u[6]=Ue^~nt&Fe,u[7]=it^~ke&$,u[16]=ut^~He&ft,u[17]=ht^~ct&ot,u[26]=gt^~mt<,u[27]=je^~At&Le,u[36]=Ge^~Et&Qe,u[37]=Mt^~Ye&bt,u[46]=Ee^~Ne&St,u[47]=Se^~Ie&Nt,u[8]=nt^~Fe&tt,u[9]=ke^~$&Te,u[18]=He^~ft&qe,u[19]=ct^~ot&st,u[28]=mt^~lt&dt,u[29]=At^~Le&pt,u[38]=Et^~Qe&yt,u[39]=Ye^~bt&Je,u[48]=Ne^~St&Ve,u[49]=Ie^~Nt&It,u[0]^=C[B],u[1]^=C[B+1]};if(p)e.exports=f;else for(c=0;c{try{if("test".normalize(t)!=="test")throw new Error("bad normalize")}catch{e.push(t)}}),e.length)throw new Error("missing "+e.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(e){return e.message}return null}const Hn=Is();var Mi;(function(e){e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.OFF="OFF"})(Mi||(Mi={}));var re;(function(e){e.UNKNOWN_ERROR="UNKNOWN_ERROR",e.NOT_IMPLEMENTED="NOT_IMPLEMENTED",e.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",e.NETWORK_ERROR="NETWORK_ERROR",e.SERVER_ERROR="SERVER_ERROR",e.TIMEOUT="TIMEOUT",e.BUFFER_OVERRUN="BUFFER_OVERRUN",e.NUMERIC_FAULT="NUMERIC_FAULT",e.MISSING_NEW="MISSING_NEW",e.INVALID_ARGUMENT="INVALID_ARGUMENT",e.MISSING_ARGUMENT="MISSING_ARGUMENT",e.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",e.CALL_EXCEPTION="CALL_EXCEPTION",e.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",e.NONCE_EXPIRED="NONCE_EXPIRED",e.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",e.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",e.TRANSACTION_REPLACED="TRANSACTION_REPLACED",e.ACTION_REJECTED="ACTION_REJECTED"})(re||(re={}));const Ln="0123456789abcdef";class z{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,r){const i=t.toLowerCase();Dr[i]==null&&this.throwArgumentError("invalid log level name","logLevel",t),!(Kn>Dr[i])&&console.log.apply(console,r)}debug(...t){this._log(z.levels.DEBUG,t)}info(...t){this._log(z.levels.INFO,t)}warn(...t){this._log(z.levels.WARNING,t)}makeError(t,r,i){if(qn)return this.makeError("censored error",r,{});r||(r=z.errors.UNKNOWN_ERROR),i||(i={});const n=[];Object.keys(i).forEach(A=>{const v=i[A];try{if(v instanceof Uint8Array){let w="";for(let y=0;y>4],w+=Ln[v[y]&15];n.push(A+"=Uint8Array(0x"+w+")")}else n.push(A+"="+JSON.stringify(v))}catch{n.push(A+"="+JSON.stringify(i[A].toString()))}}),n.push(`code=${r}`),n.push(`version=${this.version}`);const o=t;let h="";switch(r){case re.NUMERIC_FAULT:{h="NUMERIC_FAULT";const A=t;switch(A){case"overflow":case"underflow":case"division-by-zero":h+="-"+A;break;case"negative-power":case"negative-width":h+="-unsupported";break;case"unbound-bitwise-result":h+="-unbound-result";break}break}case re.CALL_EXCEPTION:case re.INSUFFICIENT_FUNDS:case re.MISSING_NEW:case re.NONCE_EXPIRED:case re.REPLACEMENT_UNDERPRICED:case re.TRANSACTION_REPLACED:case re.UNPREDICTABLE_GAS_LIMIT:h=r;break}h&&(t+=" [ See: https://links.ethers.org/v5-errors-"+h+" ]"),n.length&&(t+=" ("+n.join(", ")+")");const p=new Error(t);return p.reason=o,p.code=r,Object.keys(i).forEach(function(A){p[A]=i[A]}),p}throwError(t,r,i){throw this.makeError(t,r,i)}throwArgumentError(t,r,i){return this.throwError(t,z.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(t,r,i,n){t||this.throwError(r,i,n)}assertArgument(t,r,i,n){t||this.throwArgumentError(r,i,n)}checkNormalize(t){Hn&&this.throwError("platform missing String.prototype.normalize",z.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Hn})}checkSafeUint53(t,r){typeof t=="number"&&(r==null&&(r="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(r,z.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,r,i){i?i=": "+i:i="",tr&&this.throwError("too many arguments"+i,z.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:r})}checkNew(t,r){(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}checkAbstract(t,r){t===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",z.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):(t===Object||t==null)&&this.throwError("missing new",z.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return xi||(xi=new z(Ns)),xi}static setCensorship(t,r){if(!t&&r&&this.globalLogger().throwError("cannot permanently disable censorship",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),kn){if(!t)return;this.globalLogger().throwError("error censorship permanent",z.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}qn=!!t,kn=!!r}static setLogLevel(t){const r=Dr[t.toLowerCase()];if(r==null){z.globalLogger().warn("invalid log level - "+t);return}Kn=r}static from(t){return new z(t)}}z.errors=re,z.levels=Mi;const _s="bytes/5.7.0",Dt=new z(_s);function zn(e){return!!e.toHexString}function ir(e){return e.slice||(e.slice=function(){const t=Array.prototype.slice.call(arguments);return ir(new Uint8Array(Array.prototype.slice.apply(e,t)))}),e}function Bs(e){return Jt(e)&&!(e.length%2)||nr(e)}function jn(e){return typeof e=="number"&&e==e&&e%1===0}function nr(e){if(e==null)return!1;if(e.constructor===Uint8Array)return!0;if(typeof e=="string"||!jn(e.length)||e.length<0)return!1;for(let t=0;t=256)return!1}return!0}function Ot(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid arrayify value");const r=[];for(;e;)r.unshift(e&255),e=parseInt(String(e/256));return r.length===0&&r.push(0),ir(new Uint8Array(r))}if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e)&&(e=e.toHexString()),Jt(e)){let r=e.substring(2);r.length%2&&(t.hexPad==="left"?r="0"+r:t.hexPad==="right"?r+="0":Dt.throwArgumentError("hex data is odd-length","value",e));const i=[];for(let n=0;nOt(n)),r=t.reduce((n,o)=>n+o.length,0),i=new Uint8Array(r);return t.reduce((n,o)=>(i.set(o,n),n+o.length),0),ir(i)}function Rs(e,t){e=Ot(e),e.length>t&&Dt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(t);return r.set(e,t-e.length),ir(r)}function Jt(e,t){return!(typeof e!="string"||!e.match(/^0x[0-9A-Fa-f]*$/)||t&&e.length!==2+2*t)}const Ei="0123456789abcdef";function Kt(e,t){if(t||(t={}),typeof e=="number"){Dt.checkSafeUint53(e,"invalid hexlify value");let r="";for(;e;)r=Ei[e&15]+r,e=Math.floor(e/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof e=="bigint")return e=e.toString(16),e.length%2?"0x0"+e:"0x"+e;if(t.allowMissingPrefix&&typeof e=="string"&&e.substring(0,2)!=="0x"&&(e="0x"+e),zn(e))return e.toHexString();if(Jt(e))return e.length%2&&(t.hexPad==="left"?e="0x0"+e.substring(2):t.hexPad==="right"?e+="0":Dt.throwArgumentError("hex data is odd-length","value",e)),e.toLowerCase();if(nr(e)){let r="0x";for(let i=0;i>4]+Ei[n&15]}return r}return Dt.throwArgumentError("invalid hexlify value","value",e)}function Os(e){if(typeof e!="string")e=Kt(e);else if(!Jt(e)||e.length%2)return null;return(e.length-2)/2}function Qn(e,t,r){return typeof e!="string"?e=Kt(e):(!Jt(e)||e.length%2)&&Dt.throwArgumentError("invalid hexData","value",e),t=2+2*t,r!=null?"0x"+e.substring(t,2+2*r):"0x"+e.substring(t)}function oe(e,t){for(typeof e!="string"?e=Kt(e):Jt(e)||Dt.throwArgumentError("invalid hex string","value",e),e.length>2*t+2&&Dt.throwArgumentError("value out of range","value",arguments[1]);e.length<2*t+2;)e="0x0"+e.substring(2);return e}function Jn(e){const t={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Bs(e)){let r=Ot(e);r.length===64?(t.v=27+(r[32]>>7),r[32]&=127,t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64))):r.length===65?(t.r=Kt(r.slice(0,32)),t.s=Kt(r.slice(32,64)),t.v=r[64]):Dt.throwArgumentError("invalid signature string","signature",e),t.v<27&&(t.v===0||t.v===1?t.v+=27:Dt.throwArgumentError("signature invalid v byte","signature",e)),t.recoveryParam=1-t.v%2,t.recoveryParam&&(r[32]|=128),t._vs=Kt(r.slice(32,64))}else{if(t.r=e.r,t.s=e.s,t.v=e.v,t.recoveryParam=e.recoveryParam,t._vs=e._vs,t._vs!=null){const n=Rs(Ot(t._vs),32);t._vs=Kt(n);const o=n[0]>=128?1:0;t.recoveryParam==null?t.recoveryParam=o:t.recoveryParam!==o&&Dt.throwArgumentError("signature recoveryParam mismatch _vs","signature",e),n[0]&=127;const h=Kt(n);t.s==null?t.s=h:t.s!==h&&Dt.throwArgumentError("signature v mismatch _vs","signature",e)}if(t.recoveryParam==null)t.v==null?Dt.throwArgumentError("signature missing v and recoveryParam","signature",e):t.v===0||t.v===1?t.recoveryParam=t.v:t.recoveryParam=1-t.v%2;else if(t.v==null)t.v=27+t.recoveryParam;else{const n=t.v===0||t.v===1?t.v:1-t.v%2;t.recoveryParam!==n&&Dt.throwArgumentError("signature recoveryParam mismatch v","signature",e)}t.r==null||!Jt(t.r)?Dt.throwArgumentError("signature missing or invalid r","signature",e):t.r=oe(t.r,32),t.s==null||!Jt(t.s)?Dt.throwArgumentError("signature missing or invalid s","signature",e):t.s=oe(t.s,32);const r=Ot(t.s);r[0]>=128&&Dt.throwArgumentError("signature s out of range","signature",e),t.recoveryParam&&(r[0]|=128);const i=Kt(r);t._vs&&(Jt(t._vs)||Dt.throwArgumentError("signature invalid _vs","signature",e),t._vs=oe(t._vs,32)),t._vs==null?t._vs=i:t._vs!==i&&Dt.throwArgumentError("signature _vs mismatch v and s","signature",e)}return t.yParityAndS=t._vs,t.compact=t.r+t.yParityAndS.substring(2),t}function Si(e){return"0x"+Ss.keccak_256(Ot(e))}var Gn={exports:{}},Ps={},Ds=Object.freeze({__proto__:null,default:Ps}),Fs=Es(Ds);(function(e){(function(t,r){function i(b,f){if(!b)throw new Error(f||"Assertion failed")}function n(b,f){b.super_=f;var a=function(){};a.prototype=f.prototype,b.prototype=new a,b.prototype.constructor=b}function o(b,f,a){if(o.isBN(b))return b;this.negative=0,this.words=null,this.length=0,this.red=null,b!==null&&((f==="le"||f==="be")&&(a=f,f=10),this._init(b||0,f||10,a||"be"))}typeof t=="object"?t.exports=o:r.BN=o,o.BN=o,o.wordSize=26;var h;try{typeof window<"u"&&typeof window.Buffer<"u"?h=window.Buffer:h=Fs.Buffer}catch{}o.isBN=function(f){return f instanceof o?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===o.wordSize&&Array.isArray(f.words)},o.max=function(f,a){return f.cmp(a)>0?f:a},o.min=function(f,a){return f.cmp(a)<0?f:a},o.prototype._init=function(f,a,c){if(typeof f=="number")return this._initNumber(f,a,c);if(typeof f=="object")return this._initArray(f,a,c);a==="hex"&&(a=16),i(a===(a|0)&&a>=2&&a<=36),f=f.toString().replace(/\s+/g,"");var d=0;f[0]==="-"&&(d++,this.negative=1),d=0;d-=3)x=f[d]|f[d-1]<<8|f[d-2]<<16,this.words[m]|=x<>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);else if(c==="le")for(d=0,m=0;d>>26-M&67108863,M+=24,M>=26&&(M-=26,m++);return this._strip()};function p(b,f){var a=b.charCodeAt(f);if(a>=48&&a<=57)return a-48;if(a>=65&&a<=70)return a-55;if(a>=97&&a<=102)return a-87;i(!1,"Invalid character in "+b)}function A(b,f,a){var c=p(b,a);return a-1>=f&&(c|=p(b,a-1)<<4),c}o.prototype._parseHex=function(f,a,c){this.length=Math.ceil((f.length-a)/6),this.words=new Array(this.length);for(var d=0;d=a;d-=2)M=A(f,a,d)<=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8;else{var l=f.length-a;for(d=l%2===0?a+1:a;d=18?(m-=18,x+=1,this.words[x]|=M>>>26):m+=8}this._strip()};function v(b,f,a,c){for(var d=0,m=0,x=Math.min(b.length,a),M=f;M=49?m=l-49+10:l>=17?m=l-17+10:m=l,i(l>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},o.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=y}catch{o.prototype.inspect=y}else o.prototype.inspect=y;function y(){return(this.red?""}var S=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(f,a){f=f||10,a=a|0||1;var c;if(f===16||f==="hex"){c="";for(var d=0,m=0,x=0;x>>24-d&16777215,d+=2,d>=26&&(d-=26,x--),m!==0||x!==this.length-1?c=S[6-l.length]+l+c:c=l+c}for(m!==0&&(c=m.toString(16)+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}if(f===(f|0)&&f>=2&&f<=36){var s=I[f],g=N[f];c="";var k=this.clone();for(k.negative=0;!k.isZero();){var u=k.modrn(g).toString(f);k=k.idivn(g),k.isZero()?c=u+c:c=S[s-u.length]+u+c}for(this.isZero()&&(c="0"+c);c.length%a!==0;)c="0"+c;return this.negative!==0&&(c="-"+c),c}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},o.prototype.toJSON=function(){return this.toString(16,2)},h&&(o.prototype.toBuffer=function(f,a){return this.toArrayLike(h,f,a)}),o.prototype.toArray=function(f,a){return this.toArrayLike(Array,f,a)};var C=function(f,a){return f.allocUnsafe?f.allocUnsafe(a):new f(a)};o.prototype.toArrayLike=function(f,a,c){this._strip();var d=this.byteLength(),m=c||Math.max(1,d);i(d<=m,"byte array longer than desired length"),i(m>0,"Requested array length <= 0");var x=C(f,m),M=a==="le"?"LE":"BE";return this["_toArrayLike"+M](x,d),x},o.prototype._toArrayLikeLE=function(f,a){for(var c=0,d=0,m=0,x=0;m>8&255),c>16&255),x===6?(c>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c=0&&(f[c--]=M>>8&255),c>=0&&(f[c--]=M>>16&255),x===6?(c>=0&&(f[c--]=M>>24&255),d=0,x=0):(d=M>>>24,x+=2)}if(c>=0)for(f[c--]=d;c>=0;)f[c--]=0},Math.clz32?o.prototype._countBits=function(f){return 32-Math.clz32(f)}:o.prototype._countBits=function(f){var a=f,c=0;return a>=4096&&(c+=13,a>>>=13),a>=64&&(c+=7,a>>>=7),a>=8&&(c+=4,a>>>=4),a>=2&&(c+=2,a>>>=2),c+a},o.prototype._zeroBits=function(f){if(f===0)return 26;var a=f,c=0;return a&8191||(c+=13,a>>>=13),a&127||(c+=7,a>>>=7),a&15||(c+=4,a>>>=4),a&3||(c+=2,a>>>=2),a&1||c++,c},o.prototype.bitLength=function(){var f=this.words[this.length-1],a=this._countBits(f);return(this.length-1)*26+a};function F(b){for(var f=new Array(b.bitLength()),a=0;a>>d&1}return f}o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,a=0;af.length?this.clone().ior(f):f.clone().ior(this)},o.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},o.prototype.iuand=function(f){var a;this.length>f.length?a=f:a=this;for(var c=0;cf.length?this.clone().iand(f):f.clone().iand(this)},o.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},o.prototype.iuxor=function(f){var a,c;this.length>f.length?(a=this,c=f):(a=f,c=this);for(var d=0;df.length?this.clone().ixor(f):f.clone().ixor(this)},o.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},o.prototype.inotn=function(f){i(typeof f=="number"&&f>=0);var a=Math.ceil(f/26)|0,c=f%26;this._expand(a),c>0&&a--;for(var d=0;d0&&(this.words[d]=~this.words[d]&67108863>>26-c),this._strip()},o.prototype.notn=function(f){return this.clone().inotn(f)},o.prototype.setn=function(f,a){i(typeof f=="number"&&f>=0);var c=f/26|0,d=f%26;return this._expand(c+1),a?this.words[c]=this.words[c]|1<f.length?(c=this,d=f):(c=f,d=this);for(var m=0,x=0;x>>26;for(;m!==0&&x>>26;if(this.length=c.length,m!==0)this.words[this.length]=m,this.length++;else if(c!==this)for(;xf.length?this.clone().iadd(f):f.clone().iadd(this)},o.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var a=this.iadd(f);return f.negative=1,a._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var c=this.cmp(f);if(c===0)return this.negative=0,this.length=1,this.words[0]=0,this;var d,m;c>0?(d=this,m=f):(d=f,m=this);for(var x=0,M=0;M>26,this.words[M]=a&67108863;for(;x!==0&&M>26,this.words[M]=a&67108863;if(x===0&&M>>26,k=l&67108863,u=Math.min(s,f.length-1),E=Math.max(0,s-b.length+1);E<=u;E++){var _=s-E|0;d=b.words[_]|0,m=f.words[E]|0,x=d*m+k,g+=x/67108864|0,k=x&67108863}a.words[s]=k|0,l=g|0}return l!==0?a.words[s]=l|0:a.length--,a._strip()}var J=function(f,a,c){var d=f.words,m=a.words,x=c.words,M=0,l,s,g,k=d[0]|0,u=k&8191,E=k>>>13,_=d[1]|0,B=_&8191,R=_>>>13,T=d[2]|0,P=T&8191,O=T>>>13,Ct=d[3]|0,D=Ct&8191,q=Ct>>>13,De=d[4]|0,X=De&8191,Z=De>>>13,Fe=d[5]|0,$=Fe&8191,tt=Fe>>>13,Te=d[6]|0,et=Te&8191,rt=Te>>>13,Ue=d[7]|0,it=Ue&8191,nt=Ue>>>13,ke=d[8]|0,ft=ke&8191,ot=ke>>>13,qe=d[9]|0,st=qe&8191,at=qe>>>13,Ke=m[0]|0,ut=Ke&8191,ht=Ke>>>13,He=m[1]|0,ct=He&8191,lt=He>>>13,Le=m[2]|0,dt=Le&8191,pt=Le>>>13,ze=m[3]|0,vt=ze&8191,gt=ze>>>13,je=m[4]|0,mt=je&8191,At=je>>>13,Qe=m[5]|0,bt=Qe&8191,yt=Qe>>>13,Je=m[6]|0,wt=Je&8191,xt=Je>>>13,Ge=m[7]|0,Mt=Ge&8191,Et=Ge>>>13,Ye=m[8]|0,St=Ye&8191,Nt=Ye>>>13,Ve=m[9]|0,It=Ve&8191,_t=Ve>>>13;c.negative=f.negative^a.negative,c.length=19,l=Math.imul(u,ut),s=Math.imul(u,ht),s=s+Math.imul(E,ut)|0,g=Math.imul(E,ht);var Me=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Me>>>26)|0,Me&=67108863,l=Math.imul(B,ut),s=Math.imul(B,ht),s=s+Math.imul(R,ut)|0,g=Math.imul(R,ht),l=l+Math.imul(u,ct)|0,s=s+Math.imul(u,lt)|0,s=s+Math.imul(E,ct)|0,g=g+Math.imul(E,lt)|0;var Ee=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,l=Math.imul(P,ut),s=Math.imul(P,ht),s=s+Math.imul(O,ut)|0,g=Math.imul(O,ht),l=l+Math.imul(B,ct)|0,s=s+Math.imul(B,lt)|0,s=s+Math.imul(R,ct)|0,g=g+Math.imul(R,lt)|0,l=l+Math.imul(u,dt)|0,s=s+Math.imul(u,pt)|0,s=s+Math.imul(E,dt)|0,g=g+Math.imul(E,pt)|0;var Se=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Se>>>26)|0,Se&=67108863,l=Math.imul(D,ut),s=Math.imul(D,ht),s=s+Math.imul(q,ut)|0,g=Math.imul(q,ht),l=l+Math.imul(P,ct)|0,s=s+Math.imul(P,lt)|0,s=s+Math.imul(O,ct)|0,g=g+Math.imul(O,lt)|0,l=l+Math.imul(B,dt)|0,s=s+Math.imul(B,pt)|0,s=s+Math.imul(R,dt)|0,g=g+Math.imul(R,pt)|0,l=l+Math.imul(u,vt)|0,s=s+Math.imul(u,gt)|0,s=s+Math.imul(E,vt)|0,g=g+Math.imul(E,gt)|0;var Ne=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,l=Math.imul(X,ut),s=Math.imul(X,ht),s=s+Math.imul(Z,ut)|0,g=Math.imul(Z,ht),l=l+Math.imul(D,ct)|0,s=s+Math.imul(D,lt)|0,s=s+Math.imul(q,ct)|0,g=g+Math.imul(q,lt)|0,l=l+Math.imul(P,dt)|0,s=s+Math.imul(P,pt)|0,s=s+Math.imul(O,dt)|0,g=g+Math.imul(O,pt)|0,l=l+Math.imul(B,vt)|0,s=s+Math.imul(B,gt)|0,s=s+Math.imul(R,vt)|0,g=g+Math.imul(R,gt)|0,l=l+Math.imul(u,mt)|0,s=s+Math.imul(u,At)|0,s=s+Math.imul(E,mt)|0,g=g+Math.imul(E,At)|0;var Ie=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,l=Math.imul($,ut),s=Math.imul($,ht),s=s+Math.imul(tt,ut)|0,g=Math.imul(tt,ht),l=l+Math.imul(X,ct)|0,s=s+Math.imul(X,lt)|0,s=s+Math.imul(Z,ct)|0,g=g+Math.imul(Z,lt)|0,l=l+Math.imul(D,dt)|0,s=s+Math.imul(D,pt)|0,s=s+Math.imul(q,dt)|0,g=g+Math.imul(q,pt)|0,l=l+Math.imul(P,vt)|0,s=s+Math.imul(P,gt)|0,s=s+Math.imul(O,vt)|0,g=g+Math.imul(O,gt)|0,l=l+Math.imul(B,mt)|0,s=s+Math.imul(B,At)|0,s=s+Math.imul(R,mt)|0,g=g+Math.imul(R,At)|0,l=l+Math.imul(u,bt)|0,s=s+Math.imul(u,yt)|0,s=s+Math.imul(E,bt)|0,g=g+Math.imul(E,yt)|0;var $r=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,l=Math.imul(et,ut),s=Math.imul(et,ht),s=s+Math.imul(rt,ut)|0,g=Math.imul(rt,ht),l=l+Math.imul($,ct)|0,s=s+Math.imul($,lt)|0,s=s+Math.imul(tt,ct)|0,g=g+Math.imul(tt,lt)|0,l=l+Math.imul(X,dt)|0,s=s+Math.imul(X,pt)|0,s=s+Math.imul(Z,dt)|0,g=g+Math.imul(Z,pt)|0,l=l+Math.imul(D,vt)|0,s=s+Math.imul(D,gt)|0,s=s+Math.imul(q,vt)|0,g=g+Math.imul(q,gt)|0,l=l+Math.imul(P,mt)|0,s=s+Math.imul(P,At)|0,s=s+Math.imul(O,mt)|0,g=g+Math.imul(O,At)|0,l=l+Math.imul(B,bt)|0,s=s+Math.imul(B,yt)|0,s=s+Math.imul(R,bt)|0,g=g+Math.imul(R,yt)|0,l=l+Math.imul(u,wt)|0,s=s+Math.imul(u,xt)|0,s=s+Math.imul(E,wt)|0,g=g+Math.imul(E,xt)|0;var ti=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ti>>>26)|0,ti&=67108863,l=Math.imul(it,ut),s=Math.imul(it,ht),s=s+Math.imul(nt,ut)|0,g=Math.imul(nt,ht),l=l+Math.imul(et,ct)|0,s=s+Math.imul(et,lt)|0,s=s+Math.imul(rt,ct)|0,g=g+Math.imul(rt,lt)|0,l=l+Math.imul($,dt)|0,s=s+Math.imul($,pt)|0,s=s+Math.imul(tt,dt)|0,g=g+Math.imul(tt,pt)|0,l=l+Math.imul(X,vt)|0,s=s+Math.imul(X,gt)|0,s=s+Math.imul(Z,vt)|0,g=g+Math.imul(Z,gt)|0,l=l+Math.imul(D,mt)|0,s=s+Math.imul(D,At)|0,s=s+Math.imul(q,mt)|0,g=g+Math.imul(q,At)|0,l=l+Math.imul(P,bt)|0,s=s+Math.imul(P,yt)|0,s=s+Math.imul(O,bt)|0,g=g+Math.imul(O,yt)|0,l=l+Math.imul(B,wt)|0,s=s+Math.imul(B,xt)|0,s=s+Math.imul(R,wt)|0,g=g+Math.imul(R,xt)|0,l=l+Math.imul(u,Mt)|0,s=s+Math.imul(u,Et)|0,s=s+Math.imul(E,Mt)|0,g=g+Math.imul(E,Et)|0;var ei=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ei>>>26)|0,ei&=67108863,l=Math.imul(ft,ut),s=Math.imul(ft,ht),s=s+Math.imul(ot,ut)|0,g=Math.imul(ot,ht),l=l+Math.imul(it,ct)|0,s=s+Math.imul(it,lt)|0,s=s+Math.imul(nt,ct)|0,g=g+Math.imul(nt,lt)|0,l=l+Math.imul(et,dt)|0,s=s+Math.imul(et,pt)|0,s=s+Math.imul(rt,dt)|0,g=g+Math.imul(rt,pt)|0,l=l+Math.imul($,vt)|0,s=s+Math.imul($,gt)|0,s=s+Math.imul(tt,vt)|0,g=g+Math.imul(tt,gt)|0,l=l+Math.imul(X,mt)|0,s=s+Math.imul(X,At)|0,s=s+Math.imul(Z,mt)|0,g=g+Math.imul(Z,At)|0,l=l+Math.imul(D,bt)|0,s=s+Math.imul(D,yt)|0,s=s+Math.imul(q,bt)|0,g=g+Math.imul(q,yt)|0,l=l+Math.imul(P,wt)|0,s=s+Math.imul(P,xt)|0,s=s+Math.imul(O,wt)|0,g=g+Math.imul(O,xt)|0,l=l+Math.imul(B,Mt)|0,s=s+Math.imul(B,Et)|0,s=s+Math.imul(R,Mt)|0,g=g+Math.imul(R,Et)|0,l=l+Math.imul(u,St)|0,s=s+Math.imul(u,Nt)|0,s=s+Math.imul(E,St)|0,g=g+Math.imul(E,Nt)|0;var ri=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ri>>>26)|0,ri&=67108863,l=Math.imul(st,ut),s=Math.imul(st,ht),s=s+Math.imul(at,ut)|0,g=Math.imul(at,ht),l=l+Math.imul(ft,ct)|0,s=s+Math.imul(ft,lt)|0,s=s+Math.imul(ot,ct)|0,g=g+Math.imul(ot,lt)|0,l=l+Math.imul(it,dt)|0,s=s+Math.imul(it,pt)|0,s=s+Math.imul(nt,dt)|0,g=g+Math.imul(nt,pt)|0,l=l+Math.imul(et,vt)|0,s=s+Math.imul(et,gt)|0,s=s+Math.imul(rt,vt)|0,g=g+Math.imul(rt,gt)|0,l=l+Math.imul($,mt)|0,s=s+Math.imul($,At)|0,s=s+Math.imul(tt,mt)|0,g=g+Math.imul(tt,At)|0,l=l+Math.imul(X,bt)|0,s=s+Math.imul(X,yt)|0,s=s+Math.imul(Z,bt)|0,g=g+Math.imul(Z,yt)|0,l=l+Math.imul(D,wt)|0,s=s+Math.imul(D,xt)|0,s=s+Math.imul(q,wt)|0,g=g+Math.imul(q,xt)|0,l=l+Math.imul(P,Mt)|0,s=s+Math.imul(P,Et)|0,s=s+Math.imul(O,Mt)|0,g=g+Math.imul(O,Et)|0,l=l+Math.imul(B,St)|0,s=s+Math.imul(B,Nt)|0,s=s+Math.imul(R,St)|0,g=g+Math.imul(R,Nt)|0,l=l+Math.imul(u,It)|0,s=s+Math.imul(u,_t)|0,s=s+Math.imul(E,It)|0,g=g+Math.imul(E,_t)|0;var ii=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ii>>>26)|0,ii&=67108863,l=Math.imul(st,ct),s=Math.imul(st,lt),s=s+Math.imul(at,ct)|0,g=Math.imul(at,lt),l=l+Math.imul(ft,dt)|0,s=s+Math.imul(ft,pt)|0,s=s+Math.imul(ot,dt)|0,g=g+Math.imul(ot,pt)|0,l=l+Math.imul(it,vt)|0,s=s+Math.imul(it,gt)|0,s=s+Math.imul(nt,vt)|0,g=g+Math.imul(nt,gt)|0,l=l+Math.imul(et,mt)|0,s=s+Math.imul(et,At)|0,s=s+Math.imul(rt,mt)|0,g=g+Math.imul(rt,At)|0,l=l+Math.imul($,bt)|0,s=s+Math.imul($,yt)|0,s=s+Math.imul(tt,bt)|0,g=g+Math.imul(tt,yt)|0,l=l+Math.imul(X,wt)|0,s=s+Math.imul(X,xt)|0,s=s+Math.imul(Z,wt)|0,g=g+Math.imul(Z,xt)|0,l=l+Math.imul(D,Mt)|0,s=s+Math.imul(D,Et)|0,s=s+Math.imul(q,Mt)|0,g=g+Math.imul(q,Et)|0,l=l+Math.imul(P,St)|0,s=s+Math.imul(P,Nt)|0,s=s+Math.imul(O,St)|0,g=g+Math.imul(O,Nt)|0,l=l+Math.imul(B,It)|0,s=s+Math.imul(B,_t)|0,s=s+Math.imul(R,It)|0,g=g+Math.imul(R,_t)|0;var ni=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ni>>>26)|0,ni&=67108863,l=Math.imul(st,dt),s=Math.imul(st,pt),s=s+Math.imul(at,dt)|0,g=Math.imul(at,pt),l=l+Math.imul(ft,vt)|0,s=s+Math.imul(ft,gt)|0,s=s+Math.imul(ot,vt)|0,g=g+Math.imul(ot,gt)|0,l=l+Math.imul(it,mt)|0,s=s+Math.imul(it,At)|0,s=s+Math.imul(nt,mt)|0,g=g+Math.imul(nt,At)|0,l=l+Math.imul(et,bt)|0,s=s+Math.imul(et,yt)|0,s=s+Math.imul(rt,bt)|0,g=g+Math.imul(rt,yt)|0,l=l+Math.imul($,wt)|0,s=s+Math.imul($,xt)|0,s=s+Math.imul(tt,wt)|0,g=g+Math.imul(tt,xt)|0,l=l+Math.imul(X,Mt)|0,s=s+Math.imul(X,Et)|0,s=s+Math.imul(Z,Mt)|0,g=g+Math.imul(Z,Et)|0,l=l+Math.imul(D,St)|0,s=s+Math.imul(D,Nt)|0,s=s+Math.imul(q,St)|0,g=g+Math.imul(q,Nt)|0,l=l+Math.imul(P,It)|0,s=s+Math.imul(P,_t)|0,s=s+Math.imul(O,It)|0,g=g+Math.imul(O,_t)|0;var fi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(fi>>>26)|0,fi&=67108863,l=Math.imul(st,vt),s=Math.imul(st,gt),s=s+Math.imul(at,vt)|0,g=Math.imul(at,gt),l=l+Math.imul(ft,mt)|0,s=s+Math.imul(ft,At)|0,s=s+Math.imul(ot,mt)|0,g=g+Math.imul(ot,At)|0,l=l+Math.imul(it,bt)|0,s=s+Math.imul(it,yt)|0,s=s+Math.imul(nt,bt)|0,g=g+Math.imul(nt,yt)|0,l=l+Math.imul(et,wt)|0,s=s+Math.imul(et,xt)|0,s=s+Math.imul(rt,wt)|0,g=g+Math.imul(rt,xt)|0,l=l+Math.imul($,Mt)|0,s=s+Math.imul($,Et)|0,s=s+Math.imul(tt,Mt)|0,g=g+Math.imul(tt,Et)|0,l=l+Math.imul(X,St)|0,s=s+Math.imul(X,Nt)|0,s=s+Math.imul(Z,St)|0,g=g+Math.imul(Z,Nt)|0,l=l+Math.imul(D,It)|0,s=s+Math.imul(D,_t)|0,s=s+Math.imul(q,It)|0,g=g+Math.imul(q,_t)|0;var oi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(oi>>>26)|0,oi&=67108863,l=Math.imul(st,mt),s=Math.imul(st,At),s=s+Math.imul(at,mt)|0,g=Math.imul(at,At),l=l+Math.imul(ft,bt)|0,s=s+Math.imul(ft,yt)|0,s=s+Math.imul(ot,bt)|0,g=g+Math.imul(ot,yt)|0,l=l+Math.imul(it,wt)|0,s=s+Math.imul(it,xt)|0,s=s+Math.imul(nt,wt)|0,g=g+Math.imul(nt,xt)|0,l=l+Math.imul(et,Mt)|0,s=s+Math.imul(et,Et)|0,s=s+Math.imul(rt,Mt)|0,g=g+Math.imul(rt,Et)|0,l=l+Math.imul($,St)|0,s=s+Math.imul($,Nt)|0,s=s+Math.imul(tt,St)|0,g=g+Math.imul(tt,Nt)|0,l=l+Math.imul(X,It)|0,s=s+Math.imul(X,_t)|0,s=s+Math.imul(Z,It)|0,g=g+Math.imul(Z,_t)|0;var si=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(si>>>26)|0,si&=67108863,l=Math.imul(st,bt),s=Math.imul(st,yt),s=s+Math.imul(at,bt)|0,g=Math.imul(at,yt),l=l+Math.imul(ft,wt)|0,s=s+Math.imul(ft,xt)|0,s=s+Math.imul(ot,wt)|0,g=g+Math.imul(ot,xt)|0,l=l+Math.imul(it,Mt)|0,s=s+Math.imul(it,Et)|0,s=s+Math.imul(nt,Mt)|0,g=g+Math.imul(nt,Et)|0,l=l+Math.imul(et,St)|0,s=s+Math.imul(et,Nt)|0,s=s+Math.imul(rt,St)|0,g=g+Math.imul(rt,Nt)|0,l=l+Math.imul($,It)|0,s=s+Math.imul($,_t)|0,s=s+Math.imul(tt,It)|0,g=g+Math.imul(tt,_t)|0;var ai=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ai>>>26)|0,ai&=67108863,l=Math.imul(st,wt),s=Math.imul(st,xt),s=s+Math.imul(at,wt)|0,g=Math.imul(at,xt),l=l+Math.imul(ft,Mt)|0,s=s+Math.imul(ft,Et)|0,s=s+Math.imul(ot,Mt)|0,g=g+Math.imul(ot,Et)|0,l=l+Math.imul(it,St)|0,s=s+Math.imul(it,Nt)|0,s=s+Math.imul(nt,St)|0,g=g+Math.imul(nt,Nt)|0,l=l+Math.imul(et,It)|0,s=s+Math.imul(et,_t)|0,s=s+Math.imul(rt,It)|0,g=g+Math.imul(rt,_t)|0;var ui=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ui>>>26)|0,ui&=67108863,l=Math.imul(st,Mt),s=Math.imul(st,Et),s=s+Math.imul(at,Mt)|0,g=Math.imul(at,Et),l=l+Math.imul(ft,St)|0,s=s+Math.imul(ft,Nt)|0,s=s+Math.imul(ot,St)|0,g=g+Math.imul(ot,Nt)|0,l=l+Math.imul(it,It)|0,s=s+Math.imul(it,_t)|0,s=s+Math.imul(nt,It)|0,g=g+Math.imul(nt,_t)|0;var hi=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(hi>>>26)|0,hi&=67108863,l=Math.imul(st,St),s=Math.imul(st,Nt),s=s+Math.imul(at,St)|0,g=Math.imul(at,Nt),l=l+Math.imul(ft,It)|0,s=s+Math.imul(ft,_t)|0,s=s+Math.imul(ot,It)|0,g=g+Math.imul(ot,_t)|0;var ci=(M+l|0)+((s&8191)<<13)|0;M=(g+(s>>>13)|0)+(ci>>>26)|0,ci&=67108863,l=Math.imul(st,It),s=Math.imul(st,_t),s=s+Math.imul(at,It)|0,g=Math.imul(at,_t);var li=(M+l|0)+((s&8191)<<13)|0;return M=(g+(s>>>13)|0)+(li>>>26)|0,li&=67108863,x[0]=Me,x[1]=Ee,x[2]=Se,x[3]=Ne,x[4]=Ie,x[5]=$r,x[6]=ti,x[7]=ei,x[8]=ri,x[9]=ii,x[10]=ni,x[11]=fi,x[12]=oi,x[13]=si,x[14]=ai,x[15]=ui,x[16]=hi,x[17]=ci,x[18]=li,M!==0&&(x[19]=M,c.length++),c};Math.imul||(J=U);function Bt(b,f,a){a.negative=f.negative^b.negative,a.length=b.length+f.length;for(var c=0,d=0,m=0;m>>26)|0,d+=x>>>26,x&=67108863}a.words[m]=M,c=x,x=d}return c!==0?a.words[m]=c:a.length--,a._strip()}function G(b,f,a){return Bt(b,f,a)}o.prototype.mulTo=function(f,a){var c,d=this.length+f.length;return this.length===10&&f.length===10?c=J(this,f,a):d<63?c=U(this,f,a):d<1024?c=Bt(this,f,a):c=G(this,f,a),c},o.prototype.mul=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),this.mulTo(f,a)},o.prototype.mulf=function(f){var a=new o(null);return a.words=new Array(this.length+f.length),G(this,f,a)},o.prototype.imul=function(f){return this.clone().mulTo(f,this)},o.prototype.imuln=function(f){var a=f<0;a&&(f=-f),i(typeof f=="number"),i(f<67108864);for(var c=0,d=0;d>=26,c+=m/67108864|0,c+=x>>>26,this.words[d]=x&67108863}return c!==0&&(this.words[d]=c,this.length++),a?this.ineg():this},o.prototype.muln=function(f){return this.clone().imuln(f)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(f){var a=F(f);if(a.length===0)return new o(1);for(var c=this,d=0;d=0);var a=f%26,c=(f-a)/26,d=67108863>>>26-a<<26-a,m;if(a!==0){var x=0;for(m=0;m>>26-a}x&&(this.words[m]=x,this.length++)}if(c!==0){for(m=this.length-1;m>=0;m--)this.words[m+c]=this.words[m];for(m=0;m=0);var d;a?d=(a-a%26)/26:d=0;var m=f%26,x=Math.min((f-m)/26,this.length),M=67108863^67108863>>>m<x)for(this.length-=x,s=0;s=0&&(g!==0||s>=d);s--){var k=this.words[s]|0;this.words[s]=g<<26-m|k>>>m,g=k&M}return l&&g!==0&&(l.words[l.length++]=g),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(f,a,c){return i(this.negative===0),this.iushrn(f,a,c)},o.prototype.shln=function(f){return this.clone().ishln(f)},o.prototype.ushln=function(f){return this.clone().iushln(f)},o.prototype.shrn=function(f){return this.clone().ishrn(f)},o.prototype.ushrn=function(f){return this.clone().iushrn(f)},o.prototype.testn=function(f){i(typeof f=="number"&&f>=0);var a=f%26,c=(f-a)/26,d=1<=0);var a=f%26,c=(f-a)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=c)return this;if(a!==0&&c++,this.length=Math.min(c,this.length),a!==0){var d=67108863^67108863>>>a<=67108864;a++)this.words[a]-=67108864,a===this.length-1?this.words[a+1]=1:this.words[a+1]++;return this.length=Math.max(this.length,a+1),this},o.prototype.isubn=function(f){if(i(typeof f=="number"),i(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var a=0;a>26)-(l/67108864|0),this.words[m+c]=x&67108863}for(;m>26,this.words[m+c]=x&67108863;if(M===0)return this._strip();for(i(M===-1),M=0,m=0;m>26,this.words[m]=x&67108863;return this.negative=1,this._strip()},o.prototype._wordDiv=function(f,a){var c=this.length-f.length,d=this.clone(),m=f,x=m.words[m.length-1]|0,M=this._countBits(x);c=26-M,c!==0&&(m=m.ushln(c),d.iushln(c),x=m.words[m.length-1]|0);var l=d.length-m.length,s;if(a!=="mod"){s=new o(null),s.length=l+1,s.words=new Array(s.length);for(var g=0;g=0;u--){var E=(d.words[m.length+u]|0)*67108864+(d.words[m.length+u-1]|0);for(E=Math.min(E/x|0,67108863),d._ishlnsubmul(m,E,u);d.negative!==0;)E--,d.negative=0,d._ishlnsubmul(m,1,u),d.isZero()||(d.negative^=1);s&&(s.words[u]=E)}return s&&s._strip(),d._strip(),a!=="div"&&c!==0&&d.iushrn(c),{div:s||null,mod:d}},o.prototype.divmod=function(f,a,c){if(i(!f.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var d,m,x;return this.negative!==0&&f.negative===0?(x=this.neg().divmod(f,a),a!=="mod"&&(d=x.div.neg()),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.iadd(f)),{div:d,mod:m}):this.negative===0&&f.negative!==0?(x=this.divmod(f.neg(),a),a!=="mod"&&(d=x.div.neg()),{div:d,mod:x.mod}):this.negative&f.negative?(x=this.neg().divmod(f.neg(),a),a!=="div"&&(m=x.mod.neg(),c&&m.negative!==0&&m.isub(f)),{div:x.div,mod:m}):f.length>this.length||this.cmp(f)<0?{div:new o(0),mod:this}:f.length===1?a==="div"?{div:this.divn(f.words[0]),mod:null}:a==="mod"?{div:null,mod:new o(this.modrn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new o(this.modrn(f.words[0]))}:this._wordDiv(f,a)},o.prototype.div=function(f){return this.divmod(f,"div",!1).div},o.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},o.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},o.prototype.divRound=function(f){var a=this.divmod(f);if(a.mod.isZero())return a.div;var c=a.div.negative!==0?a.mod.isub(f):a.mod,d=f.ushrn(1),m=f.andln(1),x=c.cmp(d);return x<0||m===1&&x===0?a.div:a.div.negative!==0?a.div.isubn(1):a.div.iaddn(1)},o.prototype.modrn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=(1<<26)%f,d=0,m=this.length-1;m>=0;m--)d=(c*d+(this.words[m]|0))%f;return a?-d:d},o.prototype.modn=function(f){return this.modrn(f)},o.prototype.idivn=function(f){var a=f<0;a&&(f=-f),i(f<=67108863);for(var c=0,d=this.length-1;d>=0;d--){var m=(this.words[d]|0)+c*67108864;this.words[d]=m/f|0,c=m%f}return this._strip(),a?this.ineg():this},o.prototype.divn=function(f){return this.clone().idivn(f)},o.prototype.egcd=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=new o(0),M=new o(1),l=0;a.isEven()&&c.isEven();)a.iushrn(1),c.iushrn(1),++l;for(var s=c.clone(),g=a.clone();!a.isZero();){for(var k=0,u=1;!(a.words[0]&u)&&k<26;++k,u<<=1);if(k>0)for(a.iushrn(k);k-- >0;)(d.isOdd()||m.isOdd())&&(d.iadd(s),m.isub(g)),d.iushrn(1),m.iushrn(1);for(var E=0,_=1;!(c.words[0]&_)&&E<26;++E,_<<=1);if(E>0)for(c.iushrn(E);E-- >0;)(x.isOdd()||M.isOdd())&&(x.iadd(s),M.isub(g)),x.iushrn(1),M.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(x),m.isub(M)):(c.isub(a),x.isub(d),M.isub(m))}return{a:x,b:M,gcd:c.iushln(l)}},o.prototype._invmp=function(f){i(f.negative===0),i(!f.isZero());var a=this,c=f.clone();a.negative!==0?a=a.umod(f):a=a.clone();for(var d=new o(1),m=new o(0),x=c.clone();a.cmpn(1)>0&&c.cmpn(1)>0;){for(var M=0,l=1;!(a.words[0]&l)&&M<26;++M,l<<=1);if(M>0)for(a.iushrn(M);M-- >0;)d.isOdd()&&d.iadd(x),d.iushrn(1);for(var s=0,g=1;!(c.words[0]&g)&&s<26;++s,g<<=1);if(s>0)for(c.iushrn(s);s-- >0;)m.isOdd()&&m.iadd(x),m.iushrn(1);a.cmp(c)>=0?(a.isub(c),d.isub(m)):(c.isub(a),m.isub(d))}var k;return a.cmpn(1)===0?k=d:k=m,k.cmpn(0)<0&&k.iadd(f),k},o.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var a=this.clone(),c=f.clone();a.negative=0,c.negative=0;for(var d=0;a.isEven()&&c.isEven();d++)a.iushrn(1),c.iushrn(1);do{for(;a.isEven();)a.iushrn(1);for(;c.isEven();)c.iushrn(1);var m=a.cmp(c);if(m<0){var x=a;a=c,c=x}else if(m===0||c.cmpn(1)===0)break;a.isub(c)}while(!0);return c.iushln(d)},o.prototype.invm=function(f){return this.egcd(f).a.umod(f)},o.prototype.isEven=function(){return(this.words[0]&1)===0},o.prototype.isOdd=function(){return(this.words[0]&1)===1},o.prototype.andln=function(f){return this.words[0]&f},o.prototype.bincn=function(f){i(typeof f=="number");var a=f%26,c=(f-a)/26,d=1<>>26,M&=67108863,this.words[x]=M}return m!==0&&(this.words[x]=m,this.length++),this},o.prototype.isZero=function(){return this.length===1&&this.words[0]===0},o.prototype.cmpn=function(f){var a=f<0;if(this.negative!==0&&!a)return-1;if(this.negative===0&&a)return 1;this._strip();var c;if(this.length>1)c=1;else{a&&(f=-f),i(f<=67108863,"Number is too big");var d=this.words[0]|0;c=d===f?0:df.length)return 1;if(this.length=0;c--){var d=this.words[c]|0,m=f.words[c]|0;if(d!==m){dm&&(a=1);break}}return a},o.prototype.gtn=function(f){return this.cmpn(f)===1},o.prototype.gt=function(f){return this.cmp(f)===1},o.prototype.gten=function(f){return this.cmpn(f)>=0},o.prototype.gte=function(f){return this.cmp(f)>=0},o.prototype.ltn=function(f){return this.cmpn(f)===-1},o.prototype.lt=function(f){return this.cmp(f)===-1},o.prototype.lten=function(f){return this.cmpn(f)<=0},o.prototype.lte=function(f){return this.cmp(f)<=0},o.prototype.eqn=function(f){return this.cmpn(f)===0},o.prototype.eq=function(f){return this.cmp(f)===0},o.red=function(f){return new Y(f)},o.prototype.toRed=function(f){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(f){return this.red=f,this},o.prototype.forceRed=function(f){return i(!this.red,"Already a number in reduction context"),this._forceRed(f)},o.prototype.redAdd=function(f){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},o.prototype.redIAdd=function(f){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},o.prototype.redSub=function(f){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},o.prototype.redISub=function(f){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},o.prototype.redShl=function(f){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},o.prototype.redMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},o.prototype.redIMul=function(f){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(f){return i(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var H={k256:null,p224:null,p192:null,p25519:null};function L(b,f){this.name=b,this.p=new o(f,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var f=new o(null);return f.words=new Array(Math.ceil(this.n/13)),f},L.prototype.ireduce=function(f){var a=f,c;do this.split(a,this.tmp),a=this.imulK(a),a=a.iadd(this.tmp),c=a.bitLength();while(c>this.n);var d=c0?a.isub(this.p):a.strip!==void 0?a.strip():a._strip(),a},L.prototype.split=function(f,a){f.iushrn(this.n,0,a)},L.prototype.imulK=function(f){return f.imul(this.k)};function Pt(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Pt,L),Pt.prototype.split=function(f,a){for(var c=4194303,d=Math.min(f.length,9),m=0;m>>22,x=M}x>>>=22,f.words[m-10]=x,x===0&&f.length>10?f.length-=10:f.length-=9},Pt.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var a=0,c=0;c>>=26,f.words[c]=m,a=d}return a!==0&&(f.words[f.length++]=a),f},o._prime=function(f){if(H[f])return H[f];var a;if(f==="k256")a=new Pt;else if(f==="p224")a=new W;else if(f==="p192")a=new Rt;else if(f==="p25519")a=new Vt;else throw new Error("Unknown prime "+f);return H[f]=a,a};function Y(b){if(typeof b=="string"){var f=o._prime(b);this.m=f.p,this.prime=f}else i(b.gtn(1),"modulus must be greater than 1"),this.m=b,this.prime=null}Y.prototype._verify1=function(f){i(f.negative===0,"red works only with positives"),i(f.red,"red works only with red numbers")},Y.prototype._verify2=function(f,a){i((f.negative|a.negative)===0,"red works only with positives"),i(f.red&&f.red===a.red,"red works only with red numbers")},Y.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):(w(f,f.umod(this.m)._forceRed(this)),f)},Y.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},Y.prototype.add=function(f,a){this._verify2(f,a);var c=f.add(a);return c.cmp(this.m)>=0&&c.isub(this.m),c._forceRed(this)},Y.prototype.iadd=function(f,a){this._verify2(f,a);var c=f.iadd(a);return c.cmp(this.m)>=0&&c.isub(this.m),c},Y.prototype.sub=function(f,a){this._verify2(f,a);var c=f.sub(a);return c.cmpn(0)<0&&c.iadd(this.m),c._forceRed(this)},Y.prototype.isub=function(f,a){this._verify2(f,a);var c=f.isub(a);return c.cmpn(0)<0&&c.iadd(this.m),c},Y.prototype.shl=function(f,a){return this._verify1(f),this.imod(f.ushln(a))},Y.prototype.imul=function(f,a){return this._verify2(f,a),this.imod(f.imul(a))},Y.prototype.mul=function(f,a){return this._verify2(f,a),this.imod(f.mul(a))},Y.prototype.isqr=function(f){return this.imul(f,f.clone())},Y.prototype.sqr=function(f){return this.mul(f,f)},Y.prototype.sqrt=function(f){if(f.isZero())return f.clone();var a=this.m.andln(3);if(i(a%2===1),a===3){var c=this.m.add(new o(1)).iushrn(2);return this.pow(f,c)}for(var d=this.m.subn(1),m=0;!d.isZero()&&d.andln(1)===0;)m++,d.iushrn(1);i(!d.isZero());var x=new o(1).toRed(this),M=x.redNeg(),l=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new o(2*s*s).toRed(this);this.pow(s,l).cmp(M)!==0;)s.redIAdd(M);for(var g=this.pow(s,d),k=this.pow(f,d.addn(1).iushrn(1)),u=this.pow(f,d),E=m;u.cmp(x)!==0;){for(var _=u,B=0;_.cmp(x)!==0;B++)_=_.redSqr();i(B=0;m--){for(var g=a.words[m],k=s-1;k>=0;k--){var u=g>>k&1;if(x!==d[0]&&(x=this.sqr(x)),u===0&&M===0){l=0;continue}M<<=1,M|=u,l++,!(l!==c&&(m!==0||k!==0))&&(x=this.mul(x,d[M]),l=0,M=0)}s=26}return x},Y.prototype.convertTo=function(f){var a=f.umod(this.m);return a===f?a.clone():a},Y.prototype.convertFrom=function(f){var a=f.clone();return a.red=null,a},o.mont=function(f){return new Wt(f)};function Wt(b){Y.call(this,b),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(Wt,Y),Wt.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},Wt.prototype.convertFrom=function(f){var a=this.imod(f.mul(this.rinv));return a.red=null,a},Wt.prototype.imul=function(f,a){if(f.isZero()||a.isZero())return f.words[0]=0,f.length=1,f;var c=f.imul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.mul=function(f,a){if(f.isZero()||a.isZero())return new o(0)._forceRed(this);var c=f.mul(a),d=c.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=c.isub(d).iushrn(this.shift),x=m;return m.cmp(this.m)>=0?x=m.isub(this.m):m.cmpn(0)<0&&(x=m.iadd(this.m)),x._forceRed(this)},Wt.prototype.invm=function(f){var a=this.imod(f._invmp(this.m).mul(this.r2));return a._forceRed(this)}})(e,Tn)})(Gn);var K=Gn.exports;const Yn="bignumber/5.7.0";var Fr=K.BN;const Ae=new z(Yn),Ni={},Vn=9007199254740991;function Ts(e){return e!=null&&(V.isBigNumber(e)||typeof e=="number"&&e%1===0||typeof e=="string"&&!!e.match(/^-?[0-9]+$/)||Jt(e)||typeof e=="bigint"||nr(e))}let Wn=!1;class V{constructor(t,r){t!==Ni&&Ae.throwError("cannot call constructor directly; use BigNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return zt(j(this).fromTwos(t))}toTwos(t){return zt(j(this).toTwos(t))}abs(){return this._hex[0]==="-"?V.from(this._hex.substring(1)):this}add(t){return zt(j(this).add(j(t)))}sub(t){return zt(j(this).sub(j(t)))}div(t){return V.from(t).isZero()&&Zt("division-by-zero","div"),zt(j(this).div(j(t)))}mul(t){return zt(j(this).mul(j(t)))}mod(t){const r=j(t);return r.isNeg()&&Zt("division-by-zero","mod"),zt(j(this).umod(r))}pow(t){const r=j(t);return r.isNeg()&&Zt("negative-power","pow"),zt(j(this).pow(r))}and(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","and"),zt(j(this).and(r))}or(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","or"),zt(j(this).or(r))}xor(t){const r=j(t);return(this.isNegative()||r.isNeg())&&Zt("unbound-bitwise-result","xor"),zt(j(this).xor(r))}mask(t){return(this.isNegative()||t<0)&&Zt("negative-width","mask"),zt(j(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&Zt("negative-width","shl"),zt(j(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&Zt("negative-width","shr"),zt(j(this).shrn(t))}eq(t){return j(this).eq(j(t))}lt(t){return j(this).lt(j(t))}lte(t){return j(this).lte(j(t))}gt(t){return j(this).gt(j(t))}gte(t){return j(this).gte(j(t))}isNegative(){return this._hex[0]==="-"}isZero(){return j(this).isZero()}toNumber(){try{return j(this).toNumber()}catch{Zt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return Ae.throwError("this platform does not support BigInt",z.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?Wn||(Wn=!0,Ae.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?Ae.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",z.errors.UNEXPECTED_ARGUMENT,{}):Ae.throwError("BigNumber.toString does not accept parameters",z.errors.UNEXPECTED_ARGUMENT,{})),j(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof V)return t;if(typeof t=="string")return t.match(/^-?0x[0-9a-f]+$/i)?new V(Ni,mr(t)):t.match(/^-?[0-9]+$/)?new V(Ni,mr(new Fr(t))):Ae.throwArgumentError("invalid BigNumber string","value",t);if(typeof t=="number")return t%1&&Zt("underflow","BigNumber.from",t),(t>=Vn||t<=-Vn)&&Zt("overflow","BigNumber.from",t),V.from(String(t));const r=t;if(typeof r=="bigint")return V.from(r.toString());if(nr(r))return V.from(Kt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return V.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(Jt(i)||i[0]==="-"&&Jt(i.substring(1))))return V.from(i)}return Ae.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!!(t&&t._isBigNumber)}}function mr(e){if(typeof e!="string")return mr(e.toString(16));if(e[0]==="-")return e=e.substring(1),e[0]==="-"&&Ae.throwArgumentError("invalid hex","value",e),e=mr(e),e==="0x00"?e:"-"+e;if(e.substring(0,2)!=="0x"&&(e="0x"+e),e==="0x")return"0x00";for(e.length%2&&(e="0x0"+e.substring(2));e.length>4&&e.substring(0,4)==="0x00";)e="0x"+e.substring(4);return e}function zt(e){return V.from(mr(e))}function j(e){const t=V.from(e).toHexString();return t[0]==="-"?new Fr("-"+t.substring(3),16):new Fr(t.substring(2),16)}function Zt(e,t,r){const i={fault:e,operation:t};return r!=null&&(i.value=r),Ae.throwError(e,z.errors.NUMERIC_FAULT,i)}function Us(e){return new Fr(e,36).toString(16)}const Ht=new z(Yn),Ar={},Xn=V.from(0),Zn=V.from(-1);function $n(e,t,r,i){const n={fault:t,operation:r};return i!==void 0&&(n.value=i),Ht.throwError(e,z.errors.NUMERIC_FAULT,n)}let br="0";for(;br.length<256;)br+=br;function Ii(e){if(typeof e!="number")try{e=V.from(e).toNumber()}catch{}return typeof e=="number"&&e>=0&&e<=256&&!(e%1)?"1"+br.substring(0,e):Ht.throwArgumentError("invalid decimal size","decimals",e)}function _i(e,t){t==null&&(t=0);const r=Ii(t);e=V.from(e);const i=e.lt(Xn);i&&(e=e.mul(Zn));let n=e.mod(r).toString();for(;n.length2&&Ht.throwArgumentError("too many decimal points","value",e);let o=n[0],h=n[1];for(o||(o="0"),h||(h="0");h[h.length-1]==="0";)h=h.substring(0,h.length-1);for(h.length>r.length-1&&$n("fractional component exceeds decimals","underflow","parseFixed"),h===""&&(h="0");h.lengtht[h]==null?A:(typeof t[h]!==p&&Ht.throwArgumentError("invalid fixed format ("+h+" not "+p+")","format."+h,t[h]),t[h]);r=o("signed","boolean",r),i=o("width","number",i),n=o("decimals","number",n)}return i%8&&Ht.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),n>80&&Ht.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",n),new vr(Ar,r,i,n)}}class Ut{constructor(t,r,i,n){t!==Ar&&Ht.throwError("cannot use FixedNumber constructor; use FixedNumber.from",z.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=n,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(t){this.format.name!==t.format.name&&Ht.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",t)}addUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(t){this._checkFormat(t);const r=be(this._value,this.format.decimals),i=be(t._value,t.format.decimals);return Ut.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(tf.toFormat(r.format))),r}ceiling(){const t=this.toString().split(".");t.length===1&&t.push("0");let r=Ut.from(t[0],this.format);const i=!t[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(tf.toFormat(r.format))),r}round(t){t==null&&(t=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(t<0||t>80||t%1)&&Ht.throwArgumentError("invalid decimal count","decimals",t),r[1].length<=t)return this;const i=Ut.from("1"+br.substring(0,t),this.format),n=ks.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(n).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(t){if(t==null)return this._hex;t%8&&Ht.throwArgumentError("invalid byte width","width",t);const r=V.from(this._hex).fromTwos(this.format.width).toTwos(t).toHexString();return oe(r,t/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(t){return Ut.fromString(this._value,t)}static fromValue(t,r,i){return i==null&&r!=null&&!Ts(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),Ut.fromString(_i(t,r),vr.from(i))}static fromString(t,r){r==null&&(r="fixed");const i=vr.from(r),n=be(t,i.decimals);!i.signed&&n.lt(Xn)&&$n("unsigned value cannot be negative","overflow","value",t);let o=null;i.signed?o=n.toTwos(i.width).toHexString():(o=n.toHexString(),o=oe(o,i.width/8));const h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static fromBytes(t,r){r==null&&(r="fixed");const i=vr.from(r);if(Ot(t).length>i.width/8)throw new Error("overflow");let n=V.from(t);i.signed&&(n=n.fromTwos(i.width));const o=n.toTwos((i.signed?0:1)+i.width).toHexString(),h=_i(n,i.decimals);return new Ut(Ar,o,h,i)}static from(t,r){if(typeof t=="string")return Ut.fromString(t,r);if(nr(t))return Ut.fromBytes(t,r);try{return Ut.fromValue(t,0,r)}catch(i){if(i.code!==z.errors.INVALID_ARGUMENT)throw i}return Ht.throwArgumentError("invalid FixedNumber value","value",t)}static isFixedNumber(t){return!!(t&&t._isFixedNumber)}}const tf=Ut.from(1),ks=Ut.from("0.5"),qs="strings/5.7.0",ef=new z(qs);var Tr;(function(e){e.current="",e.NFC="NFC",e.NFD="NFD",e.NFKC="NFKC",e.NFKD="NFKD"})(Tr||(Tr={}));var fr;(function(e){e.UNEXPECTED_CONTINUE="unexpected continuation byte",e.BAD_PREFIX="bad codepoint prefix",e.OVERRUN="string overrun",e.MISSING_CONTINUE="missing continuation byte",e.OUT_OF_RANGE="out of UTF-8 range",e.UTF16_SURROGATE="UTF-16 surrogate",e.OVERLONG="overlong representation"})(fr||(fr={}));function Ks(e,t,r,i,n){return ef.throwArgumentError(`invalid codepoint at offset ${t}; ${e}`,"bytes",r)}function rf(e,t,r,i,n){if(e===fr.BAD_PREFIX||e===fr.UNEXPECTED_CONTINUE){let o=0;for(let h=t+1;h>6===2;h++)o++;return o}return e===fr.OVERRUN?r.length-t-1:0}function Hs(e,t,r,i,n){return e===fr.OVERLONG?(i.push(n),0):(i.push(65533),rf(e,t,r))}Object.freeze({error:Ks,ignore:rf,replace:Hs});function Bi(e,t=Tr.current){t!=Tr.current&&(ef.checkNormalize(),e=e.normalize(t));let r=[];for(let i=0;i>6|192),r.push(n&63|128);else if((n&64512)==55296){i++;const o=e.charCodeAt(i);if(i>=e.length||(o&64512)!==56320)throw new Error("invalid utf-8 string");const h=65536+((n&1023)<<10)+(o&1023);r.push(h>>18|240),r.push(h>>12&63|128),r.push(h>>6&63|128),r.push(h&63|128)}else r.push(n>>12|224),r.push(n>>6&63|128),r.push(n&63|128)}return Ot(r)}function Ls(e){if(e.length%4!==0)throw new Error("bad data");let t=[];for(let r=0;r{let o=n.split(":");r+=parseInt(o[0],16),i[r]=t(o[1])}),i}function nf(e){let t=0;return e.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let n=t+parseInt(i[0],16);return t=parseInt(i[1],16),{l:n,h:t}})}nf("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(e=>parseInt(e,16)),Ci("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),Ci("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),Ci("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Ls),nf("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const ff="hash/5.7.0";function zs(e){e=atob(e);const t=[];for(let r=0;r0&&Array.isArray(p)?n(p,h-1):r.push(p)})};return n(e,t),r}function js(e){const t={};for(let r=0;r>--A&1}const y=31,S=Math.pow(2,y),I=S>>>1,N=I>>1,C=S-1;let F=0;for(let H=0;H1;){let Vt=L+Pt>>>1;H>>1|w(),W=W<<1^I,Rt=(Rt^I)<<1|I|1;J=W,Bt=1+Rt-W}let G=i-4;return U.map(H=>{switch(H-G){case 3:return G+65792+(e[p++]<<16|e[p++]<<8|e[p++]);case 2:return G+256+(e[p++]<<8|e[p++]);case 1:return G+e[p++];default:return H-1}})}function Js(e){let t=0;return()=>e[t++]}function Gs(e){return Js(Qs(e))}function Ys(e){return e&1?~e>>1:e>>1}function Vs(e,t){let r=Array(e);for(let i=0;it[h]):r}function Xs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push($s(r,e))}for(;;){let r=e()-1;if(r<0)break;t.push(t0(r,e))}return js(of(t))}function Zs(e){let t=[];for(;;){let r=e();if(r==0)break;t.push(r)}return t}function af(e,t,r){let i=Array(e).fill(void 0).map(()=>[]);for(let n=0;ni[h].push(o));return i}function $s(e,t){let r=1+t(),i=t(),n=Zs(t),o=af(n.length,1+e,t);return of(o.map((h,p)=>{const A=h[0],v=h.slice(1);return Array(n[p]).fill(void 0).map((w,y)=>{let S=y*i;return[A+y*r,v.map(I=>I+S)]})}))}function t0(e,t){let r=1+t();return af(r,1+e,t).map(n=>[n[0],n.slice(1)])}function e0(e){let t=Ur(e).sort((i,n)=>i-n);return r();function r(){let i=[];for(;;){let v=Ur(e,t);if(v.length==0)break;i.push({set:new Set(v),node:r()})}i.sort((v,w)=>w.set.size-v.set.size);let n=e(),o=n%3;n=n/3|0;let h=!!(n&1);n>>=1;let p=n==1,A=n==2;return{branches:i,valid:o,fe0f:h,save:p,check:A}}}function r0(){return Gs(zs("AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA=="))}const kr=r0();new Set(Ur(kr)),new Set(Ur(kr)),Xs(kr),e0(kr),new z(ff);const i0=new Uint8Array(32);i0.fill(0);const n0=`Ethereum Signed Message: -+`;function uf(e){return typeof e=="string"&&(e=Bi(e)),Si(Cs([Bi(n0),Bi(String(e.length)),e]))}const f0="rlp/5.7.0";new z(f0);const o0="address/5.7.0",yr=new z(o0);function hf(e){Jt(e,20)||yr.throwArgumentError("invalid address","address",e),e=e.toLowerCase();const t=e.substring(2).split(""),r=new Uint8Array(40);for(let n=0;n<40;n++)r[n]=t[n].charCodeAt(0);const i=Ot(Si(r));for(let n=0;n<40;n+=2)i[n>>1]>>4>=8&&(t[n]=t[n].toUpperCase()),(i[n>>1]&15)>=8&&(t[n+1]=t[n+1].toUpperCase());return"0x"+t.join("")}const s0=9007199254740991;function a0(e){return Math.log10?Math.log10(e):Math.log(e)/Math.LN10}const Ri={};for(let e=0;e<10;e++)Ri[String(e)]=String(e);for(let e=0;e<26;e++)Ri[String.fromCharCode(65+e)]=String(10+e);const cf=Math.floor(a0(s0));function u0(e){e=e.toUpperCase(),e=e.substring(4)+e.substring(0,2)+"00";let t=e.split("").map(i=>Ri[i]).join("");for(;t.length>=cf;){let i=t.substring(0,cf);t=parseInt(i,10)%97+t.substring(i.length)}let r=String(98-parseInt(t,10)%97);for(;r.length<2;)r="0"+r;return r}function h0(e){let t=null;if(typeof e!="string"&&yr.throwArgumentError("invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/))e.substring(0,2)!=="0x"&&(e="0x"+e),t=hf(e),e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&t!==e&&yr.throwArgumentError("bad address checksum","address",e);else if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(e.substring(2,4)!==u0(e)&&yr.throwArgumentError("bad icap checksum","address",e),t=Us(e.substring(4));t.length<40;)t="0"+t;t=hf("0x"+t)}else yr.throwArgumentError("invalid address","address",e);return t}const c0="properties/5.7.0";new z(c0);function wr(e,t,r){Object.defineProperty(e,t,{enumerable:!0,value:r,writable:!1})}new z(ff);const l0=new Uint8Array(32);l0.fill(0),V.from(-1);const d0=V.from(0),p0=V.from(1);V.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),oe(p0.toHexString(),32),oe(d0.toHexString(),32);var se={},Q={},xr=lf;function lf(e,t){if(!e)throw new Error(t||"Assertion failed")}lf.equal=function(t,r,i){if(t!=r)throw new Error(i||"Assertion failed: "+t+" != "+r)};var Oi={exports:{}};typeof Object.create=="function"?Oi.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Oi.exports=function(t,r){if(r){t.super_=r;var i=function(){};i.prototype=r.prototype,t.prototype=new i,t.prototype.constructor=t}};var v0=xr,g0=Oi.exports;Q.inherits=g0;function m0(e,t){return(e.charCodeAt(t)&64512)!==55296||t<0||t+1>=e.length?!1:(e.charCodeAt(t+1)&64512)===56320}function A0(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e=="string")if(t){if(t==="hex")for(e=e.replace(/[^a-z0-9]+/ig,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=o&63|128):m0(e,n)?(o=65536+((o&1023)<<10)+(e.charCodeAt(++n)&1023),r[i++]=o>>18|240,r[i++]=o>>12&63|128,r[i++]=o>>6&63|128,r[i++]=o&63|128):(r[i++]=o>>12|224,r[i++]=o>>6&63|128,r[i++]=o&63|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}Q.htonl=df;function y0(e,t){for(var r="",i=0;i>>0}return o}Q.join32=w0;function x0(e,t){for(var r=new Array(e.length*4),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=o&255):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=o&255)}return r}Q.split32=x0;function M0(e,t){return e>>>t|e<<32-t}Q.rotr32=M0;function E0(e,t){return e<>>32-t}Q.rotl32=E0;function S0(e,t){return e+t>>>0}Q.sum32=S0;function N0(e,t,r){return e+t+r>>>0}Q.sum32_3=N0;function I0(e,t,r,i){return e+t+r+i>>>0}Q.sum32_4=I0;function _0(e,t,r,i,n){return e+t+r+i+n>>>0}Q.sum32_5=_0;function B0(e,t,r,i){var n=e[t],o=e[t+1],h=i+o>>>0,p=(h>>0,e[t+1]=h}Q.sum64=B0;function C0(e,t,r,i){var n=t+i>>>0,o=(n>>0}Q.sum64_hi=C0;function R0(e,t,r,i){var n=t+i;return n>>>0}Q.sum64_lo=R0;function O0(e,t,r,i,n,o,h,p){var A=0,v=t;v=v+i>>>0,A+=v>>0,A+=v>>0,A+=v>>0}Q.sum64_4_hi=O0;function P0(e,t,r,i,n,o,h,p){var A=t+i+o+p;return A>>>0}Q.sum64_4_lo=P0;function D0(e,t,r,i,n,o,h,p,A,v){var w=0,y=t;y=y+i>>>0,w+=y>>0,w+=y>>0,w+=y>>0,w+=y>>0}Q.sum64_5_hi=D0;function F0(e,t,r,i,n,o,h,p,A,v){var w=t+i+o+p+v;return w>>>0}Q.sum64_5_lo=F0;function T0(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}Q.rotr64_hi=T0;function U0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.rotr64_lo=U0;function k0(e,t,r){return e>>>r}Q.shr64_hi=k0;function q0(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}Q.shr64_lo=q0;var or={},gf=Q,K0=xr;function qr(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}or.BlockHash=qr,qr.prototype.update=function(t,r){if(t=gf.toArray(t,r),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){t=this.pending;var i=t.length%this._delta8;this.pending=t.slice(t.length-i,t.length),this.pending.length===0&&(this.pending=null),t=gf.join32(t,0,t.length-i,this.endian);for(var n=0;n>>24&255,n[o++]=t>>>16&255,n[o++]=t>>>8&255,n[o++]=t&255}else for(n[o++]=t&255,n[o++]=t>>>8&255,n[o++]=t>>>16&255,n[o++]=t>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,h=8;h>>3}ae.g0_256=Q0;function J0(e){return ue(e,17)^ue(e,19)^e>>>10}ae.g1_256=J0;var ar=Q,G0=or,Y0=ae,Pi=ar.rotl32,Mr=ar.sum32,V0=ar.sum32_5,W0=Y0.ft_1,yf=G0.BlockHash,X0=[1518500249,1859775393,2400959708,3395469782];function he(){if(!(this instanceof he))return new he;yf.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}ar.inherits(he,yf);var Z0=he;he.blockSize=512,he.outSize=160,he.hmacStrength=80,he.padLength=64,he.prototype._update=function(t,r){for(var i=this.W,n=0;n<16;n++)i[n]=t[r+n];for(;nthis.blockSize&&(t=new this.Hash().update(t).digest()),qa(t.length<=this.blockSize);for(var r=t.length;r>8,S=w&255;y?A.push(y,S):A.push(S)}return A}r.toArray=i;function n(h){return h.length===1?"0"+h:h}r.zero2=n;function o(h){for(var p="",A=0;A(S>>1)-1?C=(S>>1)-F:C=F,I.isubn(C)):C=0,y[N]=C,I.iushrn(1)}return y}r.getNAF=i;function n(A,v){var w=[[],[]];A=A.clone(),v=v.clone();for(var y=0,S=0,I;A.cmpn(-y)>0||v.cmpn(-S)>0;){var N=A.andln(3)+y&3,C=v.andln(3)+S&3;N===3&&(N=-1),C===3&&(C=-1);var F;N&1?(I=A.andln(7)+y&7,(I===3||I===5)&&C===2?F=-N:F=N):F=0,w[0].push(F);var U;C&1?(I=v.andln(7)+S&7,(I===3||I===5)&&N===2?U=-C:U=C):U=0,w[1].push(U),2*y===F+1&&(y=1-y),2*S===U+1&&(S=1-S),A.iushrn(1),v.iushrn(1)}return w}r.getJSF=n;function o(A,v,w){var y="_"+v;A.prototype[v]=function(){return this[y]!==void 0?this[y]:this[y]=w.call(this)}}r.cachedProperty=o;function h(A){return typeof A=="string"?r.toArray(A,"hex"):A}r.parseBytes=h;function p(A){return new K(A,"hex","le")}r.intFromLE=p}),Hr=Gt.getNAF,La=Gt.getJSF,Lr=Gt.assert;function Ce(e,t){this.type=e,this.p=new K(t.p,16),this.red=t.prime?K.red(t.prime):K.mont(this.p),this.zero=new K(0).toRed(this.red),this.one=new K(1).toRed(this.red),this.two=new K(2).toRed(this.red),this.n=t.n&&new K(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Ze=Ce;Ce.prototype.point=function(){throw new Error("Not implemented")},Ce.prototype.validate=function(){throw new Error("Not implemented")},Ce.prototype._fixedNafMul=function(t,r){Lr(t.precomputed);var i=t._getDoubles(),n=Hr(r,1,this._bitLength),o=(1<=p;v--)A=(A<<1)+n[v];h.push(A)}for(var w=this.jpoint(null,null,null),y=this.jpoint(null,null,null),S=o;S>0;S--){for(p=0;p=0;A--){for(var v=0;A>=0&&h[A]===0;A--)v++;if(A>=0&&v++,p=p.dblp(v),A<0)break;var w=h[A];Lr(w!==0),t.type==="affine"?w>0?p=p.mixedAdd(o[w-1>>1]):p=p.mixedAdd(o[-w-1>>1].neg()):w>0?p=p.add(o[w-1>>1]):p=p.add(o[-w-1>>1].neg())}return t.type==="affine"?p.toP():p},Ce.prototype._wnafMulAdd=function(t,r,i,n,o){var h=this._wnafT1,p=this._wnafT2,A=this._wnafT3,v=0,w,y,S;for(w=0;w=1;w-=2){var N=w-1,C=w;if(h[N]!==1||h[C]!==1){A[N]=Hr(i[N],h[N],this._bitLength),A[C]=Hr(i[C],h[C],this._bitLength),v=Math.max(A[N].length,v),v=Math.max(A[C].length,v);continue}var F=[r[N],null,null,r[C]];r[N].y.cmp(r[C].y)===0?(F[1]=r[N].add(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg())):r[N].y.cmp(r[C].y.redNeg())===0?(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].add(r[C].neg())):(F[1]=r[N].toJ().mixedAdd(r[C]),F[2]=r[N].toJ().mixedAdd(r[C].neg()));var U=[-3,-1,-5,-7,0,7,5,1,3],J=La(i[N],i[C]);for(v=Math.max(J[0].length,v),A[N]=new Array(v),A[C]=new Array(v),y=0;y=0;w--){for(var Pt=0;w>=0;){var W=!0;for(y=0;y=0&&Pt++,H=H.dblp(Pt),w<0)break;for(y=0;y0?S=p[y][Rt-1>>1]:Rt<0&&(S=p[y][-Rt-1>>1].neg()),S.type==="affine"?H=H.mixedAdd(S):H=H.add(S))}}for(w=0;w=Math.ceil((t.bitLength()+1)/r.step):!1},$t.prototype._getDoubles=function(t,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],n=this,o=0;o=0&&(I=v,N=w),y.negative&&(y=y.neg(),S=S.neg()),I.negative&&(I=I.neg(),N=N.neg()),[{a:y,b:S},{a:I,b:N}]},te.prototype._endoSplit=function(t){var r=this.endo.basis,i=r[0],n=r[1],o=n.b.mul(t).divRound(this.n),h=i.b.neg().mul(t).divRound(this.n),p=o.mul(i.a),A=h.mul(n.a),v=o.mul(i.b),w=h.mul(n.b),y=t.sub(p).sub(A),S=v.add(w).neg();return{k1:y,k2:S}},te.prototype.pointFromX=function(t,r){t=new K(t,16),t.red||(t=t.toRed(this.red));var i=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=i.redSqrt();if(n.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var o=n.fromRed().isOdd();return(r&&!o||!r&&o)&&(n=n.redNeg()),this.point(t,n)},te.prototype.validate=function(t){if(t.inf)return!0;var r=t.x,i=t.y,n=this.a.redMul(r),o=r.redSqr().redMul(r).redIAdd(n).redIAdd(this.b);return i.redSqr().redISub(o).cmpn(0)===0},te.prototype._endoWnafMulAdd=function(t,r,i){for(var n=this._endoWnafT1,o=this._endoWnafT2,h=0;h":""},Ft.prototype.isInfinity=function(){return this.inf},Ft.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(this.x.cmp(t.x)===0)return this.curve.point(null,null);var r=this.y.redSub(t.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(t.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(t.x),n=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,n)},Ft.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(t.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),n=t.redInvm(),o=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(n),h=o.redSqr().redISub(this.x.redAdd(this.x)),p=o.redMul(this.x.redSub(h)).redISub(this.y);return this.curve.point(h,p)},Ft.prototype.getX=function(){return this.x.fromRed()},Ft.prototype.getY=function(){return this.y.fromRed()},Ft.prototype.mul=function(t){return t=new K(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},Ft.prototype.mulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},Ft.prototype.jmulAdd=function(t,r,i){var n=[this,r],o=[t,i];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},Ft.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||this.x.cmp(t.x)===0&&this.y.cmp(t.y)===0)},Ft.prototype.neg=function(t){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var i=this.precomputed,n=function(o){return o.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(n)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(n)}}}return r},Ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t};function Tt(e,t,r,i){Ze.BasePoint.call(this,e,"jacobian"),t===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new K(0)):(this.x=new K(t,16),this.y=new K(r,16),this.z=new K(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}qi(Tt,Ze.BasePoint),te.prototype.jpoint=function(t,r,i){return new Tt(this,t,r,i)},Tt.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),r=t.redSqr(),i=this.x.redMul(r),n=this.y.redMul(r).redMul(t);return this.curve.point(i,n)},Tt.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},Tt.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var r=t.z.redSqr(),i=this.z.redSqr(),n=this.x.redMul(r),o=t.x.redMul(i),h=this.y.redMul(r.redMul(t.z)),p=t.y.redMul(i.redMul(this.z)),A=n.redSub(o),v=h.redSub(p);if(A.cmpn(0)===0)return v.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var w=A.redSqr(),y=w.redMul(A),S=n.redMul(w),I=v.redSqr().redIAdd(y).redISub(S).redISub(S),N=v.redMul(S.redISub(I)).redISub(h.redMul(y)),C=this.z.redMul(t.z).redMul(A);return this.curve.jpoint(I,N,C)},Tt.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var r=this.z.redSqr(),i=this.x,n=t.x.redMul(r),o=this.y,h=t.y.redMul(r).redMul(this.z),p=i.redSub(n),A=o.redSub(h);if(p.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var v=p.redSqr(),w=v.redMul(p),y=i.redMul(v),S=A.redSqr().redIAdd(w).redISub(y).redISub(y),I=A.redMul(y.redISub(S)).redISub(o.redMul(w)),N=this.z.redMul(p);return this.curve.jpoint(S,I,N)},Tt.prototype.dblp=function(t){if(t===0)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(o),this.x.cmp(i)===0)return!0}},Tt.prototype.inspect=function(){return this.isInfinity()?"":""},Tt.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var zr=lr(function(e,t){var r=t;r.base=Ze,r.short=ja,r.mont=null,r.edwards=null}),jr=lr(function(e,t){var r=t,i=Gt.assert;function n(p){p.type==="short"?this.curve=new zr.short(p):p.type==="edwards"?this.curve=new zr.edwards(p):this.curve=new zr.mont(p),this.g=this.curve.g,this.n=this.curve.n,this.hash=p.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=n;function o(p,A){Object.defineProperty(r,p,{configurable:!0,enumerable:!0,get:function(){var v=new n(A);return Object.defineProperty(r,p,{configurable:!0,enumerable:!0,value:v}),v}})}o("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:se.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),o("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:se.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),o("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:se.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),o("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:se.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),o("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:se.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),o("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["9"]}),o("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:se.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=null.crash()}catch{h=void 0}o("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:se.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})});function Re(e){if(!(this instanceof Re))return new Re(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=fe.toArray(e.entropy,e.entropyEnc||"hex"),r=fe.toArray(e.nonce,e.nonceEnc||"hex"),i=fe.toArray(e.pers,e.persEnc||"hex");ki(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}var Ff=Re;Re.prototype._init=function(t,r,i){var n=t.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(i||[])),this._reseed=1},Re.prototype.generate=function(t,r,i,n){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(n=i,i=r,r=null),i&&(i=fe.toArray(i,n||"hex"),this._update(i));for(var o=[];o.length"};var Qa=Gt.assert;function Qr(e,t){if(e instanceof Qr)return e;this._importDER(e,t)||(Qa(e.r&&e.s,"Signature without r or s"),this.r=new K(e.r,16),this.s=new K(e.s,16),e.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}var Jr=Qr;function Ja(){this.place=0}function Li(e,t){var r=e[t.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var n=0,o=0,h=t.place;o>>=0;return n<=127?!1:(t.place=h,n)}function Tf(e){for(var t=0,r=e.length-1;!e[t]&&!(e[t+1]&128)&&t>>3);for(e.push(r|128);--r;)e.push(t>>>(r<<3)&255);e.push(t)}Qr.prototype.toDER=function(t){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Tf(r),i=Tf(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var n=[2];zi(n,r.length),n=n.concat(r),n.push(2),zi(n,i.length);var o=n.concat(i),h=[48];return zi(h,o.length),h=h.concat(o),Gt.encode(h,t)};var Ga=function(){throw new Error("unsupported")},Uf=Gt.assert;function ee(e){if(!(this instanceof ee))return new ee(e);typeof e=="string"&&(Uf(Object.prototype.hasOwnProperty.call(jr,e),"Unknown curve "+e),e=jr[e]),e instanceof jr.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}var Ya=ee;ee.prototype.keyPair=function(t){return new Hi(this,t)},ee.prototype.keyFromPrivate=function(t,r){return Hi.fromPrivate(this,t,r)},ee.prototype.keyFromPublic=function(t,r){return Hi.fromPublic(this,t,r)},ee.prototype.genKeyPair=function(t){t||(t={});for(var r=new Ff({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||Ga(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),n=this.n.sub(new K(2));;){var o=new K(r.generate(i));if(!(o.cmp(n)>0))return o.iaddn(1),this.keyFromPrivate(o)}},ee.prototype._truncateToN=function(t,r){var i=t.byteLength()*8-this.n.bitLength();return i>0&&(t=t.ushrn(i)),!r&&t.cmp(this.n)>=0?t.sub(this.n):t},ee.prototype.sign=function(t,r,i,n){typeof i=="object"&&(n=i,i=null),n||(n={}),r=this.keyFromPrivate(r,i),t=this._truncateToN(new K(t,16));for(var o=this.n.byteLength(),h=r.getPrivate().toArray("be",o),p=t.toArray("be",o),A=new Ff({hash:this.hash,entropy:h,nonce:p,pers:n.pers,persEnc:n.persEnc||"utf8"}),v=this.n.sub(new K(1)),w=0;;w++){var y=n.k?n.k(w):new K(A.generate(this.n.byteLength()));if(y=this._truncateToN(y,!0),!(y.cmpn(1)<=0||y.cmp(v)>=0)){var S=this.g.mul(y);if(!S.isInfinity()){var I=S.getX(),N=I.umod(this.n);if(N.cmpn(0)!==0){var C=y.invm(this.n).mul(N.mul(r.getPrivate()).iadd(t));if(C=C.umod(this.n),C.cmpn(0)!==0){var F=(S.getY().isOdd()?1:0)|(I.cmp(N)!==0?2:0);return n.canonical&&C.cmp(this.nh)>0&&(C=this.n.sub(C),F^=1),new Jr({r:N,s:C,recoveryParam:F})}}}}}},ee.prototype.verify=function(t,r,i,n){t=this._truncateToN(new K(t,16)),i=this.keyFromPublic(i,n),r=new Jr(r,"hex");var o=r.r,h=r.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var p=h.invm(this.n),A=p.mul(t).umod(this.n),v=p.mul(o).umod(this.n),w;return this.curve._maxwellTrick?(w=this.g.jmulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.eqXToP(o)):(w=this.g.mulAdd(A,i.getPublic(),v),w.isInfinity()?!1:w.getX().umod(this.n).cmp(o)===0)},ee.prototype.recoverPubKey=function(e,t,r,i){Uf((3&r)===r,"The recovery param is more than two bits"),t=new Jr(t,i);var n=this.n,o=new K(e),h=t.r,p=t.s,A=r&1,v=r>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&v)throw new Error("Unable to find sencond key candinate");v?h=this.curve.pointFromX(h.add(this.curve.n),A):h=this.curve.pointFromX(h,A);var w=t.r.invm(n),y=n.sub(o).mul(w).umod(n),S=p.mul(w).umod(n);return this.g.mulAdd(y,h,S)},ee.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new Jr(t,i),t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(e,t,n)}catch{continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")};var Va=lr(function(e,t){var r=t;r.version="6.5.4",r.utils=Gt,r.rand=function(){throw new Error("unsupported")},r.curve=zr,r.curves=jr,r.ec=Ya,r.eddsa=null}),Wa=Va.ec;const Xa="signing-key/5.7.0",ji=new z(Xa);let Qi=null;function ve(){return Qi||(Qi=new Wa("secp256k1")),Qi}class Za{constructor(t){wr(this,"curve","secp256k1"),wr(this,"privateKey",Kt(t)),Os(this.privateKey)!==32&&ji.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=ve().keyFromPrivate(Ot(this.privateKey));wr(this,"publicKey","0x"+r.getPublic(!1,"hex")),wr(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),wr(this,"_isSigningKey",!0)}_addPoint(t){const r=ve().keyFromPublic(Ot(this.publicKey)),i=ve().keyFromPublic(Ot(t));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=Ot(t);i.length!==32&&ji.throwArgumentError("bad digest length","digest",t);const n=r.sign(i,{canonical:!0});return Jn({recoveryParam:n.recoveryParam,r:oe("0x"+n.r.toString(16),32),s:oe("0x"+n.s.toString(16),32)})}computeSharedSecret(t){const r=ve().keyFromPrivate(Ot(this.privateKey)),i=ve().keyFromPublic(Ot(kf(t)));return oe("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(t){return!!(t&&t._isSigningKey)}}function $a(e,t){const r=Jn(t),i={r:Ot(r.r),s:Ot(r.s)};return"0x"+ve().recoverPubKey(Ot(e),i,r.recoveryParam).encode("hex",!1)}function kf(e,t){const r=Ot(e);if(r.length===32){const i=new Za(r);return t?"0x"+ve().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return t?Kt(r):"0x"+ve().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return t?"0x"+ve().keyFromPublic(r).getPublic(!0,"hex"):Kt(r)}return ji.throwArgumentError("invalid public or private key","key","[REDACTED]")}const tu="transactions/5.7.0";new z(tu);var qf;(function(e){e[e.legacy=0]="legacy",e[e.eip2930=1]="eip2930",e[e.eip1559=2]="eip1559"})(qf||(qf={}));function eu(e){const t=kf(e);return h0(Qn(Si(Qn(t,1)),12))}function ru(e,t){return eu($a(Ot(e),t))}const iu="https://rpc.walletconnect.com/v1";async function Kf(e,t,r,i,n,o){switch(r.t){case"eip191":return Hf(e,t,r.s);case"eip1271":return await Lf(e,t,r.s,i,n,o);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function Hf(e,t,r){return ru(uf(t),r).toLowerCase()===e.toLowerCase()}async function Lf(e,t,r,i,n,o){try{const h="0x1626ba7e",p="0000000000000000000000000000000000000000000000000000000000000040",A="0000000000000000000000000000000000000000000000000000000000000041",v=r.substring(2),w=uf(t).substring(2),y=h+w+p+A+v,S=await fetch(`${o||iu}/?chainId=${i}&projectId=${n}`,{method:"POST",body:JSON.stringify({id:nu(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:y},"latest"]})}),{result:I}=await S.json();return I?I.slice(0,h.length).toLowerCase()===h.toLowerCase():!1}catch(h){return console.error("isValidEip1271Signature: ",h),!1}}function nu(){return Date.now()+Math.floor(Math.random()*1e3)}var fu=Object.defineProperty,ou=Object.defineProperties,su=Object.getOwnPropertyDescriptors,zf=Object.getOwnPropertySymbols,au=Object.prototype.hasOwnProperty,uu=Object.prototype.propertyIsEnumerable,jf=(e,t,r)=>t in e?fu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ji=(e,t)=>{for(var r in t||(t={}))au.call(t,r)&&jf(e,r,t[r]);if(zf)for(var r of zf(t))uu.call(t,r)&&jf(e,r,t[r]);return e},Qf=(e,t)=>ou(e,su(t));const hu="did:pkh:",Gr=e=>e?.split(":"),Gi=e=>{const t=e&&Gr(e);if(t)return e.includes(hu)?t[3]:t[1]},cu=e=>{const t=e&&Gr(e);if(t)return t[2]+":"+t[3]},Yi=e=>{const t=e&&Gr(e);if(t)return t.pop()};async function lu(e){const{cacao:t,projectId:r}=e,{s:i,p:n}=t,o=Jf(n,n.iss),h=Yi(n.iss);return await Kf(h,o,i,Gi(n.iss),r)}const Jf=(e,t)=>{const r=`${e.domain} wants you to sign in with your Ethereum account:`,i=Yi(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let n=e.statement||void 0;const o=`URI: ${e.aud||e.uri}`,h=`Version: ${e.version}`,p=`Chain ID: ${Gi(t)}`,A=`Nonce: ${e.nonce}`,v=`Issued At: ${e.iat}`,w=e.exp?`Expiration Time: ${e.exp}`:void 0,y=e.nbf?`Not Before: ${e.nbf}`:void 0,S=e.requestId?`Request ID: ${e.requestId}`:void 0,I=e.resources?`Resources:${e.resources.map(C=>` -+- ${C}`).join("")}`:void 0,N=Vr(e.resources);if(N){const C=Oe(N);n=Xi(n,C)}return[r,i,"",n,"",o,h,p,A,v,w,y,S,I].filter(C=>C!=null).join(` -+`)};function du(e,t,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function pu(e){var t;const{authPayload:r,chains:i,methods:n}=e,o=r.statement||"";if(!(i!=null&&i.length))return r;const h=r.chains,p=wi(h,i);if(!(p!=null&&p.length))throw new Error("No supported chains");const A=Gf(r.resources);if(!A)return r;ge(A);const v=Yf(A,"eip155");let w=r?.resources||[];if(v!=null&&v.length){const y=Vf(v),S=wi(y,n);if(!(S!=null&&S.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(y)}, supported: ${JSON.stringify(n)}`);const I=Vi("request",S,{chains:p}),N=$f(A,"eip155",I);w=((t=r?.resources)==null?void 0:t.slice(0,-1))||[],w.push(Yr(N))}return Qf(Ji({},r),{statement:eo(o,Vr(w)),chains:p,resources:r!=null&&r.resources||w.length>0?w:void 0})}function Gf(e){const t=Vr(e);if(t&&Wi(t))return Oe(t)}function vu(e,t){var r;return(r=e?.att)==null?void 0:r.hasOwnProperty(t)}function Yf(e,t){var r,i;return(r=e?.att)!=null&&r[t]?Object.keys((i=e?.att)==null?void 0:i[t]):[]}function gu(e){return e?.map(t=>Object.keys(t))||[]}function Vf(e){return e?.map(t=>{var r;return(r=t.split("/"))==null?void 0:r[1]})||[]}function Wf(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function Xf(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function ge(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(r=>{const i=e.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(n=>{const o=i[n];if(!Array.isArray(o))throw new Error(`Ability limits ${n} must be an array of objects, found: ${o}`);if(!o.length)throw new Error(`Value of ${n} is empty array, must be an array with objects`);o.forEach(h=>{if(typeof h!="object")throw new Error(`Ability limits (${n}) must be an array of objects, found: ${h}`)})})})}function Zf(e,t,r,i={}){return r?.sort((n,o)=>n.localeCompare(o)),{att:{[e]:Vi(t,r,i)}}}function $f(e,t,r){var i;return e.att[t]=Ji({},r),((i=Object.keys(e.att))==null?void 0:i.sort((n,o)=>n.localeCompare(o))).reduce((n,o)=>(n.att[o]=e.att[o],n),{att:{}})}function Vi(e,t,r={}){t=t?.sort((n,o)=>n.localeCompare(o));const i=t.map(n=>({[`${e}/${n}`]:[r]}));return Object.assign({},...i)}function Yr(e){return ge(e),`urn:recap:${Wf(e).replace(/=/g,"")}`}function Oe(e){const t=Xf(e.replace("urn:recap:",""));return ge(t),t}function mu(e,t,r){const i=Zf(e,t,r);return Yr(i)}function Wi(e){return e&&e.includes("urn:recap:")}function Au(e,t){const r=Oe(e),i=Oe(t),n=to(r,i);return Yr(n)}function to(e,t){ge(e),ge(t);const r=Object.keys(e.att).concat(Object.keys(t.att)).sort((n,o)=>n.localeCompare(o)),i={att:{}};return r.forEach(n=>{var o,h;Object.keys(((o=e.att)==null?void 0:o[n])||{}).concat(Object.keys(((h=t.att)==null?void 0:h[n])||{})).sort((p,A)=>p.localeCompare(A)).forEach(p=>{var A,v;i.att[n]=Qf(Ji({},i.att[n]),{[p]:((A=e.att[n])==null?void 0:A[p])||((v=t.att[n])==null?void 0:v[p])})})}),i}function Xi(e="",t){ge(t);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(r))return e;const i=[];let n=0;Object.keys(t.att).forEach(p=>{const A=Object.keys(t.att[p]).map(y=>({ability:y.split("/")[0],action:y.split("/")[1]}));A.sort((y,S)=>y.action.localeCompare(S.action));const v={};A.forEach(y=>{v[y.ability]||(v[y.ability]=[]),v[y.ability].push(y.action)});const w=Object.keys(v).map(y=>(n++,`(${n}) '${y}': '${v[y].join("', '")}' for '${p}'.`));i.push(w.join(", ").replace(".,","."))});const o=i.join(" "),h=`${r}${o}`;return`${e?e+" ":""}${h}`}function bu(e){var t;const r=Oe(e);ge(r);const i=(t=r.att)==null?void 0:t.eip155;return i?Object.keys(i).map(n=>n.split("/")[1]):[]}function yu(e){const t=Oe(e);ge(t);const r=[];return Object.values(t.att).forEach(i=>{Object.values(i).forEach(n=>{var o;(o=n?.[0])!=null&&o.chains&&r.push(n[0].chains)})}),[...new Set(r.flat())]}function eo(e,t){if(!t)return e;const r=Oe(t);return ge(r),Xi(e,r)}function Vr(e){if(!e)return;const t=e?.[e.length-1];return Wi(t)?t:void 0}const Zi="base10",Lt="base16",$i="base64pad",wu="base64url",dr="utf8",tn=0,pr=1,Sr=2,xu=0,ro=1,Nr=12,en=32;function Mu(){const e=gn.generateKeyPair();return{privateKey:Qt(e.secretKey,Lt),publicKey:Qt(e.publicKey,Lt)}}function Eu(){const e=Cr(en);return Qt(e,Lt)}function Su(e,t){const r=gn.sharedKey(Xt(e,Lt),Xt(t,Lt),!0),i=new Ko(pn,r).expand(en);return Qt(i,Lt)}function Nu(e){const t=vn(Xt(e,Lt));return Qt(t,Lt)}function Iu(e){const t=vn(Xt(e,dr));return Qt(t,Lt)}function rn(e){return Xt(`${e}`,Zi)}function $e(e){return Number(Qt(e,Zi))}function _u(e){const t=rn(typeof e.type<"u"?e.type:tn);if($e(t)===pr&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof e.senderPublicKey<"u"?Xt(e.senderPublicKey,Lt):void 0,i=typeof e.iv<"u"?Xt(e.iv,Lt):Cr(Nr),n=new dn(Xt(e.symKey,Lt)).seal(i,Xt(e.message,dr));return nn({type:t,sealed:n,iv:i,senderPublicKey:r,encoding:e.encoding})}function Bu(e,t){const r=rn(Sr),i=Cr(Nr),n=Xt(e,dr);return nn({type:r,sealed:n,iv:i,encoding:t})}function Cu(e){const t=new dn(Xt(e.symKey,Lt)),{sealed:r,iv:i}=Wr({encoded:e.encoded,encoding:e?.encoding}),n=t.open(i,r);if(n===null)throw new Error("Failed to decrypt");return Qt(n,dr)}function Ru(e,t){const{sealed:r}=Wr({encoded:e,encoding:t});return Qt(r,dr)}function nn(e){const{encoding:t=$i}=e;if($e(e.type)===Sr)return Qt(vi([e.type,e.sealed]),t);if($e(e.type)===pr){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Qt(vi([e.type,e.senderPublicKey,e.iv,e.sealed]),t)}return Qt(vi([e.type,e.iv,e.sealed]),t)}function Wr(e){const{encoded:t,encoding:r=$i}=e,i=Xt(t,r),n=i.slice(xu,ro),o=ro;if($e(n)===pr){const v=o+en,w=v+Nr,y=i.slice(o,v),S=i.slice(v,w),I=i.slice(w);return{type:n,sealed:I,iv:S,senderPublicKey:y}}if($e(n)===Sr){const v=i.slice(o),w=Cr(Nr);return{type:n,sealed:v,iv:w}}const h=o+Nr,p=i.slice(o,h),A=i.slice(h);return{type:n,sealed:A,iv:p}}function Ou(e,t){const r=Wr({encoded:e,encoding:t?.encoding});return io({type:$e(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?Qt(r.senderPublicKey,Lt):void 0,receiverPublicKey:t?.receiverPublicKey})}function io(e){const t=e?.type||tn;if(t===pr){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function Pu(e){return e.type===pr&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}function Du(e){return e.type===Sr}function no(e){return new Ho("p256").keyFromPublic({x:Buffer.from(e.x,"base64").toString("hex"),y:Buffer.from(e.y,"base64").toString("hex")},"hex")}function Fu(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");const r=t.length%4;return r>0&&(t+="=".repeat(4-r)),t}function Tu(e){return Buffer.from(Fu(e),"base64")}function Uu(e,t){const[r,i,n]=e.split("."),o=Tu(n);if(o.length!==64)throw new Error("Invalid signature length");const h=o.slice(0,32).toString("hex"),p=o.slice(32,64).toString("hex"),A=`${r}.${i}`,v=new pn().update(Buffer.from(A)).digest(),w=no(t),y=Buffer.from(v).toString("hex");if(!w.verify(y,{r:h,s:p}))throw new Error("Invalid signature");return Lo(e).payload}const fo="irn";function ku(e){return e?.relay||{protocol:fo}}function qu(e){const t=zo[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Ku=Object.defineProperty,Hu=Object.defineProperties,Lu=Object.getOwnPropertyDescriptors,oo=Object.getOwnPropertySymbols,zu=Object.prototype.hasOwnProperty,ju=Object.prototype.propertyIsEnumerable,so=(e,t,r)=>t in e?Ku(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ao=(e,t)=>{for(var r in t||(t={}))zu.call(t,r)&&so(e,r,t[r]);if(oo)for(var r of oo(t))ju.call(t,r)&&so(e,r,t[r]);return e},Qu=(e,t)=>Hu(e,Lu(t));function uo(e,t="-"){const r={},i="relay"+t;return Object.keys(e).forEach(n=>{if(n.startsWith(i)){const o=n.replace(i,""),h=e[n];r[o]=h}}),r}function Ju(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),r=e.indexOf("?")!==-1?e.indexOf("?"):void 0,i=e.substring(0,t),n=e.substring(t+1,r).split("@"),o=typeof r<"u"?e.substring(r):"",h=Br.parse(o),p=typeof h.methods=="string"?h.methods.split(","):void 0;return{protocol:i,topic:ho(n[0]),version:parseInt(n[1],10),symKey:h.symKey,relay:uo(h),methods:p,expiryTimestamp:h.expiryTimestamp?parseInt(h.expiryTimestamp,10):void 0}}function ho(e){return e.startsWith("//")?e.substring(2):e}function co(e,t="-"){const r="relay",i={};return Object.keys(e).forEach(n=>{const o=r+t+n;e[n]&&(i[o]=e[n])}),i}function Gu(e){return`${e.protocol}:${e.topic}@${e.version}?`+Br.stringify(ao(Qu(ao({symKey:e.symKey},co(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}function Yu(e,t,r){return`${e}?wc_ev=${r}&topic=${t}`}var Vu=Object.defineProperty,Wu=Object.defineProperties,Xu=Object.getOwnPropertyDescriptors,lo=Object.getOwnPropertySymbols,Zu=Object.prototype.hasOwnProperty,$u=Object.prototype.propertyIsEnumerable,po=(e,t,r)=>t in e?Vu(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,th=(e,t)=>{for(var r in t||(t={}))Zu.call(t,r)&&po(e,r,t[r]);if(lo)for(var r of lo(t))$u.call(t,r)&&po(e,r,t[r]);return e},eh=(e,t)=>Wu(e,Xu(t));function tr(e){const t=[];return e.forEach(r=>{const[i,n]=r.split(":");t.push(`${i}:${n}`)}),t}function vo(e){const t=[];return Object.values(e).forEach(r=>{t.push(...tr(r.accounts))}),t}function go(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.methods)}),r}function mo(e,t){const r=[];return Object.values(e).forEach(i=>{tr(i.accounts).includes(t)&&r.push(...i.events)}),r}function rh(e,t){const r=_o(e,t);if(r)throw new Error(r.message);const i={};for(const[n,o]of Object.entries(e))i[n]={methods:o.methods,events:o.events,chains:o.accounts.map(h=>`${h.split(":")[0]}:${h.split(":")[1]}`)};return i}function ih(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:r={}},supportedNamespaces:i}=e,n=on(t),o=on(r),h={};Object.keys(i).forEach(v=>{const w=i[v].chains,y=i[v].methods,S=i[v].events,I=i[v].accounts;w.forEach(N=>{if(!I.some(C=>C.includes(N)))throw new Error(`No accounts provided for chain ${N} in namespace ${v}`)}),h[v]={chains:w,methods:y,events:S,accounts:I}});const p=Co(t,h,"approve()");if(p)throw new Error(p.message);const A={};return!Object.keys(t).length&&!Object.keys(r).length?h:(Object.keys(n).forEach(v=>{const w=i[v].chains.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.chains)==null?void 0:F.includes(N)}),y=i[v].methods.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.methods)==null?void 0:F.includes(N)}),S=i[v].events.filter(N=>{var C,F;return(F=(C=n[v])==null?void 0:C.events)==null?void 0:F.includes(N)}),I=w.map(N=>i[v].accounts.filter(C=>C.includes(`${N}:`))).flat();A[v]={chains:w,methods:y,events:S,accounts:I}}),Object.keys(o).forEach(v=>{var w,y,S,I,N,C;if(!i[v])return;const F=(y=(w=o[v])==null?void 0:w.chains)==null?void 0:y.filter(G=>i[v].chains.includes(G)),U=i[v].methods.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.methods)==null?void 0:L.includes(G)}),J=i[v].events.filter(G=>{var H,L;return(L=(H=o[v])==null?void 0:H.events)==null?void 0:L.includes(G)}),Bt=F?.map(G=>i[v].accounts.filter(H=>H.includes(`${G}:`))).flat();A[v]={chains:me((S=A[v])==null?void 0:S.chains,F),methods:me((I=A[v])==null?void 0:I.methods,U),events:me((N=A[v])==null?void 0:N.events,J),accounts:me((C=A[v])==null?void 0:C.accounts,Bt)}}),A)}function fn(e){return e.includes(":")}function Ao(e){return fn(e)?e.split(":")[0]:e}function on(e){var t,r,i;const n={};if(!Xr(e))return n;for(const[o,h]of Object.entries(e)){const p=fn(o)?[o]:h.chains,A=h.methods||[],v=h.events||[],w=Ao(o);n[w]=eh(th({},n[w]),{chains:me(p,(t=n[w])==null?void 0:t.chains),methods:me(A,(r=n[w])==null?void 0:r.methods),events:me(v,(i=n[w])==null?void 0:i.events)})}return n}function bo(e){const t={};return e?.forEach(r=>{const[i,n]=r.split(":");t[i]||(t[i]={accounts:[],chains:[],events:[]}),t[i].accounts.push(r),t[i].chains.push(`${i}:${n}`)}),t}function nh(e,t){t=t.map(i=>i.replace("did:pkh:",""));const r=bo(t);for(const[i,n]of Object.entries(r))n.methods?n.methods=me(n.methods,e):n.methods=e,n.events=["chainChanged","accountsChanged"];return r}const yo={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},wo={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function xe(e,t){const{message:r,code:i}=wo[e];return{message:t?`${r} ${t}`:r,code:i}}function er(e,t){const{message:r,code:i}=yo[e];return{message:t?`${r} ${t}`:r,code:i}}function Ir(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function Xr(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function Pe(e){return typeof e>"u"}function Yt(e,t){return t&&Pe(e)?!0:typeof e=="string"&&!!e.trim().length}function Zr(e,t){return t&&Pe(e)?!0:typeof e=="number"&&!isNaN(e)}function fh(e,t){const{requiredNamespaces:r}=t,i=Object.keys(e.namespaces),n=Object.keys(r);let o=!0;return _e(n,i)?(i.forEach(h=>{const{accounts:p,methods:A,events:v}=e.namespaces[h],w=tr(p),y=r[h];(!_e(Or(h,y),w)||!_e(y.methods,A)||!_e(y.events,v))&&(o=!1)}),o):!1}function _r(e){return Yt(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function xo(e){if(Yt(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const r=t[0]+":"+t[1];return!!t[2]&&_r(r)}}return!1}function oh(e){if(Yt(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function sh(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function ah(e){return e?.topic}function uh(e,t){let r=null;return Yt(e?.publicKey,!1)||(r=xe("MISSING_OR_INVALID",`${t} controller public key should be a string`)),r}function sn(e){let t=!0;return Ir(e)?e.length&&(t=e.every(r=>Yt(r,!1))):t=!1,t}function Mo(e,t,r){let i=null;return Ir(t)&&t.length?t.forEach(n=>{i||_r(n)||(i=er("UNSUPPORTED_CHAINS",`${r}, chain ${n} should be a string and conform to "namespace:chainId" format`))}):_r(e)||(i=er("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Eo(e,t,r){let i=null;return Object.entries(e).forEach(([n,o])=>{if(i)return;const h=Mo(n,Or(n,o),`${t} ${r}`);h&&(i=h)}),i}function So(e,t){let r=null;return Ir(e)?e.forEach(i=>{r||xo(i)||(r=er("UNSUPPORTED_ACCOUNTS",`${t}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=er("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function No(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=So(i?.accounts,`${t} namespace`);n&&(r=n)}),r}function Io(e,t){let r=null;return sn(e?.methods)?sn(e?.events)||(r=er("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):r=er("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),r}function an(e,t){let r=null;return Object.values(e).forEach(i=>{if(r)return;const n=Io(i,`${t}, namespace`);n&&(r=n)}),r}function hh(e,t,r){let i=null;if(e&&Xr(e)){const n=an(e,t);n&&(i=n);const o=Eo(e,t,r);o&&(i=o)}else i=xe("MISSING_OR_INVALID",`${t}, ${r} should be an object with data`);return i}function _o(e,t){let r=null;if(e&&Xr(e)){const i=an(e,t);i&&(r=i);const n=No(e,t);n&&(r=n)}else r=xe("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return r}function Bo(e){return Yt(e.protocol,!0)}function ch(e,t){let r=!1;return t&&!e?r=!0:e&&Ir(e)&&e.length&&e.forEach(i=>{r=Bo(i)}),r}function lh(e){return typeof e=="number"}function dh(e){return typeof e<"u"&&typeof e!==null}function ph(e){return!(!e||typeof e!="object"||!e.code||!Zr(e.code,!1)||!e.message||!Yt(e.message,!1))}function vh(e){return!(Pe(e)||!Yt(e.method,!1))}function gh(e){return!(Pe(e)||Pe(e.result)&&Pe(e.error)||!Zr(e.id,!1)||!Yt(e.jsonrpc,!1))}function mh(e){return!(Pe(e)||!Yt(e.name,!1))}function Ah(e,t){return!(!_r(t)||!vo(e).includes(t))}function bh(e,t,r){return Yt(r,!1)?go(e,t).includes(r):!1}function yh(e,t,r){return Yt(r,!1)?mo(e,t).includes(r):!1}function Co(e,t,r){let i=null;const n=wh(e),o=xh(t),h=Object.keys(n),p=Object.keys(o),A=Ro(Object.keys(e)),v=Ro(Object.keys(t)),w=A.filter(y=>!v.includes(y));return w.length&&(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. -+ Required: ${w.toString()} -+ Received: ${Object.keys(t).toString()}`)),_e(h,p)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. -+ Required: ${h.toString()} -+ Approved: ${p.toString()}`)),Object.keys(t).forEach(y=>{if(!y.includes(":")||i)return;const S=tr(t[y].accounts);S.includes(y)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${y} -+ Required: ${y} -+ Approved: ${S.toString()}`))}),h.forEach(y=>{i||(_e(n[y].methods,o[y].methods)?_e(n[y].events,o[y].events)||(i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${y}`)):i=xe("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${y}`))}),i}function wh(e){const t={};return Object.keys(e).forEach(r=>{var i;r.includes(":")?t[r]=e[r]:(i=e[r].chains)==null||i.forEach(n=>{t[n]={methods:e[r].methods,events:e[r].events}})}),t}function Ro(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function xh(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(":"))t[r]=e[r];else{const i=tr(e[r].accounts);i?.forEach(n=>{t[n]={accounts:e[r].accounts.filter(o=>o.includes(`${n}:`)),methods:e[r].methods,events:e[r].events}})}}),t}function Mh(e,t){return Zr(e,!1)&&e<=t.max&&e>=t.min}function Eh(){const e=We();return new Promise(t=>{switch(e){case qt.browser:t(Oo());break;case qt.reactNative:t(Po());break;case qt.node:t(Do());break;default:t(!0)}})}function Oo(){return gr()&&navigator?.onLine}async function Po(){if(rr()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Do(){return!0}function Sh(e){switch(We()){case qt.browser:Fo(e);break;case qt.reactNative:To(e);break;case qt.node:break}}function Fo(e){!rr()&&gr()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function To(e){rr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const un={};class Nh{static get(t){return un[t]}static set(t,r){un[t]=r}static delete(t){delete un[t]}}export{Zi as BASE10,Lt as BASE16,$i as BASE64,wu as BASE64URL,Zo as COLON,Ai as DEFAULT_DEPTH,Pr as EMPTY_SPACE,qt as ENV_MAP,wo as INTERNAL_ERRORS,Nh as MemoryStore,$o as ONE_THOUSAND,Nn as REACT_NATIVE_PRODUCT,fo as RELAYER_DEFAULT_PROTOCOL,yo as SDK_ERRORS,_n as SDK_TYPE,In as SLASH,tn as TYPE_0,pr as TYPE_1,Sr as TYPE_2,dr as UTF8,$f as addResourceToRecap,Bn as appendToQueryString,fs as assertType,Vi as assignAbilityToActions,Xf as base64Decode,Wf as base64Encode,ih as buildApprovedNamespaces,du as buildAuthObject,nh as buildNamespacesFromAuth,eo as buildRecapStatement,ms as calcExpiry,cs as capitalize,Fn as capitalizeWord,ls as createDelayedPromise,mu as createEncodedRecap,ds as createExpiringPromise,Zf as createRecap,Oe as decodeRecap,$e as decodeTypeByte,Ru as decodeTypeTwoEnvelope,Cu as decrypt,Su as deriveSymKey,Wr as deserialize,Yr as encodeRecap,rn as encodeTypeByte,Bu as encodeTypeTwoEnvelope,_u as encrypt,bs as engineEvent,hs as enumify,bn as formatAccountId,jo as formatAccountWithChain,An as formatChainId,yi as formatExpirerTarget,vs as formatIdTarget,Jf as formatMessage,os as formatMessageContext,co as formatRelayParams,is as formatRelayRpcUrl,Xi as formatStatementFromRecap,ps as formatTopicTarget,On as formatUA,Gu as formatUri,Mu as generateKeyPair,Eu as generateRandomBytes32,tr as getAccountsChains,Jo as getAccountsFromNamespaces,yn as getAddressFromAccount,Qo as getAddressesFromAccounts,es as getAppMetadata,Oo as getBrowserOnlineStatus,ts as getBundleId,wn as getChainFromAccount,xn as getChainsFromAccounts,Or as getChainsFromNamespace,Go as getChainsFromNamespaces,yu as getChainsFromRecap,Yo as getChainsFromRequiredNamespaces,wi as getCommonValuesInArrays,no as getCryptoKeyFromKeyData,Gf as getDecodedRecapFromResources,ws as getDeepLink,Yi as getDidAddress,Gr as getDidAddressSegments,Gi as getDidChainId,We as getEnvironment,ns as getHttpUrl,xe as getInternalError,Rn as getJavascriptID,Cn as getJavascriptOS,Dn as getLastItems,Yu as getLinkModeURL,bu as getMethodsFromRecap,cu as getNamespacedDidChainId,vo as getNamespacesChains,mo as getNamespacesEventsForChainId,bo as getNamespacesFromAccounts,go as getNamespacesMethodsForChainId,Do as getNodeOnlineStatus,Vf as getReCapActions,Po as getReactNativeOnlineStatus,gu as getRecapAbilitiesFromResource,Vr as getRecapFromResources,Yf as getRecapResource,rs as getRelayClientMetadata,qu as getRelayProtocolApi,ku as getRelayProtocolName,rh as getRequiredNamespacesFromNamespaces,er as getSdkError,xs as getSearchParamFromURL,mi as getUniqueValues,ys as handleDeeplinkRedirect,_e as hasOverlap,Nu as hashKey,Iu as hashMessage,gr as isBrowser,fn as isCaipNamespace,Co as isConformingNamespaces,As as isExpired,bi as isNode,Eh as isOnline,sh as isProposalStruct,rr as isReactNative,Wi as isRecap,fh as isSessionCompatible,ah as isSessionStruct,Pu as isTypeOneEnvelope,Du as isTypeTwoEnvelope,Pe as isUndefined,xo as isValidAccountId,So as isValidAccounts,Io as isValidActions,Ir as isValidArray,_r as isValidChainId,Mo as isValidChains,uh as isValidController,Lf as isValidEip1271Signature,Hf as isValidEip191Signature,ph as isValidErrorReason,mh as isValidEvent,lh as isValidId,No as isValidNamespaceAccounts,an as isValidNamespaceActions,Eo as isValidNamespaceChains,sn as isValidNamespaceMethodsOrEvents,_o as isValidNamespaces,Ah as isValidNamespacesChainId,yh as isValidNamespacesEvent,bh as isValidNamespacesRequest,Zr as isValidNumber,Xr as isValidObject,dh as isValidParams,ge as isValidRecap,Bo as isValidRelay,ch as isValidRelays,vh as isValidRequest,Mh as isValidRequestExpiry,hh as isValidRequiredNamespaces,gh as isValidResponse,Yt as isValidString,oh as isValidUrl,us as mapEntries,ss as mapToObj,me as mergeArrays,Au as mergeEncodedRecaps,to as mergeRecaps,on as normalizeNamespaces,as as objToMap,gi as parseAccountId,mn as parseChainId,Pn as parseContextNames,gs as parseExpirerTarget,Ao as parseNamespaceKey,uo as parseRelayParams,ho as parseTopic,Ju as parseUri,pu as populateAuthPayload,vu as recapHasResource,nn as serialize,Fo as subscribeToBrowserNetworkChange,Sh as subscribeToNetworkChange,To as subscribeToReactNativeNetworkChange,Ms as uuidv4,Ou as validateDecoding,io as validateEncoding,lu as validateSignedCacao,Uu as verifyP256Jwt,Kf as verifySignature}; -+//# sourceMappingURL=index.es.js.map -diff --git a/node_modules/@walletconnect/utils/dist/index.es.js.map b/node_modules/@walletconnect/utils/dist/index.es.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..1eeba5f0a497cd2413ea5f8a874b75483ee9d6f4 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.es.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.es.js","sources":["../src/caip.ts","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../src/crypto.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('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'));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["CAIP_DELIMITER","chain","namespace","reference","params","account","address","array","parser","unique","str","value","accounts","namespaces","keys","key","ns","chains","requiredNamespaces","namespaceProps","h","g","E","x","f","getDocument","getNavigator","_a","e","queryString","newQueryParams","queryParams","qs","__spreadValues","getWindowMetadata","protocol","version","env","metadata","getLocation","OS","Version","info","detect","os","sdkVersion","id","relayUrl","auth","projectId","useOnCloseEvent","bundleId","splitUrl","ua","url","domain","obj","type","context","depth","a","b","arr","map","cb","res","word","c","w","expiry","FIVE_MINUTES","expireErrorMessage","timeout","toMiliseconds","cacheResolve","cacheReject","cacheTimeout","promiseResolve","promiseReject","promise","resolve","reject","result","error","topic","target","parsed","ttl","now","fromMiliseconds","event","wcDeepLink","json","deeplink","link","err","store","deepLink","arr1","arr2","param","index","r","global","logger","this","_BN","_constructorGuard","throwFault","toHex","Zero","hashMessage","minimalisticAssert","assert","inherits_browserModule","require$$0","require$$1","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","require$$3","SHA256","SHA512","require$$4","BN","EC","DEFAULT_RPC_URL","reconstructedMessage","cacaoSignature","chainId","baseRpcUrl","message","signature","recoverAddress","eip1271MagicValue","dynamicTypeOffset","dynamicTypeLength","nonPrefixedSignature","nonPrefixedHashedMessage","data","response","generateJsonRpcId","didPrefix","iss","segments","cacao","payload","reconstructed","walletAddress","verifySignature","header","statement","uri","nonce","issuedAt","expirationTime","notBefore","requestId","resources","resource","recap","decoded","val","requestPayload","authPayload","methods","requested","supportedChains","getCommonValuesInArrays","requestedRecaps","updatedResources","actions","supportedActions","formattedActions","updatedRecap","__spreadProps","_b","action","abilities","ability","input","encodedString","resourceAbilities","limits","limit","recap1","recap2","decoded1","decoded2","merged","mergedRecap","base","statementForRecap","currentCounter","uniqueAbilities","recapStatemet","recapStatement","ZERO_INDEX","TYPE_LENGTH","IV_LENGTH","KEY_LENGTH","keyPair","x25519","toString","random","randomBytes","privateKeyA","publicKeyB","sharedKey","fromString","symKey","HKDF","hash","byte","senderPublicKey","iv","sealed","ChaCha20Poly1305","encoding","box","encoded","concat","bytes","slice1","slice2","slice3","opts","deserialized","keyData","base64UrlToBase64","base64Url","base64","padding","base64UrlDecode","token","headerBase64Url","payloadBase64Url","signatureBase64Url","signatureBuffer","s","signingInput","buffer","hashHex","decodeJWT","jsonrpc","RELAY_JSONRPC","delimiter","relay","prefix","name","pathStart","pathEnd","requiredValues","k","universalLink","encodedEnvelope","events","caller","validNamespacesError","isValidNamespaces","required","values","optionalNamespaces","supportedNamespaces","normalizedRequired","normalizedOptional","supportedMethods","supportedEvents","supportedAccounts","isConformingNamespaces","approvedNamespaces","requiredNamespace","method","optionalNamespace","_c","_d","_e","_f","chainsToAdd","methodsToAdd","eventsToAdd","accountsToAdd","mergeArrays","normalizedNamespaces","isValidObject","normalizedKey","_","code","itemCondition","optional","session","sessionKeys","paramsKeys","compatible","hasOverlap","getAccountsChains","getChainsFromNamespace","split","getInternalError","valid","item","getSdkError","validChainsError","validAccountsError","validActionsError","request","getNamespacesChains","getNamespacesMethodsForChainId","eventName","getNamespacesEventsForChainId","parsedRequired","parseNamespaces","parsedApproved","parseApprovedNamespaces","requiredChains","approvedChains","uniqueRequired","filterDuplicateNamespaces","uniqueApproved","missingRequiredNamespaces","boundaries","getEnvironment","ENV_MAP","isBrowser","isReactNative","state","callbackHandler","memoryStore"],"mappings":"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jB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;AACA,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACxC,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;AACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,OAA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GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI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AG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC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AAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KAClD,EAAE,IAAI,SAAS,CAAC;AACpB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CA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CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;KACnD,GAAG,IAAI,SAAS,CAAC;AACrB;KACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI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D,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAChD,EA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EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,CAAC,CAAC;AACF;AACA,IAAI,CAAC,GAAG;AACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC,CAAC;AACF;AACA,IAAI,EAAE,GAAG;AACT,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxD,CAAC;;AC/ID,IAAI,KAAK,GAAGF,OAAkB,CAAC;AAC/B,IAAIF,QAAM,GAAGG,oBAA8B,CAAC;AAC5C;AACA,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC9B,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;AAC7B,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACtC,CAAC;IACD,IAAc,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE;AAC1C;AACA,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS;AACjC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC/C,EAAEH,QAAM,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC;AACA;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAClD,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACjC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACjC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AAClD,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAC7C,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;;;CC9CD,IAAI,IAAI,GAAG,OAAO,CAAC;AACnB;AACA,CAAA,IAAI,CAAC,KAAK,GAAGE,OAAuB,CAAC;AACrC,CAAA,IAAI,CAAC,MAAM,GAAGC,QAAwB,CAAC;AACvC,CAAA,IAAI,CAAC,GAAG,GAAG6B,GAAqB,CAAC;AACjC,CAAA,IAAI,CAAC,MAAM,GAAGC,MAAwB,CAAC;AACvC,CAAA,IAAI,CAAC,IAAI,GAAGG,IAAsB,CAAC;AACnC;AACA;CACA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;CAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,CAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA;;;ACLtC,SAAS,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AACnD,CAAC,OAAO,MAAM,GAAG;AACjB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,OAAO,EAAE,EAAE;AACb,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,IAAI,EAAE;AACjC,GAAG,OAAO,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC5F,GAAG;AACH,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;AAC/C,CAAC;AAwBD;AACA,SAAS,eAAe,IAAI;AAC5B,CAAC,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC5F,CAAC;AACD;AACA,IAAI,kBAAkB,GAAG,MAAM,CAAC;AAChC;AACA,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AAC1B,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;AAC/C,CAAC;AACD;AACA,MAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;AACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAE9D;AACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,EAAE,CAAC;AACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACvC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE;AACrB,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC1C,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;AAC5B,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC1C,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,GAAG,MAAM;AACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AACxB,MAAM,IAAI,EAAE;AACZ,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACzB;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB;AACA,SAAS,KAAK,CAAC,IAAI,EAAE;AACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,SAAS,KAAK,CAAC,GAAG,EAAE;AACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;AACA,KAAK,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACzC,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF,CAAC,CAAC,CAAC;AACH;AACA,IAAI,SAAS,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAEhE;AACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;AACA;AACA;AACA;AACA,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC;AAClC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAChC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC5B,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC5B,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC9B;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtB;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,CAAC;AACV,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;AACnB,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AAC5B;AACA,QAAQ,CAAC,GAAG,GAAG,CAAC;AAChB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,KAAK,MAAM;AACX,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,KAAK;AACL;AACA,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;AACA;AACA,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;AACxB,EAAE,IAAI,GAAG,GAAG;AACZ,IAAI,EAAE;AACN,IAAI,EAAE;AACN,GAAG,CAAC;AACJ;AACA,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AAClB,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC/C;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACrC,IAAI,IAAI,GAAG,KAAK,CAAC;AACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,GAAG,KAAK,CAAC;AACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;AACf,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE;AACzB,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,KAAK,MAAM;AACX,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;AAClB;AACA,QAAQ,EAAE,GAAG,GAAG,CAAC;AACjB,KAAK;AACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB;AACA,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE;AACzB,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,KAAK,MAAM;AACX,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7C,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;AAClB;AACA,QAAQ,EAAE,GAAG,GAAG,CAAC;AACjB,KAAK;AACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB;AACA;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;AACzB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;AACzB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjB,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;AACA,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7C,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AACvB,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,cAAc,GAAG;AAClD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;AAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,GAAG,CAAC;AACJ,CAAC;AACD,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;AACtC;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,EAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;AAChE,IAAI,KAAK,CAAC;AACV,CAAC;AACD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,EAAE,OAAO,IAAIC,IAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;AAC5B,CAAC,CAAC,CAAC;AAGH;AACA;AACA;AACA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AAC/B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9B;AACA;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAGA,IAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAGA,IAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC;AACA;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D;AACA;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpD;AACA;AACA,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,GAAG;AACH,CAAC;AACD,IAAI,IAAI,GAAG,SAAS,CAAC;AACrB;AACA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,GAAG;AAC7C,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;AACnD,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/D,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC1B,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAChC;AACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,EAAE,CAAC,IAAI,CAAC,CAAC;AACT;AACA;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;AACjD,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAClD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,MAAM,IAAI,IAAI,KAAK,CAAC;AACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,WAAW,IAAI,IAAI,KAAK,CAAC,CAAC;AAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACvD,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;AACA;AACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;AACpB,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7B;AACA;AACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC/C,MAAM,CAAC,EAAE,CAAC;AACV,IAAI,IAAI,CAAC,IAAI,CAAC;AACd,MAAM,CAAC,EAAE,CAAC;AACV,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB;AACA,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,MAAM,MAAM;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7B;AACA,MAAM,IAAI,CAAC,GAAG,CAAC;AACf,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACrD,KAAK,MAAM;AACX;AACA,MAAM,IAAI,CAAC,GAAG,CAAC;AACf,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAChD,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAC/C,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI;AAC3D,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,GAAG;AACL,EAAE,cAAc,EAAE;AAClB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB;AACA;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;AACd,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B,GAAG;AACH;AACA;AACA,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAChD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,MAAM,SAAS;AACf,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG;AACf,MAAM,MAAM,CAAC,CAAC,CAAC;AACf,MAAM,IAAI;AACV,MAAM,IAAI;AACV,MAAM,MAAM,CAAC,CAAC,CAAC;AACf,KAAK,CAAC;AACN;AACA;AACA,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1D,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/C,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,MAAM,CAAC,CAAC;AACR,MAAM,CAAC,CAAC;AACR,MAAM,CAAC,CAAC;AACR,MAAM,CAAC,CAAC;AACR,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,CAAC;AACP,KAAK,CAAC;AACN;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACpB,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB,EAAE,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACnB,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;AACtB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,UAAU,IAAI,GAAG,KAAK,CAAC;AACvB,OAAO;AACP,MAAM,IAAI,CAAC,IAAI;AACf,QAAQ,MAAM;AACd,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,CAAC,EAAE,CAAC;AACV,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC;AACd,MAAM,CAAC,EAAE,CAAC;AACV,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,MAAM,MAAM;AACZ;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAErB,MAAM,IAAI,CAAC,KAAK,CAAC;AACjB,QAAQ,SAAS;AACjB,WAAW,IAAI,CAAC,GAAG,CAAC;AACpB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,WAAW,IAAI,CAAC,GAAG,CAAC;AACpB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC;AACA,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;AAC7B,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B;AACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,KAAK;AACL,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AAC1B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB;AACA,EAAE,IAAI,cAAc;AACpB,IAAI,OAAO,GAAG,CAAC;AACf;AACA,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC,CAAC;AACF;AACA,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;AAChC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B,CAAC;AACD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC;AACA,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,YAAY;AAChD,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;AACnD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE;AACnE,EAAE,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAChC;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;AAClE,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;AACpC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;AACzB,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;AAC9B,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD;AACA,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;AACjD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzC;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;AACpD,cAAc,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE;AACxC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACvE,GAAG;AACH,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,GAAG,EAAE;AACtE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,OAAO,EAAE;AACxD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AACtC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,OAAO;AACb,IAAI,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D;AACA,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AAC3D,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5D,EAAE,IAAI,IAAI,CAAC,WAAW;AACtB,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,EAAE,IAAI,WAAW,GAAG;AACpB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,GAAG,EAAE,IAAI;AACb,IAAI,IAAI,EAAE,IAAI;AACd,GAAG,CAAC;AACJ,EAAE,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnD,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrC,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE;AAC1D,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACvB,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,CAAC,OAAO;AACd,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AACpE,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO;AAClD,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACpC;AACA,EAAE,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC;AACzB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC;AACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE;AACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;AACjC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AACtB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,OAAO;AACnB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;AAChE,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG;AAC9C,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAChC;AACA,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;AACrB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC3B,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,MAAM,EAAE,GAAG;AACf,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;AACnD,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,EAAE;AAC5C,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAChB,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF;AACA,IAAI,gBAAgB,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE;AAC9D,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AACzC;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC9B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC1D,QAAQ,WAAW,EAAE;AACrB,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,UAAU,EAAE,KAAK;AAC3B,UAAU,QAAQ,EAAE,IAAI;AACxB,UAAU,YAAY,EAAE,IAAI;AAC5B,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,MAAM;AACP;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;AACtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC9B,MAAM,IAAI,QAAQ,GAAG,YAAY,EAAE,CAAC;AACpC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC/C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;AACtC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;AACxC,KAAK;AACL,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,CAAC,CAAC;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC;AACA,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1B,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AACD,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACnC,IAAI,OAAO,GAAG,UAAU,CAAC;AACzB;AACA,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,IAAI,EAAE;AACxE;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,IAAI,OAAO;AACX;AACA;AACA,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjB,IAAI,IAAI,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD,GAAG,MAAM;AACT,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,IAAI,MAAM,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrC,GAAG,MAAM;AACT;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE;AACzC,MAAM,OAAO;AACb,QAAQ,CAAC,EAAE,IAAIA,IAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5B,QAAQ,CAAC,EAAE,IAAIA,IAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5B,OAAO,CAAC;AACR,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACvC,GAAG;AACH;AACA,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,KAAK,EAAE,KAAK;AAChB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;AACjE;AACA;AACA;AACA,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAGA,IAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,EAAE,IAAI,IAAI,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAC5C,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA,EAAE,IAAI,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpB,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,MAAM,EAAE;AACpE;AACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;AACjB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACzB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB;AACA;AACA,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT;AACA,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT;AACA,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AACvB,MAAM,EAAE,GAAG,EAAE,CAAC;AACd,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACnB,MAAM,EAAE,GAAG,CAAC,CAAC;AACb,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;AAChC,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,KAAK,GAAG,CAAC,CAAC;AACd;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,GAAG;AACH,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AACf,EAAE,EAAE,GAAG,CAAC,CAAC;AACT;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,GAAG;AACH;AACA;AACA,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;AACnB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAClB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAClB,GAAG;AACH,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;AACnB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAClB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAClB,GAAG;AACH;AACA,EAAE,OAAO;AACT,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AACpB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AACpB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE;AACzD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB;AACA;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5B,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5B,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE;AAC9D,EAAE,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;AACZ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACvB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrC;AACA;AACA;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAClC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK;AACpC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACnB;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzD,EAAE,IAAI,KAAK,CAAC,GAAG;AACf,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,eAAe;AACpC,IAAI,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;AAC7D,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChC;AACA,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;AAC/B,UAAU,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;AAC/B,UAAU,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1B,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,SAAS;AACT;AACA,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC3B,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;AACtC,OAAO;AACP,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7E;AACA;AACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACtC,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1B,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC1B,OAAO;AACP,MAAM,OAAO,GAAG,CAAC;AACjB,KAAK,CAAC;AACN;AACA,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AACnC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AAChC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACpB,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B;AACA,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACrB,GAAG;AACH,CAAC;AACD,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC;AACA,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AACzD,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE;AACtE,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;AACtB,IAAI,OAAO;AACX;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7B,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI;AACrB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,IAAI,IAAI,OAAO,GAAG,SAAS,CAAC,EAAE;AAC9B,MAAM,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,CAAC,WAAW,GAAG;AACvB,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;AACtB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3C,OAAO;AACP,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;AAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;AAC9B,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/C,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;AAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACvB,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC9B;AACA,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI;AAC/C,IAAI,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI;AACzC,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI;AACzC,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;AACjC,MAAM,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG;AACnC,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,GAAG,EAAE,CAAC;AACN,CAAC,CAAC;AACF;AACA,KAAK,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;AACpD,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1B,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACb,IAAI,OAAO,GAAG,CAAC;AACf;AACA,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE;AAC1B,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,GAAG,CAAC,WAAW,GAAG;AACpB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;AAC5B,MAAM,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;AAC5B,MAAM,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;AACpB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AACtB,MAAM,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3D,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;AAC7C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,qBAAqB,CAAC;AACjC,EAAE,OAAO,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AACtD,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;AACnD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;AACtC;AACA,EAAE,IAAI,IAAI,CAAC,GAAG;AACd,IAAI,OAAO,CAAC,CAAC;AACb;AACA;AACA,EAAE,IAAI,CAAC,CAAC,GAAG;AACX,IAAI,OAAO,IAAI,CAAC;AAChB;AACA;AACA,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB;AACA;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;AACA;AACA,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;AACrC,EAAE,IAAI,IAAI,CAAC,GAAG;AACd,IAAI,OAAO,IAAI,CAAC;AAChB;AACA;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC5B,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;AACvC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;AACvC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;AACtC,EAAE,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC;AAChB,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;AAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACrD,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;AACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACvD,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC1B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;AACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D;AACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE;AACpC,EAAE,OAAO,IAAI,KAAK,CAAC;AACnB,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;AAC3B,cAAc,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,WAAW,EAAE;AAChD,EAAE,IAAI,IAAI,CAAC,GAAG;AACd,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACtD,EAAE,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;AACvC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AAC/B,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,EAAE;AAC7B,MAAM,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACrB,KAAK,CAAC;AACN,IAAI,GAAG,CAAC,WAAW,GAAG;AACtB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;AACtB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;AACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1C,OAAO;AACP,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;AAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;AAC9B,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9C,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;AACrC,EAAE,IAAI,IAAI,CAAC,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9D,EAAE,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF;AACA,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AAC9C,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,CAAC;AACD,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC;AACA,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvD,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;AACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;AACtC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;AACvC;AACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,CAAC,CAAC;AACb;AACA;AACA,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC;AAChB;AACA;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACzB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD;AACA,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,GAAG;AACH;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE;AACjD;AACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACnB;AACA;AACA,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC;AAChB;AACA;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD;AACA,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,GAAG;AACH;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACtB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE;AAC3C,EAAE,IAAI,GAAG,KAAK,CAAC;AACf,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC7C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAClB,IAAI,OAAO,CAAC,CAAC;AACb,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;AACA;AACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AAC1B,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE;AACA,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;AACnB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;AACA,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,IAAI,GAAG,GAAG,GAAG,CAAC;AACd,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;AACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;AACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AAC5B,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B;AACA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;AAChD,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7B;AACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrB;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C;AACA;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC;AACA;AACA,IAAI,EAAE,GAAG,CAAC,CAAC;AACX;AACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,MAAM;AACT;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrB;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvB;AACA;AACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxB;AACA;AACA,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC;AACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7C;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxB,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,GAAG;AAClD,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT,EAAE,IAAI,EAAE,CAAC;AACT;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7B;AACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrB;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C;AACA,IAAI,EAAE,GAAG,CAAC,CAAC;AACX;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,MAAM;AACT;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAChC;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAChC;AACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAClE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC;AACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtE;AACA,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AACjC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1D,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;AACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB;AACA;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACxB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1B;AACA,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC1B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;AACxC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACzB;AACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpC;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/D,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACpB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACtB;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB;AACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3C,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtB;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7D;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;AAC9C,EAAE,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvB;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE;AACrC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;AACzB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5B;AACA,EAAE,IAAI,IAAI,KAAK,CAAC;AAChB,IAAI,OAAO,IAAI,CAAC;AAChB;AACA;AACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACzB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D,IAAI,OAAO,KAAK,CAAC;AACjB;AACA;AACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE;AAC7C,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9C,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1B,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACrB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrC,EAAE,SAAS;AACX,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,MAAM,OAAO,KAAK,CAAC;AACnB;AACA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,GAAG;AACH,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;AAC9C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,sBAAsB,CAAC;AAClC,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AAClD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;AACrC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5C,CAAC,CAAC;AACF;AACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;AACpD;AACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAE9D;AACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;AACA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;AACtB,KAAK,CAAC,IAAI,qCAAqC,IAAI,CAAC,CAAC;AACrD,KAAK,CAAC,OAAO,wCAAwC,IAAI,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AACH;AACA,IAAI,QAAQ,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAE/D;AACA,IAAI,MAAM,GAAG,OAAO,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;AACA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;AAC9B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;AACrC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9C;AACA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B;AACA,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,yBAAyB,CAAC,CAAC;AACrE,CAAC;AACD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC;AACA,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE;AACpC,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACtC,IAAI,YAAY,EAAE,IAAI;AACtB,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,GAAG,EAAE,WAAW;AACpB,MAAM,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3C,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AAC1C,QAAQ,YAAY,EAAE,IAAI;AAC1B,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,WAAW,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,CAAC,EAAE,uDAAuD;AAC5D,EAAE,CAAC,EAAE,uDAAuD;AAC5D,EAAE,CAAC,EAAE,uDAAuD;AAC5D,EAAE,CAAC,EAAE,uDAAuD;AAC5D,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,uDAAuD;AAC3D,IAAI,uDAAuD;AAC3D,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,WAAW,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,CAAC,EAAE,gEAAgE;AACrE,EAAE,CAAC,EAAE,gEAAgE;AACrE,EAAE,CAAC,EAAE,gEAAgE;AACrE,EAAE,CAAC,EAAE,gEAAgE;AACrE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,gEAAgE;AACpE,IAAI,gEAAgE;AACpE,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,WAAW,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,CAAC,EAAE,yEAAyE;AAC9E,EAAE,CAAC,EAAE,yEAAyE;AAC9E,EAAE,CAAC,EAAE,yEAAyE;AAC9E,EAAE,CAAC,EAAE,yEAAyE;AAC9E,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,yEAAyE;AAC7E,IAAI,yEAAyE;AAC7E,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,WAAW,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,CAAC,EAAE,iEAAiE;AACtE,KAAK,8CAA8C;AACnD,EAAE,CAAC,EAAE,iEAAiE;AACtE,KAAK,8CAA8C;AACnD,EAAE,CAAC,EAAE,iEAAiE;AACtE,KAAK,8CAA8C;AACnD,EAAE,CAAC,EAAE,iEAAiE;AACtE,KAAK,8CAA8C;AACnD,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,0EAA0E;AAC9E,IAAI,qCAAqC;AACzC,IAAI,0EAA0E;AAC9E,IAAI,qCAAqC;AACzC,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,WAAW,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,CAAC,EAAE,wDAAwD;AAC7D,KAAK,wDAAwD;AAC7D,KAAK,8CAA8C;AACnD,EAAE,CAAC,EAAE,wDAAwD;AAC7D,KAAK,wDAAwD;AAC7D,KAAK,8CAA8C;AACnD,EAAE,CAAC,EAAE,wDAAwD;AAC7D,KAAK,wDAAwD;AAC7D,KAAK,8CAA8C;AACnD,EAAE,CAAC,EAAE,wDAAwD;AAC7D,KAAK,wDAAwD;AAC7D,KAAK,8CAA8C;AACnD,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,wDAAwD;AAC5D,IAAI,wDAAwD;AAC5D,IAAI,8CAA8C;AAClD,IAAI,wDAAwD;AAC5D,IAAI,wDAAwD;AAC5D,IAAI,8CAA8C;AAClD,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,WAAW,CAAC,YAAY,EAAE;AAC1B,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,KAAK,EAAE,QAAQ;AACjB,EAAE,CAAC,EAAE,qEAAqE;AAC1E,EAAE,CAAC,EAAE,OAAO;AACZ,EAAE,CAAC,EAAE,GAAG;AACR,EAAE,CAAC,EAAE,qEAAqE;AAC1E,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,GAAG;AACP,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,WAAW,CAAC,SAAS,EAAE;AACvB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,KAAK,EAAE,QAAQ;AACjB,EAAE,CAAC,EAAE,qEAAqE;AAC1E,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,CAAC,EAAE,GAAG;AACR;AACA,EAAE,CAAC,EAAE,qEAAqE;AAC1E,EAAE,CAAC,EAAE,qEAAqE;AAC1E,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,kEAAkE;AACtE;AACA;AACA,IAAI,kEAAkE;AACtE,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,IAAI,GAAG,CAAC;AACR,IAAI;AACJ,EAAE,GAAG,qDAAqD,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACzE,CAAC,CAAC,OAAO,CAAC,EAAE;AACZ,EAAE,GAAG,GAAG,SAAS,CAAC;AAClB,CAAC;AACD;AACA,WAAW,CAAC,WAAW,EAAE;AACzB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,CAAC,EAAE,yEAAyE;AAC9E,EAAE,CAAC,EAAE,GAAG;AACR,EAAE,CAAC,EAAE,GAAG;AACR,EAAE,CAAC,EAAE,yEAAyE;AAC9E,EAAE,CAAC,EAAE,GAAG;AACR,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM;AACnB;AACA;AACA,EAAE,IAAI,EAAE,kEAAkE;AAC1E,EAAE,MAAM,EAAE,kEAAkE;AAC5E,EAAE,KAAK,EAAE;AACT,IAAI;AACJ,MAAM,CAAC,EAAE,kCAAkC;AAC3C,MAAM,CAAC,EAAE,mCAAmC;AAC5C,KAAK;AACL,IAAI;AACJ,MAAM,CAAC,EAAE,mCAAmC;AAC5C,MAAM,CAAC,EAAE,kCAAkC;AAC3C,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,EAAE,KAAK;AACb,EAAE,CAAC,EAAE;AACL,IAAI,kEAAkE;AACtE,IAAI,kEAAkE;AACtE,IAAI,GAAG;AACP,GAAG;AACH,CAAC,CAAC,CAAC;AACH,CAAC,CAAC,CAAC;AAGH;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,EAAE,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC;AACjC,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;AACzC;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACjE;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAChB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAChB;AACA,EAAE,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;AAC9E,EAAE,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;AACxE,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;AACrE,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5D,SAAS,kCAAkC,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AACD,IAAI,QAAQ,GAAG,QAAQ,CAAC;AACxB;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/D,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACrB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;AACxC,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,GAAG;AAC3C,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE;AACnD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,kBAAkB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,kBAAkB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,EAAE,IAAI,IAAI;AACV,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAChD,EAAE,IAAI,CAAC,IAAI;AACX,IAAI,OAAO;AACX;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;AAChC,gBAAgB,MAAM,CAAC,IAAI,CAAC;AAC5B,gBAAgB,MAAM,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAChD,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE;AAC9E;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACtC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,GAAG,GAAG,UAAU,CAAC;AACrB,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjD,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC;AACA,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5D,SAAS,kCAAkC,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;AACzE;AACA,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;AACvE,EAAE,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc;AACxC,IAAI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC1C;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,GAAG,GAAG,GAAG,CAAC;AACd,IAAI,GAAG,GAAG,IAAI,CAAC;AACf,GAAG;AACH;AACA;AACA,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAClD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACjB,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC;AAGF;AACA;AACA;AACA,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE;AAC9B,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACf,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAClB;AACA;AACA,EAAE,IAAI,OAAO,CAAC,IAAI;AAClB,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACvD,EAAE,IAAI,OAAO,CAAC,GAAG;AACjB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AACD,IAAI,GAAG,GAAG,OAAO,CAAC;AAClB;AACA,OAAO,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;AACvD,EAAE,IAAI,GAAG,YAAY,OAAO;AAC5B,IAAI,OAAO,GAAG,CAAC;AACf;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE;AACzB,IAAI,GAAG,EAAE,GAAG;AACZ,IAAI,MAAM,EAAE,GAAG;AACf,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,OAAO,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAC1D,EAAE,IAAI,IAAI,YAAY,OAAO;AAC7B,IAAI,OAAO,IAAI,CAAC;AAChB;AACA,EAAE,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE;AACzB,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,OAAO,EAAE,GAAG;AAChB,GAAG,CAAC,CAAC;AACL,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;AACjD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7B;AACA,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE;AACtB,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;AAC3D,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACrB,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;AAClE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE;AAC5C,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AAC5D;AACA,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACxC,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE;AAC/D;AACA,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,GAAG,GAAG,OAAO,CAAC;AAClB,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,GAAG;AACH;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;AACf,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC;AACA,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC;AACpB;AACA,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,GAAG,EAAE;AACxD,EAAE,IAAI,GAAG,KAAK,KAAK;AACnB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;AACrE,EAAE,IAAI,CAAC,IAAI,GAAG,IAAIA,IAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACrC;AACA;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE;AACnE,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AACtB;AACA;AACA;AACA,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACvC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;AAC7C,eAAe,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AACjD,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC,CAAC;AACF;AACA;AACA,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;AAChD,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;AACtB,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAC3D,GAAG;AACH,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC,CAAC;AACF;AACA;AACA,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AAC1D,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE;AAC3D,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC;AACF;AACA,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;AAC/C,EAAE,OAAO,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACjE,SAAS,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;AAC5D,CAAC,CAAC;AAGF;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC;AACA,SAAS,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE;AACjC,EAAE,IAAI,OAAO,YAAY,SAAS;AAClC,IAAI,OAAO,OAAO,CAAC;AACnB;AACA,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;AACnC,IAAI,OAAO;AACX;AACA,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC;AAC/D,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjC,EAAE,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;AACzC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC/C,CAAC;AACD,IAAI,SAAS,GAAG,SAAS,CAAC;AAC1B;AACA,SAAS,QAAQ,GAAG;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACjB,CAAC;AACD;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE;AAC3B,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/B,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,EAAE;AACzB,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,QAAQ,GAAG,OAAO,GAAG,GAAG,CAAC;AAC/B;AACA;AACA,EAAE,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;AACd,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;AAC3D,IAAI,GAAG,KAAK,CAAC,CAAC;AACd,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACpB,IAAI,GAAG,MAAM,CAAC,CAAC;AACf,GAAG;AACH;AACA;AACA,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;AAChB,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA,SAAS,SAAS,CAAC,GAAG,EAAE;AACxB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACrD,IAAI,CAAC,EAAE,CAAC;AACR,GAAG;AACH,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AACD;AACA,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;AAChE,EAAE,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;AACzB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/B,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE;AACrB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;AACtB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;AAClB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,IAAI,KAAK,KAAK,EAAE;AACtB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;AACrB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK,MAAM;AACX;AACA,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,GAAG;AACH,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;AACrB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,KAAK,MAAM;AACX;AACA,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE;AACnC,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE;AAClB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,IAAI,OAAO;AACX,GAAG;AACH,EAAE,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACpD,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAC1B,EAAE,OAAO,EAAE,MAAM,EAAE;AACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AACD;AACA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,GAAG,EAAE;AAChD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC3B;AACA;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACjB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB;AACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACjB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB;AACA,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB;AACA,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;AAClC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,GAAG;AACH,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;AACrB,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;AACrB,EAAE,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACxC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7B,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC,CAAC;AAGF;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,sCAAsC,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;AAChC;AACA;AACA;AACA;AACA,SAAS,EAAE,CAAC,OAAO,EAAE;AACrB,EAAE,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC;AAC3B,IAAI,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;AAC3B;AACA;AACA,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC;AAClC;AACA,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,GAAG;AACH;AACA;AACA,EAAE,IAAI,OAAO,YAAY,QAAQ,CAAC,WAAW;AAC7C,IAAI,OAAO,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACxB;AACA;AACA,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,CAAC;AACD,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;AACA,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,OAAO,EAAE;AACjD,EAAE,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AACjE,EAAE,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE;AAC9D,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,OAAO;AACd,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;AACA;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC;AAC1B,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI;AACnB,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI;AACtB,IAAI,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM;AACtC,IAAI,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5D,IAAI,UAAU,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,MAAM;AAC/D,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AAC3B,GAAG,CAAC,CAAC;AACL;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAClC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,SAAS;AACX,IAAI,IAAI,IAAI,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACzB,MAAM,SAAS;AACf;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,GAAG;AACH,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE;AAClE,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACxD,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B;AACA,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AAC1D,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,GAAG,GAAG,CAAC;AAClB,IAAI,GAAG,GAAG,IAAI,CAAC;AACf,GAAG;AACH,EAAE,IAAI,CAAC,OAAO;AACd,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAIA,IAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3C;AACA;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAClC,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD;AACA;AACA,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC;AACA;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC;AAC1B,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI;AACnB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI;AACtB,IAAI,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM;AACtC,GAAG,CAAC,CAAC;AACL;AACA;AACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC;AACA,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;AACrB,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,MAAM,IAAIA,IAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACjD,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,MAAM,SAAS;AACf;AACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE;AACvB,MAAM,SAAS;AACf;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACxB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,MAAM,SAAS;AACf;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,MAAM,SAAS;AACf;AACA,IAAI,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;AAClD,yBAAyB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD;AACA;AACA,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACjD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxB,MAAM,aAAa,IAAI,CAAC,CAAC;AACzB,KAAK;AACL;AACA,IAAI,OAAO,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC;AACvE,GAAG;AACH,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE;AAClE,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAIA,IAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3C,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,EAAE,WAAW,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClD;AACA;AACA,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,IAAI,OAAO,KAAK,CAAC;AACjB;AACA;AACA,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,CAAC;AACR;AACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AACjC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,CAAC,UAAU,EAAE;AACtB,MAAM,OAAO,KAAK,CAAC;AACnB;AACA,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9C,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;AACpB,IAAI,OAAO,KAAK,CAAC;AACjB;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE;AAChE,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAC;AACtE,EAAE,WAAW,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB,EAAE,IAAI,CAAC,GAAG,IAAIA,IAAE,CAAC,GAAG,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACxB;AACA;AACA,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,EAAE,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW;AAChE,IAAI,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC5D;AACA;AACA,EAAE,IAAI,WAAW;AACjB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D;AACA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzC;AACA,EAAE,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA;AACA;AACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,EAAE,CAAC,SAAS,CAAC,mBAAmB,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE;AACpE,EAAE,WAAW,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,WAAW,CAAC,aAAa,KAAK,IAAI;AACxC,IAAI,OAAO,WAAW,CAAC,aAAa,CAAC;AACrC;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACrD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,SAAS;AACf,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,MAAM,OAAO,CAAC,CAAC;AACf,GAAG;AACH,EAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAC1D,CAAC,CAAC;AACF;AACA,IAAI,UAAU,GAAG,oBAAoB,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAEjE;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC;AACvB;AACA,QAAQ,CAAC,OAAO,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC;AACjE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3B,QAAQ,CAAC,IAAI,sCAAsC,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AACnG,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;AACzB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC3B;AACA;AACA,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,QAAQ,CAAC,KAAK,+CAA+C,IAAI,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AACH;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE;;AC16EjB,MAAMlH,SAAO,GAAG,mBAAmB;;ACM1C,MAAM,MAAM,GAAG,IAAI,MAAM,CAACA,SAAO,CAAC,CAAC;AACnC,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,SAAS,QAAQ,GAAG;AACpB,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,MAAM,GAAG,IAAImH,IAAE,CAAC,WAAW,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACM,MAAM,UAAU,CAAC;AACxB,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACnD,QAAQ,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE;AACnD,YAAY,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC7F,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7E,QAAQ,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClF,QAAQ,cAAc,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3F,QAAQ,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACtE,QAAQ,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,QAAQ,OAAO,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE;AACvB,QAAQ,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7E,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE;AACvC,YAAY,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,QAAQ,OAAO,cAAc,CAAC;AAC9B,YAAY,aAAa,EAAE,SAAS,CAAC,aAAa;AAClD,YAAY,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9D,YAAY,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9D,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,mBAAmB,CAAC,QAAQ,EAAE;AAClC,QAAQ,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7E,QAAQ,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAQ,OAAO,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE;AAC/B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAChD,KAAK;AACL,CAAC;AACM,SAAS,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,IAAI,OAAO,IAAI,GAAG,QAAQ,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzG,CAAC;AACM,SAAS,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE;AAClD,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AAC7B,QAAQ,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,OAAO,IAAI,GAAG,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC,SAAS,CAAC;AACpC,KAAK;AACL,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AAClC,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,IAAI,GAAG,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9E,KAAK;AACL,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;AAClC,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,IAAI,GAAG,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC3F;;AChFO,MAAM,OAAO,GAAG,oBAAoB;;ACW5B,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,IAAI,gBAAgB,CAAC;AAC5B,CAAC,UAAU,gBAAgB,EAAE;AAC7B,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAChE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAClE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAClE,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;AA2BzC,SAAS,cAAc,CAAC,GAAG,EAAE;AACpC,IAAI,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC5C,IAAI,OAAO,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AACM,SAAS,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;AAClD,IAAI,OAAO,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACzE;;AC/CA,MAAMC,GAAkB,CAAA,kCAAA,gBAEF,eACpBlJ,CAAAA,CAAAA,CACAmJ,EACAC,CACAC,CAAAA,CAAAA,CACA1G,EACA2G,CACkB,CAAA,CAElB,OAAQF,CAAe,CAAA,CAAA,EACrB,IAAK,QAAA,CACH,OAAO,sBAAuBpJ,CAAAA,CAAAA,CAASmJ,EAAsBC,CAAe,CAAA,CAAC,EAC/E,IAAK,SAAA,CACH,OAAO,MAAM,uBAAA,CACXpJ,EACAmJ,CACAC,CAAAA,CAAAA,CAAe,EACfC,CACA1G,CAAAA,CAAAA,CACA2G,CACF,CAAA,CAEF,QACE,MAAM,IAAI,KACR,CAAA,CAAA,8EAAA,EAAiFF,EAAe,CAClG,CAAA,CAAA,CACJ,CACF,CAEO,SAAS,uBACdpJ,CACAuJ,CAAAA,CAAAA,CACAC,EACS,CAET,OADyBC,eAAehD,aAAY8C,CAAAA,CAAO,EAAGC,CAAS,CAAA,CAC/C,aAAkBxJ,GAAAA,CAAAA,CAAQ,aACpD,gBAEsB,uBACpBA,CAAAA,CAAAA,CACAmJ,EACAK,CACAH,CAAAA,CAAAA,CACA1G,EACA2G,CACA,CAAA,CACA,GAAI,CACF,MAAMI,EAAoB,YACpBC,CAAAA,CAAAA,CAAoB,mEACpBC,CAAoB,CAAA,kEAAA,CACpBC,CAAuBL,CAAAA,CAAAA,CAAU,SAAU,CAAA,CAAC,EAC5CM,CAA2BrD,CAAAA,aAAAA,CAAY0C,CAAoB,CAAE,CAAA,SAAA,CAAU,CAAC,CAExEY,CAAAA,CAAAA,CACJL,EACAI,CACAH,CAAAA,CAAAA,CACAC,EACAC,CACIG,CAAAA,CAAAA,CAAW,MAAM,KACrB,CAAA,CAAA,EAAGV,GAAcJ,GAA4BG,CAAAA,UAAAA,EAAAA,CAAAA,CAAAA,WAAAA,EAAqB1G,IAClE,CACE,MAAA,CAAQ,OACR,IAAM,CAAA,IAAA,CAAK,UAAU,CACnB,EAAA,CAAIsH,GACJ,CAAA,OAAA,CAAS,MACT,MAAQ,CAAA,UAAA,CACR,OAAQ,CAAC,CAAE,GAAIjK,CAAS,CAAA,IAAA,CAAA+J,CAAK,CAAG,CAAA,QAAQ,CAC1C,CAAC,CACH,CACF,EACM,CAAE,MAAA,CAAAnF,CAAO,CAAI,CAAA,MAAMoF,EAAS,IAAK,EAAA,CACvC,OAAKpF,CAGkBA,CAAAA,CAAAA,CAAO,MAAM,CAAG8E,CAAAA,CAAAA,CAAkB,MAAM,CACzC,CAAA,WAAA,KAAkBA,CAAkB,CAAA,WAAA,GAJtC,CAKtB,CAAA,CAAA,MAAS7E,EAAP,CAEA,OAAA,OAAA,CAAQ,MAAM,2BAA6BA,CAAAA,CAAK,EACzC,CACT,CAAA,CACF,CAEA,SAASoF,CAAAA,EAAoB,CAC3B,OAAO,IAAA,CAAK,KAAQ,CAAA,IAAA,CAAK,MAAM,IAAK,CAAA,MAAA,EAAW,CAAA,GAAI,CACrD;;mcCxFA,MAAMC,CAAAA,CAAY,UACX,CAAA,MAAM,sBAAyBC,CAC7BA,EAAAA,CAAAA,EAAA,YAAAA,CAAK,CAAA,KAAA,CAAM,KAGP,aAAiBA,CAAAA,CAAAA,EAAgB,CAC5C,MAAMC,CAAWD,CAAAA,CAAAA,EAAO,sBAAsBA,CAAG,CAAA,CACjD,GAAIC,CACF,CAAA,OAAOD,EAAI,QAASD,CAAAA,CAAS,CAAIE,CAAAA,CAAAA,CAAS,CAAC,CAAA,CAAIA,EAAS,CAAC,CAG7D,EAEa,uBAA2BD,CAAAA,CAAAA,EAAgB,CACtD,MAAMC,CAAAA,CAAWD,CAAO,EAAA,qBAAA,CAAsBA,CAAG,CAAA,CACjD,GAAIC,CACF,CAAA,OAAOA,EAAS,CAAC,CAAA,CAAI,IAAMA,CAAS,CAAA,CAAC,CAGzC,CAAA,CAEa,aAAiBD,CAAAA,CAAAA,EAAgB,CAC5C,MAAMC,CAAAA,CAAWD,GAAO,qBAAsBA,CAAAA,CAAG,EACjD,GAAIC,CAAAA,CACF,OAAOA,CAAAA,CAAS,GAAI,EAGxB,EAEsB,eAAA,mBAAA,CAAoBtK,EAAwD,CAChG,KAAM,CAAE,KAAAuK,CAAAA,CAAAA,CAAO,SAAA1H,CAAAA,CAAU,CAAI7C,CAAAA,CAAAA,CACvB,CAAE,CAAG0J,CAAAA,CAAAA,CAAW,EAAGc,CAAQ,CAAA,CAAID,EAC/BE,CAAgB,CAAA,aAAA,CAAcD,CAASA,CAAAA,CAAAA,CAAQ,GAAG,CAAA,CAClDE,EAAgB,aAAcF,CAAAA,CAAAA,CAAQ,GAAG,CAS/C,CAAA,OARgB,MAAMG,eACpBD,CAAAA,CAAAA,CACAD,CACAf,CAAAA,CAAAA,CACA,aAAcc,CAAAA,CAAAA,CAAQ,GAAG,CACzB3H,CAAAA,CACF,CAGF,CAEO,MAAM,cAAgB,CAAC0H,CAAAA,CAAsCF,CAAgB,GAAA,CAClF,MAAMO,CAAAA,CAAS,GAAGL,CAAM,CAAA,MAAA,CAAA,iDAAA,CAAA,CAClBG,EAAgB,aAAcL,CAAAA,CAAG,EAEvC,GAAI,CAACE,CAAM,CAAA,GAAA,EAAO,CAACA,CAAAA,CAAM,IACvB,MAAM,IAAI,MAAM,4DAA4D,CAAA,CAG9E,IAAIM,CAAYN,CAAAA,CAAAA,CAAM,SAAa,EAAA,KAAA,CAAA,CACnC,MAAMO,CAAAA,CAAM,QAAQP,CAAM,CAAA,GAAA,EAAOA,EAAM,GACjCvI,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,YAAYuI,CAAM,CAAA,OAAA,CAAA,CAAA,CAC5BhB,CAAU,CAAA,CAAA,UAAA,EAAa,aAAcc,CAAAA,CAAG,IACxCU,CAAQ,CAAA,CAAA,OAAA,EAAUR,EAAM,KACxBS,CAAAA,CAAAA,CAAAA,CAAAA,CAAW,cAAcT,CAAM,CAAA,GAAA,CAAA,CAAA,CAC/BU,CAAiBV,CAAAA,CAAAA,CAAM,GAAM,CAAA,CAAA,iBAAA,EAAoBA,EAAM,GAAQ,CAAA,CAAA,CAAA,KAAA,CAAA,CAC/DW,EAAYX,CAAM,CAAA,GAAA,CAAM,eAAeA,CAAM,CAAA,GAAA,CAAA,CAAA,CAAQ,KACrDY,CAAAA,CAAAA,CAAAA,CAAYZ,CAAM,CAAA,SAAA,CAAY,eAAeA,CAAM,CAAA,SAAA,CAAA,CAAA,CAAc,OACjEa,CAAYb,CAAAA,CAAAA,CAAM,UACpB,CAAaA,UAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,GAAA,CAAKc,CAAa,EAAA,CAAA;AAAA,EAAOA,EAAAA,CAAAA,CAAAA,CAAU,EAAE,IAAK,CAAA,EAAE,IACzE,KACEC,CAAAA,CAAAA,CAAAA,CAAQ,sBAAsBf,CAAM,CAAA,SAAS,EACnD,GAAIe,CAAAA,CAAO,CACT,MAAMC,CAAAA,CAAU,YAAYD,CAAK,CAAA,CACjCT,CAAY,CAAA,wBAAA,CAAyBA,CAAWU,CAAAA,CAAO,GAsBzD,OAnBgB,CACdX,EACAF,CACA,CAAA,EAAA,CACAG,EACA,EACAC,CAAAA,CAAAA,CACA9I,EACAuH,CACAwB,CAAAA,CAAAA,CACAC,EACAC,CACAC,CAAAA,CAAAA,CACAC,EACAC,CACF,CAAA,CACG,OAAQI,CAA6BA,EAAAA,CAAAA,EAAQ,IAAI,CAAA,CACjD,IAAK,CAAA,CAAA;AAAA,CAAI,CAGd,EAEgB,SAAA,eAAA,CACdC,EACA/B,CACAW,CAAAA,CAAAA,CACA,CACA,OAAKA,CAAI,CAAA,QAAA,CAAS,UAAU,CAAA,GAC1BA,EAAM,CAAWA,QAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAGiB,CAClC,CAAA,CAAG,CACD,CAAA,CAAG,SACL,CAAA,CACA,EAAG,CACD,GAAA,CAAAA,CACA,CAAA,MAAA,CAAQoB,CAAe,CAAA,MAAA,CACvB,GAAKA,CAAAA,CAAAA,CAAe,IACpB,OAASA,CAAAA,CAAAA,CAAe,OACxB,CAAA,KAAA,CAAOA,CAAe,CAAA,KAAA,CACtB,GAAKA,CAAAA,CAAAA,CAAe,IACpB,SAAWA,CAAAA,CAAAA,CAAe,SAC1B,CAAA,SAAA,CAAWA,CAAe,CAAA,SAAA,CAC1B,SAAWA,CAAAA,CAAAA,CAAe,UAC1B,GAAKA,CAAAA,CAAAA,CAAe,GACpB,CAAA,GAAA,CAAKA,CAAe,CAAA,GACtB,CACA,CAAA,CAAA,CAAG/B,CACL,CAEF,CAMgB,SAAA,mBAAA,CAAoB1J,CAA4D,CAAA,CAnIhG,IAAAuB,CAAAA,CAoIE,KAAM,CAAE,WAAA,CAAAmK,CAAa,CAAA,MAAA,CAAA7K,CAAQ,CAAA,OAAA,CAAA8K,CAAQ,CAAA,CAAI3L,EACnC6K,CAAYa,CAAAA,CAAAA,CAAY,SAAa,EAAA,EAAA,CAE3C,GAAI,EAAC7K,CAAA,EAAA,IAAA,EAAAA,EAAQ,MAAQ,CAAA,CAAA,OAAO6K,CAE5B,CAAA,MAAME,CAAYF,CAAAA,CAAAA,CAAY,MAGxBG,CAAAA,CAAAA,CAAkBC,wBAAgCF,CAFtC/K,CAAAA,CAE0D,CAC5E,CAAA,GAAI,EAACgL,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAiB,QACpB,MAAM,IAAI,KAAM,CAAA,qBAAqB,CAGvC,CAAA,MAAME,CAAkB,CAAA,4BAAA,CAA6BL,EAAY,SAAS,CAAA,CAC1E,GAAI,CAACK,CAAiB,CAAA,OAAOL,CAE7B,CAAA,YAAA,CAAaK,CAAe,CAC5B,CAAA,MAAMV,CAAW,CAAA,gBAAA,CAAiBU,CAAiB,CAAA,QAAQ,CAC3D,CAAA,IAAIC,GAAmBN,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAa,CAAA,SAAA,GAAa,EAEjD,CAAA,GAAIL,CAAA,EAAA,IAAA,EAAAA,EAAU,MAAQ,CAAA,CACpB,MAAMY,CAAAA,CAAU,eAAgBZ,CAAAA,CAAQ,CAClCa,CAAAA,CAAAA,CAAmBJ,wBAAgCG,CAASN,CAAAA,CAAO,CACzE,CAAA,GAAI,EAACO,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAkB,QACrB,MAAM,IAAI,KACR,CAAA,CAAA,+CAAA,EAAkD,IAAK,CAAA,SAAA,CACrDD,CACF,CAAA,CAAA,aAAA,EAAiB,KAAK,SAAUN,CAAAA,CAAO,CACzC,CAAA,CAAA,CAAA,CAEF,MAAMQ,CAAAA,CAAmB,sBAAuB,CAAA,SAAA,CAAWD,EAA8B,CACvF,MAAA,CAAQL,CACV,CAAC,CACKO,CAAAA,CAAAA,CAAe,kBAAmBL,CAAAA,CAAAA,CAAiB,SAAUI,CAAgB,CAAA,CAEnFH,CAAmBzK,CAAAA,CAAAA,CAAAA,CAAAA,CAAAmK,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAa,CAAA,SAAA,GAAb,YAAAnK,CAAwB,CAAA,KAAA,CAAM,CAAG,CAAA,CAAA,CAAA,CAAA,GAAO,EAAC,CAC5DyK,CAAiB,CAAA,IAAA,CAAK,YAAYI,CAAY,CAAC,EAGjD,CAAA,OAAOC,IAAAxK,GAAA,CAAA,EAAA,CACF6J,CADE,CAAA,CAAA,CAEL,UAAW,mBAAoBb,CAAAA,CAAAA,CAAW,qBAAsBmB,CAAAA,CAAgB,CAAC,CAAA,CACjF,MAAQH,CAAAA,CAAAA,CACR,UAAWH,CAAA,EAAA,IAAA,EAAAA,CAAa,CAAA,SAAA,EAAaM,CAAiB,CAAA,MAAA,CAAS,CAAIA,CAAAA,CAAAA,CAAmB,MACxF,CACF,CAAA,CAEgB,SAAA,4BAAA,CAA6BZ,CAAsB,CAAA,CACjE,MAAMC,CAAAA,CAAW,sBAAsBD,CAAS,CAAA,CAChD,GAAKC,CAAAA,EACA,OAAQA,CAAAA,CAAQ,CACrB,CAAA,OAAO,YAAYA,CAAQ,CAC7B,CAEO,SAAS,gBAAiBC,CAAAA,CAAAA,CAAYD,CAAkB,CAAA,CA1L/D,IAAA9J,CA2LE,CAAA,OAAA,CAAOA,CAAA+J,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAO,GAAP,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA/J,EAAY,cAAe8J,CAAAA,CAAAA,CACpC,CAEO,SAAS,gBAAiBC,CAAAA,CAAAA,CAAYD,CAAyB,CAAA,CA9LtE,IAAA9J,CAAA+K,CAAAA,CAAAA,CA+LE,OAAO/K,CAAAA,CAAAA,CAAA+J,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAO,GAAP,GAAA,IAAA,EAAA/J,EAAa8J,CAAY,CAAA,CAAA,MAAA,CAAO,IAAKiB,CAAAA,CAAAA,CAAAA,CAAAhB,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAO,CAAA,GAAA,GAAP,YAAAgB,CAAajB,CAAAA,CAAAA,CAAS,CAAI,CAAA,EACxE,CAEgB,SAAA,6BAAA,CAA8BY,EAAgB,CAC5D,OAAA,CAAOA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAS,CAAA,GAAA,CAAKM,CAAW,EAAA,MAAA,CAAO,KAAKA,CAAM,CAAA,CAAA,GAAM,EAC1D,CAEO,SAAS,eAAgBC,CAAAA,CAAAA,CAAkB,CAChD,OAAOA,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAW,GAAKC,CAAAA,CAAAA,EAAS,CAvMlC,IAAAlL,EAuMqC,OAAAA,CAAAA,CAAAA,CAAAkL,CAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,GAAjB,IAAAlL,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAqB,OAAO,EACjE,CAEO,SAAS,YAAamL,CAAAA,CAAAA,CAAwB,CACnD,OAAO,OAAO,IAAK,CAAA,IAAA,CAAK,SAAUA,CAAAA,CAAK,CAAC,CAAA,CAAE,QAAS,CAAA,QAAQ,CAC7D,CAEO,SAAS,YAAaC,CAAAA,CAAAA,CAA+B,CAC1D,OAAO,IAAK,CAAA,KAAA,CAAM,OAAO,IAAKA,CAAAA,CAAAA,CAAe,QAAQ,CAAA,CAAE,QAAS,CAAA,OAAO,CAAC,CAC1E,CAEgB,SAAA,YAAA,CAAarB,CAAY,CAAA,CACvC,GAAI,CAACA,CAAO,CAAA,MAAM,IAAI,KAAM,CAAA,uCAAuC,CACnE,CAAA,GAAI,CAACA,CAAAA,CAAM,GAAK,CAAA,MAAM,IAAI,KAAM,CAAA,yBAAyB,CACzD,CAAA,MAAMF,CAAY,CAAA,MAAA,CAAO,IAAKE,CAAAA,CAAAA,CAAM,GAAG,CACvC,CAAA,GAAI,EAACF,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAW,MAAQ,CAAA,CAAA,MAAM,IAAI,KAAM,CAAA,sCAAsC,CAC9EA,CAAAA,CAAAA,CAAU,OAASC,CAAAA,CAAAA,EAAa,CAC9B,MAAMuB,EAAoBtB,CAAM,CAAA,GAAA,CAAID,CAAQ,CAAA,CAC5C,GAAI,KAAM,CAAA,OAAA,CAAQuB,CAAiB,CAAA,CACjC,MAAM,IAAI,KAAA,CAAM,CAA+BvB,4BAAAA,EAAAA,CAAAA,CAAAA,CAAU,CAC3D,CAAA,GAAI,OAAOuB,CAAAA,EAAsB,SAC/B,MAAM,IAAI,KAAM,CAAA,CAAA,4BAAA,EAA+BvB,CAAU,CAAA,CAAA,CAAA,CAC3D,GAAI,CAAC,OAAO,IAAKuB,CAAAA,CAAiB,CAAE,CAAA,MAAA,CAClC,MAAM,IAAI,KAAM,CAAA,CAAA,0BAAA,EAA6BvB,GAAU,CAEzD,CAAA,MAAA,CAAO,IAAKuB,CAAAA,CAAiB,CAAE,CAAA,OAAA,CAASH,CAAY,EAAA,CAClD,MAAMI,CAASD,CAAAA,CAAAA,CAAkBH,CAAO,CAAA,CACxC,GAAI,CAAC,KAAM,CAAA,OAAA,CAAQI,CAAM,CACvB,CAAA,MAAM,IAAI,KAAA,CAAM,CAAkBJ,eAAAA,EAAAA,CAAAA,CAAAA,qCAAAA,EAA+CI,CAAQ,CAAA,CAAA,CAAA,CAC3F,GAAI,CAACA,CAAAA,CAAO,MACV,CAAA,MAAM,IAAI,KAAA,CAAM,CAAYJ,SAAAA,EAAAA,CAAAA,CAAAA,8CAAAA,CAAuD,EACrFI,CAAO,CAAA,OAAA,CAASC,CAAU,EAAA,CACxB,GAAI,OAAOA,CAAAA,EAAU,QACnB,CAAA,MAAM,IAAI,KACR,CAAA,CAAA,gBAAA,EAAmBL,CAAgDK,CAAAA,sCAAAA,EAAAA,CAAAA,CAAAA,CACrE,CACJ,CAAC,EACH,CAAC,EACH,CAAC,EACH,CAEO,SAAS,WAAYzB,CAAAA,CAAAA,CAAkBoB,CAAiBR,CAAAA,CAAAA,CAAmBY,EAAS,EAAC,CAAG,CAC7F,OAAAZ,CAAA,EAAA,IAAA,EAAAA,CAAS,CAAA,IAAA,CAAK,CAACzI,CAAGC,CAAAA,CAAAA,GAAMD,CAAE,CAAA,aAAA,CAAcC,CAAC,CAAA,CAAA,CAClC,CACL,GAAA,CAAK,CAAE,CAAC4H,CAAQ,EAAG,sBAAA,CAAuBoB,CAASR,CAAAA,CAAAA,CAASY,CAAM,CAAE,CACtE,CACF,CAOgB,SAAA,kBAAA,CAAmBvB,CAAkBD,CAAAA,CAAAA,CAAkBY,CAAoB,CAAA,CA5P3F,IAAA1K,CA6PE,CAAA,OAAA+J,CAAM,CAAA,GAAA,CAAID,CAAQ,CAAA,CAAIxJ,GAAA,CAAA,EAAA,CACjBoK,KAEQ1K,CAAA,CAAA,MAAA,CAAO,IAAK+J,CAAAA,CAAAA,CAAM,GAAG,CAArB,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA/J,CAAwB,CAAA,IAAA,CAAK,CAACiC,CAAGC,CAAAA,CAAAA,GAAMD,CAAE,CAAA,aAAA,CAAcC,CAAC,CAAA,CAAA,EACjD,MAClB,CAAA,CAACL,EAAKzC,CACJyC,IAAAA,CAAAA,CAAI,GAAIzC,CAAAA,CAAG,CAAI2K,CAAAA,CAAAA,CAAM,GAAI3K,CAAAA,CAAG,EACrByC,CAET,CAAA,CAAA,CAAE,GAAK,CAAA,EAAG,CACZ,CAEF,UAEgB,sBAAuBqJ,CAAAA,CAAAA,CAAiBR,CAAmBY,CAAAA,CAAAA,CAAS,EAAC,CAAG,CAEtFZ,CAAAA,CAAUA,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAS,IAAK,CAAA,CAACzI,CAAGC,CAAAA,CAAAA,GAAMD,CAAE,CAAA,aAAA,CAAcC,CAAC,CACnD,CAAA,CAAA,MAAM+I,CAAYP,CAAAA,CAAAA,CAAQ,GAAKM,CAAAA,CAAAA,GACtB,CACL,CAAC,GAAGE,CAAWF,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAQ,EAAG,CAACM,CAAM,CACnC,CACD,CAAA,CAAA,CACD,OAAO,MAAO,CAAA,MAAA,CAAO,EAAC,CAAG,GAAGL,CAAS,CACvC,UAEgB,WAAYlB,CAAAA,CAAAA,CAAY,CACtC,OAAA,YAAA,CAAaA,CAAK,CAAA,CAEX,CAAa,UAAA,EAAA,YAAA,CAAaA,CAAK,CAAE,CAAA,OAAA,CAAQ,IAAM,CAAA,EAAE,CAC1D,CAAA,CAAA,CAEgB,SAAA,WAAA,CAAYA,EAAuB,CAEjD,MAAMC,CAAU,CAAA,YAAA,CAAaD,CAAM,CAAA,OAAA,CAAQ,YAAc,CAAA,EAAE,CAAC,CAC5D,CAAA,OAAA,YAAA,CAAaC,CAAO,CAAA,CACbA,CACT,CAEgB,SAAA,kBAAA,CAAmBF,EAAkBoB,CAAiBR,CAAAA,CAAAA,CAA2B,CAC/F,MAAMX,CAAQ,CAAA,WAAA,CAAYD,CAAUoB,CAAAA,CAAAA,CAASR,CAAO,CACpD,CAAA,OAAO,WAAYX,CAAAA,CAAK,CAC1B,CAEgB,SAAA,OAAA,CAAQD,EAAkB,CACxC,OAAOA,CAAYA,EAAAA,CAAAA,CAAS,QAAS,CAAA,YAAY,CACnD,UAEgB,kBAAmB0B,CAAAA,CAAAA,CAAgBC,CAAgB,CAAA,CACjE,MAAMC,CAAW,CAAA,WAAA,CAAYF,CAAM,CAAA,CAC7BG,EAAW,WAAYF,CAAAA,CAAM,CAC7BG,CAAAA,CAAAA,CAAS,WAAYF,CAAAA,CAAAA,CAAUC,CAAQ,CAAA,CAC7C,OAAO,WAAYC,CAAAA,CAAM,CAC3B,CAEgB,SAAA,WAAA,CAAYJ,CAAmBC,CAAAA,CAAAA,CAAmB,CAChE,YAAaD,CAAAA,CAAM,CACnB,CAAA,YAAA,CAAaC,CAAM,CAAA,CACnB,MAAMtM,CAAAA,CAAO,OAAO,IAAKqM,CAAAA,CAAAA,CAAO,GAAG,CAAA,CAChC,MAAO,CAAA,MAAA,CAAO,IAAKC,CAAAA,CAAAA,CAAO,GAAG,CAAC,CAAA,CAC9B,IAAK,CAAA,CAACxJ,CAAGC,CAAAA,CAAAA,GAAMD,CAAE,CAAA,aAAA,CAAcC,CAAC,CAAC,CAAA,CAC9B2J,CAAc,CAAA,CAAE,GAAK,CAAA,EAAG,CAAA,CAC9B,OAAA1M,CAAK,CAAA,OAAA,CAASC,CAAQ,EAAA,CA1TxB,IAAAY,CAAAA,CAAA+K,CA2ToB,CAAA,MAAA,CAAO,OAAK/K,CAAAwL,CAAAA,CAAAA,CAAO,GAAP,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAxL,EAAaZ,CAAQ,CAAA,GAAA,EAAE,CAAA,CAChD,OAAO,MAAO,CAAA,IAAA,CAAA,CAAA,CAAK2L,CAAAU,CAAAA,CAAAA,CAAO,GAAP,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAV,CAAa3L,CAAAA,CAAAA,CAAAA,GAAQ,EAAE,CAAC,CAC3C,CAAA,IAAA,CAAK,CAAC6C,CAAAA,CAAGC,CAAMD,GAAAA,CAAAA,CAAE,cAAcC,CAAC,CAAC,CAC5B,CAAA,OAAA,CAAS8I,CAAW,EAAA,CA9ThC,IAAAhL,CAAAA,CAAA+K,EA+TMc,CAAY,CAAA,GAAA,CAAIzM,CAAG,CAAA,CAAI0L,GAAAxK,CAAAA,GAAAA,CAAA,EAClBuL,CAAAA,CAAAA,CAAY,IAAIzM,CAAG,CAAA,CAAA,CADD,CAErB,CAAC4L,CAAM,EAAA,CAAA,CAAGhL,CAAAwL,CAAAA,CAAAA,CAAO,IAAIpM,CAAG,CAAA,GAAd,IAAAY,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAkBgL,CAAWD,CAAAA,IAAAA,CAAAA,CAAAA,CAAAU,CAAO,CAAA,GAAA,CAAIrM,CAAG,CAAd,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA2L,CAAkBC,CAAAA,CAAAA,CAAAA,CAC3D,CACF,EAAA,CAAC,EACH,CAAC,EACMa,CACT,CAEgB,SAAA,wBAAA,CAAyBvC,EAAY,EAAIS,CAAAA,CAAAA,CAAkB,CACzE,YAAA,CAAaA,CAAK,CAClB,CAAA,MAAM+B,CAAO,CAAA,oFAAA,CAEb,GAAIxC,CAAAA,CAAU,QAASwC,CAAAA,CAAI,EAAG,OAAOxC,CAAAA,CAErC,MAAMyC,CAAAA,CAA8B,EAAC,CACrC,IAAIC,CAAAA,CAAiB,EACrB,MAAO,CAAA,IAAA,CAAKjC,CAAM,CAAA,GAAG,CAAE,CAAA,OAAA,CAASD,CAAa,EAAA,CAC3C,MAAMY,CAAU,CAAA,MAAA,CAAO,IAAKX,CAAAA,CAAAA,CAAM,GAAID,CAAAA,CAAQ,CAAC,CAAA,CAAE,IAAKoB,CAC7C,GAAA,CACL,OAASA,CAAAA,CAAAA,CAAQ,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,EAC7B,MAAQA,CAAAA,CAAAA,CAAQ,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAC9B,CAAA,CACD,EAEDR,CAAQ,CAAA,IAAA,CAAK,CAAC,CAAA,CAAGxI,CAAM,GAAA,CAAA,CAAE,MAAO,CAAA,aAAA,CAAcA,EAAE,MAAM,CAAC,CACvD,CAAA,MAAM+J,CAAkB,CAAA,EACxBvB,CAAAA,CAAAA,CAAQ,QAASM,CAAgB,EAAA,CAC1BiB,CAAgBjB,CAAAA,CAAAA,CAAO,OAAO,CAAA,GACjCiB,CAAgBjB,CAAAA,CAAAA,CAAO,OAAO,CAAI,CAAA,EAEpCiB,CAAAA,CAAAA,CAAAA,CAAgBjB,CAAO,CAAA,OAAO,CAAE,CAAA,IAAA,CAAKA,EAAO,MAAM,EACpD,CAAC,CAAA,CACD,MAAMC,CAAAA,CAAY,MAAO,CAAA,IAAA,CAAKgB,CAAe,CAAE,CAAA,GAAA,CAAKf,CAClDc,GAAAA,CAAAA,EAAAA,CACO,CAAIA,CAAAA,EAAAA,CAAAA,CAAAA,GAAAA,EAAoBd,CAAce,CAAAA,IAAAA,EAAAA,CAAAA,CAAgBf,CAAO,CAAE,CAAA,IAAA,CACpE,MACF,CAAA,CAAA,OAAA,EAAWpB,CACZ,CAAA,EAAA,CAAA,CAAA,CAAA,CACDiC,CAAkB,CAAA,IAAA,CAAKd,EAAU,IAAK,CAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,IAAM,CAAA,GAAG,CAAC,EAChE,CAAC,CAED,CAAA,MAAMiB,CAAgBH,CAAAA,CAAAA,CAAkB,IAAK,CAAA,GAAG,CAC1CI,CAAAA,CAAAA,CAAiB,GAAGL,CAAOI,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAEjC,OAAO,CAAA,EAAG5C,EAAYA,CAAY,CAAA,GAAA,CAAM,EAAK6C,CAAAA,EAAAA,CAAAA,CAAAA,CAC/C,CAEgB,SAAA,mBAAA,CAAoBpC,CAAe,CAAA,CA/WnD,IAAA/J,CAAAA,CAgXE,MAAMgK,CAAAA,CAAU,YAAYD,CAAK,CAAA,CACjC,YAAaC,CAAAA,CAAO,CAEpB,CAAA,MAAMF,CAAW9J,CAAAA,CAAAA,CAAAA,CAAAgK,EAAQ,GAAR,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAhK,CAAa,CAAA,MAAA,CAC9B,OAAK8J,CAAAA,CACE,MAAO,CAAA,IAAA,CAAKA,CAAQ,CAAE,CAAA,GAAA,CAAKoB,CAAiBA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,GAAG,CAAE,CAAA,CAAC,CAAC,CADlD,CAAA,EAExB,CAEgB,SAAA,kBAAA,CAAmBnB,CAAe,CAAA,CAChD,MAAMC,CAAU,CAAA,WAAA,CAAYD,CAAK,CAAA,CACjC,YAAaC,CAAAA,CAAO,CACpB,CAAA,MAAM1K,EAAmB,EAAC,CAE1B,OAAO,MAAA,CAAA,MAAA,CAAO0K,CAAQ,CAAA,GAAG,CAAE,CAAA,OAAA,CAASF,GAAkB,CACpD,MAAA,CAAO,MAAOA,CAAAA,CAAQ,EAAE,OAASoB,CAAAA,CAAAA,EAAiB,CA9XtD,IAAAlL,GA+XUA,CAAAkL,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAU,CAAV,CAAA,GAAA,IAAA,EAAAlL,CAAc,CAAA,MAAA,EAChBV,EAAO,IAAK4L,CAAAA,CAAAA,CAAQ,CAAC,CAAA,CAAE,MAAM,EAEjC,CAAC,EACH,CAAC,CACM,CAAA,CAAC,GAAG,IAAI,GAAI5L,CAAAA,CAAAA,CAAO,IAAK,EAAC,CAAC,CACnC,CAEgB,SAAA,mBAAA,CAAoBgK,CAAmBS,CAAAA,CAAAA,CAAgB,CACrE,GAAI,CAACA,CAAO,CAAA,OAAOT,CACnB,CAAA,MAAMU,CAAU,CAAA,WAAA,CAAYD,CAAK,CAAA,CACjC,oBAAaC,CAAO,CAAA,CACb,wBAAyBV,CAAAA,CAAAA,CAAWU,CAAO,CACpD,CAEO,SAAS,sBAAsBH,CAAsB,CAAA,CAC1D,GAAI,CAACA,CAAW,CAAA,OAEhB,MAAMC,CAAAA,CAAWD,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAYA,CAAU,CAAA,MAAA,CAAS,GAChD,OAAO,OAAA,CAAQC,CAAQ,CAAA,CAAIA,EAAW,KACxC,CAAA;;ACzYO,MAAM,MAAS,CAAA,QAAA,CACT,OAAS,QACT,CAAA,MAAA,CAAS,WACT,CAAA,SAAA,CAAY,WACZ,CAAA,IAAA,CAAO,OAEP,MAAS,CAAA,CAAA,CACT,MAAS,CAAA,CAAA,CACT,MAAS,CAAA,EAWtB,MAAMsC,GAAa,CAAA,CAAA,CACbC,CAAc,CAAA,CAAA,CACdC,GAAY,CAAA,EAAA,CACZC,IAAa,EAEZ,CAAA,SAAS,eAAuC,EAAA,CACrD,MAAMC,CAAAA,CAAUC,IAAO,eAAgB,EAAA,CACvC,OAAO,CACL,UAAYC,CAAAA,QAAAA,CAASF,EAAQ,SAAW,CAAA,MAAM,CAC9C,CAAA,SAAA,CAAWE,QAASF,CAAAA,CAAAA,CAAQ,UAAW,MAAM,CAC/C,CACF,CAEgB,SAAA,qBAAA,EAAgC,CAC9C,MAAMG,CAAAA,CAASC,WAAYL,CAAAA,GAAU,CACrC,CAAA,OAAOG,SAASC,CAAQ,CAAA,MAAM,CAChC,CAEgB,SAAA,YAAA,CAAaE,EAAqBC,CAA4B,CAAA,CAC5E,MAAMC,CAAAA,CAAYN,GAAO,CAAA,SAAA,CACvBO,WAAWH,CAAa,CAAA,MAAM,EAC9BG,UAAWF,CAAAA,CAAAA,CAAY,MAAM,CAC7B,CAAA,CAAA,CACF,CAEMG,CAAAA,CAAAA,CADO,IAAIC,IAAAA,CAAK1F,SAAQuF,CAAS,CAAA,CACnB,MAAOR,CAAAA,GAAU,CACrC,CAAA,OAAOG,SAASO,CAAQ,CAAA,MAAM,CAChC,CAEgB,SAAA,OAAA,CAAQ7N,EAAqB,CAC3C,MAAMmE,CAAS4J,CAAAA,MAAAA,CAAKH,UAAW5N,CAAAA,CAAAA,CAAK,MAAM,CAAC,CAAA,CAC3C,OAAOsN,QAAAA,CAASnJ,CAAQ,CAAA,MAAM,CAChC,CAEO,SAAS,WAAY2E,CAAAA,CAAAA,CAAyB,CACnD,MAAM3E,EAAS4J,MAAKH,CAAAA,UAAAA,CAAW9E,CAAS,CAAA,IAAI,CAAC,CAAA,CAC7C,OAAOwE,QAASnJ,CAAAA,CAAAA,CAAQ,MAAM,CAChC,CAEO,SAAS,eAAezB,CAA0B,CAAA,CACvD,OAAOkL,UAAAA,CAAW,CAAGlL,EAAAA,CAAAA,CAAAA,CAAAA,CAAQ,MAAM,CACrC,CAEgB,SAAA,cAAA,CAAesL,CAA0B,CAAA,CACvD,OAAO,MAAOV,CAAAA,QAAAA,CAASU,CAAM,CAAA,MAAM,CAAC,CACtC,CAEgB,SAAA,OAAA,CAAQ3O,CAA2C,CAAA,CACjE,MAAMqD,CAAAA,CAAO,eAAe,OAAOrD,CAAAA,CAAO,IAAS,EAAA,WAAA,CAAcA,CAAO,CAAA,IAAA,CAAO,MAAM,CACrF,CAAA,GAAI,cAAeqD,CAAAA,CAAI,CAAM,GAAA,MAAA,EAAU,OAAOrD,CAAO,CAAA,eAAA,EAAoB,WACvE,CAAA,MAAM,IAAI,KAAA,CAAM,+CAA+C,CAEjE,CAAA,MAAM4O,EACJ,OAAO5O,CAAAA,CAAO,iBAAoB,WAC9BuO,CAAAA,UAAAA,CAAWvO,CAAO,CAAA,eAAA,CAAiB,MAAM,CAAA,CACzC,OAEA6O,CACJ,CAAA,OAAO7O,CAAO,CAAA,EAAA,EAAO,WAAcuO,CAAAA,UAAAA,CAAWvO,EAAO,EAAI,CAAA,MAAM,CAAImO,CAAAA,WAAAA,CAAYN,GAAS,CAAA,CAEpFiB,EADM,IAAIC,gBAAAA,CAAiBR,UAAWvO,CAAAA,CAAAA,CAAO,MAAQ,CAAA,MAAM,CAAC,CAC/C,CAAA,IAAA,CAAK6O,CAAIN,CAAAA,UAAAA,CAAWvO,CAAO,CAAA,OAAA,CAAS,IAAI,CAAC,CAAA,CAC5D,OAAO,SAAA,CAAU,CAAE,IAAA,CAAAqD,EAAM,MAAAyL,CAAAA,CAAAA,CAAQ,EAAAD,CAAAA,CAAAA,CAAI,eAAAD,CAAAA,CAAAA,CAAiB,SAAU5O,CAAO,CAAA,QAAS,CAAC,CACnF,CAEO,SAAS,sBACdyJ,CACAuF,CAAAA,CAAAA,CACQ,CACR,MAAM3L,CAAO,CAAA,cAAA,CAAe,MAAM,CAE5BwL,CAAAA,CAAAA,CAAKV,WAAYN,CAAAA,GAAS,CAC1BiB,CAAAA,CAAAA,CAASP,WAAW9E,CAAS,CAAA,IAAI,CACvC,CAAA,OAAO,SAAU,CAAA,CAAE,KAAApG,CAAM,CAAA,MAAA,CAAAyL,CAAQ,CAAA,EAAA,CAAAD,CAAI,CAAA,QAAA,CAAAG,CAAS,CAAC,CACjD,CAEO,SAAS,OAAQhP,CAAAA,CAAAA,CAA2C,CACjE,MAAMiP,CAAAA,CAAM,IAAIF,gBAAAA,CAAiBR,UAAWvO,CAAAA,CAAAA,CAAO,OAAQ,MAAM,CAAC,CAC5D,CAAA,CAAE,MAAA8O,CAAAA,CAAAA,CAAQ,GAAAD,CAAG,CAAA,CAAI,YAAY,CAAE,OAAA,CAAS7O,EAAO,OAAS,CAAA,QAAA,CAAUA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAQ,CAAA,QAAS,CAAC,CACpFyJ,CAAAA,CAAAA,CAAUwF,CAAI,CAAA,IAAA,CAAKJ,CAAIC,CAAAA,CAAM,EACnC,GAAIrF,CAAAA,GAAY,IAAM,CAAA,MAAM,IAAI,KAAA,CAAM,mBAAmB,CACzD,CAAA,OAAOwE,QAASxE,CAAAA,CAAAA,CAAS,IAAI,CAC/B,CAEgB,SAAA,qBAAA,CACdyF,CACAF,CAAAA,CAAAA,CACQ,CACR,KAAM,CAAE,MAAAF,CAAAA,CAAO,CAAI,CAAA,WAAA,CAAY,CAAE,OAAA,CAAAI,EAAS,QAAAF,CAAAA,CAAS,CAAC,CAAA,CACpD,OAAOf,QAAAA,CAASa,EAAQ,IAAI,CAC9B,CAEO,SAAS,SAAU9O,CAAAA,CAAAA,CAA4C,CACpE,KAAM,CAAE,QAAAgP,CAAAA,CAAAA,CAAW,MAAO,CAAA,CAAIhP,EAE9B,GAAI,cAAA,CAAeA,CAAO,CAAA,IAAI,CAAM,GAAA,MAAA,CAClC,OAAOiO,QAASkB,CAAAA,QAAAA,CAAO,CAACnP,CAAAA,CAAO,IAAMA,CAAAA,CAAAA,CAAO,MAAM,CAAC,CAAA,CAAGgP,CAAQ,CAAA,CAEhE,GAAI,cAAA,CAAehP,EAAO,IAAI,CAAA,GAAM,MAAQ,CAAA,CAC1C,GAAI,OAAOA,EAAO,eAAoB,EAAA,WAAA,CACpC,MAAM,IAAI,KAAM,CAAA,+CAA+C,EAEjE,OAAOiO,QAAAA,CACLkB,QAAO,CAAA,CAACnP,CAAO,CAAA,IAAA,CAAMA,EAAO,eAAiBA,CAAAA,CAAAA,CAAO,GAAIA,CAAO,CAAA,MAAM,CAAC,CACtEgP,CAAAA,CACF,CAGF,CAAA,OAAOf,QAASkB,CAAAA,QAAAA,CAAO,CAACnP,CAAO,CAAA,IAAA,CAAMA,CAAO,CAAA,EAAA,CAAIA,CAAO,CAAA,MAAM,CAAC,CAAGgP,CAAAA,CAAQ,CAC3E,CAEgB,SAAA,WAAA,CAAYhP,EAAgE,CAC1F,KAAM,CAAE,OAAA,CAAAkP,CAAS,CAAA,QAAA,CAAAF,EAAW,MAAO,CAAA,CAAIhP,CACjCoP,CAAAA,CAAAA,CAAQb,UAAWW,CAAAA,CAAAA,CAASF,CAAQ,CACpC3L,CAAAA,CAAAA,CAAO+L,CAAM,CAAA,KAAA,CAAMzB,GAAYC,CAAAA,CAAW,EAC1CyB,CAASzB,CAAAA,CAAAA,CACf,GAAI,cAAA,CAAevK,CAAI,CAAA,GAAM,OAAQ,CACnC,MAAMiM,CAASD,CAAAA,CAAAA,CAASvB,GAClByB,CAAAA,CAAAA,CAASD,EAASzB,GAClBe,CAAAA,CAAAA,CAAkBQ,CAAM,CAAA,KAAA,CAAMC,CAAQC,CAAAA,CAAM,EAC5CT,CAAKO,CAAAA,CAAAA,CAAM,KAAME,CAAAA,CAAAA,CAAQC,CAAM,CAAA,CAC/BT,EAASM,CAAM,CAAA,KAAA,CAAMG,CAAM,CAAA,CACjC,OAAO,CAAE,KAAAlM,CAAM,CAAA,MAAA,CAAAyL,CAAQ,CAAA,EAAA,CAAAD,CAAI,CAAA,eAAA,CAAAD,CAAgB,CAE7C,CAAA,GAAI,cAAevL,CAAAA,CAAI,CAAM,GAAA,MAAA,CAAQ,CACnC,MAAMyL,CAAAA,CAASM,CAAM,CAAA,KAAA,CAAMC,CAAM,CAAA,CAE3BR,EAAKV,WAAYN,CAAAA,GAAS,CAChC,CAAA,OAAO,CAAE,IAAA,CAAAxK,EAAM,MAAAyL,CAAAA,CAAAA,CAAQ,GAAAD,CAAG,CAAA,CAG5B,MAAMS,CAASD,CAAAA,CAAAA,CAASxB,GAClBgB,CAAAA,CAAAA,CAAKO,CAAM,CAAA,KAAA,CAAMC,EAAQC,CAAM,CAAA,CAC/BR,CAASM,CAAAA,CAAAA,CAAM,KAAME,CAAAA,CAAM,EACjC,OAAO,CAAE,IAAAjM,CAAAA,CAAAA,CAAM,MAAAyL,CAAAA,CAAAA,CAAQ,GAAAD,CAAG,CAC5B,CAEO,SAAS,gBACdK,CAAAA,CAAAA,CACAM,EACgC,CAChC,MAAMC,CAAe,CAAA,WAAA,CAAY,CAAE,OAAA,CAAAP,EAAS,QAAUM,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAM,QAAS,CAAC,EACtE,OAAO,gBAAA,CAAiB,CACtB,IAAA,CAAM,cAAeC,CAAAA,CAAAA,CAAa,IAAI,CACtC,CAAA,eAAA,CACE,OAAOA,CAAAA,CAAa,eAAoB,EAAA,WAAA,CACpCxB,SAASwB,CAAa,CAAA,eAAA,CAAiB,MAAM,CAAA,CAC7C,KACN,CAAA,CAAA,iBAAA,CAAmBD,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAM,iBAC3B,CAAC,CACH,UAEgB,gBAAiBA,CAAAA,CAAAA,CAAkE,CACjG,MAAMnM,CAAOmM,CAAAA,CAAAA,CAAAA,EAAA,YAAAA,CAAM,CAAA,IAAA,GAAQ,MAC3B,CAAA,GAAInM,CAAS,GAAA,MAAA,CAAQ,CACnB,GAAI,OAAOmM,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAM,CAAA,eAAA,CAAA,EAAoB,YACnC,MAAM,IAAI,KAAM,CAAA,2BAA2B,CAE7C,CAAA,GAAI,OAAOA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAM,CAAA,iBAAA,CAAA,EAAsB,WACrC,CAAA,MAAM,IAAI,KAAM,CAAA,6BAA6B,EAGjD,OAAO,CACL,KAAAnM,CACA,CAAA,eAAA,CAAiBmM,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAM,CAAA,eAAA,CACvB,kBAAmBA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAM,CAAA,iBAC3B,CACF,UAEgB,iBACd1K,CAAAA,CAAAA,CACqC,CACrC,OACEA,CAAO,CAAA,IAAA,GAAS,QAChB,OAAOA,CAAAA,CAAO,eAAoB,EAAA,QAAA,EAClC,OAAOA,CAAAA,CAAO,mBAAsB,QAExC,CAEgB,SAAA,iBAAA,CACdA,CACqC,CAAA,CACrC,OAAOA,CAAO,CAAA,IAAA,GAAS,MACzB,CACgB,SAAA,uBAAA,CAAwB4K,EAAsC,CAS5E,OARW,IAAIvG,IAAAA,CAAG,MAAM,CAAA,CACT,cACb,CACE,CAAA,CAAG,MAAO,CAAA,IAAA,CAAKuG,CAAQ,CAAA,CAAA,CAAG,QAAQ,CAAE,CAAA,QAAA,CAAS,KAAK,CAAA,CAClD,CAAG,CAAA,MAAA,CAAO,KAAKA,CAAQ,CAAA,CAAA,CAAG,QAAQ,CAAA,CAAE,QAAS,CAAA,KAAK,CACpD,CACA,CAAA,KACF,CAEF,CAEA,SAASC,GAAAA,CAAkBC,EAAmB,CAC5C,IAAIC,CAASD,CAAAA,CAAAA,CAAU,OAAQ,CAAA,IAAA,CAAM,GAAG,CAAE,CAAA,OAAA,CAAQ,IAAM,CAAA,GAAG,CAC3D,CAAA,MAAME,EAAUD,CAAO,CAAA,MAAA,CAAS,CAChC,CAAA,OAAIC,CAAU,CAAA,CAAA,GACZD,GAAU,GAAI,CAAA,MAAA,CAAO,CAAIC,CAAAA,CAAO,CAE3BD,CAAAA,CAAAA,CACT,CAEA,SAASE,CAAAA,CAAgBH,CAAmB,CAAA,CAC1C,OAAO,MAAA,CAAO,KAAKD,GAAkBC,CAAAA,CAAS,CAAG,CAAA,QAAQ,CAC3D,UAEgB,aAAiBI,CAAAA,CAAAA,CAAeN,CAA0B,CAAA,CACxE,KAAM,CAACO,EAAiBC,CAAkBC,CAAAA,CAAkB,CAAIH,CAAAA,CAAAA,CAAM,KAAM,CAAA,GAAG,EAGzEI,CAAkBL,CAAAA,CAAAA,CAAgBI,CAAkB,CAAA,CAG1D,GAAIC,CAAAA,CAAgB,SAAW,EAC7B,CAAA,MAAM,IAAI,KAAA,CAAM,0BAA0B,CAAA,CAI5C,MAAMlK,CAAIkK,CAAAA,CAAAA,CAAgB,KAAM,CAAA,CAAA,CAAG,EAAE,CAAA,CAAE,SAAS,KAAK,CAAA,CAC/CC,CAAID,CAAAA,CAAAA,CAAgB,KAAM,CAAA,EAAA,CAAI,EAAE,CAAE,CAAA,QAAA,CAAS,KAAK,CAAA,CAGhDE,CAAe,CAAA,CAAA,EAAGL,KAAmBC,CAGrCK,CAAAA,CAAAA,CAAAA,CAAAA,CADS,IAAIxH,QAAAA,EACG,CAAA,MAAA,CAAO,OAAO,IAAKuH,CAAAA,CAAY,CAAC,CAAA,CAAE,MAAO,EAAA,CAEzD3P,EAAM,uBAAwB+O,CAAAA,CAAO,CAGrCc,CAAAA,CAAAA,CAAU,MAAO,CAAA,IAAA,CAAKD,CAAM,CAAE,CAAA,QAAA,CAAS,KAAK,CAAA,CAKlD,GAAI,CAFY5P,EAAI,MAAO6P,CAAAA,CAAAA,CAAS,CAAE,CAAA,CAAAtK,CAAG,CAAA,CAAA,CAAAmK,CAAE,CAAC,CAAA,CAG1C,MAAM,IAAI,KAAM,CAAA,mBAAmB,EAGrC,OADaI,SAAAA,CAAUT,CAAK,CAAA,CAChB,OACd;;MC5Qa,wBAA2B,CAAA,eAExB,oBACdR,CAAAA,CAAAA,CAC8B,CAC9B,OAAA,CAAOA,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAM,QAAS,CAAE,QAAA,CAAU,wBAAyB,CAC7D,CAEgB,SAAA,mBAAA,CAAoBzN,EAAkB,CACpD,MAAM2O,EAAUC,aAAc5O,CAAAA,CAAQ,EACtC,GAAI,OAAO2O,CAAY,EAAA,WAAA,CACrB,MAAM,IAAI,KAAA,CAAM,iCAAiC3O,CAAU,CAAA,CAAA,CAAA,CAE7D,OAAO2O,CACT;;ACjBA,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAAzP,GAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAAE,GAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAAF,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKgB,SAAA,gBAAA,CAAiBjB,CAAa4Q,CAAAA,CAAAA,CAAY,GAAmC,CAAA,CAC3F,MAAMC,CAAAA,CAAa,EAAC,CACdC,EAAS,OAAUF,CAAAA,CAAAA,CACzB,OAAO,MAAA,CAAA,IAAA,CAAK5Q,CAAM,CAAA,CAAE,OAASW,CAAAA,CAAAA,EAAQ,CACnC,GAAIA,CAAI,CAAA,UAAA,CAAWmQ,CAAM,CAAA,CAAG,CAC1B,MAAMC,EAAOpQ,CAAI,CAAA,OAAA,CAAQmQ,CAAQ,CAAA,EAAE,CAC7BvQ,CAAAA,CAAAA,CAAQP,CAAOW,CAAAA,CAAG,CACxBkQ,CAAAA,CAAAA,CAAME,CAAI,CAAA,CAAIxQ,EAElB,CAAA,CAAC,CACMsQ,CAAAA,CACT,CAEgB,SAAA,QAAA,CAASvQ,CAAwC,CAAA,CAE/DA,CAAMA,CAAAA,CAAAA,CAAI,QAAS,CAAA,OAAO,EAAIA,CAAI,CAAA,OAAA,CAAQ,OAAS,CAAA,EAAE,CAAIA,CAAAA,CAAAA,CAEzDA,CAAMA,CAAAA,CAAAA,CAAI,SAAS,KAAK,CAAA,CAAIA,CAAI,CAAA,OAAA,CAAQ,KAAO,CAAA,EAAE,CAAIA,CAAAA,CAAAA,CACrD,MAAM0Q,CAAAA,CAAoB1Q,CAAI,CAAA,OAAA,CAAQ,GAAG,CAAA,CACnC2Q,CAA8B3Q,CAAAA,CAAAA,CAAI,QAAQ,GAAG,CAAA,GAAM,CAAKA,CAAAA,CAAAA,CAAAA,CAAI,OAAQ,CAAA,GAAG,CAAI,CAAA,KAAA,CAAA,CAC3EyB,CAAmBzB,CAAAA,CAAAA,CAAI,SAAU,CAAA,CAAA,CAAG0Q,CAAS,CAAA,CAE7CE,CADe5Q,CAAAA,CAAAA,CAAI,UAAU0Q,CAAY,CAAA,CAAA,CAAGC,CAAO,CAAA,CAC7B,KAAM,CAAA,GAAG,CAC/BxP,CAAAA,CAAAA,CAAsB,OAAOwP,CAAAA,EAAY,WAAc3Q,CAAAA,CAAAA,CAAI,SAAU2Q,CAAAA,CAAO,CAAI,CAAA,EAAA,CAChFtP,EAAcC,GAAG,CAAA,KAAA,CAAMH,CAAW,CAAA,CAClCkK,CACJ,CAAA,OAAOhK,CAAY,CAAA,OAAA,EAAY,SAAWA,CAAY,CAAA,OAAA,CAAQ,KAAM,CAAA,GAAG,CAAI,CAAA,KAAA,CAAA,CAY7E,OAXe,CACb,SAAAI,CACA,CAAA,KAAA,CAAO,UAAWmP,CAAAA,CAAAA,CAAe,CAAC,CAAC,CACnC,CAAA,OAAA,CAAS,QAASA,CAAAA,CAAAA,CAAe,CAAC,CAAA,CAAG,EAAE,CAAA,CACvC,MAAQvP,CAAAA,CAAAA,CAAY,OACpB,KAAO,CAAA,gBAAA,CAAiBA,CAAW,CAAA,CACnC,OAAAgK,CAAAA,CAAAA,CACA,eAAiBhK,CAAAA,CAAAA,CAAY,eACzB,CAAA,QAAA,CAASA,CAAY,CAAA,eAAA,CAA2B,EAAE,CAAA,CAClD,KACN,CAAA,CAEF,CAEgB,SAAA,UAAA,CAAWqD,CAAuB,CAAA,CAChD,OAAOA,CAAAA,CAAM,UAAW,CAAA,IAAI,CAAIA,CAAAA,CAAAA,CAAM,SAAU,CAAA,CAAC,CAAIA,CAAAA,CACvD,CAEO,SAAS,kBAAkB6L,CAAqCD,CAAAA,CAAAA,CAAY,GAAK,CAAA,CACtF,MAAME,CAAAA,CAAS,OACT9Q,CAAAA,CAAAA,CAAc,EACpB,CAAA,OAAA,MAAA,CAAO,IAAK6Q,CAAAA,CAAK,CAAE,CAAA,OAAA,CAASlQ,CAAQ,EAAA,CAClC,MAAMwQ,CAAIL,CAAAA,CAAAA,CAASF,CAAYjQ,CAAAA,CAAAA,CAC3BkQ,CAAMlQ,CAAAA,CAAG,CACXX,GAAAA,CAAAA,CAAOmR,CAAC,CAAA,CAAIN,CAAMlQ,CAAAA,CAAG,CAEzB,EAAA,CAAC,CACMX,CAAAA,CACT,CAEgB,SAAA,SAAA,CAAUA,CAA2C,CAAA,CACnE,OACE,CAAA,EAAGA,CAAO,CAAA,QAAA,CAAA,CAAA,EAAYA,EAAO,KAASA,CAAAA,CAAAA,EAAAA,CAAAA,CAAO,OAC7C4B,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAG,SAAUC,CAAAA,CAAAA,CAAAwK,CAAAxK,CAAAA,CAAAA,CAAA,CACX,MAAQ7B,CAAAA,CAAAA,CAAO,MACZ,CAAA,CAAA,iBAAA,CAAkBA,CAAO,CAAA,KAAK,CAFtB,CAAA,CAAA,CAGX,eAAiBA,CAAAA,CAAAA,CAAO,eACpBA,CAAAA,CAAAA,CAAAA,CAAAA,CAAO,OAAU,CAAA,CAAE,OAASA,CAAAA,CAAAA,CAAO,QAAQ,IAAK,CAAA,GAAG,CAAE,CAAA,CAAI,EAAC,CAC/D,CAEL,UAEgB,cACdoR,CAAAA,CAAAA,CACApM,CACAqM,CAAAA,CAAAA,CACQ,CACR,OAAO,CAAGD,EAAAA,CAAAA,CAAAA,OAAAA,EAAuBC,WAAyBrM,CAC5D,CAAA,CAAA;;4bC5EgB,iBAAkBxE,CAAAA,CAAAA,CAA8C,CAC9E,MAAMK,CAAAA,CAAmB,EACzB,CAAA,OAAAL,CAAS,CAAA,OAAA,CAASP,CAAY,EAAA,CAC5B,KAAM,CAACJ,CAAAA,CAAO0J,CAAO,CAAItJ,CAAAA,CAAAA,CAAQ,MAAM,GAAG,CAAA,CAC1CY,CAAO,CAAA,IAAA,CAAK,CAAGhB,EAAAA,CAAAA,CAAAA,CAAAA,EAAS0J,GAAS,EACnC,CAAC,CAEM1I,CAAAA,CACT,CAEO,SAAS,oBAAoBJ,CAAqC,CAAA,CACvE,MAAMI,CAAAA,CAAmB,EAAC,CAC1B,cAAO,MAAOJ,CAAAA,CAAU,EAAE,OAASX,CAAAA,CAAAA,EAAc,CAC/Ce,CAAO,CAAA,IAAA,CAAK,GAAG,iBAAA,CAAkBf,CAAU,CAAA,QAAQ,CAAC,EACtD,CAAC,EAEMe,CACT,UAEgB,8BACdJ,CAAAA,CAAAA,CACA8I,CACA,CAAA,CACA,MAAMoC,CAAAA,CAA6C,EACnD,CAAA,OAAA,MAAA,CAAO,OAAOlL,CAAU,CAAA,CAAE,QAASX,CAAc,EAAA,CAChC,iBAAkBA,CAAAA,CAAAA,CAAU,QAAQ,CAAA,CACxC,SAASyJ,CAAO,CAAA,EAAGoC,CAAQ,CAAA,IAAA,CAAK,GAAG7L,CAAAA,CAAU,OAAO,EACjE,CAAC,CAEM6L,CAAAA,CACT,CAEO,SAAS,8BACdlL,CACA8I,CAAAA,CAAAA,CACA,CACA,MAAM+H,CAAAA,CAA2C,EACjD,CAAA,OAAA,MAAA,CAAO,MAAO7Q,CAAAA,CAAU,CAAE,CAAA,OAAA,CAASX,GAAc,CAChC,iBAAA,CAAkBA,EAAU,QAAQ,CAAA,CACxC,SAASyJ,CAAO,CAAA,EAAG+H,CAAO,CAAA,IAAA,CAAK,GAAGxR,CAAAA,CAAU,MAAM,EAC/D,CAAC,EAEMwR,CACT,UAEgB,mCACd7Q,CAAAA,CAAAA,CACA8Q,CACkC,CAAA,CAClC,MAAMC,CAAAA,CAAuBC,kBAAkBhR,CAAY8Q,CAAAA,CAAM,CACjE,CAAA,GAAIC,CAAsB,CAAA,MAAM,IAAI,KAAMA,CAAAA,CAAAA,CAAqB,OAAO,CAAA,CAEtE,MAAME,CAAAA,CAAW,EACjB,CAAA,IAAA,KAAW,CAAC5R,CAAW6R,CAAAA,CAAM,IAAK,MAAO,CAAA,OAAA,CAAQlR,CAAU,CAAA,CACzDiR,CAAS5R,CAAAA,CAAS,EAAI,CACpB,OAAA,CAAS6R,EAAO,OAChB,CAAA,MAAA,CAAQA,EAAO,MACf,CAAA,MAAA,CAAQA,CAAO,CAAA,QAAA,CAAS,GAAK1R,CAAAA,CAAAA,EAAY,GAAGA,CAAQ,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAC,KAAKA,CAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA,CAAG,CAC9F,CAEF,CAAA,OAAOyR,CACT,CAiBgB,SAAA,uBAAA,CACd1R,EACyB,CACzB,KAAM,CACJ,QAAA,CAAU,CAAE,kBAAA,CAAAc,EAAoB,kBAAA8Q,CAAAA,CAAAA,CAAqB,EAAG,CAAA,CACxD,oBAAAC,CACF,CAAA,CAAI7R,CACE8R,CAAAA,CAAAA,CAAqB,mBAAoBhR,CAAAA,CAAkB,EAC3DiR,CAAqB,CAAA,mBAAA,CAAoBH,CAAkB,CAG3DnR,CAAAA,CAAAA,CAAa,EACnB,CAAA,MAAA,CAAO,IAAKoR,CAAAA,CAAmB,CAAE,CAAA,OAAA,CAAS/R,GAAc,CACtD,MAAM+L,EAAkBgG,CAAoB/R,CAAAA,CAAS,EAAE,MACjDkS,CAAAA,CAAAA,CAAmBH,CAAoB/R,CAAAA,CAAS,CAAE,CAAA,OAAA,CAClDmS,EAAkBJ,CAAoB/R,CAAAA,CAAS,CAAE,CAAA,MAAA,CACjDoS,CAAoBL,CAAAA,CAAAA,CAAoB/R,CAAS,CAAE,CAAA,QAAA,CAEzD+L,CAAgB,CAAA,OAAA,CAAShM,CAAU,EAAA,CACjC,GAAI,CAACqS,CAAAA,CAAkB,KAAMjS,CAAYA,EAAAA,CAAAA,CAAQ,SAASJ,CAAK,CAAC,CAC9D,CAAA,MAAM,IAAI,KAAA,CAAM,kCAAkCA,CAAsBC,CAAAA,cAAAA,EAAAA,CAAAA,CAAAA,CAAW,CAEvF,CAAC,CAAA,CAEDW,EAAWX,CAAS,CAAA,CAAI,CACtB,MAAA,CAAQ+L,CACR,CAAA,OAAA,CAASmG,EACT,MAAQC,CAAAA,CAAAA,CACR,SAAUC,CACZ,EACF,CAAC,CAGD,CAAA,MAAMvM,CAAMwM,CAAAA,sBAAAA,CAAuBrR,CAAoBL,CAAAA,CAAAA,CAAY,WAAW,CAC9E,CAAA,GAAIkF,CAAK,CAAA,MAAM,IAAI,KAAA,CAAMA,EAAI,OAAO,CAAA,CAEpC,MAAMyM,CAAAA,CAAqB,EAAC,CAG5B,OAAI,CAAC,MAAA,CAAO,KAAKtR,CAAkB,CAAA,CAAE,QAAU,CAAC,MAAA,CAAO,IAAK8Q,CAAAA,CAAkB,CAAE,CAAA,MAAA,CACvEnR,GAGT,MAAO,CAAA,IAAA,CAAKqR,CAAkB,CAAE,CAAA,OAAA,CAASO,GAAsB,CAC7D,MAAMxR,CAASgR,CAAAA,CAAAA,CAAoBQ,CAAiB,CAAA,CAAE,OAAO,MAAQxS,CAAAA,CAAAA,EAAO,CA9HhF,IAAA0B,CAAAA,CAAA+K,EA+HM,OAAAA,CAAAA,CAAAA,CAAAA,CAAA/K,CAAAuQ,CAAAA,CAAAA,CAAmBO,CAAiB,CAAA,GAApC,YAAA9Q,CAAuC,CAAA,MAAA,GAAvC,IAAA+K,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA+C,QAASzM,CAAAA,CAAAA,CAAAA,CAC1D,EACM8L,CAAUkG,CAAAA,CAAAA,CAAoBQ,CAAiB,CAAA,CAAE,OAAQ,CAAA,MAAA,CAAQC,GAAQ,CAjInF,IAAA/Q,EAAA+K,CAkIM,CAAA,OAAA,CAAAA,GAAA/K,CAAAuQ,CAAAA,CAAAA,CAAmBO,CAAiB,CAAA,GAApC,IAAA9Q,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAuC,UAAvC,IAAA+K,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAgD,SAASgG,CAC3D,CAAA,CAAA,CAAA,CACMhB,EAASO,CAAoBQ,CAAAA,CAAiB,CAAE,CAAA,MAAA,CAAO,MAAQ/M,CAAAA,CAAAA,EAAO,CApIhF,IAAA/D,CAAAA,CAAA+K,EAqIM,OAAAA,CAAAA,CAAAA,CAAAA,CAAA/K,EAAAuQ,CAAmBO,CAAAA,CAAiB,CAApC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA9Q,CAAuC,CAAA,MAAA,GAAvC,YAAA+K,CAA+C,CAAA,QAAA,CAAShH,CAC1D,CAAA,CAAA,CAAA,CAEM9E,CAAWK,CAAAA,CAAAA,CACd,IAAKhB,CACJgS,EAAAA,CAAAA,CAAoBQ,CAAiB,CAAA,CAAE,QAAS,CAAA,MAAA,CAAQpS,GACtDA,CAAQ,CAAA,QAAA,CAAS,GAAGJ,CAAQ,CAAA,CAAA,CAAA,CAC9B,CACF,CACC,CAAA,IAAA,EAEHuS,CAAAA,CAAAA,CAAmBC,CAAiB,CAAA,CAAI,CACtC,MAAAxR,CAAAA,CAAAA,CACA,QAAA8K,CACA,CAAA,MAAA,CAAA2F,EACA,QAAA9Q,CAAAA,CACF,EACF,CAAC,CAGD,CAAA,MAAA,CAAO,KAAKuR,CAAkB,CAAA,CAAE,QAASQ,CAAsB,EAAA,CAzJjE,IAAAhR,CAAA+K,CAAAA,CAAAA,CAAAkG,CAAAC,CAAAA,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CA0JI,GAAI,CAACd,CAAAA,CAAoBU,CAAiB,CAAA,CAAG,OAE7C,MAAMK,GAActG,CAAA/K,CAAAA,CAAAA,CAAAA,CAAAwQ,CAAmBQ,CAAAA,CAAiB,CAApC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAhR,EAAuC,MAAvC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA+K,EAA+C,MAAQzM,CAAAA,CAAAA,EACzEgS,EAAoBU,CAAiB,CAAA,CAAE,MAAO,CAAA,QAAA,CAAS1S,CAAK,CAAA,CAAA,CAExDgT,EAAehB,CAAoBU,CAAAA,CAAiB,EAAE,OAAQ,CAAA,MAAA,CAAQD,GAAQ,CA/JxF,IAAA/Q,CAAA+K,CAAAA,CAAAA,CAgKM,OAAAA,CAAAA,CAAAA,CAAAA,CAAA/K,EAAAwQ,CAAmBQ,CAAAA,CAAiB,IAApC,IAAAhR,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAuC,UAAvC,IAAA+K,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAgD,QAASgG,CAAAA,CAAAA,CAAAA,CAC3D,CACMQ,CAAAA,CAAAA,CAAcjB,EAAoBU,CAAiB,CAAA,CAAE,MAAO,CAAA,MAAA,CAAQjN,CAAO,EAAA,CAlKrF,IAAA/D,CAAA+K,CAAAA,CAAAA,CAmKM,OAAAA,CAAAA,CAAAA,CAAAA,CAAA/K,CAAAwQ,CAAAA,CAAAA,CAAmBQ,CAAiB,CAApC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAhR,EAAuC,MAAvC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA+K,EAA+C,QAAShH,CAAAA,CAAAA,CAAAA,CAC1D,CAEMyN,CAAAA,CAAAA,CAAgBH,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAClB,GAAK/S,CAAAA,CAAAA,EACLgS,EAAoBU,CAAiB,CAAA,CAAE,SAAS,MAAQtS,CAAAA,CAAAA,EACtDA,CAAQ,CAAA,QAAA,CAAS,CAAGJ,EAAAA,CAAAA,CAAAA,CAAAA,CAAQ,CAC9B,CAED,CAAA,CAAA,IAAA,EAAA,CAEHuS,EAAmBG,CAAiB,CAAA,CAAI,CACtC,MAAQS,CAAAA,WAAAA,CAAAA,CAAYR,CAAAJ,CAAAA,CAAAA,CAAmBG,CAAiB,CAAA,GAApC,YAAAC,CAAuC,CAAA,MAAA,CAAQI,CAAW,CAAA,CAC9E,OAASI,CAAAA,WAAAA,CAAAA,CAAYP,EAAAL,CAAmBG,CAAAA,CAAiB,CAApC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAE,CAAuC,CAAA,OAAA,CAASI,CAAY,CACjF,CAAA,MAAA,CAAQG,aAAYN,CAAAN,CAAAA,CAAAA,CAAmBG,CAAiB,CAApC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAG,CAAuC,CAAA,MAAA,CAAQI,CAAW,CAAA,CAC9E,SAAUE,WAAYL,CAAAA,CAAAA,CAAAA,CAAAP,EAAmBG,CAAiB,CAAA,GAApC,YAAAI,CAAuC,CAAA,QAAA,CAAUI,CAAa,CACtF,EACF,CAAC,EAEMX,CACT,CAAA,UAEgB,eAAgBtS,CAAAA,CAAAA,CAA4B,CAC1D,OAAOA,CAAAA,CAAU,QAAS,CAAA,GAAG,CAC/B,UAEgB,iBAAkBA,CAAAA,CAAAA,CAAmB,CACnD,OAAO,eAAgBA,CAAAA,CAAS,EAAIA,CAAU,CAAA,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAIA,CAChE,CAoBO,SAAS,oBACdW,CACkC,CAAA,CArNpC,IAAAc,CAAA+K,CAAAA,CAAAA,CAAAkG,CAsNE,CAAA,MAAMS,CAAuB,CAAA,GAC7B,GAAI,CAACC,cAAczS,CAAU,CAAA,CAAG,OAAOwS,CACvC,CAAA,IAAA,KAAW,CAACtS,CAAAA,CAAKgR,CAAM,CAAA,GAAK,OAAO,OAAQlR,CAAAA,CAAU,EAAG,CACtD,MAAMI,EAAS,eAAgBF,CAAAA,CAAG,CAAI,CAAA,CAACA,CAAG,CAAA,CAAIgR,EAAO,MAC/ChG,CAAAA,CAAAA,CAAUgG,CAAO,CAAA,OAAA,EAAW,EAAC,CAC7BL,EAASK,CAAO,CAAA,MAAA,EAAU,EAAC,CAC3BwB,CAAgB,CAAA,iBAAA,CAAkBxS,CAAG,CAC3CsS,CAAAA,CAAAA,CAAqBE,CAAa,CAAI9G,CAAAA,CAAAA,CAAAxK,IAAA,EACjCoR,CAAAA,CAAAA,CAAqBE,CAAa,CAAA,CAAA,CADD,CAEpC,MAAA,CAAQH,YAAYnS,CAAQU,CAAAA,CAAAA,CAAAA,CAAA0R,EAAqBE,CAAa,CAAA,GAAlC,YAAA5R,CAAqC,CAAA,MAAM,CACvE,CAAA,OAAA,CAASyR,WAAYrH,CAAAA,CAAAA,CAAAA,CAASW,EAAA2G,CAAqBE,CAAAA,CAAa,IAAlC,IAAA7G,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAqC,OAAO,CAC1E,CAAA,MAAA,CAAQ0G,WAAY1B,CAAAA,CAAAA,CAAAA,CAAQkB,CAAAS,CAAAA,CAAAA,CAAqBE,CAAa,CAAlC,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAX,CAAqC,CAAA,MAAM,CACzE,CAAA,EAAA,CAEF,OAAOS,CACT,CAEgB,SAAA,yBAAA,CAA0BzS,CAAoB,CAAA,CAC5D,MAAMC,CAAa,CAAA,GACnB,OAAAD,CAAAA,EAAA,MAAAA,CAAU,CAAA,OAAA,CAASP,CAAY,EAAA,CAC7B,KAAM,CAACH,EAAWyJ,CAAO,CAAA,CAAItJ,EAAQ,KAAM,CAAA,GAAG,EACzCQ,CAAWX,CAAAA,CAAS,CACvBW,GAAAA,CAAAA,CAAWX,CAAS,CAAA,CAAI,CACtB,QAAU,CAAA,GACV,MAAQ,CAAA,GACR,MAAQ,CAAA,EACV,CAAA,CAAA,CAEFW,CAAWX,CAAAA,CAAS,EAAE,QAAS,CAAA,IAAA,CAAKG,CAAO,CAAA,CAC3CQ,CAAWX,CAAAA,CAAS,EAAE,MAAO,CAAA,IAAA,CAAK,CAAGA,EAAAA,CAAAA,CAAAA,CAAAA,EAAayJ,CAAS,CAAA,CAAA,EAC7D,GAEO9I,CACT,UAEgB,uBAAwBkL,CAAAA,CAAAA,CAAmBnL,EAAoB,CAC7EA,CAAAA,CAAWA,CAAS,CAAA,GAAA,CAAKP,CAAYA,EAAAA,CAAAA,CAAQ,QAAQ,UAAY,CAAA,EAAE,CAAC,CAEpE,CAAA,MAAMQ,EAAa,yBAA0BD,CAAAA,CAAQ,CAErD,CAAA,IAAA,KAAW,CAAC4S,CAAAA,CAAGzB,CAAM,CAAK,GAAA,MAAA,CAAO,QAAQlR,CAAU,CAAA,CAC5CkR,EAAO,OAGVA,CAAAA,CAAAA,CAAO,OAAUqB,CAAAA,WAAAA,CAAYrB,CAAO,CAAA,OAAA,CAAShG,CAAO,CAFpDgG,CAAAA,CAAAA,CAAO,OAAUhG,CAAAA,CAAAA,CAInBgG,CAAO,CAAA,MAAA,CAAS,CAAC,cAAgB,CAAA,iBAAiB,CAEpD,CAAA,OAAOlR,CACT;;AC9PO,MAAM,UAAa,CAAA,CAExB,cAAgB,CAAA,CACd,OAAS,CAAA,iBAAA,CACT,IAAM,CAAA,IACR,CACA,CAAA,aAAA,CAAe,CACb,OAAA,CAAS,iBACT,IAAM,CAAA,IACR,CACA,CAAA,sBAAA,CAAwB,CACtB,OAAA,CAAS,yBACT,CAAA,IAAA,CAAM,IACR,CAAA,CACA,sBAAwB,CAAA,CACtB,OAAS,CAAA,yBAAA,CACT,IAAM,CAAA,IACR,EACA,8BAAgC,CAAA,CAC9B,OAAS,CAAA,iCAAA,CACT,IAAM,CAAA,IACR,CAEA,CAAA,mBAAA,CAAqB,CACnB,OAAA,CAAS,sBACT,CAAA,IAAA,CAAM,IACR,CAAA,CACA,kBAAoB,CAAA,CAClB,QAAS,qBACT,CAAA,IAAA,CAAM,IACR,CAAA,CACA,2BAA6B,CAAA,CAC3B,OAAS,CAAA,8BAAA,CACT,IAAM,CAAA,IACR,CACA,CAAA,2BAAA,CAA6B,CAC3B,OAAA,CAAS,8BACT,CAAA,IAAA,CAAM,IACR,CAEA,CAAA,aAAA,CAAe,CACb,OAAA,CAAS,gBACT,CAAA,IAAA,CAAM,GACR,CAAA,CACA,oBAAsB,CAAA,CACpB,OAAS,CAAA,uBAAA,CACT,IAAM,CAAA,IACR,CACA,CAAA,qBAAA,CAAuB,CACrB,OAAS,CAAA,wBAAA,CACT,IAAM,CAAA,IACR,CACA,CAAA,oBAAA,CAAsB,CACpB,OAAA,CAAS,uBACT,CAAA,IAAA,CAAM,IACR,CAAA,CACA,kBAAoB,CAAA,CAClB,OAAS,CAAA,qBAAA,CACT,KAAM,IACR,CAAA,CACA,mBAAqB,CAAA,CACnB,OAAS,CAAA,sBAAA,CACT,IAAM,CAAA,IACR,CACA,CAAA,kBAAA,CAAoB,CAClB,OAAA,CAAS,qBACT,CAAA,IAAA,CAAM,IACR,CAAA,CACA,qBAAsB,CACpB,OAAA,CAAS,uBACT,CAAA,IAAA,CAAM,IACR,CAAA,CACA,yBAA2B,CAAA,CACzB,OAAS,CAAA,4BAAA,CACT,IAAM,CAAA,IACR,CAEA,CAAA,iBAAA,CAAmB,CACjB,OAAA,CAAS,qBACT,IAAM,CAAA,GACR,CAEA,CAAA,yBAAA,CAA2B,CACzB,OAAA,CAAS,4BACT,CAAA,IAAA,CAAM,GACR,CAAA,CAEA,qBAAuB,CAAA,CACrB,OAAS,CAAA,yBAAA,CACT,IAAM,CAAA,KACR,CACF,CAEa,CAAA,eAAA,CAAkB,CAC7B,eAAA,CAAiB,CACf,OAAA,CAAS,kBACT,CAAA,IAAA,CAAM,CACR,CAAA,CACA,eAAiB,CAAA,CACf,OAAS,CAAA,kBAAA,CACT,IAAM,CAAA,CACR,EACA,qBAAuB,CAAA,CACrB,OAAS,CAAA,wBAAA,CACT,IAAM,CAAA,CACR,CACA,CAAA,YAAA,CAAc,CACZ,OAAA,CAAS,eACT,CAAA,IAAA,CAAM,CACR,CAAA,CACA,kBAAoB,CAAA,CAClB,QAAS,qBACT,CAAA,IAAA,CAAM,CACR,CAAA,CACA,OAAS,CAAA,CACP,OAAS,CAAA,UAAA,CACT,IAAM,CAAA,CACR,CACA,CAAA,YAAA,CAAc,CACZ,OAAA,CAAS,eACT,CAAA,IAAA,CAAM,CACR,CACA,CAAA,gBAAA,CAAkB,CAChB,OAAA,CAAS,mBACT,CAAA,IAAA,CAAM,CACR,CAAA,CACA,yBAA2B,CAAA,CACzB,OAAS,CAAA,4BAAA,CACT,IAAM,CAAA,CACR,CACF,WAKgB,gBAAiBE,CAAAA,CAAAA,CAAuB2C,CAA2B,CAAA,CACjF,KAAM,CAAE,OAAAmG,CAAAA,CAAAA,CAAS,IAAA4J,CAAAA,CAAK,CAAI,CAAA,eAAA,CAAgB1S,CAAG,CAAA,CAC7C,OAAO,CACL,QAAS2C,CAAU,CAAA,CAAA,EAAGmG,CAAWnG,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAYmG,CAC7C,CAAA,IAAA,CAAA4J,CACF,CACF,CAEO,SAAS,WAAY1S,CAAAA,CAAAA,CAAkB2C,CAA2B,CAAA,CACvE,KAAM,CAAE,QAAAmG,CAAS,CAAA,IAAA,CAAA4J,CAAK,CAAA,CAAI,UAAW1S,CAAAA,CAAG,CACxC,CAAA,OAAO,CACL,OAAA,CAAS2C,CAAU,CAAA,CAAA,EAAGmG,CAAWnG,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAYmG,CAC7C,CAAA,IAAA,CAAA4J,CACF,CACF;;AC9IgB,SAAA,YAAA,CAAa3P,CAAU4P,CAAAA,CAAAA,CAAwC,CAC7E,OAAI,KAAA,CAAM,OAAQ5P,CAAAA,CAAG,CACf,CAAA,OAAO4P,GAAkB,WAAe5P,EAAAA,CAAAA,CAAI,MACvCA,CAAAA,CAAAA,CAAI,KAAM4P,CAAAA,CAAa,EAEvB,CAGJ,CAAA,CAAA,CAAA,CACT,CAEO,SAAS,aAAclQ,CAAAA,CAAAA,CAAU,CACtC,OAAO,MAAO,CAAA,cAAA,CAAeA,CAAG,CAAA,GAAM,MAAO,CAAA,SAAA,EAAa,OAAO,IAAKA,CAAAA,CAAG,CAAE,CAAA,MAC7E,CAEO,SAAS,YAAYsJ,CAAgC,CAAA,CAC1D,OAAO,OAAOA,CAAU,EAAA,WAC1B,CAEgB,SAAA,aAAA,CAAcA,CAAY6G,CAAAA,CAAAA,CAAoC,CAC5E,OAAIA,CAAY,EAAA,WAAA,CAAY7G,CAAK,CAAA,CAAU,CAEpC,CAAA,CAAA,OAAOA,CAAU,EAAA,QAAA,EAAY,EAAQA,CAAM,CAAA,IAAA,EAAO,CAAA,MAC3D,CAEO,SAAS,aAAcA,CAAAA,CAAAA,CAAY6G,CAAmB,CAAA,CAC3D,OAAIA,CAAAA,EAAY,WAAY7G,CAAAA,CAAK,EAAU,CAEpC,CAAA,CAAA,OAAOA,CAAU,EAAA,QAAA,EAAY,CAAC,KAAA,CAAMA,CAAK,CAClD,CAIO,SAAS,mBAAoB8G,CAAAA,CAAAA,CAA8BxT,CAAgC,CAAA,CAChG,KAAM,CAAE,kBAAA,CAAAc,CAAmB,CAAA,CAAId,CACzByT,CAAAA,CAAAA,CAAc,OAAO,IAAKD,CAAAA,CAAAA,CAAQ,UAAU,CAAA,CAC5CE,CAAa,CAAA,MAAA,CAAO,KAAK5S,CAAkB,CAAA,CACjD,IAAI6S,CAAAA,CAAa,CAEjB,CAAA,CAAA,OAAKC,UAAWF,CAAAA,CAAAA,CAAYD,CAAW,CAAA,EAEvCA,CAAY,CAAA,OAAA,CAAS9S,CAAQ,EAAA,CAC3B,KAAM,CAAE,QAAA,CAAAH,CAAU,CAAA,OAAA,CAAAmL,CAAS,CAAA,MAAA,CAAA2F,CAAO,CAAA,CAAIkC,CAAQ,CAAA,UAAA,CAAW7S,CAAG,CAAA,CACtDE,CAASgT,CAAAA,iBAAAA,CAAkBrT,CAAQ,CACnC6R,CAAAA,CAAAA,CAAoBvR,CAAmBH,CAAAA,CAAG,CAE9C,CAAA,CAAA,CAACiT,UAAWE,CAAAA,sBAAAA,CAAuBnT,CAAK0R,CAAAA,CAAiB,CAAGxR,CAAAA,CAAM,CAClE,EAAA,CAAC+S,WAAWvB,CAAkB,CAAA,OAAA,CAAS1G,CAAO,CAAA,EAC9C,CAACiI,UAAAA,CAAWvB,EAAkB,MAAQf,CAAAA,CAAM,CAE5CqC,IAAAA,CAAAA,CAAa,CAEjB,CAAA,EAAA,CAAC,EAEMA,CAf0C,EAAA,CAAA,CAgBnD,CAEO,SAAS,cAAepT,CAAAA,CAAAA,CAAY,CACzC,OAAI,aAAcA,CAAAA,CAAAA,CAAO,CAAK,CAAA,CAAA,EAAKA,CAAM,CAAA,QAAA,CAAS,GAAG,CACrCA,CAAAA,CAAAA,CAAM,KAAM,CAAA,GAAG,CAChB,CAAA,MAAA,GAAW,CAEnB,CAAA,CAAA,CACT,CAEO,SAAS,gBAAiBA,CAAAA,CAAAA,CAAY,CAC3C,GAAI,cAAcA,CAAO,CAAA,CAAA,CAAK,CAAKA,EAAAA,CAAAA,CAAM,QAAS,CAAA,GAAG,CAAG,CAAA,CACtD,MAAMwT,CAAAA,CAAQxT,CAAM,CAAA,KAAA,CAAM,GAAG,CAAA,CAC7B,GAAIwT,CAAM,CAAA,MAAA,GAAW,CAAG,CAAA,CACtB,MAAMxK,CAAAA,CAAUwK,EAAM,CAAC,CAAA,CAAI,GAAMA,CAAAA,CAAAA,CAAM,CAAC,CAAA,CACxC,OAAO,CAAC,CAACA,CAAM,CAAA,CAAC,CAAK,EAAA,cAAA,CAAexK,CAAO,CAAA,CAAA,CAG/C,OAAO,CAAA,CACT,CAEO,SAAS,UAAWhJ,CAAAA,CAAAA,CAAY,CACrC,GAAI,aAAA,CAAcA,CAAO,CAAA,CAAA,CAAK,CAC5B,CAAA,GAAI,CAEF,OAAO,OADK,IAAI,GAAIA,CAAAA,CAAK,CACH,EAAA,WACxB,OAASiB,CAAP,CAAA,CACA,OAAO,CAAA,CACT,CAEF,OAAO,CACT,CAAA,CAEgB,SAAA,gBAAA,CAAiBkL,CAA2C,CAAA,CAxG5E,IAAAnL,CAAAA,CAyGE,QAAOA,CAAAmL,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAO,QAAP,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAnL,EAAiB,SAC1B,CAEgB,SAAA,eAAA,CAAgBmL,CAA0C,CAAA,CACxE,OAAOA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAO,CAAA,KAChB,CAEO,SAAS,iBAAkBA,CAAAA,CAAAA,CAAY4F,CAAgB,CAAA,CAC5D,IAAIvN,CAAAA,CAAqB,IACzB,CAAA,OAAK,cAAc2H,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAO,CAAA,SAAA,CAAW,CAAK,CAAA,CAAA,GACxC3H,CAAQiP,CAAAA,gBAAAA,CACN,oBACA,CAAA,CAAA,EAAG1B,CACL,CAAA,yCAAA,CAAA,CAAA,CAAA,CAGKvN,CACT,UAEgB,+BAAgC2H,CAAAA,CAAAA,CAA6B,CAC3E,IAAIuH,CAAQ,CAAA,CAAA,CAAA,CACZ,OAAI,YAAA,CAAavH,CAAK,CAAA,CAChBA,CAAM,CAAA,MAAA,GACRuH,CAAQvH,CAAAA,CAAAA,CAAM,MAAOwH,CAAc,EAAA,aAAA,CAAcA,CAAM,CAAA,CAAA,CAAK,CAAC,CAAA,CAAA,CAG/DD,EAAQ,CAGHA,CAAAA,CAAAA,CACT,CAEO,SAAS,aAActT,CAAAA,CAAAA,CAAaE,EAAayC,CAAiB,CAAA,CACvE,IAAIyB,CAAAA,CAAqB,IAEzB,CAAA,OAAI,YAAalE,CAAAA,CAAM,CAAKA,EAAAA,CAAAA,CAAO,MACjCA,CAAAA,CAAAA,CAAO,OAAShB,CAAAA,CAAAA,EAAe,CACzBkF,CACC,EAAA,cAAA,CAAelF,CAAK,CAAA,GACvBkF,CAAQoP,CAAAA,WAAAA,CACN,oBACA,CAAA,CAAA,EAAG7Q,CAAkBzD,CAAAA,QAAAA,EAAAA,CAAAA,CAAAA,6DAAAA,CACvB,CAEJ,EAAA,CAAC,CACS,CAAA,cAAA,CAAec,CAAG,CAC5BoE,GAAAA,CAAAA,CAAQoP,WACN,CAAA,oBAAA,CACA,CAAG7Q,EAAAA,CAAAA,CAAAA,+KAAAA,CACL,CAGKyB,CAAAA,CAAAA,CACT,CAEO,SAAS,sBAAuBtE,CAAAA,CAAAA,CAAiB6R,CAAgBjP,CAAAA,CAAAA,CAAc,CACpF,IAAI0B,CAAAA,CAAqB,IACzB,CAAA,OAAA,MAAA,CAAO,OAAQtE,CAAAA,CAAU,EAAE,OAAQ,CAAA,CAAC,CAACE,CAAAA,CAAKb,CAAS,CAAA,GAAqB,CACtE,GAAIiF,CAAAA,CAAO,OACX,MAAMqP,CAAmB,CAAA,aAAA,CACvBzT,CACAmT,CAAAA,sBAAAA,CAAuBnT,CAAKb,CAAAA,CAAS,CACrC,CAAA,CAAA,EAAGwS,CAAUjP,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CACf,EACI+Q,CACFrP,GAAAA,CAAAA,CAAQqP,CAEZ,EAAA,CAAC,CAEMrP,CAAAA,CACT,CAEO,SAAS,eAAgBvE,CAAAA,CAAAA,CAAe8C,CAAiB,CAAA,CAC9D,IAAIyB,CAAAA,CAAqB,KACzB,OAAI,YAAA,CAAavE,CAAQ,CAAA,CACvBA,CAAS,CAAA,OAAA,CAASP,CAAiB,EAAA,CAC7B8E,CACC,EAAA,gBAAA,CAAiB9E,CAAO,CAAA,GAC3B8E,CAAQoP,CAAAA,WAAAA,CACN,uBACA,CAAG7Q,EAAAA,CAAAA,CAAAA,UAAAA,EAAoBrD,CACzB,CAAA,qEAAA,CAAA,CAAA,EAEJ,CAAC,CAAA,CAED8E,EAAQoP,WACN,CAAA,sBAAA,CACA,CAAG7Q,EAAAA,CAAAA,CAAAA,yFAAAA,CACL,CAGKyB,CAAAA,CACT,CAEgB,SAAA,wBAAA,CAAyB2H,CAAY4F,CAAAA,CAAAA,CAAgB,CACnE,IAAIvN,CAAqB,CAAA,IAAA,CACzB,OAAO,MAAA,CAAA,MAAA,CAAO2H,CAAK,CAAA,CAAE,OAAS5M,CAAAA,CAAAA,EAAmB,CAC/C,GAAIiF,CAAAA,CAAO,OACX,MAAMsP,CAAqB,CAAA,eAAA,CAAgBvU,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAW,CAAA,QAAA,CAAU,CAAGwS,EAAAA,CAAAA,CAAAA,UAAAA,CAAkB,CACjF+B,CAAAA,CAAAA,GACFtP,EAAQsP,CAEZ,EAAA,CAAC,CAEMtP,CAAAA,CACT,CAEO,SAAS,cAAejF,CAAAA,CAAAA,CAAgBwD,CAAiB,CAAA,CAC9D,IAAIyB,CAAAA,CAAqB,IACzB,CAAA,OAAK,gCAAgCjF,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAW,CAAA,OAAO,CAK3C,CAAA,+BAAA,CAAgCA,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAW,MAAM,CAAA,GAC3DiF,CAAQoP,CAAAA,WAAAA,CACN,qBACA,CAAG7Q,EAAAA,CAAAA,CAAAA,mEAAAA,CACL,CARAyB,CAAAA,CAAAA,CAAAA,CAAQoP,WACN,CAAA,qBAAA,CACA,CAAG7Q,EAAAA,CAAAA,CAAAA,qEAAAA,CACL,CAQKyB,CAAAA,CACT,CAEO,SAAS,uBAAwB2H,CAAAA,CAAAA,CAAY4F,EAAgB,CAClE,IAAIvN,CAAqB,CAAA,IAAA,CACzB,OAAO,MAAA,CAAA,MAAA,CAAO2H,CAAK,CAAA,CAAE,OAAS5M,CAAAA,CAAAA,EAAmB,CAC/C,GAAIiF,CAAO,CAAA,OACX,MAAMuP,CAAoB,CAAA,cAAA,CAAexU,CAAW,CAAA,CAAA,EAAGwS,CAAmB,CAAA,WAAA,CAAA,CAAA,CACtEgC,CACFvP,GAAAA,CAAAA,CAAQuP,CAEZ,EAAA,CAAC,CAEMvP,CAAAA,CACT,CAEO,SAAS,0BAA0B2H,CAAY4F,CAAAA,CAAAA,CAAgBjP,CAAc,CAAA,CAClF,IAAI0B,CAAAA,CAAqB,KACzB,GAAI2H,CAAAA,EAAS,aAAcA,CAAAA,CAAK,CAAG,CAAA,CACjC,MAAM4H,CAAoB,CAAA,uBAAA,CAAwB5H,CAAO4F,CAAAA,CAAM,CAC3DgC,CAAAA,CAAAA,GACFvP,CAAQuP,CAAAA,CAAAA,CAAAA,CAEV,MAAMF,CAAAA,CAAmB,sBAAuB1H,CAAAA,CAAAA,CAAO4F,CAAQjP,CAAAA,CAAI,EAC/D+Q,CACFrP,GAAAA,CAAAA,CAAQqP,CAGVrP,EAAAA,CAAAA,KAAAA,CAAAA,CAAQiP,gBACN,CAAA,oBAAA,CACA,CAAG1B,EAAAA,CAAAA,CAAAA,EAAAA,EAAWjP,CAChB,CAAA,8BAAA,CAAA,CAAA,CAGF,OAAO0B,CACT,CAEO,SAAS,kBAAkB2H,CAAY4F,CAAAA,CAAAA,CAAgB,CAC5D,IAAIvN,CAAqB,CAAA,IAAA,CACzB,GAAI2H,CAAAA,EAAS,aAAcA,CAAAA,CAAK,CAAG,CAAA,CACjC,MAAM4H,CAAAA,CAAoB,wBAAwB5H,CAAO4F,CAAAA,CAAM,CAC3DgC,CAAAA,CAAAA,GACFvP,CAAQuP,CAAAA,CAAAA,CAAAA,CAEV,MAAMD,CAAqB,CAAA,wBAAA,CAAyB3H,CAAO4F,CAAAA,CAAM,CAC7D+B,CAAAA,CAAAA,GACFtP,EAAQsP,CAGVtP,EAAAA,CAAAA,KAAAA,CAAAA,CAAQiP,gBACN,CAAA,oBAAA,CACA,CAAG1B,EAAAA,CAAAA,CAAAA,0CAAAA,CACL,CAGF,CAAA,OAAOvN,CACT,CAEgB,SAAA,YAAA,CAAa2H,CAAmD,CAAA,CAC9E,OAAO,aAAcA,CAAAA,CAAAA,CAAM,QAAU,CAAA,CAAA,CAAI,CAC3C,CAEgB,SAAA,aAAA,CACdA,CACA6G,CAAAA,CAAAA,CACyC,CACzC,IAAIU,CAAQ,CAAA,CAAA,CAAA,CAEZ,OAAIV,CAAY,EAAA,CAAC7G,CAAOuH,CAAAA,CAAAA,CAAQ,CACvBvH,CAAAA,CAAAA,CAAAA,EAAS,YAAaA,CAAAA,CAAK,CAAKA,EAAAA,CAAAA,CAAM,MAC7CA,EAAAA,CAAAA,CAAM,OAASmE,CAAAA,CAAAA,EAAwC,CACrDoD,CAAQ,CAAA,YAAA,CAAapD,CAAK,EAC5B,CAAC,CAAA,CAGIoD,CACT,CAEO,SAAS,SAAUvH,CAAAA,CAAAA,CAAY,CACpC,OAAO,OAAOA,CAAU,EAAA,QAC1B,CAEO,SAAS,aAAcA,CAAAA,CAAAA,CAAY,CACxC,OAAO,OAAOA,CAAAA,EAAU,WAAe,EAAA,OAAOA,CAAU,GAAA,IAC1D,CAEgB,SAAA,kBAAA,CAAmBA,CAAoC,CAAA,CAIrE,OAHI,EAAA,CAACA,CACD,EAAA,OAAOA,CAAU,EAAA,QAAA,EACjB,CAACA,CAAAA,CAAM,IAAQ,EAAA,CAAC,cAAcA,CAAM,CAAA,IAAA,CAAM,CAAK,CAAA,CAAA,EAC/C,CAACA,CAAAA,CAAM,OAAW,EAAA,CAAC,aAAcA,CAAAA,CAAAA,CAAM,OAAS,CAAA,CAAA,CAAK,CAG3D,CAAA,UAEgB,cAAe6H,CAAAA,CAAAA,CAAc,CAE3C,OADI,EAAYA,WAAAA,CAAAA,CAAO,GACnB,CAAC,aAAA,CAAcA,CAAQ,CAAA,MAAA,CAAQ,CAAK,CAAA,CAAA,CAE1C,CAEgB,SAAA,eAAA,CAAgBrK,CAAe,CAAA,CAI7C,OAHI,EAAA,WAAA,CAAYA,CAAQ,CAAA,EACpB,WAAYA,CAAAA,CAAAA,CAAS,MAAM,CAAA,EAAK,WAAYA,CAAAA,CAAAA,CAAS,KAAK,CAC1D,EAAA,CAAC,aAAcA,CAAAA,CAAAA,CAAS,EAAI,CAAA,CAAA,CAAK,CACjC,EAAA,CAAC,aAAcA,CAAAA,CAAAA,CAAS,OAAS,CAAA,CAAA,CAAK,CAE5C,CAAA,UAEgB,YAAa5E,CAAAA,CAAAA,CAAY,CAEvC,OADI,EAAYA,WAAAA,CAAAA,CAAK,CACjB,EAAA,CAAC,aAAcA,CAAAA,CAAAA,CAAM,IAAM,CAAA,CAAA,CAAK,CAEtC,CAAA,UAEgB,wBAAyB7E,CAAAA,CAAAA,CAAqC8I,CAAiB,CAAA,CAG7F,OAFI,EAAA,CAAC,eAAeA,CAAO,CAAA,EAEvB,CADWiL,mBAAAA,CAAoB/T,CAAU,CAAA,CACjC,SAAS8I,CAAO,CAAA,CAG9B,CAEO,SAAS,wBACd9I,CAAAA,CAAAA,CACA8I,CACA+I,CAAAA,CAAAA,CACA,CACA,OAAK,aAAcA,CAAAA,CAAAA,CAAQ,CAAK,CAAA,CAAA,CAChBmC,+BAA+BhU,CAAY8I,CAAAA,CAAO,CACnD,CAAA,QAAA,CAAS+I,CAAM,CAAA,CAFY,CAG5C,CAAA,CAEgB,SAAA,sBAAA,CACd7R,CACA8I,CAAAA,CAAAA,CACAmL,CACA,CAAA,CACA,OAAK,aAAcA,CAAAA,CAAAA,CAAW,CAAK,CAAA,CAAA,CACpBC,6BAA8BlU,CAAAA,CAAAA,CAAY8I,CAAO,CAAA,CAClD,QAASmL,CAAAA,CAAS,CAFa,CAAA,CAAA,CAG/C,CAEO,SAAS,uBACd5T,CACAL,CAAAA,CAAAA,CACA6C,CACA,CAAA,CACA,IAAIyB,CAAAA,CAAqB,KAEzB,MAAM6P,CAAAA,CAAiBC,CAAgB/T,CAAAA,CAAkB,CACnDgU,CAAAA,CAAAA,CAAiBC,EAAwBtU,CAAU,CAAA,CACnDuU,CAAiB,CAAA,MAAA,CAAO,IAAKJ,CAAAA,CAAc,CAC3CK,CAAAA,CAAAA,CAAiB,MAAO,CAAA,IAAA,CAAKH,CAAc,CAAA,CAE3CI,CAAiBC,CAAAA,CAAAA,CAA0B,OAAO,IAAKrU,CAAAA,CAAkB,CAAC,CAAA,CAC1EsU,CAAiBD,CAAAA,CAAAA,CAA0B,MAAO,CAAA,IAAA,CAAK1U,CAAU,CAAC,CAClE4U,CAAAA,CAAAA,CAA4BH,CAAe,CAAA,MAAA,CAC9CpV,GAAc,CAACsV,CAAAA,CAAe,QAAStV,CAAAA,CAAS,CACnD,CAAA,CAEA,OAAIuV,CAAAA,CAA0B,MAC5BtQ,GAAAA,CAAAA,CAAQiP,gBACN,CAAA,2BAAA,CACA,CAAG1Q,EAAAA,CAAAA,CAAAA;AAAA,gBAAA,EACS+R,EAA0B,QAAS,EAAA,CAAA;AAAA,gBAAA,EACnC,MAAO,CAAA,IAAA,CAAK5U,CAAU,CAAA,CAAE,UACtC,CAAA,CAAA,CAAA,CAAA,CAGGmT,UAAWoB,CAAAA,CAAAA,CAAgBC,CAAc,CAAA,GAC5ClQ,CAAQiP,CAAAA,gBAAAA,CACN,4BACA,CAAG1Q,EAAAA,CAAAA,CAAAA;AAAA,gBAAA,EACS0R,EAAe,QAAS,EAAA,CAAA;AAAA,gBAAA,EACxBC,CAAe,CAAA,QAAA,EAC7B,CAAA,CAAA,CAAA,CAAA,CAIF,OAAO,IAAKxU,CAAAA,CAAU,CAAE,CAAA,OAAA,CAASZ,GAAU,CAEzC,GADI,CAACA,CAAAA,CAAM,SAAS,GAAG,CAAA,EACnBkF,CAAO,CAAA,OACX,MAAMlE,CAASgT,CAAAA,iBAAAA,CAAkBpT,CAAWZ,CAAAA,CAAK,EAAE,QAAQ,CAAA,CACtDgB,CAAO,CAAA,QAAA,CAAShB,CAAK,CACxBkF,GAAAA,CAAAA,CAAQiP,gBACN,CAAA,2BAAA,CACA,GAAG1Q,CAAoEzD,CAAAA,0DAAAA,EAAAA,CAAAA,CAAAA;AAAA,kBAC3DA,EAAAA,CAAAA,CAAAA;AAAA,kBACAgB,EAAAA,CAAAA,CAAO,QAAS,EAAA,CAAA,CAC9B,CAEJ,EAAA,CAAC,EAEDmU,CAAe,CAAA,OAAA,CAASnV,CAAU,EAAA,CAC5BkF,CAEC6O,GAAAA,UAAAA,CAAWgB,EAAe/U,CAAK,CAAA,CAAE,OAASiV,CAAAA,CAAAA,CAAejV,CAAK,CAAA,CAAE,OAAO,CAKhE+T,CAAAA,UAAAA,CAAWgB,CAAe/U,CAAAA,CAAK,CAAE,CAAA,MAAA,CAAQiV,EAAejV,CAAK,CAAA,CAAE,MAAM,CAAA,GAC/EkF,CAAQiP,CAAAA,gBAAAA,CACN,4BACA,CAAG1Q,EAAAA,CAAAA,CAAAA,sDAAAA,EAAgEzD,CACrE,CAAA,CAAA,CAAA,CAAA,CARAkF,CAAQiP,CAAAA,gBAAAA,CACN,4BACA,CAAG1Q,EAAAA,CAAAA,CAAAA,wDAAAA,EAAkEzD,CACvE,CAAA,CAAA,CAAA,EAOJ,CAAC,CAAA,CAEMkF,CACT,CAEA,SAAS8P,CAAgBpU,CAAAA,CAAAA,CAA8C,CACrE,MAAMyE,EAAS,EAAC,CAChB,OAAO,MAAA,CAAA,IAAA,CAAKzE,CAAU,CAAA,CAAE,QAASE,CAAQ,EAAA,CAzb3C,IAAAY,CAAAA,CA2boCZ,CAAI,CAAA,QAAA,CAAS,GAAG,CAG9CuE,CAAAA,CAAAA,CAAOvE,CAAG,CAAA,CAAIF,CAAWE,CAAAA,CAAG,GAE5BY,CAAAd,CAAAA,CAAAA,CAAWE,CAAG,CAAA,CAAE,MAAhB,GAAA,IAAA,EAAAY,EAAwB,OAAS1B,CAAAA,CAAAA,EAAU,CACzCqF,CAAAA,CAAOrF,CAAK,CAAA,CAAI,CACd,OAASY,CAAAA,CAAAA,CAAWE,CAAG,CAAA,CAAE,OACzB,CAAA,MAAA,CAAQF,EAAWE,CAAG,CAAA,CAAE,MAC1B,EACF,CAEJ,EAAA,CAAC,CACMuE,CAAAA,CACT,CAEA,SAASiQ,CAA0B1U,CAAAA,CAAAA,CAAsB,CACvD,OAAO,CACL,GAAG,IAAI,GACLA,CAAAA,CAAAA,CAAW,GAAKX,CAAAA,CAAAA,EACdA,EAAU,QAAS,CAAA,GAAG,CAAIA,CAAAA,CAAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA,CAAIA,CACtD,CACF,CACF,CACF,CAEA,SAASiV,CAAAA,CAAwBtU,CAAqC,CAAA,CACpE,MAAMyE,CAAAA,CAAS,EACf,CAAA,OAAA,MAAA,CAAO,IAAKzE,CAAAA,CAAU,CAAE,CAAA,OAAA,CAASE,GAAQ,CAEvC,GADgCA,CAAI,CAAA,QAAA,CAAS,GAAG,CAAA,CAE9CuE,EAAOvE,CAAG,CAAA,CAAIF,CAAWE,CAAAA,CAAG,CACvB,CAAA,KAAA,CACL,MAAME,CAASgT,CAAAA,iBAAAA,CAAkBpT,CAAWE,CAAAA,CAAG,CAAE,CAAA,QAAQ,EACzDE,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,OAAA,CAAShB,CAAU,EAAA,CACzBqF,EAAOrF,CAAK,CAAA,CAAI,CACd,QAAA,CAAUY,CAAWE,CAAAA,CAAG,EAAE,QAAS,CAAA,MAAA,CAAQV,CACzCA,EAAAA,CAAAA,CAAQ,QAAS,CAAA,CAAA,EAAGJ,IAAQ,CAC9B,CAAA,CACA,OAASY,CAAAA,CAAAA,CAAWE,CAAG,CAAA,CAAE,QACzB,MAAQF,CAAAA,CAAAA,CAAWE,CAAG,CAAA,CAAE,MAC1B,EACF,IAEJ,CAAC,CAAA,CACMuE,CACT,CAEgB,SAAA,oBAAA,CAAqBjB,EAAgBqR,CAA0C,CAAA,CAC7F,OAAO,aAAA,CAAcrR,CAAQ,CAAA,CAAA,CAAK,CAAKA,EAAAA,CAAAA,EAAUqR,CAAW,CAAA,GAAA,EAAOrR,CAAUqR,EAAAA,CAAAA,CAAW,GAC1F;;AC3egB,SAAA,QAAA,EAA6B,CAC3C,MAAMrT,CAAAA,CAAMsT,gBACZ,CAAA,OAAO,IAAI,OAAS3Q,CAAAA,CAAAA,EAAY,CAC9B,OAAQ3C,GACN,KAAKuT,QAAQ,OACX5Q,CAAAA,CAAAA,CAAQ,wBAAwB,CAAA,CAChC,MACF,KAAK4Q,QAAQ,WACX5Q,CAAAA,CAAAA,CAAQ,4BAA4B,CAAA,CACpC,MACF,KAAK4Q,OAAAA,CAAQ,IACX5Q,CAAAA,CAAAA,CAAQ,qBAAqB,CAAA,CAC7B,MACF,QACEA,CAAAA,CAAQ,EAAI,EAChB,CACF,CAAC,CACH,CAEgB,SAAA,sBAAA,EAAyB,CACvC,OAAO6Q,SAAAA,KAAe,SAAW,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,SAAA,CAAA,MAAA,CACnC,CAEA,eAAsB,4BAA+C,CAEnE,GAAIC,eAAmB,EAAA,OAAO,QAAW,WAAgB,GAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAgB,OAAS,CAAA,CAAA,CAChF,MAAMC,CAAQ,CAAA,MAAO,2BAAgB,OAAQ,CAAA,KAAA,EAAA,CAAA,CAC7C,OAAOA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAO,CAAA,WAAA,CAGhB,OAAO,CACT,CAAA,UAEgB,mBAAsB,EAAA,CAIpC,OAAO,CACT,CAAA,CAEgB,SAAA,wBAAA,CAAyBC,EAA+C,CAEtF,OADYL,gBACC,EACX,KAAKC,OAAQ,CAAA,OAAA,CACX,+BAAgCI,CAAAA,CAAe,EAC/C,MACF,KAAKJ,QAAQ,WACX,CAAA,mCAAA,CAAoCI,CAAe,CACnD,CAAA,MACF,KAAKJ,OAAAA,CAAQ,KAEX,MAGJ,CACF,UAEgB,+BAAgCI,CAAAA,CAAAA,CAA+C,CACzF,CAACF,eAAmBD,EAAAA,SAAAA,KACtB,MAAO,CAAA,gBAAA,CAAiB,SAAU,IAAMG,CAAAA,CAAgB,CAAI,CAAA,CAAC,EAC7D,MAAO,CAAA,gBAAA,CAAiB,UAAW,IAAMA,CAAAA,CAAgB,EAAK,CAAC,CAAA,EAEnE,CAGO,SAAS,oCAAoCA,CAA+C,CAAA,CAC7FF,eAAmB,EAAA,OAAO,QAAW,WAAgB,GAAA,MAAA,EAAA,IAAA,EAAA,MAAA,CAAgB,WACtE,MAAgB,EAAA,IAAA,EAAA,MAAA,CAAA,OAAA,CAAQ,iBAAkBC,CAAeC,EAAAA,CAAAA,CAAgBD,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAO,WAAW,CAEhG,CAAA,EAAA;;ACvEA,MAAME,CAAc,CAAA,EAEb,CAAA,MAAe,WAAY,CAChC,OAAO,GAAiBlV,CAAAA,CAAAA,CAAa,CACnC,OAAOkV,CAAYlV,CAAAA,CAAG,CACxB,CAEA,OAAO,GAAIA,CAAAA,CAAAA,CAAaJ,CAAgB,CAAA,CACtCsV,CAAYlV,CAAAA,CAAG,EAAIJ,EACrB,CAEA,OAAO,MAAA,CAAOI,EAAa,CACzB,OAAOkV,CAAYlV,CAAAA,CAAG,EACxB,CACF;;;;"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js b/node_modules/@walletconnect/utils/dist/index.umd.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e76a0973fdda33fb46b864846fee9be7495101d1 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.umd.js -@@ -0,0 +1,31 @@ -+(function(K,dr){typeof exports=="object"&&typeof module<"u"?dr(exports):typeof define=="function"&&define.amd?define(["exports"],dr):(K=typeof globalThis<"u"?globalThis:K||self,dr(K["@walletconnect/utils"]={}))})(this,function(K){"use strict";const dr=":";function ua(t){const[e,r]=t.split(dr);return{namespace:e,reference:r}}function ha(t){const{namespace:e,reference:r}=t;return[e,r].join(dr)}function Bn(t){const[e,r,i]=t.split(dr);return{namespace:e,reference:r,address:i}}function ca(t){const{namespace:e,reference:r,address:i}=t;return[e,r,i].join(dr)}function On(t,e){const r=[];return t.forEach(i=>{const f=e(i);r.includes(f)||r.push(f)}),r}function da(t){const{address:e}=Bn(t);return e}function la(t){const{namespace:e,reference:r}=Bn(t);return ha({namespace:e,reference:r})}function Ys(t,e){const{namespace:r,reference:i}=ua(e);return ca({namespace:r,reference:i,address:t})}function Js(t){return On(t,da)}function ba(t){return On(t,la)}function Ws(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...f.accounts)}),r}function Qs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...ba(f.accounts))}),r}function Xs(t,e=[]){const r=[];return Object.keys(t).forEach(i=>{if(e.length&&!e.includes(i))return;const f=t[i];r.push(...zi(i,f))}),r}function zi(t,e){return t.includes(":")?[t]:e.chains||[]}var va=function(t,e,r){if(r||arguments.length===2)for(var i=0,f=e.length,n;i"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new iu:typeof navigator<"u"?ga(navigator.userAgent):hu()}function su(t){return t!==""&&au.reduce(function(e,r){var i=r[0],f=r[1];if(e)return e;var n=f.exec(t);return!!n&&[i,n]},!1)}function ga(t){var e=su(t);if(!e)return null;var r=e[0],i=e[1];if(r==="searchbot")return new ru;var f=i[1]&&i[1].split(".").join("_").split("_").slice(0,3);f?f.length=0;c--)(d=t[c])&&(n=(f<3?d(n):f>3?d(e,r,n):d(e,r))||n);return f>3&&n&&Object.defineProperty(e,r,n),n}function vu(t,e){return function(r,i){e(r,i,t)}}function pu(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function mu(t,e,r,i){function f(n){return n instanceof r?n:new r(function(d){d(n)})}return new(r||(r=Promise))(function(n,d){function c(x){try{A(i.next(x))}catch(E){d(E)}}function y(x){try{A(i.throw(x))}catch(E){d(E)}}function A(x){x.done?n(x.value):f(x.value).then(c,y)}A((i=i.apply(t,e||[])).next())})}function gu(t,e){var r={label:0,sent:function(){if(n[0]&1)throw n[1];return n[1]},trys:[],ops:[]},i,f,n,d;return d={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(d[Symbol.iterator]=function(){return this}),d;function c(A){return function(x){return y([A,x])}}function y(A){if(i)throw new TypeError("Generator is already executing.");for(;r;)try{if(i=1,f&&(n=A[0]&2?f.return:A[0]?f.throw||((n=f.return)&&n.call(f),0):f.next)&&!(n=n.call(f,A[1])).done)return n;switch(f=0,n&&(A=[A[0]&2,n.value]),A[0]){case 0:case 1:n=A;break;case 4:return r.label++,{value:A[1],done:!1};case 5:r.label++,f=A[1],A=[0];continue;case 7:A=r.ops.pop(),r.trys.pop();continue;default:if(n=r.trys,!(n=n.length>0&&n[n.length-1])&&(A[0]===6||A[0]===2)){r=0;continue}if(A[0]===3&&(!n||A[1]>n[0]&&A[1]=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function wa(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var i=r.call(t),f,n=[],d;try{for(;(e===void 0||e-- >0)&&!(f=i.next()).done;)n.push(f.value)}catch(c){d={error:c}}finally{try{f&&!f.done&&(r=i.return)&&r.call(i)}finally{if(d)throw d.error}}return n}function Au(){for(var t=[],e=0;e1||c(N,D)})})}function c(N,D){try{y(i[N](D))}catch(I){E(n[0][3],I)}}function y(N){N.value instanceof yi?Promise.resolve(N.value.v).then(A,x):E(n[0][2],N)}function A(N){c("next",N)}function x(N){c("throw",N)}function E(N,D){N(D),n.shift(),n.length&&c(n[0][0],n[0][1])}}function Mu(t){var e,r;return e={},i("next"),i("throw",function(f){throw f}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(f,n){e[f]=t[f]?function(d){return(r=!r)?{value:yi(t[f](d)),done:f==="return"}:n?n(d):d}:n}}function Eu(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Fn=="function"?Fn(t):t[Symbol.iterator](),r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r);function i(n){r[n]=t[n]&&function(d){return new Promise(function(c,y){d=t[n](d),f(c,y,d.done,d.value)})}}function f(n,d,c,y){Promise.resolve(y).then(function(A){n({value:A,done:c})},d)}}function Su(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function Du(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function Iu(t){return t&&t.__esModule?t:{default:t}}function Nu(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function Cu(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var Bu=Object.freeze({__proto__:null,__extends:du,get __assign(){return Tn},__rest:lu,__decorate:bu,__param:vu,__metadata:pu,__awaiter:mu,__generator:gu,__createBinding:yu,__exportStar:wu,__values:Fn,__read:wa,__spread:Au,__spreadArrays:xu,__await:yi,__asyncGenerator:_u,__asyncDelegator:Mu,__asyncValues:Eu,__makeTemplateObject:Su,__importStar:Du,__importDefault:Iu,__classPrivateFieldGet:Nu,__classPrivateFieldSet:Cu}),ki=ya(Bu),Un={},wi={},Aa;function Ou(){if(Aa)return wi;Aa=1,Object.defineProperty(wi,"__esModule",{value:!0}),wi.delay=void 0;function t(e){return new Promise(r=>{setTimeout(()=>{r(!0)},e)})}return wi.delay=t,wi}var Mr={},Ln={},Er={},xa;function Ru(){return xa||(xa=1,Object.defineProperty(Er,"__esModule",{value:!0}),Er.ONE_THOUSAND=Er.ONE_HUNDRED=void 0,Er.ONE_HUNDRED=100,Er.ONE_THOUSAND=1e3),Er}var qn={},_a;function Pu(){return _a||(_a=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.ONE_YEAR=t.FOUR_WEEKS=t.THREE_WEEKS=t.TWO_WEEKS=t.ONE_WEEK=t.THIRTY_DAYS=t.SEVEN_DAYS=t.FIVE_DAYS=t.THREE_DAYS=t.ONE_DAY=t.TWENTY_FOUR_HOURS=t.TWELVE_HOURS=t.SIX_HOURS=t.THREE_HOURS=t.ONE_HOUR=t.SIXTY_MINUTES=t.THIRTY_MINUTES=t.TEN_MINUTES=t.FIVE_MINUTES=t.ONE_MINUTE=t.SIXTY_SECONDS=t.THIRTY_SECONDS=t.TEN_SECONDS=t.FIVE_SECONDS=t.ONE_SECOND=void 0,t.ONE_SECOND=1,t.FIVE_SECONDS=5,t.TEN_SECONDS=10,t.THIRTY_SECONDS=30,t.SIXTY_SECONDS=60,t.ONE_MINUTE=t.SIXTY_SECONDS,t.FIVE_MINUTES=t.ONE_MINUTE*5,t.TEN_MINUTES=t.ONE_MINUTE*10,t.THIRTY_MINUTES=t.ONE_MINUTE*30,t.SIXTY_MINUTES=t.ONE_MINUTE*60,t.ONE_HOUR=t.SIXTY_MINUTES,t.THREE_HOURS=t.ONE_HOUR*3,t.SIX_HOURS=t.ONE_HOUR*6,t.TWELVE_HOURS=t.ONE_HOUR*12,t.TWENTY_FOUR_HOURS=t.ONE_HOUR*24,t.ONE_DAY=t.TWENTY_FOUR_HOURS,t.THREE_DAYS=t.ONE_DAY*3,t.FIVE_DAYS=t.ONE_DAY*5,t.SEVEN_DAYS=t.ONE_DAY*7,t.THIRTY_DAYS=t.ONE_DAY*30,t.ONE_WEEK=t.SEVEN_DAYS,t.TWO_WEEKS=t.ONE_WEEK*2,t.THREE_WEEKS=t.ONE_WEEK*3,t.FOUR_WEEKS=t.ONE_WEEK*4,t.ONE_YEAR=t.ONE_DAY*365}(qn)),qn}var Ma;function Ea(){return Ma||(Ma=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ru(),t),e.__exportStar(Pu(),t)}(Ln)),Ln}var Sa;function Tu(){if(Sa)return Mr;Sa=1,Object.defineProperty(Mr,"__esModule",{value:!0}),Mr.fromMiliseconds=Mr.toMiliseconds=void 0;const t=Ea();function e(i){return i*t.ONE_THOUSAND}Mr.toMiliseconds=e;function r(i){return Math.floor(i/t.ONE_THOUSAND)}return Mr.fromMiliseconds=r,Mr}var Da;function Fu(){return Da||(Da=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Ou(),t),e.__exportStar(Tu(),t)}(Un)),Un}var Qr={},Ia;function Uu(){if(Ia)return Qr;Ia=1,Object.defineProperty(Qr,"__esModule",{value:!0}),Qr.Watch=void 0;class t{constructor(){this.timestamps=new Map}start(r){if(this.timestamps.has(r))throw new Error(`Watch already started for label: ${r}`);this.timestamps.set(r,{started:Date.now()})}stop(r){const i=this.get(r);if(typeof i.elapsed<"u")throw new Error(`Watch already stopped for label: ${r}`);const f=Date.now()-i.started;this.timestamps.set(r,{started:i.started,elapsed:f})}get(r){const i=this.timestamps.get(r);if(typeof i>"u")throw new Error(`No timestamp found for label: ${r}`);return i}elapsed(r){const i=this.get(r);return i.elapsed||Date.now()-i.started}}return Qr.Watch=t,Qr.default=t,Qr}var zn={},Ai={},Na;function Lu(){if(Na)return Ai;Na=1,Object.defineProperty(Ai,"__esModule",{value:!0}),Ai.IWatch=void 0;class t{}return Ai.IWatch=t,Ai}var Ca;function qu(){return Ca||(Ca=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),ki.__exportStar(Lu(),t)}(zn)),zn}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=ki;e.__exportStar(Fu(),t),e.__exportStar(Uu(),t),e.__exportStar(qu(),t),e.__exportStar(Ea(),t)})(_r);var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.getLocalStorage=Xe.getLocalStorageOrThrow=Xe.getCrypto=Xe.getCryptoOrThrow=Hn=Xe.getLocation=Xe.getLocationOrThrow=kn=Xe.getNavigator=Xe.getNavigatorOrThrow=Hi=Xe.getDocument=Xe.getDocumentOrThrow=Xe.getFromWindowOrThrow=Xe.getFromWindow=void 0;function Sr(t){let e;return typeof window<"u"&&typeof window[t]<"u"&&(e=window[t]),e}Xe.getFromWindow=Sr;function Xr(t){const e=Sr(t);if(!e)throw new Error(`${t} is not defined in Window`);return e}Xe.getFromWindowOrThrow=Xr;function zu(){return Xr("document")}Xe.getDocumentOrThrow=zu;function ku(){return Sr("document")}var Hi=Xe.getDocument=ku;function Hu(){return Xr("navigator")}Xe.getNavigatorOrThrow=Hu;function Ku(){return Sr("navigator")}var kn=Xe.getNavigator=Ku;function ju(){return Xr("location")}Xe.getLocationOrThrow=ju;function $u(){return Sr("location")}var Hn=Xe.getLocation=$u;function Vu(){return Xr("crypto")}Xe.getCryptoOrThrow=Vu;function Gu(){return Sr("crypto")}Xe.getCrypto=Gu;function Yu(){return Xr("localStorage")}Xe.getLocalStorageOrThrow=Yu;function Ju(){return Sr("localStorage")}Xe.getLocalStorage=Ju;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0});var Ba=Kn.getWindowMetadata=void 0;const Oa=Xe;function Wu(){let t,e;try{t=Oa.getDocumentOrThrow(),e=Oa.getLocationOrThrow()}catch{return null}function r(){const E=t.getElementsByTagName("link"),N=[];for(let D=0;D-1){const H=I.getAttribute("href");if(H)if(H.toLowerCase().indexOf("https:")===-1&&H.toLowerCase().indexOf("http:")===-1&&H.indexOf("//")!==0){let V=e.protocol+"//"+e.host;if(H.indexOf("/")===0)V+=H;else{const z=e.pathname.split("/");z.pop();const j=z.join("/");V+=j+"/"+H}N.push(V)}else if(H.indexOf("//")===0){const V=e.protocol+H;N.push(V)}else N.push(H)}}return N}function i(...E){const N=t.getElementsByTagName("meta");for(let D=0;DI.getAttribute(H)).filter(H=>H?E.includes(H):!1);if(q.length&&q){const H=I.getAttribute("content");if(H)return H}}return""}function f(){let E=i("name","og:site_name","og:title","twitter:title");return E||(E=t.title),E}function n(){return i("description","og:description","twitter:description","keywords")}const d=f(),c=n(),y=e.origin,A=r();return{description:c,url:y,icons:A,name:d}}Ba=Kn.getWindowMetadata=Wu;var xi={},Qu=t=>encodeURIComponent(t).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),Ra="%[a-f0-9]{2}",Pa=new RegExp("("+Ra+")|([^%]+?)","gi"),Ta=new RegExp("("+Ra+")+","gi");function jn(t,e){try{return[decodeURIComponent(t.join(""))]}catch{}if(t.length===1)return t;e=e||1;var r=t.slice(0,e),i=t.slice(e);return Array.prototype.concat.call([],jn(r),jn(i))}function Xu(t){try{return decodeURIComponent(t)}catch{for(var e=t.match(Pa)||[],r=1;r{if(!(typeof t=="string"&&typeof e=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e==="")return[t];const r=t.indexOf(e);return r===-1?[t]:[t.slice(0,r),t.slice(r+e.length)]},rh=function(t,e){for(var r={},i=Object.keys(t),f=Array.isArray(e),n=0;nz==null,d=Symbol("encodeFragmentIdentifier");function c(z){switch(z.arrayFormat){case"index":return j=>(F,U)=>{const L=F.length;return U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[",L,"]"].join("")]:[...F,[x(j,z),"[",x(L,z),"]=",x(U,z)].join("")]};case"bracket":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),"[]"].join("")]:[...F,[x(j,z),"[]=",x(U,z)].join("")];case"colon-list-separator":return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,[x(j,z),":list="].join("")]:[...F,[x(j,z),":list=",x(U,z)].join("")];case"comma":case"separator":case"bracket-separator":{const j=z.arrayFormat==="bracket-separator"?"[]=":"=";return F=>(U,L)=>L===void 0||z.skipNull&&L===null||z.skipEmptyString&&L===""?U:(L=L===null?"":L,U.length===0?[[x(F,z),j,x(L,z)].join("")]:[[U,x(L,z)].join(z.arrayFormatSeparator)])}default:return j=>(F,U)=>U===void 0||z.skipNull&&U===null||z.skipEmptyString&&U===""?F:U===null?[...F,x(j,z)]:[...F,[x(j,z),"=",x(U,z)].join("")]}}function y(z){let j;switch(z.arrayFormat){case"index":return(F,U,L)=>{if(j=/\[(\d*)\]$/.exec(F),F=F.replace(/\[\d*\]$/,""),!j){L[F]=U;return}L[F]===void 0&&(L[F]={}),L[F][j[1]]=U};case"bracket":return(F,U,L)=>{if(j=/(\[\])$/.exec(F),F=F.replace(/\[\]$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"colon-list-separator":return(F,U,L)=>{if(j=/(:list)$/.exec(F),F=F.replace(/:list$/,""),!j){L[F]=U;return}if(L[F]===void 0){L[F]=[U];return}L[F]=[].concat(L[F],U)};case"comma":case"separator":return(F,U,L)=>{const m=typeof U=="string"&&U.includes(z.arrayFormatSeparator),P=typeof U=="string"&&!m&&E(U,z).includes(z.arrayFormatSeparator);U=P?E(U,z):U;const Y=m||P?U.split(z.arrayFormatSeparator).map(Q=>E(Q,z)):U===null?U:E(U,z);L[F]=Y};case"bracket-separator":return(F,U,L)=>{const m=/(\[\])$/.test(F);if(F=F.replace(/\[\]$/,""),!m){L[F]=U&&E(U,z);return}const P=U===null?[]:U.split(z.arrayFormatSeparator).map(Y=>E(Y,z));if(L[F]===void 0){L[F]=P;return}L[F]=[].concat(L[F],P)};default:return(F,U,L)=>{if(L[F]===void 0){L[F]=U;return}L[F]=[].concat(L[F],U)}}}function A(z){if(typeof z!="string"||z.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function x(z,j){return j.encode?j.strict?e(z):encodeURIComponent(z):z}function E(z,j){return j.decode?r(z):z}function N(z){return Array.isArray(z)?z.sort():typeof z=="object"?N(Object.keys(z)).sort((j,F)=>Number(j)-Number(F)).map(j=>z[j]):z}function D(z){const j=z.indexOf("#");return j!==-1&&(z=z.slice(0,j)),z}function I(z){let j="";const F=z.indexOf("#");return F!==-1&&(j=z.slice(F)),j}function q(z){z=D(z);const j=z.indexOf("?");return j===-1?"":z.slice(j+1)}function H(z,j){return j.parseNumbers&&!Number.isNaN(Number(z))&&typeof z=="string"&&z.trim()!==""?z=Number(z):j.parseBooleans&&z!==null&&(z.toLowerCase()==="true"||z.toLowerCase()==="false")&&(z=z.toLowerCase()==="true"),z}function V(z,j){j=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},j),A(j.arrayFormatSeparator);const F=y(j),U=Object.create(null);if(typeof z!="string"||(z=z.trim().replace(/^[?#&]/,""),!z))return U;for(const L of z.split("&")){if(L==="")continue;let[m,P]=i(j.decode?L.replace(/\+/g," "):L,"=");P=P===void 0?null:["comma","separator","bracket-separator"].includes(j.arrayFormat)?P:E(P,j),F(E(m,j),P,U)}for(const L of Object.keys(U)){const m=U[L];if(typeof m=="object"&&m!==null)for(const P of Object.keys(m))m[P]=H(m[P],j);else U[L]=H(m,j)}return j.sort===!1?U:(j.sort===!0?Object.keys(U).sort():Object.keys(U).sort(j.sort)).reduce((L,m)=>{const P=U[m];return P&&typeof P=="object"&&!Array.isArray(P)?L[m]=N(P):L[m]=P,L},Object.create(null))}t.extract=q,t.parse=V,t.stringify=(z,j)=>{if(!z)return"";j=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},j),A(j.arrayFormatSeparator);const F=P=>j.skipNull&&n(z[P])||j.skipEmptyString&&z[P]==="",U=c(j),L={};for(const P of Object.keys(z))F(P)||(L[P]=z[P]);const m=Object.keys(L);return j.sort!==!1&&m.sort(j.sort),m.map(P=>{const Y=z[P];return Y===void 0?"":Y===null?x(P,j):Array.isArray(Y)?Y.length===0&&j.arrayFormat==="bracket-separator"?x(P,j)+"[]":Y.reduce(U(P),[]).join("&"):x(P,j)+"="+x(Y,j)}).filter(P=>P.length>0).join("&")},t.parseUrl=(z,j)=>{j=Object.assign({decode:!0},j);const[F,U]=i(z,"#");return Object.assign({url:F.split("?")[0]||"",query:V(q(z),j)},j&&j.parseFragmentIdentifier&&U?{fragmentIdentifier:E(U,j)}:{})},t.stringifyUrl=(z,j)=>{j=Object.assign({encode:!0,strict:!0,[d]:!0},j);const F=D(z.url).split("?")[0]||"",U=t.extract(z.url),L=t.parse(U,{sort:!1}),m=Object.assign(L,z.query);let P=t.stringify(m,j);P&&(P=`?${P}`);let Y=I(z.url);return z.fragmentIdentifier&&(Y=`#${j[d]?x(z.fragmentIdentifier,j):z.fragmentIdentifier}`),`${F}${P}${Y}`},t.pick=(z,j,F)=>{F=Object.assign({parseFragmentIdentifier:!0,[d]:!1},F);const{url:U,query:L,fragmentIdentifier:m}=t.parseUrl(z,F);return t.stringifyUrl({url:U,query:f(L,j),fragmentIdentifier:m},F)},t.exclude=(z,j,F)=>{const U=Array.isArray(j)?L=>!j.includes(L):(L,m)=>!j(L,m);return t.pick(z,U,F)}})(xi);var ih=Object.defineProperty,Fa=Object.getOwnPropertySymbols,nh=Object.prototype.hasOwnProperty,fh=Object.prototype.propertyIsEnumerable,Ua=(t,e,r)=>e in t?ih(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,La=(t,e)=>{for(var r in e||(e={}))nh.call(e,r)&&Ua(t,r,e[r]);if(Fa)for(var r of Fa(e))fh.call(e,r)&&Ua(t,r,e[r]);return t};const qa="ReactNative",vt={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Ki=" ",ah=":",za="/",$n=2,oh=1e3,ka="js";function Vn(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function Zr(){return!Hi()&&!!kn()&&navigator.product===qa}function _i(){return!Vn()&&!!kn()&&!!Hi()}function Dr(){return Zr()?vt.reactNative:Vn()?vt.node:_i()?vt.browser:vt.unknown}function sh(){var t;try{return Zr()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Ha(t,e){let r=xi.parse(t);return r=La(La({},r),e),t=xi.stringify(r),t}function uh(){return Ba()||{name:"",description:"",url:"",icons:[""]}}function hh(t,e){var r;const i=Dr(),f={protocol:t,version:e,env:i};return i==="browser"&&(f.host=((r=Hn())==null?void 0:r.host)||"unknown"),f}function Ka(){if(Dr()===vt.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:r,Version:i}=global.Platform;return[r,i].join("-")}const t=ou();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function ja(){var t;const e=Dr();return e===vt.browser?[e,((t=Hn())==null?void 0:t.host)||"unknown"].join(":"):e}function $a(t,e,r){const i=Ka(),f=ja();return[[t,e].join("-"),[ka,r].join("-"),i,f].join("/")}function ch({protocol:t,version:e,relayUrl:r,sdkVersion:i,auth:f,projectId:n,useOnCloseEvent:d,bundleId:c}){const y=r.split("?"),A=$a(t,e,i),x={auth:f,ua:A,projectId:n,useOnCloseEvent:d||void 0,origin:c||void 0},E=Ha(y[1]||"",x);return y[0]+"?"+E}function dh(t){let e=(t.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const r=typeof e<"u"?t.split("://")[1]:t;return e=e==="wss"?"https":"http",[e,r].join("://")}function lh(t,e,r){if(!t[e]||typeof t[e]!==r)throw new Error(`Missing or invalid "${e}" param`)}function Va(t,e=$n){return Ga(t.split(za),e)}function bh(t){return Va(t).join(Ki)}function lr(t,e){return t.filter(r=>e.includes(r)).length===t.length}function Ga(t,e=$n){return t.slice(Math.max(t.length-e,0))}function vh(t){return Object.fromEntries(t.entries())}function ph(t){return new Map(Object.entries(t))}function mh(t,e){const r={};return Object.keys(t).forEach(i=>{r[i]=e(t[i])}),r}const gh=t=>t;function Ya(t){return t.trim().replace(/^\w/,e=>e.toUpperCase())}function yh(t){return t.split(Ki).map(e=>Ya(e)).join(Ki)}function wh(t=_r.FIVE_MINUTES,e){const r=_r.toMiliseconds(t||_r.FIVE_MINUTES);let i,f,n;return{resolve:d=>{n&&i&&(clearTimeout(n),i(d))},reject:d=>{n&&f&&(clearTimeout(n),f(d))},done:()=>new Promise((d,c)=>{n=setTimeout(()=>{c(new Error(e))},r),i=d,f=c})}}function Ah(t,e,r){return new Promise(async(i,f)=>{const n=setTimeout(()=>f(new Error(r)),e);try{const d=await t;i(d)}catch(d){f(d)}clearTimeout(n)})}function Gn(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function xh(t){return Gn("topic",t)}function _h(t){return Gn("id",t)}function Mh(t){const[e,r]=t.split(":"),i={id:void 0,topic:void 0};if(e==="topic"&&typeof r=="string")i.topic=r;else if(e==="id"&&Number.isInteger(Number(r)))i.id=Number(r);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${r}`);return i}function Eh(t,e){return _r.fromMiliseconds((e||Date.now())+_r.toMiliseconds(t))}function Sh(t){return Date.now()>=_r.toMiliseconds(t)}function Dh(t,e){return`${t}${e?`:${e}`:""}`}function fr(t=[],e=[]){return[...new Set([...t,...e])]}async function Ih({id:t,topic:e,wcDeepLink:r}){var i;try{if(!r)return;const f=typeof r=="string"?JSON.parse(r):r;let n=f?.href;if(typeof n!="string")return;n.endsWith("/")&&(n=n.slice(0,-1));const d=`${n}/wc?requestId=${t}&sessionTopic=${e}`,c=Dr();if(c===vt.browser){if(!((i=Hi())!=null&&i.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}d.startsWith("https://")||d.startsWith("http://")?window.open(d,"_blank","noreferrer noopener"):window.open(d,"_self","noreferrer noopener")}else c===vt.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(d)}catch(f){console.error(f)}}async function Nh(t,e){try{return await t.getItem(e)||(_i()?localStorage.getItem(e):void 0)}catch(r){console.error(r)}}function Yn(t,e){return t.filter(r=>e.includes(r))}function Ch(t,e){if(!t.includes(e))return null;const r=t.split(/([&,?,=])/),i=r.indexOf(e);return r[i+2]}function Bh(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}var Ja={exports:{}};/** -+ * [js-sha3]{@link https://github.com/emn178/js-sha3} -+ * -+ * @version 0.8.0 -+ * @author Chen, Yi-Cyuan [emn178@gmail.com] -+ * @copyright Chen, Yi-Cyuan 2015-2018 -+ * @license MIT -+ */(function(t){(function(){var e="input is invalid type",r="finalize already called",i=typeof window=="object",f=i?window:{};f.JS_SHA3_NO_WINDOW&&(i=!1);var n=!i&&typeof self=="object",d=!f.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;d?f=Rn:n&&(f=self);var c=!f.JS_SHA3_NO_COMMON_JS&&!0&&t.exports,y=!f.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",A="0123456789abcdef".split(""),x=[31,7936,2031616,520093696],E=[4,1024,262144,67108864],N=[1,256,65536,16777216],D=[6,1536,393216,100663296],I=[0,8,16,24],q=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],H=[224,256,384,512],V=[128,256],z=["hex","buffer","arrayBuffer","array","digest"],j={128:168,256:136};(f.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(M){return Object.prototype.toString.call(M)==="[object Array]"}),y&&(f.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(M){return typeof M=="object"&&M.buffer&&M.buffer.constructor===ArrayBuffer});for(var F=function(M,k,B){return function(T){return new b(M,k,M).update(T)[B]()}},U=function(M,k,B){return function(T,O){return new b(M,k,O).update(T)[B]()}},L=function(M,k,B){return function(T,O,v,R){return a["cshake"+M].update(T,O,v,R)[B]()}},m=function(M,k,B){return function(T,O,v,R){return a["kmac"+M].update(T,O,v,R)[B]()}},P=function(M,k,B,T){for(var O=0;O>5,this.byteCount=this.blockCount<<2,this.outputBlocks=B>>5,this.extraBytes=(B&31)>>3;for(var T=0;T<50;++T)this.s[T]=0}b.prototype.update=function(M){if(this.finalized)throw new Error(r);var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}for(var T=this.blocks,O=this.byteCount,v=M.length,R=this.blockCount,$=0,J=this.s,W,X;$>2]|=M[$]<>2]|=X<>2]|=(192|X>>6)<>2]|=(128|X&63)<=57344?(T[W>>2]|=(224|X>>12)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<>2]|=(240|X>>18)<>2]|=(128|X>>12&63)<>2]|=(128|X>>6&63)<>2]|=(128|X&63)<=O){for(this.start=W-O,this.block=T[R],W=0;W>8,B=M&255;B>0;)O.unshift(B),M=M>>8,B=M&255,++T;return k?O.push(T):O.unshift(T),this.update(O),O.length},b.prototype.encodeString=function(M){var k,B=typeof M;if(B!=="string"){if(B==="object"){if(M===null)throw new Error(e);if(y&&M.constructor===ArrayBuffer)M=new Uint8Array(M);else if(!Array.isArray(M)&&(!y||!ArrayBuffer.isView(M)))throw new Error(e)}else throw new Error(e);k=!0}var T=0,O=M.length;if(k)T=O;else for(var v=0;v=57344?T+=3:(R=65536+((R&1023)<<10|M.charCodeAt(++v)&1023),T+=4)}return T+=this.encode(T*8),this.update(M),T},b.prototype.bytepad=function(M,k){for(var B=this.encode(k),T=0;T>2]|=this.padding[k&3],this.lastByteIndex===this.byteCount)for(M[0]=M[B],k=1;k>4&15]+A[$&15]+A[$>>12&15]+A[$>>8&15]+A[$>>20&15]+A[$>>16&15]+A[$>>28&15]+A[$>>24&15];v%M===0&&(G(k),O=0)}return T&&($=k[O],R+=A[$>>4&15]+A[$&15],T>1&&(R+=A[$>>12&15]+A[$>>8&15]),T>2&&(R+=A[$>>20&15]+A[$>>16&15])),R},b.prototype.arrayBuffer=function(){this.finalize();var M=this.blockCount,k=this.s,B=this.outputBlocks,T=this.extraBytes,O=0,v=0,R=this.outputBits>>3,$;T?$=new ArrayBuffer(B+1<<2):$=new ArrayBuffer(R);for(var J=new Uint32Array($);v>8&255,R[$+2]=J>>16&255,R[$+3]=J>>24&255;v%M===0&&G(k)}return T&&($=v<<2,J=k[O],R[$]=J&255,T>1&&(R[$+1]=J>>8&255),T>2&&(R[$+2]=J>>16&255)),R};function S(M,k,B){b.call(this,M,k,B)}S.prototype=new b,S.prototype.finalize=function(){return this.encode(this.outputBits,!0),b.prototype.finalize.call(this)};var G=function(M){var k,B,T,O,v,R,$,J,W,X,be,ye,fe,Ee,pe,te,se,oe,ee,ae,ne,Z,ve,me,re,ge,we,ie,Ae,xe,_e,je,$e,Me,Ve,Ge,Se,Ie,Ne,ue,Ce,Be,he,Oe,Re,ce,Pe,Te,de,Fe,Ue,le,Le,We,De,Qe,Ye,Je,Ut,Lt,qt,zt,kt;for(T=0;T<48;T+=2)O=M[0]^M[10]^M[20]^M[30]^M[40],v=M[1]^M[11]^M[21]^M[31]^M[41],R=M[2]^M[12]^M[22]^M[32]^M[42],$=M[3]^M[13]^M[23]^M[33]^M[43],J=M[4]^M[14]^M[24]^M[34]^M[44],W=M[5]^M[15]^M[25]^M[35]^M[45],X=M[6]^M[16]^M[26]^M[36]^M[46],be=M[7]^M[17]^M[27]^M[37]^M[47],ye=M[8]^M[18]^M[28]^M[38]^M[48],fe=M[9]^M[19]^M[29]^M[39]^M[49],k=ye^(R<<1|$>>>31),B=fe^($<<1|R>>>31),M[0]^=k,M[1]^=B,M[10]^=k,M[11]^=B,M[20]^=k,M[21]^=B,M[30]^=k,M[31]^=B,M[40]^=k,M[41]^=B,k=O^(J<<1|W>>>31),B=v^(W<<1|J>>>31),M[2]^=k,M[3]^=B,M[12]^=k,M[13]^=B,M[22]^=k,M[23]^=B,M[32]^=k,M[33]^=B,M[42]^=k,M[43]^=B,k=R^(X<<1|be>>>31),B=$^(be<<1|X>>>31),M[4]^=k,M[5]^=B,M[14]^=k,M[15]^=B,M[24]^=k,M[25]^=B,M[34]^=k,M[35]^=B,M[44]^=k,M[45]^=B,k=J^(ye<<1|fe>>>31),B=W^(fe<<1|ye>>>31),M[6]^=k,M[7]^=B,M[16]^=k,M[17]^=B,M[26]^=k,M[27]^=B,M[36]^=k,M[37]^=B,M[46]^=k,M[47]^=B,k=X^(O<<1|v>>>31),B=be^(v<<1|O>>>31),M[8]^=k,M[9]^=B,M[18]^=k,M[19]^=B,M[28]^=k,M[29]^=B,M[38]^=k,M[39]^=B,M[48]^=k,M[49]^=B,Ee=M[0],pe=M[1],ce=M[11]<<4|M[10]>>>28,Pe=M[10]<<4|M[11]>>>28,ie=M[20]<<3|M[21]>>>29,Ae=M[21]<<3|M[20]>>>29,Lt=M[31]<<9|M[30]>>>23,qt=M[30]<<9|M[31]>>>23,Be=M[40]<<18|M[41]>>>14,he=M[41]<<18|M[40]>>>14,Me=M[2]<<1|M[3]>>>31,Ve=M[3]<<1|M[2]>>>31,te=M[13]<<12|M[12]>>>20,se=M[12]<<12|M[13]>>>20,Te=M[22]<<10|M[23]>>>22,de=M[23]<<10|M[22]>>>22,xe=M[33]<<13|M[32]>>>19,_e=M[32]<<13|M[33]>>>19,zt=M[42]<<2|M[43]>>>30,kt=M[43]<<2|M[42]>>>30,We=M[5]<<30|M[4]>>>2,De=M[4]<<30|M[5]>>>2,Ge=M[14]<<6|M[15]>>>26,Se=M[15]<<6|M[14]>>>26,oe=M[25]<<11|M[24]>>>21,ee=M[24]<<11|M[25]>>>21,Fe=M[34]<<15|M[35]>>>17,Ue=M[35]<<15|M[34]>>>17,je=M[45]<<29|M[44]>>>3,$e=M[44]<<29|M[45]>>>3,me=M[6]<<28|M[7]>>>4,re=M[7]<<28|M[6]>>>4,Qe=M[17]<<23|M[16]>>>9,Ye=M[16]<<23|M[17]>>>9,Ie=M[26]<<25|M[27]>>>7,Ne=M[27]<<25|M[26]>>>7,ae=M[36]<<21|M[37]>>>11,ne=M[37]<<21|M[36]>>>11,le=M[47]<<24|M[46]>>>8,Le=M[46]<<24|M[47]>>>8,Oe=M[8]<<27|M[9]>>>5,Re=M[9]<<27|M[8]>>>5,ge=M[18]<<20|M[19]>>>12,we=M[19]<<20|M[18]>>>12,Je=M[29]<<7|M[28]>>>25,Ut=M[28]<<7|M[29]>>>25,ue=M[38]<<8|M[39]>>>24,Ce=M[39]<<8|M[38]>>>24,Z=M[48]<<14|M[49]>>>18,ve=M[49]<<14|M[48]>>>18,M[0]=Ee^~te&oe,M[1]=pe^~se&ee,M[10]=me^~ge&ie,M[11]=re^~we&Ae,M[20]=Me^~Ge&Ie,M[21]=Ve^~Se&Ne,M[30]=Oe^~ce&Te,M[31]=Re^~Pe&de,M[40]=We^~Qe&Je,M[41]=De^~Ye&Ut,M[2]=te^~oe&ae,M[3]=se^~ee&ne,M[12]=ge^~ie&xe,M[13]=we^~Ae&_e,M[22]=Ge^~Ie&ue,M[23]=Se^~Ne&Ce,M[32]=ce^~Te&Fe,M[33]=Pe^~de&Ue,M[42]=Qe^~Je&Lt,M[43]=Ye^~Ut&qt,M[4]=oe^~ae&Z,M[5]=ee^~ne&ve,M[14]=ie^~xe&je,M[15]=Ae^~_e&$e,M[24]=Ie^~ue&Be,M[25]=Ne^~Ce&he,M[34]=Te^~Fe&le,M[35]=de^~Ue&Le,M[44]=Je^~Lt&zt,M[45]=Ut^~qt&kt,M[6]=ae^~Z&Ee,M[7]=ne^~ve&pe,M[16]=xe^~je&me,M[17]=_e^~$e&re,M[26]=ue^~Be&Me,M[27]=Ce^~he&Ve,M[36]=Fe^~le&Oe,M[37]=Ue^~Le&Re,M[46]=Lt^~zt&We,M[47]=qt^~kt&De,M[8]=Z^~Ee&te,M[9]=ve^~pe&se,M[18]=je^~me&ge,M[19]=$e^~re&we,M[28]=Be^~Me&Ge,M[29]=he^~Ve&Se,M[38]=le^~Oe&ce,M[39]=Le^~Re&Pe,M[48]=zt^~We&Qe,M[49]=kt^~De&Ye,M[0]^=q[T],M[1]^=q[T+1]};if(c)t.exports=a;else for(l=0;l{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}const Za=Ph();var Wn;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Wn||(Wn={}));var Ht;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Ht||(Ht={}));const e0="0123456789abcdef";class ke{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const i=e.toLowerCase();ji[i]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Xa>ji[i])&&console.log.apply(console,r)}debug(...e){this._log(ke.levels.DEBUG,e)}info(...e){this._log(ke.levels.INFO,e)}warn(...e){this._log(ke.levels.WARNING,e)}makeError(e,r,i){if(Qa)return this.makeError("censored error",r,{});r||(r=ke.errors.UNKNOWN_ERROR),i||(i={});const f=[];Object.keys(i).forEach(y=>{const A=i[y];try{if(A instanceof Uint8Array){let x="";for(let E=0;E>4],x+=e0[A[E]&15];f.push(y+"=Uint8Array(0x"+x+")")}else f.push(y+"="+JSON.stringify(A))}catch{f.push(y+"="+JSON.stringify(i[y].toString()))}}),f.push(`code=${r}`),f.push(`version=${this.version}`);const n=e;let d="";switch(r){case Ht.NUMERIC_FAULT:{d="NUMERIC_FAULT";const y=e;switch(y){case"overflow":case"underflow":case"division-by-zero":d+="-"+y;break;case"negative-power":case"negative-width":d+="-unsupported";break;case"unbound-bitwise-result":d+="-unbound-result";break}break}case Ht.CALL_EXCEPTION:case Ht.INSUFFICIENT_FUNDS:case Ht.MISSING_NEW:case Ht.NONCE_EXPIRED:case Ht.REPLACEMENT_UNDERPRICED:case Ht.TRANSACTION_REPLACED:case Ht.UNPREDICTABLE_GAS_LIMIT:d=r;break}d&&(e+=" [ See: https://links.ethers.org/v5-errors-"+d+" ]"),f.length&&(e+=" ("+f.join(", ")+")");const c=new Error(e);return c.reason=n,c.code=r,Object.keys(i).forEach(function(y){c[y]=i[y]}),c}throwError(e,r,i){throw this.makeError(e,r,i)}throwArgumentError(e,r,i){return this.throwError(e,ke.errors.INVALID_ARGUMENT,{argument:r,value:i})}assert(e,r,i,f){e||this.throwError(r,i,f)}assertArgument(e,r,i,f){e||this.throwArgumentError(r,i,f)}checkNormalize(e){Za&&this.throwError("platform missing String.prototype.normalize",ke.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Za})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ke.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,i){i?i=": "+i:i="",er&&this.throwError("too many arguments"+i,ke.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ke.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ke.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Jn||(Jn=new ke(Rh)),Jn}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Wa){if(!e)return;this.globalLogger().throwError("error censorship permanent",ke.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}Qa=!!e,Wa=!!r}static setLogLevel(e){const r=ji[e.toLowerCase()];if(r==null){ke.globalLogger().warn("invalid log level - "+e);return}Xa=r}static from(e){return new ke(e)}}ke.errors=Ht,ke.levels=Wn;const Th="bytes/5.7.0",it=new ke(Th);function t0(t){return!!t.toHexString}function ei(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return ei(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function Fh(t){return xt(t)&&!(t.length%2)||ti(t)}function r0(t){return typeof t=="number"&&t==t&&t%1===0}function ti(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!r0(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function tt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),ei(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t)&&(t=t.toHexString()),xt(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":it.throwArgumentError("hex data is odd-length","value",t));const i=[];for(let f=0;ftt(f)),r=e.reduce((f,n)=>f+n.length,0),i=new Uint8Array(r);return e.reduce((f,n)=>(i.set(n,f),f+n.length),0),ei(i)}function Lh(t,e){t=tt(t),t.length>e&&it.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),ei(r)}function xt(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const Qn="0123456789abcdef";function pt(t,e){if(e||(e={}),typeof t=="number"){it.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=Qn[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),t0(t))return t.toHexString();if(xt(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":it.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(ti(t)){let r="0x";for(let i=0;i>4]+Qn[f&15]}return r}return it.throwArgumentError("invalid hexlify value","value",t)}function qh(t){if(typeof t!="string")t=pt(t);else if(!xt(t)||t.length%2)return null;return(t.length-2)/2}function i0(t,e,r){return typeof t!="string"?t=pt(t):(!xt(t)||t.length%2)&&it.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function Vt(t,e){for(typeof t!="string"?t=pt(t):xt(t)||it.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&it.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function n0(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Fh(t)){let r=tt(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64))):r.length===65?(e.r=pt(r.slice(0,32)),e.s=pt(r.slice(32,64)),e.v=r[64]):it.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:it.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=pt(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const f=Lh(tt(e._vs),32);e._vs=pt(f);const n=f[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=n:e.recoveryParam!==n&&it.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),f[0]&=127;const d=pt(f);e.s==null?e.s=d:e.s!==d&&it.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?it.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const f=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==f&&it.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!xt(e.r)?it.throwArgumentError("signature missing or invalid r","signature",t):e.r=Vt(e.r,32),e.s==null||!xt(e.s)?it.throwArgumentError("signature missing or invalid s","signature",t):e.s=Vt(e.s,32);const r=tt(e.s);r[0]>=128&&it.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const i=pt(r);e._vs&&(xt(e._vs)||it.throwArgumentError("signature invalid _vs","signature",t),e._vs=Vt(e._vs,32)),e._vs==null?e._vs=i:e._vs!==i&&it.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}function Xn(t){return"0x"+Oh.keccak_256(tt(t))}var f0={exports:{}},zh={},kh=Object.freeze({__proto__:null,default:zh}),$i=ya(kh);(function(t){(function(e,r){function i(u,a){if(!u)throw new Error(a||"Assertion failed")}function f(u,a){u.super_=a;var o=function(){};o.prototype=a.prototype,u.prototype=new o,u.prototype.constructor=u}function n(u,a,o){if(n.isBN(u))return u;this.negative=0,this.words=null,this.length=0,this.red=null,u!==null&&((a==="le"||a==="be")&&(o=a,a=10),this._init(u||0,a||10,o||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(a){return a instanceof n?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===n.wordSize&&Array.isArray(a.words)},n.max=function(a,o){return a.cmp(o)>0?a:o},n.min=function(a,o){return a.cmp(o)<0?a:o},n.prototype._init=function(a,o,l){if(typeof a=="number")return this._initNumber(a,o,l);if(typeof a=="object")return this._initArray(a,o,l);o==="hex"&&(o=16),i(o===(o|0)&&o>=2&&o<=36),a=a.toString().replace(/\s+/g,"");var w=0;a[0]==="-"&&(w++,this.negative=1),w=0;w-=3)g=a[w]|a[w-1]<<8|a[w-2]<<16,this.words[_]|=g<>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);else if(l==="le")for(w=0,_=0;w>>26-s&67108863,s+=24,s>=26&&(s-=26,_++);return this._strip()};function c(u,a){var o=u.charCodeAt(a);if(o>=48&&o<=57)return o-48;if(o>=65&&o<=70)return o-55;if(o>=97&&o<=102)return o-87;i(!1,"Invalid character in "+u)}function y(u,a,o){var l=c(u,o);return o-1>=a&&(l|=c(u,o-1)<<4),l}n.prototype._parseHex=function(a,o,l){this.length=Math.ceil((a.length-o)/6),this.words=new Array(this.length);for(var w=0;w=o;w-=2)s=y(a,o,w)<<_,this.words[g]|=s&67108863,_>=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8;else{var p=a.length-o;for(w=p%2===0?o+1:o;w=18?(_-=18,g+=1,this.words[g]|=s>>>26):_+=8}this._strip()};function A(u,a,o,l){for(var w=0,_=0,g=Math.min(u.length,o),s=a;s=49?_=p-49+10:p>=17?_=p-17+10:_=p,i(p>=0&&_1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{n.prototype[Symbol.for("nodejs.util.inspect.custom")]=E}catch{n.prototype.inspect=E}else n.prototype.inspect=E;function E(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],D=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],I=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(a,o){a=a||10,o=o|0||1;var l;if(a===16||a==="hex"){l="";for(var w=0,_=0,g=0;g>>24-w&16777215,w+=2,w>=26&&(w-=26,g--),_!==0||g!==this.length-1?l=N[6-p.length]+p+l:l=p+l}for(_!==0&&(l=_.toString(16)+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}if(a===(a|0)&&a>=2&&a<=36){var b=D[a],S=I[a];l="";var G=this.clone();for(G.negative=0;!G.isZero();){var M=G.modrn(S).toString(a);G=G.idivn(S),G.isZero()?l=M+l:l=N[b-M.length]+M+l}for(this.isZero()&&(l="0"+l);l.length%o!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},n.prototype.toJSON=function(){return this.toString(16,2)},d&&(n.prototype.toBuffer=function(a,o){return this.toArrayLike(d,a,o)}),n.prototype.toArray=function(a,o){return this.toArrayLike(Array,a,o)};var q=function(a,o){return a.allocUnsafe?a.allocUnsafe(o):new a(o)};n.prototype.toArrayLike=function(a,o,l){this._strip();var w=this.byteLength(),_=l||Math.max(1,w);i(w<=_,"byte array longer than desired length"),i(_>0,"Requested array length <= 0");var g=q(a,_),s=o==="le"?"LE":"BE";return this["_toArrayLike"+s](g,w),g},n.prototype._toArrayLikeLE=function(a,o){for(var l=0,w=0,_=0,g=0;_>8&255),l>16&255),g===6?(l>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l=0&&(a[l--]=s>>8&255),l>=0&&(a[l--]=s>>16&255),g===6?(l>=0&&(a[l--]=s>>24&255),w=0,g=0):(w=s>>>24,g+=2)}if(l>=0)for(a[l--]=w;l>=0;)a[l--]=0},Math.clz32?n.prototype._countBits=function(a){return 32-Math.clz32(a)}:n.prototype._countBits=function(a){var o=a,l=0;return o>=4096&&(l+=13,o>>>=13),o>=64&&(l+=7,o>>>=7),o>=8&&(l+=4,o>>>=4),o>=2&&(l+=2,o>>>=2),l+o},n.prototype._zeroBits=function(a){if(a===0)return 26;var o=a,l=0;return o&8191||(l+=13,o>>>=13),o&127||(l+=7,o>>>=7),o&15||(l+=4,o>>>=4),o&3||(l+=2,o>>>=2),o&1||l++,l},n.prototype.bitLength=function(){var a=this.words[this.length-1],o=this._countBits(a);return(this.length-1)*26+o};function H(u){for(var a=new Array(u.bitLength()),o=0;o>>w&1}return a}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,o=0;oa.length?this.clone().ior(a):a.clone().ior(this)},n.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},n.prototype.iuand=function(a){var o;this.length>a.length?o=a:o=this;for(var l=0;la.length?this.clone().iand(a):a.clone().iand(this)},n.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},n.prototype.iuxor=function(a){var o,l;this.length>a.length?(o=this,l=a):(o=a,l=this);for(var w=0;wa.length?this.clone().ixor(a):a.clone().ixor(this)},n.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},n.prototype.inotn=function(a){i(typeof a=="number"&&a>=0);var o=Math.ceil(a/26)|0,l=a%26;this._expand(o),l>0&&o--;for(var w=0;w0&&(this.words[w]=~this.words[w]&67108863>>26-l),this._strip()},n.prototype.notn=function(a){return this.clone().inotn(a)},n.prototype.setn=function(a,o){i(typeof a=="number"&&a>=0);var l=a/26|0,w=a%26;return this._expand(l+1),o?this.words[l]=this.words[l]|1<a.length?(l=this,w=a):(l=a,w=this);for(var _=0,g=0;g>>26;for(;_!==0&&g>>26;if(this.length=l.length,_!==0)this.words[this.length]=_,this.length++;else if(l!==this)for(;ga.length?this.clone().iadd(a):a.clone().iadd(this)},n.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var o=this.iadd(a);return a.negative=1,o._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var l=this.cmp(a);if(l===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,_;l>0?(w=this,_=a):(w=a,_=this);for(var g=0,s=0;s<_.length;s++)o=(w.words[s]|0)-(_.words[s]|0)+g,g=o>>26,this.words[s]=o&67108863;for(;g!==0&&s>26,this.words[s]=o&67108863;if(g===0&&s>>26,G=p&67108863,M=Math.min(b,a.length-1),k=Math.max(0,b-u.length+1);k<=M;k++){var B=b-k|0;w=u.words[B]|0,_=a.words[k]|0,g=w*_+G,S+=g/67108864|0,G=g&67108863}o.words[b]=G|0,p=S|0}return p!==0?o.words[b]=p|0:o.length--,o._strip()}var z=function(a,o,l){var w=a.words,_=o.words,g=l.words,s=0,p,b,S,G=w[0]|0,M=G&8191,k=G>>>13,B=w[1]|0,T=B&8191,O=B>>>13,v=w[2]|0,R=v&8191,$=v>>>13,J=w[3]|0,W=J&8191,X=J>>>13,be=w[4]|0,ye=be&8191,fe=be>>>13,Ee=w[5]|0,pe=Ee&8191,te=Ee>>>13,se=w[6]|0,oe=se&8191,ee=se>>>13,ae=w[7]|0,ne=ae&8191,Z=ae>>>13,ve=w[8]|0,me=ve&8191,re=ve>>>13,ge=w[9]|0,we=ge&8191,ie=ge>>>13,Ae=_[0]|0,xe=Ae&8191,_e=Ae>>>13,je=_[1]|0,$e=je&8191,Me=je>>>13,Ve=_[2]|0,Ge=Ve&8191,Se=Ve>>>13,Ie=_[3]|0,Ne=Ie&8191,ue=Ie>>>13,Ce=_[4]|0,Be=Ce&8191,he=Ce>>>13,Oe=_[5]|0,Re=Oe&8191,ce=Oe>>>13,Pe=_[6]|0,Te=Pe&8191,de=Pe>>>13,Fe=_[7]|0,Ue=Fe&8191,le=Fe>>>13,Le=_[8]|0,We=Le&8191,De=Le>>>13,Qe=_[9]|0,Ye=Qe&8191,Je=Qe>>>13;l.negative=a.negative^o.negative,l.length=19,p=Math.imul(M,xe),b=Math.imul(M,_e),b=b+Math.imul(k,xe)|0,S=Math.imul(k,_e);var Ut=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,p=Math.imul(T,xe),b=Math.imul(T,_e),b=b+Math.imul(O,xe)|0,S=Math.imul(O,_e),p=p+Math.imul(M,$e)|0,b=b+Math.imul(M,Me)|0,b=b+Math.imul(k,$e)|0,S=S+Math.imul(k,Me)|0;var Lt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,p=Math.imul(R,xe),b=Math.imul(R,_e),b=b+Math.imul($,xe)|0,S=Math.imul($,_e),p=p+Math.imul(T,$e)|0,b=b+Math.imul(T,Me)|0,b=b+Math.imul(O,$e)|0,S=S+Math.imul(O,Me)|0,p=p+Math.imul(M,Ge)|0,b=b+Math.imul(M,Se)|0,b=b+Math.imul(k,Ge)|0,S=S+Math.imul(k,Se)|0;var qt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qt>>>26)|0,qt&=67108863,p=Math.imul(W,xe),b=Math.imul(W,_e),b=b+Math.imul(X,xe)|0,S=Math.imul(X,_e),p=p+Math.imul(R,$e)|0,b=b+Math.imul(R,Me)|0,b=b+Math.imul($,$e)|0,S=S+Math.imul($,Me)|0,p=p+Math.imul(T,Ge)|0,b=b+Math.imul(T,Se)|0,b=b+Math.imul(O,Ge)|0,S=S+Math.imul(O,Se)|0,p=p+Math.imul(M,Ne)|0,b=b+Math.imul(M,ue)|0,b=b+Math.imul(k,Ne)|0,S=S+Math.imul(k,ue)|0;var zt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zt>>>26)|0,zt&=67108863,p=Math.imul(ye,xe),b=Math.imul(ye,_e),b=b+Math.imul(fe,xe)|0,S=Math.imul(fe,_e),p=p+Math.imul(W,$e)|0,b=b+Math.imul(W,Me)|0,b=b+Math.imul(X,$e)|0,S=S+Math.imul(X,Me)|0,p=p+Math.imul(R,Ge)|0,b=b+Math.imul(R,Se)|0,b=b+Math.imul($,Ge)|0,S=S+Math.imul($,Se)|0,p=p+Math.imul(T,Ne)|0,b=b+Math.imul(T,ue)|0,b=b+Math.imul(O,Ne)|0,S=S+Math.imul(O,ue)|0,p=p+Math.imul(M,Be)|0,b=b+Math.imul(M,he)|0,b=b+Math.imul(k,Be)|0,S=S+Math.imul(k,he)|0;var kt=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kt>>>26)|0,kt&=67108863,p=Math.imul(pe,xe),b=Math.imul(pe,_e),b=b+Math.imul(te,xe)|0,S=Math.imul(te,_e),p=p+Math.imul(ye,$e)|0,b=b+Math.imul(ye,Me)|0,b=b+Math.imul(fe,$e)|0,S=S+Math.imul(fe,Me)|0,p=p+Math.imul(W,Ge)|0,b=b+Math.imul(W,Se)|0,b=b+Math.imul(X,Ge)|0,S=S+Math.imul(X,Se)|0,p=p+Math.imul(R,Ne)|0,b=b+Math.imul(R,ue)|0,b=b+Math.imul($,Ne)|0,S=S+Math.imul($,ue)|0,p=p+Math.imul(T,Be)|0,b=b+Math.imul(T,he)|0,b=b+Math.imul(O,Be)|0,S=S+Math.imul(O,he)|0,p=p+Math.imul(M,Re)|0,b=b+Math.imul(M,ce)|0,b=b+Math.imul(k,Re)|0,S=S+Math.imul(k,ce)|0;var qr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(qr>>>26)|0,qr&=67108863,p=Math.imul(oe,xe),b=Math.imul(oe,_e),b=b+Math.imul(ee,xe)|0,S=Math.imul(ee,_e),p=p+Math.imul(pe,$e)|0,b=b+Math.imul(pe,Me)|0,b=b+Math.imul(te,$e)|0,S=S+Math.imul(te,Me)|0,p=p+Math.imul(ye,Ge)|0,b=b+Math.imul(ye,Se)|0,b=b+Math.imul(fe,Ge)|0,S=S+Math.imul(fe,Se)|0,p=p+Math.imul(W,Ne)|0,b=b+Math.imul(W,ue)|0,b=b+Math.imul(X,Ne)|0,S=S+Math.imul(X,ue)|0,p=p+Math.imul(R,Be)|0,b=b+Math.imul(R,he)|0,b=b+Math.imul($,Be)|0,S=S+Math.imul($,he)|0,p=p+Math.imul(T,Re)|0,b=b+Math.imul(T,ce)|0,b=b+Math.imul(O,Re)|0,S=S+Math.imul(O,ce)|0,p=p+Math.imul(M,Te)|0,b=b+Math.imul(M,de)|0,b=b+Math.imul(k,Te)|0,S=S+Math.imul(k,de)|0;var zr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(zr>>>26)|0,zr&=67108863,p=Math.imul(ne,xe),b=Math.imul(ne,_e),b=b+Math.imul(Z,xe)|0,S=Math.imul(Z,_e),p=p+Math.imul(oe,$e)|0,b=b+Math.imul(oe,Me)|0,b=b+Math.imul(ee,$e)|0,S=S+Math.imul(ee,Me)|0,p=p+Math.imul(pe,Ge)|0,b=b+Math.imul(pe,Se)|0,b=b+Math.imul(te,Ge)|0,S=S+Math.imul(te,Se)|0,p=p+Math.imul(ye,Ne)|0,b=b+Math.imul(ye,ue)|0,b=b+Math.imul(fe,Ne)|0,S=S+Math.imul(fe,ue)|0,p=p+Math.imul(W,Be)|0,b=b+Math.imul(W,he)|0,b=b+Math.imul(X,Be)|0,S=S+Math.imul(X,he)|0,p=p+Math.imul(R,Re)|0,b=b+Math.imul(R,ce)|0,b=b+Math.imul($,Re)|0,S=S+Math.imul($,ce)|0,p=p+Math.imul(T,Te)|0,b=b+Math.imul(T,de)|0,b=b+Math.imul(O,Te)|0,S=S+Math.imul(O,de)|0,p=p+Math.imul(M,Ue)|0,b=b+Math.imul(M,le)|0,b=b+Math.imul(k,Ue)|0,S=S+Math.imul(k,le)|0;var kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(kr>>>26)|0,kr&=67108863,p=Math.imul(me,xe),b=Math.imul(me,_e),b=b+Math.imul(re,xe)|0,S=Math.imul(re,_e),p=p+Math.imul(ne,$e)|0,b=b+Math.imul(ne,Me)|0,b=b+Math.imul(Z,$e)|0,S=S+Math.imul(Z,Me)|0,p=p+Math.imul(oe,Ge)|0,b=b+Math.imul(oe,Se)|0,b=b+Math.imul(ee,Ge)|0,S=S+Math.imul(ee,Se)|0,p=p+Math.imul(pe,Ne)|0,b=b+Math.imul(pe,ue)|0,b=b+Math.imul(te,Ne)|0,S=S+Math.imul(te,ue)|0,p=p+Math.imul(ye,Be)|0,b=b+Math.imul(ye,he)|0,b=b+Math.imul(fe,Be)|0,S=S+Math.imul(fe,he)|0,p=p+Math.imul(W,Re)|0,b=b+Math.imul(W,ce)|0,b=b+Math.imul(X,Re)|0,S=S+Math.imul(X,ce)|0,p=p+Math.imul(R,Te)|0,b=b+Math.imul(R,de)|0,b=b+Math.imul($,Te)|0,S=S+Math.imul($,de)|0,p=p+Math.imul(T,Ue)|0,b=b+Math.imul(T,le)|0,b=b+Math.imul(O,Ue)|0,S=S+Math.imul(O,le)|0,p=p+Math.imul(M,We)|0,b=b+Math.imul(M,De)|0,b=b+Math.imul(k,We)|0,S=S+Math.imul(k,De)|0;var Hr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,p=Math.imul(we,xe),b=Math.imul(we,_e),b=b+Math.imul(ie,xe)|0,S=Math.imul(ie,_e),p=p+Math.imul(me,$e)|0,b=b+Math.imul(me,Me)|0,b=b+Math.imul(re,$e)|0,S=S+Math.imul(re,Me)|0,p=p+Math.imul(ne,Ge)|0,b=b+Math.imul(ne,Se)|0,b=b+Math.imul(Z,Ge)|0,S=S+Math.imul(Z,Se)|0,p=p+Math.imul(oe,Ne)|0,b=b+Math.imul(oe,ue)|0,b=b+Math.imul(ee,Ne)|0,S=S+Math.imul(ee,ue)|0,p=p+Math.imul(pe,Be)|0,b=b+Math.imul(pe,he)|0,b=b+Math.imul(te,Be)|0,S=S+Math.imul(te,he)|0,p=p+Math.imul(ye,Re)|0,b=b+Math.imul(ye,ce)|0,b=b+Math.imul(fe,Re)|0,S=S+Math.imul(fe,ce)|0,p=p+Math.imul(W,Te)|0,b=b+Math.imul(W,de)|0,b=b+Math.imul(X,Te)|0,S=S+Math.imul(X,de)|0,p=p+Math.imul(R,Ue)|0,b=b+Math.imul(R,le)|0,b=b+Math.imul($,Ue)|0,S=S+Math.imul($,le)|0,p=p+Math.imul(T,We)|0,b=b+Math.imul(T,De)|0,b=b+Math.imul(O,We)|0,S=S+Math.imul(O,De)|0,p=p+Math.imul(M,Ye)|0,b=b+Math.imul(M,Je)|0,b=b+Math.imul(k,Ye)|0,S=S+Math.imul(k,Je)|0;var Kr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,p=Math.imul(we,$e),b=Math.imul(we,Me),b=b+Math.imul(ie,$e)|0,S=Math.imul(ie,Me),p=p+Math.imul(me,Ge)|0,b=b+Math.imul(me,Se)|0,b=b+Math.imul(re,Ge)|0,S=S+Math.imul(re,Se)|0,p=p+Math.imul(ne,Ne)|0,b=b+Math.imul(ne,ue)|0,b=b+Math.imul(Z,Ne)|0,S=S+Math.imul(Z,ue)|0,p=p+Math.imul(oe,Be)|0,b=b+Math.imul(oe,he)|0,b=b+Math.imul(ee,Be)|0,S=S+Math.imul(ee,he)|0,p=p+Math.imul(pe,Re)|0,b=b+Math.imul(pe,ce)|0,b=b+Math.imul(te,Re)|0,S=S+Math.imul(te,ce)|0,p=p+Math.imul(ye,Te)|0,b=b+Math.imul(ye,de)|0,b=b+Math.imul(fe,Te)|0,S=S+Math.imul(fe,de)|0,p=p+Math.imul(W,Ue)|0,b=b+Math.imul(W,le)|0,b=b+Math.imul(X,Ue)|0,S=S+Math.imul(X,le)|0,p=p+Math.imul(R,We)|0,b=b+Math.imul(R,De)|0,b=b+Math.imul($,We)|0,S=S+Math.imul($,De)|0,p=p+Math.imul(T,Ye)|0,b=b+Math.imul(T,Je)|0,b=b+Math.imul(O,Ye)|0,S=S+Math.imul(O,Je)|0;var jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(jr>>>26)|0,jr&=67108863,p=Math.imul(we,Ge),b=Math.imul(we,Se),b=b+Math.imul(ie,Ge)|0,S=Math.imul(ie,Se),p=p+Math.imul(me,Ne)|0,b=b+Math.imul(me,ue)|0,b=b+Math.imul(re,Ne)|0,S=S+Math.imul(re,ue)|0,p=p+Math.imul(ne,Be)|0,b=b+Math.imul(ne,he)|0,b=b+Math.imul(Z,Be)|0,S=S+Math.imul(Z,he)|0,p=p+Math.imul(oe,Re)|0,b=b+Math.imul(oe,ce)|0,b=b+Math.imul(ee,Re)|0,S=S+Math.imul(ee,ce)|0,p=p+Math.imul(pe,Te)|0,b=b+Math.imul(pe,de)|0,b=b+Math.imul(te,Te)|0,S=S+Math.imul(te,de)|0,p=p+Math.imul(ye,Ue)|0,b=b+Math.imul(ye,le)|0,b=b+Math.imul(fe,Ue)|0,S=S+Math.imul(fe,le)|0,p=p+Math.imul(W,We)|0,b=b+Math.imul(W,De)|0,b=b+Math.imul(X,We)|0,S=S+Math.imul(X,De)|0,p=p+Math.imul(R,Ye)|0,b=b+Math.imul(R,Je)|0,b=b+Math.imul($,Ye)|0,S=S+Math.imul($,Je)|0;var $r=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+($r>>>26)|0,$r&=67108863,p=Math.imul(we,Ne),b=Math.imul(we,ue),b=b+Math.imul(ie,Ne)|0,S=Math.imul(ie,ue),p=p+Math.imul(me,Be)|0,b=b+Math.imul(me,he)|0,b=b+Math.imul(re,Be)|0,S=S+Math.imul(re,he)|0,p=p+Math.imul(ne,Re)|0,b=b+Math.imul(ne,ce)|0,b=b+Math.imul(Z,Re)|0,S=S+Math.imul(Z,ce)|0,p=p+Math.imul(oe,Te)|0,b=b+Math.imul(oe,de)|0,b=b+Math.imul(ee,Te)|0,S=S+Math.imul(ee,de)|0,p=p+Math.imul(pe,Ue)|0,b=b+Math.imul(pe,le)|0,b=b+Math.imul(te,Ue)|0,S=S+Math.imul(te,le)|0,p=p+Math.imul(ye,We)|0,b=b+Math.imul(ye,De)|0,b=b+Math.imul(fe,We)|0,S=S+Math.imul(fe,De)|0,p=p+Math.imul(W,Ye)|0,b=b+Math.imul(W,Je)|0,b=b+Math.imul(X,Ye)|0,S=S+Math.imul(X,Je)|0;var Vr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,p=Math.imul(we,Be),b=Math.imul(we,he),b=b+Math.imul(ie,Be)|0,S=Math.imul(ie,he),p=p+Math.imul(me,Re)|0,b=b+Math.imul(me,ce)|0,b=b+Math.imul(re,Re)|0,S=S+Math.imul(re,ce)|0,p=p+Math.imul(ne,Te)|0,b=b+Math.imul(ne,de)|0,b=b+Math.imul(Z,Te)|0,S=S+Math.imul(Z,de)|0,p=p+Math.imul(oe,Ue)|0,b=b+Math.imul(oe,le)|0,b=b+Math.imul(ee,Ue)|0,S=S+Math.imul(ee,le)|0,p=p+Math.imul(pe,We)|0,b=b+Math.imul(pe,De)|0,b=b+Math.imul(te,We)|0,S=S+Math.imul(te,De)|0,p=p+Math.imul(ye,Ye)|0,b=b+Math.imul(ye,Je)|0,b=b+Math.imul(fe,Ye)|0,S=S+Math.imul(fe,Je)|0;var Gr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,p=Math.imul(we,Re),b=Math.imul(we,ce),b=b+Math.imul(ie,Re)|0,S=Math.imul(ie,ce),p=p+Math.imul(me,Te)|0,b=b+Math.imul(me,de)|0,b=b+Math.imul(re,Te)|0,S=S+Math.imul(re,de)|0,p=p+Math.imul(ne,Ue)|0,b=b+Math.imul(ne,le)|0,b=b+Math.imul(Z,Ue)|0,S=S+Math.imul(Z,le)|0,p=p+Math.imul(oe,We)|0,b=b+Math.imul(oe,De)|0,b=b+Math.imul(ee,We)|0,S=S+Math.imul(ee,De)|0,p=p+Math.imul(pe,Ye)|0,b=b+Math.imul(pe,Je)|0,b=b+Math.imul(te,Ye)|0,S=S+Math.imul(te,Je)|0;var Yr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,p=Math.imul(we,Te),b=Math.imul(we,de),b=b+Math.imul(ie,Te)|0,S=Math.imul(ie,de),p=p+Math.imul(me,Ue)|0,b=b+Math.imul(me,le)|0,b=b+Math.imul(re,Ue)|0,S=S+Math.imul(re,le)|0,p=p+Math.imul(ne,We)|0,b=b+Math.imul(ne,De)|0,b=b+Math.imul(Z,We)|0,S=S+Math.imul(Z,De)|0,p=p+Math.imul(oe,Ye)|0,b=b+Math.imul(oe,Je)|0,b=b+Math.imul(ee,Ye)|0,S=S+Math.imul(ee,Je)|0;var Jr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,p=Math.imul(we,Ue),b=Math.imul(we,le),b=b+Math.imul(ie,Ue)|0,S=Math.imul(ie,le),p=p+Math.imul(me,We)|0,b=b+Math.imul(me,De)|0,b=b+Math.imul(re,We)|0,S=S+Math.imul(re,De)|0,p=p+Math.imul(ne,Ye)|0,b=b+Math.imul(ne,Je)|0,b=b+Math.imul(Z,Ye)|0,S=S+Math.imul(Z,Je)|0;var Wr=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,p=Math.imul(we,We),b=Math.imul(we,De),b=b+Math.imul(ie,We)|0,S=Math.imul(ie,De),p=p+Math.imul(me,Ye)|0,b=b+Math.imul(me,Je)|0,b=b+Math.imul(re,Ye)|0,S=S+Math.imul(re,Je)|0;var oa=(s+p|0)+((b&8191)<<13)|0;s=(S+(b>>>13)|0)+(oa>>>26)|0,oa&=67108863,p=Math.imul(we,Ye),b=Math.imul(we,Je),b=b+Math.imul(ie,Ye)|0,S=Math.imul(ie,Je);var sa=(s+p|0)+((b&8191)<<13)|0;return s=(S+(b>>>13)|0)+(sa>>>26)|0,sa&=67108863,g[0]=Ut,g[1]=Lt,g[2]=qt,g[3]=zt,g[4]=kt,g[5]=qr,g[6]=zr,g[7]=kr,g[8]=Hr,g[9]=Kr,g[10]=jr,g[11]=$r,g[12]=Vr,g[13]=Gr,g[14]=Yr,g[15]=Jr,g[16]=Wr,g[17]=oa,g[18]=sa,s!==0&&(g[19]=s,l.length++),l};Math.imul||(z=V);function j(u,a,o){o.negative=a.negative^u.negative,o.length=u.length+a.length;for(var l=0,w=0,_=0;_>>26)|0,w+=g>>>26,g&=67108863}o.words[_]=s,l=g,g=w}return l!==0?o.words[_]=l:o.length--,o._strip()}function F(u,a,o){return j(u,a,o)}n.prototype.mulTo=function(a,o){var l,w=this.length+a.length;return this.length===10&&a.length===10?l=z(this,a,o):w<63?l=V(this,a,o):w<1024?l=j(this,a,o):l=F(this,a,o),l},n.prototype.mul=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),this.mulTo(a,o)},n.prototype.mulf=function(a){var o=new n(null);return o.words=new Array(this.length+a.length),F(this,a,o)},n.prototype.imul=function(a){return this.clone().mulTo(a,this)},n.prototype.imuln=function(a){var o=a<0;o&&(a=-a),i(typeof a=="number"),i(a<67108864);for(var l=0,w=0;w>=26,l+=_/67108864|0,l+=g>>>26,this.words[w]=g&67108863}return l!==0&&(this.words[w]=l,this.length++),o?this.ineg():this},n.prototype.muln=function(a){return this.clone().imuln(a)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(a){var o=H(a);if(o.length===0)return new n(1);for(var l=this,w=0;w=0);var o=a%26,l=(a-o)/26,w=67108863>>>26-o<<26-o,_;if(o!==0){var g=0;for(_=0;_>>26-o}g&&(this.words[_]=g,this.length++)}if(l!==0){for(_=this.length-1;_>=0;_--)this.words[_+l]=this.words[_];for(_=0;_=0);var w;o?w=(o-o%26)/26:w=0;var _=a%26,g=Math.min((a-_)/26,this.length),s=67108863^67108863>>>_<<_,p=l;if(w-=g,w=Math.max(0,w),p){for(var b=0;bg)for(this.length-=g,b=0;b=0&&(S!==0||b>=w);b--){var G=this.words[b]|0;this.words[b]=S<<26-_|G>>>_,S=G&s}return p&&S!==0&&(p.words[p.length++]=S),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},n.prototype.ishrn=function(a,o,l){return i(this.negative===0),this.iushrn(a,o,l)},n.prototype.shln=function(a){return this.clone().ishln(a)},n.prototype.ushln=function(a){return this.clone().iushln(a)},n.prototype.shrn=function(a){return this.clone().ishrn(a)},n.prototype.ushrn=function(a){return this.clone().iushrn(a)},n.prototype.testn=function(a){i(typeof a=="number"&&a>=0);var o=a%26,l=(a-o)/26,w=1<=0);var o=a%26,l=(a-o)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=l)return this;if(o!==0&&l++,this.length=Math.min(l,this.length),o!==0){var w=67108863^67108863>>>o<=67108864;o++)this.words[o]-=67108864,o===this.length-1?this.words[o+1]=1:this.words[o+1]++;return this.length=Math.max(this.length,o+1),this},n.prototype.isubn=function(a){if(i(typeof a=="number"),i(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var o=0;o>26)-(p/67108864|0),this.words[_+l]=g&67108863}for(;_>26,this.words[_+l]=g&67108863;if(s===0)return this._strip();for(i(s===-1),s=0,_=0;_>26,this.words[_]=g&67108863;return this.negative=1,this._strip()},n.prototype._wordDiv=function(a,o){var l=this.length-a.length,w=this.clone(),_=a,g=_.words[_.length-1]|0,s=this._countBits(g);l=26-s,l!==0&&(_=_.ushln(l),w.iushln(l),g=_.words[_.length-1]|0);var p=w.length-_.length,b;if(o!=="mod"){b=new n(null),b.length=p+1,b.words=new Array(b.length);for(var S=0;S=0;M--){var k=(w.words[_.length+M]|0)*67108864+(w.words[_.length+M-1]|0);for(k=Math.min(k/g|0,67108863),w._ishlnsubmul(_,k,M);w.negative!==0;)k--,w.negative=0,w._ishlnsubmul(_,1,M),w.isZero()||(w.negative^=1);b&&(b.words[M]=k)}return b&&b._strip(),w._strip(),o!=="div"&&l!==0&&w.iushrn(l),{div:b||null,mod:w}},n.prototype.divmod=function(a,o,l){if(i(!a.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var w,_,g;return this.negative!==0&&a.negative===0?(g=this.neg().divmod(a,o),o!=="mod"&&(w=g.div.neg()),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.iadd(a)),{div:w,mod:_}):this.negative===0&&a.negative!==0?(g=this.divmod(a.neg(),o),o!=="mod"&&(w=g.div.neg()),{div:w,mod:g.mod}):this.negative&a.negative?(g=this.neg().divmod(a.neg(),o),o!=="div"&&(_=g.mod.neg(),l&&_.negative!==0&&_.isub(a)),{div:g.div,mod:_}):a.length>this.length||this.cmp(a)<0?{div:new n(0),mod:this}:a.length===1?o==="div"?{div:this.divn(a.words[0]),mod:null}:o==="mod"?{div:null,mod:new n(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new n(this.modrn(a.words[0]))}:this._wordDiv(a,o)},n.prototype.div=function(a){return this.divmod(a,"div",!1).div},n.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},n.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},n.prototype.divRound=function(a){var o=this.divmod(a);if(o.mod.isZero())return o.div;var l=o.div.negative!==0?o.mod.isub(a):o.mod,w=a.ushrn(1),_=a.andln(1),g=l.cmp(w);return g<0||_===1&&g===0?o.div:o.div.negative!==0?o.div.isubn(1):o.div.iaddn(1)},n.prototype.modrn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=(1<<26)%a,w=0,_=this.length-1;_>=0;_--)w=(l*w+(this.words[_]|0))%a;return o?-w:w},n.prototype.modn=function(a){return this.modrn(a)},n.prototype.idivn=function(a){var o=a<0;o&&(a=-a),i(a<=67108863);for(var l=0,w=this.length-1;w>=0;w--){var _=(this.words[w]|0)+l*67108864;this.words[w]=_/a|0,l=_%a}return this._strip(),o?this.ineg():this},n.prototype.divn=function(a){return this.clone().idivn(a)},n.prototype.egcd=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=new n(0),s=new n(1),p=0;o.isEven()&&l.isEven();)o.iushrn(1),l.iushrn(1),++p;for(var b=l.clone(),S=o.clone();!o.isZero();){for(var G=0,M=1;!(o.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(o.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(b),_.isub(S)),w.iushrn(1),_.iushrn(1);for(var k=0,B=1;!(l.words[0]&B)&&k<26;++k,B<<=1);if(k>0)for(l.iushrn(k);k-- >0;)(g.isOdd()||s.isOdd())&&(g.iadd(b),s.isub(S)),g.iushrn(1),s.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(g),_.isub(s)):(l.isub(o),g.isub(w),s.isub(_))}return{a:g,b:s,gcd:l.iushln(p)}},n.prototype._invmp=function(a){i(a.negative===0),i(!a.isZero());var o=this,l=a.clone();o.negative!==0?o=o.umod(a):o=o.clone();for(var w=new n(1),_=new n(0),g=l.clone();o.cmpn(1)>0&&l.cmpn(1)>0;){for(var s=0,p=1;!(o.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(o.iushrn(s);s-- >0;)w.isOdd()&&w.iadd(g),w.iushrn(1);for(var b=0,S=1;!(l.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(l.iushrn(b);b-- >0;)_.isOdd()&&_.iadd(g),_.iushrn(1);o.cmp(l)>=0?(o.isub(l),w.isub(_)):(l.isub(o),_.isub(w))}var G;return o.cmpn(1)===0?G=w:G=_,G.cmpn(0)<0&&G.iadd(a),G},n.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var o=this.clone(),l=a.clone();o.negative=0,l.negative=0;for(var w=0;o.isEven()&&l.isEven();w++)o.iushrn(1),l.iushrn(1);do{for(;o.isEven();)o.iushrn(1);for(;l.isEven();)l.iushrn(1);var _=o.cmp(l);if(_<0){var g=o;o=l,l=g}else if(_===0||l.cmpn(1)===0)break;o.isub(l)}while(!0);return l.iushln(w)},n.prototype.invm=function(a){return this.egcd(a).a.umod(a)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(a){return this.words[0]&a},n.prototype.bincn=function(a){i(typeof a=="number");var o=a%26,l=(a-o)/26,w=1<>>26,s&=67108863,this.words[g]=s}return _!==0&&(this.words[g]=_,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(a){var o=a<0;if(this.negative!==0&&!o)return-1;if(this.negative===0&&o)return 1;this._strip();var l;if(this.length>1)l=1;else{o&&(a=-a),i(a<=67108863,"Number is too big");var w=this.words[0]|0;l=w===a?0:wa.length)return 1;if(this.length=0;l--){var w=this.words[l]|0,_=a.words[l]|0;if(w!==_){w<_?o=-1:w>_&&(o=1);break}}return o},n.prototype.gtn=function(a){return this.cmpn(a)===1},n.prototype.gt=function(a){return this.cmp(a)===1},n.prototype.gten=function(a){return this.cmpn(a)>=0},n.prototype.gte=function(a){return this.cmp(a)>=0},n.prototype.ltn=function(a){return this.cmpn(a)===-1},n.prototype.lt=function(a){return this.cmp(a)===-1},n.prototype.lten=function(a){return this.cmpn(a)<=0},n.prototype.lte=function(a){return this.cmp(a)<=0},n.prototype.eqn=function(a){return this.cmpn(a)===0},n.prototype.eq=function(a){return this.cmp(a)===0},n.red=function(a){return new C(a)},n.prototype.toRed=function(a){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(a){return this.red=a,this},n.prototype.forceRed=function(a){return i(!this.red,"Already a number in reduction context"),this._forceRed(a)},n.prototype.redAdd=function(a){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},n.prototype.redIAdd=function(a){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},n.prototype.redSub=function(a){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},n.prototype.redISub=function(a){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},n.prototype.redShl=function(a){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},n.prototype.redMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},n.prototype.redIMul=function(a){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(a){return i(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var U={k256:null,p224:null,p192:null,p25519:null};function L(u,a){this.name=u,this.p=new n(a,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}L.prototype._tmp=function(){var a=new n(null);return a.words=new Array(Math.ceil(this.n/13)),a},L.prototype.ireduce=function(a){var o=a,l;do this.split(o,this.tmp),o=this.imulK(o),o=o.iadd(this.tmp),l=o.bitLength();while(l>this.n);var w=l0?o.isub(this.p):o.strip!==void 0?o.strip():o._strip(),o},L.prototype.split=function(a,o){a.iushrn(this.n,0,o)},L.prototype.imulK=function(a){return a.imul(this.k)};function m(){L.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(m,L),m.prototype.split=function(a,o){for(var l=4194303,w=Math.min(a.length,9),_=0;_>>22,g=s}g>>>=22,a.words[_-10]=g,g===0&&a.length>10?a.length-=10:a.length-=9},m.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var o=0,l=0;l>>=26,a.words[l]=_,o=w}return o!==0&&(a.words[a.length++]=o),a},n._prime=function(a){if(U[a])return U[a];var o;if(a==="k256")o=new m;else if(a==="p224")o=new P;else if(a==="p192")o=new Y;else if(a==="p25519")o=new Q;else throw new Error("Unknown prime "+a);return U[a]=o,o};function C(u){if(typeof u=="string"){var a=n._prime(u);this.m=a.p,this.prime=a}else i(u.gtn(1),"modulus must be greater than 1"),this.m=u,this.prime=null}C.prototype._verify1=function(a){i(a.negative===0,"red works only with positives"),i(a.red,"red works only with red numbers")},C.prototype._verify2=function(a,o){i((a.negative|o.negative)===0,"red works only with positives"),i(a.red&&a.red===o.red,"red works only with red numbers")},C.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(x(a,a.umod(this.m)._forceRed(this)),a)},C.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},C.prototype.add=function(a,o){this._verify2(a,o);var l=a.add(o);return l.cmp(this.m)>=0&&l.isub(this.m),l._forceRed(this)},C.prototype.iadd=function(a,o){this._verify2(a,o);var l=a.iadd(o);return l.cmp(this.m)>=0&&l.isub(this.m),l},C.prototype.sub=function(a,o){this._verify2(a,o);var l=a.sub(o);return l.cmpn(0)<0&&l.iadd(this.m),l._forceRed(this)},C.prototype.isub=function(a,o){this._verify2(a,o);var l=a.isub(o);return l.cmpn(0)<0&&l.iadd(this.m),l},C.prototype.shl=function(a,o){return this._verify1(a),this.imod(a.ushln(o))},C.prototype.imul=function(a,o){return this._verify2(a,o),this.imod(a.imul(o))},C.prototype.mul=function(a,o){return this._verify2(a,o),this.imod(a.mul(o))},C.prototype.isqr=function(a){return this.imul(a,a.clone())},C.prototype.sqr=function(a){return this.mul(a,a)},C.prototype.sqrt=function(a){if(a.isZero())return a.clone();var o=this.m.andln(3);if(i(o%2===1),o===3){var l=this.m.add(new n(1)).iushrn(2);return this.pow(a,l)}for(var w=this.m.subn(1),_=0;!w.isZero()&&w.andln(1)===0;)_++,w.iushrn(1);i(!w.isZero());var g=new n(1).toRed(this),s=g.redNeg(),p=this.m.subn(1).iushrn(1),b=this.m.bitLength();for(b=new n(2*b*b).toRed(this);this.pow(b,p).cmp(s)!==0;)b.redIAdd(s);for(var S=this.pow(b,w),G=this.pow(a,w.addn(1).iushrn(1)),M=this.pow(a,w),k=_;M.cmp(g)!==0;){for(var B=M,T=0;B.cmp(g)!==0;T++)B=B.redSqr();i(T=0;_--){for(var S=o.words[_],G=b-1;G>=0;G--){var M=S>>G&1;if(g!==w[0]&&(g=this.sqr(g)),M===0&&s===0){p=0;continue}s<<=1,s|=M,p++,!(p!==l&&(_!==0||G!==0))&&(g=this.mul(g,w[s]),p=0,s=0)}b=26}return g},C.prototype.convertTo=function(a){var o=a.umod(this.m);return o===a?o.clone():o},C.prototype.convertFrom=function(a){var o=a.clone();return o.red=null,o},n.mont=function(a){return new h(a)};function h(u){C.call(this,u),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(h,C),h.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},h.prototype.convertFrom=function(a){var o=this.imod(a.mul(this.rinv));return o.red=null,o},h.prototype.imul=function(a,o){if(a.isZero()||o.isZero())return a.words[0]=0,a.length=1,a;var l=a.imul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.mul=function(a,o){if(a.isZero()||o.isZero())return new n(0)._forceRed(this);var l=a.mul(o),w=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_=l.isub(w).iushrn(this.shift),g=_;return _.cmp(this.m)>=0?g=_.isub(this.m):_.cmpn(0)<0&&(g=_.iadd(this.m)),g._forceRed(this)},h.prototype.invm=function(a){var o=this.imod(a._invmp(this.m).mul(this.r2));return o._forceRed(this)}})(t,Rn)})(f0);var qe=f0.exports;const a0="bignumber/5.7.0";var Vi=qe.BN;const ar=new ke(a0),Zn={},o0=9007199254740991;function Hh(t){return t!=null&&(Ze.isBigNumber(t)||typeof t=="number"&&t%1===0||typeof t=="string"&&!!t.match(/^-?[0-9]+$/)||xt(t)||typeof t=="bigint"||ti(t))}let s0=!1;class Ze{constructor(e,r){e!==Zn&&ar.throwError("cannot call constructor directly; use BigNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return yt(He(this).fromTwos(e))}toTwos(e){return yt(He(this).toTwos(e))}abs(){return this._hex[0]==="-"?Ze.from(this._hex.substring(1)):this}add(e){return yt(He(this).add(He(e)))}sub(e){return yt(He(this).sub(He(e)))}div(e){return Ze.from(e).isZero()&&Nt("division-by-zero","div"),yt(He(this).div(He(e)))}mul(e){return yt(He(this).mul(He(e)))}mod(e){const r=He(e);return r.isNeg()&&Nt("division-by-zero","mod"),yt(He(this).umod(r))}pow(e){const r=He(e);return r.isNeg()&&Nt("negative-power","pow"),yt(He(this).pow(r))}and(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","and"),yt(He(this).and(r))}or(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","or"),yt(He(this).or(r))}xor(e){const r=He(e);return(this.isNegative()||r.isNeg())&&Nt("unbound-bitwise-result","xor"),yt(He(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&Nt("negative-width","mask"),yt(He(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&Nt("negative-width","shl"),yt(He(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&Nt("negative-width","shr"),yt(He(this).shrn(e))}eq(e){return He(this).eq(He(e))}lt(e){return He(this).lt(He(e))}lte(e){return He(this).lte(He(e))}gt(e){return He(this).gt(He(e))}gte(e){return He(this).gte(He(e))}isNegative(){return this._hex[0]==="-"}isZero(){return He(this).isZero()}toNumber(){try{return He(this).toNumber()}catch{Nt("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return ar.throwError("this platform does not support BigInt",ke.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?s0||(s0=!0,ar.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?ar.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",ke.errors.UNEXPECTED_ARGUMENT,{}):ar.throwError("BigNumber.toString does not accept parameters",ke.errors.UNEXPECTED_ARGUMENT,{})),He(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof Ze)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new Ze(Zn,Mi(e)):e.match(/^-?[0-9]+$/)?new Ze(Zn,Mi(new Vi(e))):ar.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&Nt("underflow","BigNumber.from",e),(e>=o0||e<=-o0)&&Nt("overflow","BigNumber.from",e),Ze.from(String(e));const r=e;if(typeof r=="bigint")return Ze.from(r.toString());if(ti(r))return Ze.from(pt(r));if(r)if(r.toHexString){const i=r.toHexString();if(typeof i=="string")return Ze.from(i)}else{let i=r._hex;if(i==null&&r.type==="BigNumber"&&(i=r.hex),typeof i=="string"&&(xt(i)||i[0]==="-"&&xt(i.substring(1))))return Ze.from(i)}return ar.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function Mi(t){if(typeof t!="string")return Mi(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&ar.throwArgumentError("invalid hex","value",t),t=Mi(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function yt(t){return Ze.from(Mi(t))}function He(t){const e=Ze.from(t).toHexString();return e[0]==="-"?new Vi("-"+e.substring(3),16):new Vi(e.substring(2),16)}function Nt(t,e,r){const i={fault:t,operation:e};return r!=null&&(i.value=r),ar.throwError(t,ke.errors.NUMERIC_FAULT,i)}function Kh(t){return new Vi(t,36).toString(16)}const mt=new ke(a0),Ei={},u0=Ze.from(0),h0=Ze.from(-1);function c0(t,e,r,i){const f={fault:e,operation:r};return i!==void 0&&(f.value=i),mt.throwError(t,ke.errors.NUMERIC_FAULT,f)}let Si="0";for(;Si.length<256;)Si+=Si;function ef(t){if(typeof t!="number")try{t=Ze.from(t).toNumber()}catch{}return typeof t=="number"&&t>=0&&t<=256&&!(t%1)?"1"+Si.substring(0,t):mt.throwArgumentError("invalid decimal size","decimals",t)}function tf(t,e){e==null&&(e=0);const r=ef(e);t=Ze.from(t);const i=t.lt(u0);i&&(t=t.mul(h0));let f=t.mod(r).toString();for(;f.length2&&mt.throwArgumentError("too many decimal points","value",t);let n=f[0],d=f[1];for(n||(n="0"),d||(d="0");d[d.length-1]==="0";)d=d.substring(0,d.length-1);for(d.length>r.length-1&&c0("fractional component exceeds decimals","underflow","parseFixed"),d===""&&(d="0");d.lengthe[d]==null?y:(typeof e[d]!==c&&mt.throwArgumentError("invalid fixed format ("+d+" not "+c+")","format."+d,e[d]),e[d]);r=n("signed","boolean",r),i=n("width","number",i),f=n("decimals","number",f)}return i%8&&mt.throwArgumentError("invalid fixed format width (not byte aligned)","format.width",i),f>80&&mt.throwArgumentError("invalid fixed format (decimals too large)","format.decimals",f),new ri(Ei,r,i,f)}}class st{constructor(e,r,i,f){e!==Ei&&mt.throwError("cannot use FixedNumber constructor; use FixedNumber.from",ke.errors.UNSUPPORTED_OPERATION,{operation:"new FixedFormat"}),this.format=f,this._hex=r,this._value=i,this._isFixedNumber=!0,Object.freeze(this)}_checkFormat(e){this.format.name!==e.format.name&&mt.throwArgumentError("incompatible format; use fixedNumber.toFormat","other",e)}addUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.add(i),this.format.decimals,this.format)}subUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.sub(i),this.format.decimals,this.format)}mulUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(i).div(this.format._multiplier),this.format.decimals,this.format)}divUnsafe(e){this._checkFormat(e);const r=or(this._value,this.format.decimals),i=or(e._value,e.format.decimals);return st.fromValue(r.mul(this.format._multiplier).div(i),this.format.decimals,this.format)}floor(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return this.isNegative()&&i&&(r=r.subUnsafe(d0.toFormat(r.format))),r}ceiling(){const e=this.toString().split(".");e.length===1&&e.push("0");let r=st.from(e[0],this.format);const i=!e[1].match(/^(0*)$/);return!this.isNegative()&&i&&(r=r.addUnsafe(d0.toFormat(r.format))),r}round(e){e==null&&(e=0);const r=this.toString().split(".");if(r.length===1&&r.push("0"),(e<0||e>80||e%1)&&mt.throwArgumentError("invalid decimal count","decimals",e),r[1].length<=e)return this;const i=st.from("1"+Si.substring(0,e),this.format),f=jh.toFormat(this.format);return this.mulUnsafe(i).addUnsafe(f).floor().divUnsafe(i)}isZero(){return this._value==="0.0"||this._value==="0"}isNegative(){return this._value[0]==="-"}toString(){return this._value}toHexString(e){if(e==null)return this._hex;e%8&&mt.throwArgumentError("invalid byte width","width",e);const r=Ze.from(this._hex).fromTwos(this.format.width).toTwos(e).toHexString();return Vt(r,e/8)}toUnsafeFloat(){return parseFloat(this.toString())}toFormat(e){return st.fromString(this._value,e)}static fromValue(e,r,i){return i==null&&r!=null&&!Hh(r)&&(i=r,r=null),r==null&&(r=0),i==null&&(i="fixed"),st.fromString(tf(e,r),ri.from(i))}static fromString(e,r){r==null&&(r="fixed");const i=ri.from(r),f=or(e,i.decimals);!i.signed&&f.lt(u0)&&c0("unsigned value cannot be negative","overflow","value",e);let n=null;i.signed?n=f.toTwos(i.width).toHexString():(n=f.toHexString(),n=Vt(n,i.width/8));const d=tf(f,i.decimals);return new st(Ei,n,d,i)}static fromBytes(e,r){r==null&&(r="fixed");const i=ri.from(r);if(tt(e).length>i.width/8)throw new Error("overflow");let f=Ze.from(e);i.signed&&(f=f.fromTwos(i.width));const n=f.toTwos((i.signed?0:1)+i.width).toHexString(),d=tf(f,i.decimals);return new st(Ei,n,d,i)}static from(e,r){if(typeof e=="string")return st.fromString(e,r);if(ti(e))return st.fromBytes(e,r);try{return st.fromValue(e,0,r)}catch(i){if(i.code!==ke.errors.INVALID_ARGUMENT)throw i}return mt.throwArgumentError("invalid FixedNumber value","value",e)}static isFixedNumber(e){return!!(e&&e._isFixedNumber)}}const d0=st.from(1),jh=st.from("0.5"),$h="strings/5.7.0",l0=new ke($h);var Gi;(function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"})(Gi||(Gi={}));var ii;(function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"})(ii||(ii={}));function Vh(t,e,r,i,f){return l0.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",r)}function b0(t,e,r,i,f){if(t===ii.BAD_PREFIX||t===ii.UNEXPECTED_CONTINUE){let n=0;for(let d=e+1;d>6===2;d++)n++;return n}return t===ii.OVERRUN?r.length-e-1:0}function Gh(t,e,r,i,f){return t===ii.OVERLONG?(i.push(f),0):(i.push(65533),b0(t,e,r))}Object.freeze({error:Vh,ignore:b0,replace:Gh});function rf(t,e=Gi.current){e!=Gi.current&&(l0.checkNormalize(),t=t.normalize(e));let r=[];for(let i=0;i>6|192),r.push(f&63|128);else if((f&64512)==55296){i++;const n=t.charCodeAt(i);if(i>=t.length||(n&64512)!==56320)throw new Error("invalid utf-8 string");const d=65536+((f&1023)<<10)+(n&1023);r.push(d>>18|240),r.push(d>>12&63|128),r.push(d>>6&63|128),r.push(d&63|128)}else r.push(f>>12|224),r.push(f>>6&63|128),r.push(f&63|128)}return tt(r)}function Yh(t){if(t.length%4!==0)throw new Error("bad data");let e=[];for(let r=0;r{let n=f.split(":");r+=parseInt(n[0],16),i[r]=e(n[1])}),i}function v0(t){let e=0;return t.split(",").map(r=>{let i=r.split("-");i.length===1?i[1]="0":i[1]===""&&(i[1]="1");let f=e+parseInt(i[0],16);return e=parseInt(i[1],16),{l:f,h:e}})}v0("221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d"),"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff".split(",").map(t=>parseInt(t,16)),nf("b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3"),nf("179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7"),nf("df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D",Yh),v0("80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001");const p0="hash/5.7.0";function Jh(t){t=atob(t);const e=[];for(let r=0;r0&&Array.isArray(c)?f(c,d-1):r.push(c)})};return f(t,e),r}function Wh(t){const e={};for(let r=0;r>--y&1}const E=31,N=Math.pow(2,E),D=N>>>1,I=D>>1,q=N-1;let H=0;for(let U=0;U1;){let Q=L+m>>>1;U>>1|x(),P=P<<1^D,Y=(Y^D)<<1|D|1;z=P,j=1+Y-P}let F=i-4;return V.map(U=>{switch(U-F){case 3:return F+65792+(t[c++]<<16|t[c++]<<8|t[c++]);case 2:return F+256+(t[c++]<<8|t[c++]);case 1:return F+t[c++];default:return U-1}})}function Xh(t){let e=0;return()=>t[e++]}function Zh(t){return Xh(Qh(t))}function ec(t){return t&1?~t>>1:t>>1}function tc(t,e){let r=Array(t);for(let i=0;ie[d]):r}function ic(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(fc(r,t))}for(;;){let r=t()-1;if(r<0)break;e.push(ac(r,t))}return Wh(m0(e))}function nc(t){let e=[];for(;;){let r=t();if(r==0)break;e.push(r)}return e}function y0(t,e,r){let i=Array(t).fill(void 0).map(()=>[]);for(let f=0;fi[d].push(n));return i}function fc(t,e){let r=1+e(),i=e(),f=nc(e),n=y0(f.length,1+t,e);return m0(n.map((d,c)=>{const y=d[0],A=d.slice(1);return Array(f[c]).fill(void 0).map((x,E)=>{let N=E*i;return[y+E*r,A.map(D=>D+N)]})}))}function ac(t,e){let r=1+e();return y0(r,1+t,e).map(f=>[f[0],f.slice(1)])}function oc(t){let e=Yi(t).sort((i,f)=>i-f);return r();function r(){let i=[];for(;;){let A=Yi(t,e);if(A.length==0)break;i.push({set:new Set(A),node:r()})}i.sort((A,x)=>x.set.size-A.set.size);let f=t(),n=f%3;f=f/3|0;let d=!!(f&1);f>>=1;let c=f==1,y=f==2;return{branches:i,valid:n,fe0f:d,save:c,check:y}}}function sc(){return Zh(Jh("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"))}const Ji=sc();new Set(Yi(Ji)),new Set(Yi(Ji)),ic(Ji),oc(Ji),new ke(p0),new Uint8Array(32).fill(0);const uc=`Ethereum Signed Message: -+`;function w0(t){return typeof t=="string"&&(t=rf(t)),Xn(Uh([rf(uc),rf(String(t.length)),t]))}const hc="rlp/5.7.0";new ke(hc);const cc="address/5.7.0",Di=new ke(cc);function A0(t){xt(t,20)||Di.throwArgumentError("invalid address","address",t),t=t.toLowerCase();const e=t.substring(2).split(""),r=new Uint8Array(40);for(let f=0;f<40;f++)r[f]=e[f].charCodeAt(0);const i=tt(Xn(r));for(let f=0;f<40;f+=2)i[f>>1]>>4>=8&&(e[f]=e[f].toUpperCase()),(i[f>>1]&15)>=8&&(e[f+1]=e[f+1].toUpperCase());return"0x"+e.join("")}const dc=9007199254740991;function lc(t){return Math.log10?Math.log10(t):Math.log(t)/Math.LN10}const ff={};for(let t=0;t<10;t++)ff[String(t)]=String(t);for(let t=0;t<26;t++)ff[String.fromCharCode(65+t)]=String(10+t);const x0=Math.floor(lc(dc));function bc(t){t=t.toUpperCase(),t=t.substring(4)+t.substring(0,2)+"00";let e=t.split("").map(i=>ff[i]).join("");for(;e.length>=x0;){let i=e.substring(0,x0);e=parseInt(i,10)%97+e.substring(i.length)}let r=String(98-parseInt(e,10)%97);for(;r.length<2;)r="0"+r;return r}function vc(t){let e=null;if(typeof t!="string"&&Di.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))t.substring(0,2)!=="0x"&&(t="0x"+t),e=A0(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&Di.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==bc(t)&&Di.throwArgumentError("bad icap checksum","address",t),e=Kh(t.substring(4));e.length<40;)e="0"+e;e=A0("0x"+e)}else Di.throwArgumentError("invalid address","address",t);return e}const pc="properties/5.7.0";new ke(pc);function Ii(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}new ke(p0),new Uint8Array(32).fill(0),Ze.from(-1);const mc=Ze.from(0),gc=Ze.from(1);Ze.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),Vt(gc.toHexString(),32),Vt(mc.toHexString(),32);var _t={},Ke={},Ir=_0;function _0(t,e){if(!t)throw new Error(e||"Assertion failed")}_0.equal=function(e,r,i){if(e!=r)throw new Error(i||"Assertion failed: "+e+" != "+r)};var ni={exports:{}};typeof Object.create=="function"?ni.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:ni.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}};var yc=Ir,wc=ni.exports;Ke.inherits=wc;function Ac(t,e){return(t.charCodeAt(e)&64512)!==55296||e<0||e+1>=t.length?!1:(t.charCodeAt(e+1)&64512)===56320}function xc(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if(typeof t=="string")if(e){if(e==="hex")for(t=t.replace(/[^a-z0-9]+/ig,""),t.length%2!==0&&(t="0"+t),f=0;f>6|192,r[i++]=n&63|128):Ac(t,f)?(n=65536+((n&1023)<<10)+(t.charCodeAt(++f)&1023),r[i++]=n>>18|240,r[i++]=n>>12&63|128,r[i++]=n>>6&63|128,r[i++]=n&63|128):(r[i++]=n>>12|224,r[i++]=n>>6&63|128,r[i++]=n&63|128)}else for(f=0;f>>24|t>>>8&65280|t<<8&16711680|(t&255)<<24;return e>>>0}Ke.htonl=M0;function Mc(t,e){for(var r="",i=0;i>>0}return n}Ke.join32=Ec;function Sc(t,e){for(var r=new Array(t.length*4),i=0,f=0;i>>24,r[f+1]=n>>>16&255,r[f+2]=n>>>8&255,r[f+3]=n&255):(r[f+3]=n>>>24,r[f+2]=n>>>16&255,r[f+1]=n>>>8&255,r[f]=n&255)}return r}Ke.split32=Sc;function Dc(t,e){return t>>>e|t<<32-e}Ke.rotr32=Dc;function Ic(t,e){return t<>>32-e}Ke.rotl32=Ic;function Nc(t,e){return t+e>>>0}Ke.sum32=Nc;function Cc(t,e,r){return t+e+r>>>0}Ke.sum32_3=Cc;function Bc(t,e,r,i){return t+e+r+i>>>0}Ke.sum32_4=Bc;function Oc(t,e,r,i,f){return t+e+r+i+f>>>0}Ke.sum32_5=Oc;function Rc(t,e,r,i){var f=t[e],n=t[e+1],d=i+n>>>0,c=(d>>0,t[e+1]=d}Ke.sum64=Rc;function Pc(t,e,r,i){var f=e+i>>>0,n=(f>>0}Ke.sum64_hi=Pc;function Tc(t,e,r,i){var f=e+i;return f>>>0}Ke.sum64_lo=Tc;function Fc(t,e,r,i,f,n,d,c){var y=0,A=e;A=A+i>>>0,y+=A>>0,y+=A>>0,y+=A>>0}Ke.sum64_4_hi=Fc;function Uc(t,e,r,i,f,n,d,c){var y=e+i+n+c;return y>>>0}Ke.sum64_4_lo=Uc;function Lc(t,e,r,i,f,n,d,c,y,A){var x=0,E=e;E=E+i>>>0,x+=E>>0,x+=E>>0,x+=E>>0,x+=E>>0}Ke.sum64_5_hi=Lc;function qc(t,e,r,i,f,n,d,c,y,A){var x=e+i+n+c+A;return x>>>0}Ke.sum64_5_lo=qc;function zc(t,e,r){var i=e<<32-r|t>>>r;return i>>>0}Ke.rotr64_hi=zc;function kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.rotr64_lo=kc;function Hc(t,e,r){return t>>>r}Ke.shr64_hi=Hc;function Kc(t,e,r){var i=t<<32-r|e>>>r;return i>>>0}Ke.shr64_lo=Kc;var fi={},D0=Ke,jc=Ir;function Wi(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}fi.BlockHash=Wi,Wi.prototype.update=function(e,r){if(e=D0.toArray(e,r),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var i=e.length%this._delta8;this.pending=e.slice(e.length-i,e.length),this.pending.length===0&&(this.pending=null),e=D0.join32(e,0,e.length-i,this.endian);for(var f=0;f>>24&255,f[n++]=e>>>16&255,f[n++]=e>>>8&255,f[n++]=e&255}else for(f[n++]=e&255,f[n++]=e>>>8&255,f[n++]=e>>>16&255,f[n++]=e>>>24&255,f[n++]=0,f[n++]=0,f[n++]=0,f[n++]=0,d=8;d>>3}Gt.g0_256=Jc;function Wc(t){return Yt(t,17)^Yt(t,19)^t>>>10}Gt.g1_256=Wc;var oi=Ke,Qc=fi,Xc=Gt,af=oi.rotl32,Ni=oi.sum32,Zc=oi.sum32_5,ed=Xc.ft_1,B0=Qc.BlockHash,td=[1518500249,1859775393,2400959708,3395469782];function Jt(){if(!(this instanceof Jt))return new Jt;B0.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}oi.inherits(Jt,B0);var rd=Jt;Jt.blockSize=512,Jt.outSize=160,Jt.hmacStrength=80,Jt.padLength=64,Jt.prototype._update=function(e,r){for(var i=this.W,f=0;f<16;f++)i[f]=e[r+f];for(;fthis.blockSize&&(e=new this.Hash().update(e).digest()),Kd(e.length<=this.blockSize);for(var r=e.length;r>8,N=x&255;E?y.push(E,N):y.push(N)}return y}r.toArray=i;function f(d){return d.length===1?"0"+d:d}r.zero2=f;function n(d){for(var c="",y=0;y(N>>1)-1?q=(N>>1)-H:q=H,D.isubn(q)):q=0,E[I]=q,D.iushrn(1)}return E}r.getNAF=i;function f(y,A){var x=[[],[]];y=y.clone(),A=A.clone();for(var E=0,N=0,D;y.cmpn(-E)>0||A.cmpn(-N)>0;){var I=y.andln(3)+E&3,q=A.andln(3)+N&3;I===3&&(I=-1),q===3&&(q=-1);var H;I&1?(D=y.andln(7)+E&7,(D===3||D===5)&&q===2?H=-I:H=I):H=0,x[0].push(H);var V;q&1?(D=A.andln(7)+N&7,(D===3||D===5)&&I===2?V=-q:V=q):V=0,x[1].push(V),2*E===H+1&&(E=1-E),2*N===V+1&&(N=1-N),y.iushrn(1),A.iushrn(1)}return x}r.getJSF=f;function n(y,A,x){var E="_"+A;y.prototype[A]=function(){return this[E]!==void 0?this[E]:this[E]=x.call(this)}}r.cachedProperty=n;function d(y){return typeof y=="string"?r.toArray(y,"hex"):y}r.parseBytes=d;function c(y){return new qe(y,"hex","le")}r.intFromLE=c}),Xi=Mt.getNAF,Vd=Mt.getJSF,Zi=Mt.assert;function vr(t,e){this.type=t,this.p=new qe(e.p,16),this.red=e.prime?qe.red(e.prime):qe.mont(this.p),this.zero=new qe(0).toRed(this.red),this.one=new qe(1).toRed(this.red),this.two=new qe(2).toRed(this.red),this.n=e.n&&new qe(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var Cr=vr;vr.prototype.point=function(){throw new Error("Not implemented")},vr.prototype.validate=function(){throw new Error("Not implemented")},vr.prototype._fixedNafMul=function(e,r){Zi(e.precomputed);var i=e._getDoubles(),f=Xi(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];Zi(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},vr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=Xi(i[I],d[I],this._bitLength),y[q]=Xi(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=Vd(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Ct.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Bt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Bt.prototype.pointFromX=function(e,r){e=new qe(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Bt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Bt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},nt.prototype.isInfinity=function(){return this.inf},nt.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},nt.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},nt.prototype.getX=function(){return this.x.fromRed()},nt.prototype.getY=function(){return this.y.fromRed()},nt.prototype.mul=function(e){return e=new qe(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},nt.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},nt.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},nt.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},nt.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},nt.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ut(t,e,r,i){Cr.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new qe(0)):(this.x=new qe(e,16),this.y=new qe(r,16),this.z=new qe(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}df(ut,Cr.BasePoint),Bt.prototype.jpoint=function(e,r,i){return new ut(this,e,r,i)},ut.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ut.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ut.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ut.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ut.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ut.prototype.inspect=function(){return this.isInfinity()?"":""},ut.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var en=ci(function(t,e){var r=e;r.base=Cr,r.short=Yd,r.mont=null,r.edwards=null}),tn=ci(function(t,e){var r=e,i=Mt.assert;function f(c){c.type==="short"?this.curve=new en.short(c):c.type==="edwards"?this.curve=new en.edwards(c):this.curve=new en.mont(c),this.g=this.curve.g,this.n=this.curve.n,this.hash=c.hash,i(this.g.validate(),"Invalid curve"),i(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}r.PresetCurve=f;function n(c,y){Object.defineProperty(r,c,{configurable:!0,enumerable:!0,get:function(){var A=new f(y);return Object.defineProperty(r,c,{configurable:!0,enumerable:!0,value:A}),A}})}n("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:_t.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),n("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:_t.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),n("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:_t.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),n("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:_t.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),n("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:_t.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),n("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["9"]}),n("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:_t.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var d;try{d=null.crash()}catch{d=void 0}n("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:_t.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",d]})});function pr(t){if(!(this instanceof pr))return new pr(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=$t.toArray(t.entropy,t.entropyEnc||"hex"),r=$t.toArray(t.nonce,t.nonceEnc||"hex"),i=$t.toArray(t.pers,t.persEnc||"hex");cf(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var V0=pr;pr.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},pr.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=$t.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var Jd=Mt.assert;function rn(t,e){if(t instanceof rn)return t;this._importDER(t,e)||(Jd(t.r&&t.s,"Signature without r or s"),this.r=new qe(t.r,16),this.s=new qe(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var nn=rn;function Wd(){this.place=0}function vf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function G0(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}rn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=G0(r),i=G0(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];pf(f,r.length),f=f.concat(r),f.push(2),pf(f,i.length);var n=f.concat(i),d=[48];return pf(d,n.length),d=d.concat(n),Mt.encode(d,e)};var Qd=function(){throw new Error("unsupported")},Y0=Mt.assert;function Ot(t){if(!(this instanceof Ot))return new Ot(t);typeof t=="string"&&(Y0(Object.prototype.hasOwnProperty.call(tn,t),"Unknown curve "+t),t=tn[t]),t instanceof tn.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var Xd=Ot;Ot.prototype.keyPair=function(e){return new bf(this,e)},Ot.prototype.keyFromPrivate=function(e,r){return bf.fromPrivate(this,e,r)},Ot.prototype.keyFromPublic=function(e,r){return bf.fromPublic(this,e,r)},Ot.prototype.genKeyPair=function(e){e||(e={});for(var r=new V0({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||Qd(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new qe(2));;){var n=new qe(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ot.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ot.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new qe(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new V0({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new qe(1)),x=0;;x++){var E=f.k?f.k(x):new qe(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new nn({r:I,s:q,recoveryParam:H})}}}}}},Ot.prototype.verify=function(e,r,i,f){e=this._truncateToN(new qe(e,16)),i=this.keyFromPublic(i,f),r=new nn(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ot.prototype.recoverPubKey=function(t,e,r,i){Y0((3&r)===r,"The recovery param is more than two bits"),e=new nn(e,i);var f=this.n,n=new qe(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ot.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new nn(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Zd=ci(function(t,e){var r=e;r.version="6.5.4",r.utils=Mt,r.rand=function(){throw new Error("unsupported")},r.curve=en,r.curves=tn,r.ec=Xd,r.eddsa=null}),el=Zd.ec;const tl="signing-key/5.7.0",mf=new ke(tl);let gf=null;function er(){return gf||(gf=new el("secp256k1")),gf}class rl{constructor(e){Ii(this,"curve","secp256k1"),Ii(this,"privateKey",pt(e)),qh(this.privateKey)!==32&&mf.throwArgumentError("invalid private key","privateKey","[[ REDACTED ]]");const r=er().keyFromPrivate(tt(this.privateKey));Ii(this,"publicKey","0x"+r.getPublic(!1,"hex")),Ii(this,"compressedPublicKey","0x"+r.getPublic(!0,"hex")),Ii(this,"_isSigningKey",!0)}_addPoint(e){const r=er().keyFromPublic(tt(this.publicKey)),i=er().keyFromPublic(tt(e));return"0x"+r.pub.add(i.pub).encodeCompressed("hex")}signDigest(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=tt(e);i.length!==32&&mf.throwArgumentError("bad digest length","digest",e);const f=r.sign(i,{canonical:!0});return n0({recoveryParam:f.recoveryParam,r:Vt("0x"+f.r.toString(16),32),s:Vt("0x"+f.s.toString(16),32)})}computeSharedSecret(e){const r=er().keyFromPrivate(tt(this.privateKey)),i=er().keyFromPublic(tt(J0(e)));return Vt("0x"+r.derive(i.getPublic()).toString(16),32)}static isSigningKey(e){return!!(e&&e._isSigningKey)}}function il(t,e){const r=n0(e),i={r:tt(r.r),s:tt(r.s)};return"0x"+er().recoverPubKey(tt(t),i,r.recoveryParam).encode("hex",!1)}function J0(t,e){const r=tt(t);if(r.length===32){const i=new rl(r);return e?"0x"+er().keyFromPrivate(r).getPublic(!0,"hex"):i.publicKey}else{if(r.length===33)return e?pt(r):"0x"+er().keyFromPublic(r).getPublic(!1,"hex");if(r.length===65)return e?"0x"+er().keyFromPublic(r).getPublic(!0,"hex"):pt(r)}return mf.throwArgumentError("invalid public or private key","key","[REDACTED]")}const nl="transactions/5.7.0";new ke(nl);var W0;(function(t){t[t.legacy=0]="legacy",t[t.eip2930=1]="eip2930",t[t.eip1559=2]="eip1559"})(W0||(W0={}));function fl(t){const e=J0(t);return vc(i0(Xn(i0(e,1)),12))}function al(t,e){return fl(il(tt(t),e))}const ol="https://rpc.walletconnect.com/v1";async function Q0(t,e,r,i,f,n){switch(r.t){case"eip191":return X0(t,e,r.s);case"eip1271":return await Z0(t,e,r.s,i,f,n);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${r.t}`)}}function X0(t,e,r){return al(w0(e),r).toLowerCase()===t.toLowerCase()}async function Z0(t,e,r,i,f,n){try{const d="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",y="0000000000000000000000000000000000000000000000000000000000000041",A=r.substring(2),x=w0(e).substring(2),E=d+x+c+y+A,N=await fetch(`${n||ol}/?chainId=${i}&projectId=${f}`,{method:"POST",body:JSON.stringify({id:sl(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:E},"latest"]})}),{result:D}=await N.json();return D?D.slice(0,d.length).toLowerCase()===d.toLowerCase():!1}catch(d){return console.error("isValidEip1271Signature: ",d),!1}}function sl(){return Date.now()+Math.floor(Math.random()*1e3)}var ul=Object.defineProperty,hl=Object.defineProperties,cl=Object.getOwnPropertyDescriptors,eo=Object.getOwnPropertySymbols,dl=Object.prototype.hasOwnProperty,ll=Object.prototype.propertyIsEnumerable,to=(t,e,r)=>e in t?ul(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,yf=(t,e)=>{for(var r in e||(e={}))dl.call(e,r)&&to(t,r,e[r]);if(eo)for(var r of eo(e))ll.call(e,r)&&to(t,r,e[r]);return t},ro=(t,e)=>hl(t,cl(e));const bl="did:pkh:",fn=t=>t?.split(":"),wf=t=>{const e=t&&fn(t);if(e)return t.includes(bl)?e[3]:e[1]},vl=t=>{const e=t&&fn(t);if(e)return e[2]+":"+e[3]},Af=t=>{const e=t&&fn(t);if(e)return e.pop()};async function pl(t){const{cacao:e,projectId:r}=t,{s:i,p:f}=e,n=io(f,f.iss),d=Af(f.iss);return await Q0(d,n,i,wf(f.iss),r)}const io=(t,e)=>{const r=`${t.domain} wants you to sign in with your Ethereum account:`,i=Af(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let f=t.statement||void 0;const n=`URI: ${t.aud||t.uri}`,d=`Version: ${t.version}`,c=`Chain ID: ${wf(e)}`,y=`Nonce: ${t.nonce}`,A=`Issued At: ${t.iat}`,x=t.exp?`Expiration Time: ${t.exp}`:void 0,E=t.nbf?`Not Before: ${t.nbf}`:void 0,N=t.requestId?`Request ID: ${t.requestId}`:void 0,D=t.resources?`Resources:${t.resources.map(q=>` -+- ${q}`).join("")}`:void 0,I=on(t.resources);if(I){const q=mr(I);f=Mf(f,q)}return[r,i,"",f,"",n,d,c,y,A,x,E,N,D].filter(q=>q!=null).join(` -+`)};function ml(t,e,r){return r.includes("did:pkh:")||(r=`did:pkh:${r}`),{h:{t:"caip122"},p:{iss:r,domain:t.domain,aud:t.aud,version:t.version,nonce:t.nonce,iat:t.iat,statement:t.statement,requestId:t.requestId,resources:t.resources,nbf:t.nbf,exp:t.exp},s:e}}function gl(t){var e;const{authPayload:r,chains:i,methods:f}=t,n=r.statement||"";if(!(i!=null&&i.length))return r;const d=r.chains,c=Yn(d,i);if(!(c!=null&&c.length))throw new Error("No supported chains");const y=no(r.resources);if(!y)return r;tr(y);const A=fo(y,"eip155");let x=r?.resources||[];if(A!=null&&A.length){const E=ao(A),N=Yn(E,f);if(!(N!=null&&N.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(E)}, supported: ${JSON.stringify(f)}`);const D=xf("request",N,{chains:c}),I=ho(y,"eip155",D);x=((e=r?.resources)==null?void 0:e.slice(0,-1))||[],x.push(an(I))}return ro(yf({},r),{statement:lo(n,on(x)),chains:c,resources:r!=null&&r.resources||x.length>0?x:void 0})}function no(t){const e=on(t);if(e&&_f(e))return mr(e)}function yl(t,e){var r;return(r=t?.att)==null?void 0:r.hasOwnProperty(e)}function fo(t,e){var r,i;return(r=t?.att)!=null&&r[e]?Object.keys((i=t?.att)==null?void 0:i[e]):[]}function wl(t){return t?.map(e=>Object.keys(e))||[]}function ao(t){return t?.map(e=>{var r;return(r=e.split("/"))==null?void 0:r[1]})||[]}function oo(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function so(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function tr(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(r=>{const i=t.att[r];if(Array.isArray(i))throw new Error(`Resource must be an object: ${r}`);if(typeof i!="object")throw new Error(`Resource must be an object: ${r}`);if(!Object.keys(i).length)throw new Error(`Resource object is empty: ${r}`);Object.keys(i).forEach(f=>{const n=i[f];if(!Array.isArray(n))throw new Error(`Ability limits ${f} must be an array of objects, found: ${n}`);if(!n.length)throw new Error(`Value of ${f} is empty array, must be an array with objects`);n.forEach(d=>{if(typeof d!="object")throw new Error(`Ability limits (${f}) must be an array of objects, found: ${d}`)})})})}function uo(t,e,r,i={}){return r?.sort((f,n)=>f.localeCompare(n)),{att:{[t]:xf(e,r,i)}}}function ho(t,e,r){var i;return t.att[e]=yf({},r),((i=Object.keys(t.att))==null?void 0:i.sort((f,n)=>f.localeCompare(n))).reduce((f,n)=>(f.att[n]=t.att[n],f),{att:{}})}function xf(t,e,r={}){e=e?.sort((f,n)=>f.localeCompare(n));const i=e.map(f=>({[`${t}/${f}`]:[r]}));return Object.assign({},...i)}function an(t){return tr(t),`urn:recap:${oo(t).replace(/=/g,"")}`}function mr(t){const e=so(t.replace("urn:recap:",""));return tr(e),e}function Al(t,e,r){const i=uo(t,e,r);return an(i)}function _f(t){return t&&t.includes("urn:recap:")}function xl(t,e){const r=mr(t),i=mr(e),f=co(r,i);return an(f)}function co(t,e){tr(t),tr(e);const r=Object.keys(t.att).concat(Object.keys(e.att)).sort((f,n)=>f.localeCompare(n)),i={att:{}};return r.forEach(f=>{var n,d;Object.keys(((n=t.att)==null?void 0:n[f])||{}).concat(Object.keys(((d=e.att)==null?void 0:d[f])||{})).sort((c,y)=>c.localeCompare(y)).forEach(c=>{var y,A;i.att[f]=ro(yf({},i.att[f]),{[c]:((y=t.att[f])==null?void 0:y[c])||((A=e.att[f])==null?void 0:A[c])})})}),i}function Mf(t="",e){tr(e);const r="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(r))return t;const i=[];let f=0;Object.keys(e.att).forEach(c=>{const y=Object.keys(e.att[c]).map(E=>({ability:E.split("/")[0],action:E.split("/")[1]}));y.sort((E,N)=>E.action.localeCompare(N.action));const A={};y.forEach(E=>{A[E.ability]||(A[E.ability]=[]),A[E.ability].push(E.action)});const x=Object.keys(A).map(E=>(f++,`(${f}) '${E}': '${A[E].join("', '")}' for '${c}'.`));i.push(x.join(", ").replace(".,","."))});const n=i.join(" "),d=`${r}${n}`;return`${t?t+" ":""}${d}`}function _l(t){var e;const r=mr(t);tr(r);const i=(e=r.att)==null?void 0:e.eip155;return i?Object.keys(i).map(f=>f.split("/")[1]):[]}function Ml(t){const e=mr(t);tr(e);const r=[];return Object.values(e.att).forEach(i=>{Object.values(i).forEach(f=>{var n;(n=f?.[0])!=null&&n.chains&&r.push(f[0].chains)})}),[...new Set(r.flat())]}function lo(t,e){if(!e)return t;const r=mr(e);return tr(r),Mf(t,r)}function on(t){if(!t)return;const e=t?.[t.length-1];return _f(e)?e:void 0}var Ef={},sn={},ze={},bo={};(function(t){Object.defineProperty(t,"__esModule",{value:!0});function e(c,y){var A=c>>>16&65535,x=c&65535,E=y>>>16&65535,N=y&65535;return x*N+(A*N+x*E<<16>>>0)|0}t.mul=Math.imul||e;function r(c,y){return c+y|0}t.add=r;function i(c,y){return c-y|0}t.sub=i;function f(c,y){return c<>>32-y}t.rotl=f;function n(c,y){return c<<32-y|c>>>y}t.rotr=n;function d(c){return typeof c=="number"&&isFinite(c)&&Math.floor(c)===c}t.isInteger=Number.isInteger||d,t.MAX_SAFE_INTEGER=9007199254740991,t.isSafeInteger=function(c){return t.isInteger(c)&&c>=-t.MAX_SAFE_INTEGER&&c<=t.MAX_SAFE_INTEGER}})(bo),Object.defineProperty(ze,"__esModule",{value:!0});var vo=bo;function El(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])<<16>>16}ze.readInt16BE=El;function Sl(t,e){return e===void 0&&(e=0),(t[e+0]<<8|t[e+1])>>>0}ze.readUint16BE=Sl;function Dl(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])<<16>>16}ze.readInt16LE=Dl;function Il(t,e){return e===void 0&&(e=0),(t[e+1]<<8|t[e])>>>0}ze.readUint16LE=Il;function po(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>8,e[r+1]=t>>>0,e}ze.writeUint16BE=po,ze.writeInt16BE=po;function mo(t,e,r){return e===void 0&&(e=new Uint8Array(2)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e}ze.writeUint16LE=mo,ze.writeInt16LE=mo;function Sf(t,e){return e===void 0&&(e=0),t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}ze.readInt32BE=Sf;function Df(t,e){return e===void 0&&(e=0),(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}ze.readUint32BE=Df;function If(t,e){return e===void 0&&(e=0),t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e]}ze.readInt32LE=If;function Nf(t,e){return e===void 0&&(e=0),(t[e+3]<<24|t[e+2]<<16|t[e+1]<<8|t[e])>>>0}ze.readUint32LE=Nf;function un(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>24,e[r+1]=t>>>16,e[r+2]=t>>>8,e[r+3]=t>>>0,e}ze.writeUint32BE=un,ze.writeInt32BE=un;function hn(t,e,r){return e===void 0&&(e=new Uint8Array(4)),r===void 0&&(r=0),e[r+0]=t>>>0,e[r+1]=t>>>8,e[r+2]=t>>>16,e[r+3]=t>>>24,e}ze.writeUint32LE=hn,ze.writeInt32LE=hn;function Nl(t,e){e===void 0&&(e=0);var r=Sf(t,e),i=Sf(t,e+4);return r*4294967296+i-(i>>31)*4294967296}ze.readInt64BE=Nl;function Cl(t,e){e===void 0&&(e=0);var r=Df(t,e),i=Df(t,e+4);return r*4294967296+i}ze.readUint64BE=Cl;function Bl(t,e){e===void 0&&(e=0);var r=If(t,e),i=If(t,e+4);return i*4294967296+r-(r>>31)*4294967296}ze.readInt64LE=Bl;function Ol(t,e){e===void 0&&(e=0);var r=Nf(t,e),i=Nf(t,e+4);return i*4294967296+r}ze.readUint64LE=Ol;function go(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),un(t/4294967296>>>0,e,r),un(t>>>0,e,r+4),e}ze.writeUint64BE=go,ze.writeInt64BE=go;function yo(t,e,r){return e===void 0&&(e=new Uint8Array(8)),r===void 0&&(r=0),hn(t>>>0,e,r),hn(t/4294967296>>>0,e,r+4),e}ze.writeUint64LE=yo,ze.writeInt64LE=yo;function Rl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintBE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintBE: array is too short for the given bitLength");for(var i=0,f=1,n=t/8+r-1;n>=r;n--)i+=e[n]*f,f*=256;return i}ze.readUintBE=Rl;function Pl(t,e,r){if(r===void 0&&(r=0),t%8!==0)throw new Error("readUintLE supports only bitLengths divisible by 8");if(t/8>e.length-r)throw new Error("readUintLE: array is too short for the given bitLength");for(var i=0,f=1,n=r;n=i;n--)r[n]=e/f&255,f*=256;return r}ze.writeUintBE=Tl;function Fl(t,e,r,i){if(r===void 0&&(r=new Uint8Array(t/8)),i===void 0&&(i=0),t%8!==0)throw new Error("writeUintLE supports only bitLengths divisible by 8");if(!vo.isSafeInteger(e))throw new Error("writeUintLE value must be an integer");for(var f=1,n=i;n>>32-16|o<<16,C=C+o|0,m^=C,m=m>>>32-12|m<<12,F=F+P|0,l^=F,l=l>>>32-16|l<<16,h=h+l|0,P^=h,P=P>>>32-12|P<<12,U=U+Y|0,w^=U,w=w>>>32-16|w<<16,u=u+w|0,Y^=u,Y=Y>>>32-12|Y<<12,L=L+Q|0,_^=L,_=_>>>32-16|_<<16,a=a+_|0,Q^=a,Q=Q>>>32-12|Q<<12,U=U+Y|0,w^=U,w=w>>>32-8|w<<8,u=u+w|0,Y^=u,Y=Y>>>32-7|Y<<7,L=L+Q|0,_^=L,_=_>>>32-8|_<<8,a=a+_|0,Q^=a,Q=Q>>>32-7|Q<<7,F=F+P|0,l^=F,l=l>>>32-8|l<<8,h=h+l|0,P^=h,P=P>>>32-7|P<<7,j=j+m|0,o^=j,o=o>>>32-8|o<<8,C=C+o|0,m^=C,m=m>>>32-7|m<<7,j=j+P|0,_^=j,_=_>>>32-16|_<<16,u=u+_|0,P^=u,P=P>>>32-12|P<<12,F=F+Y|0,o^=F,o=o>>>32-16|o<<16,a=a+o|0,Y^=a,Y=Y>>>32-12|Y<<12,U=U+Q|0,l^=U,l=l>>>32-16|l<<16,C=C+l|0,Q^=C,Q=Q>>>32-12|Q<<12,L=L+m|0,w^=L,w=w>>>32-16|w<<16,h=h+w|0,m^=h,m=m>>>32-12|m<<12,U=U+Q|0,l^=U,l=l>>>32-8|l<<8,C=C+l|0,Q^=C,Q=Q>>>32-7|Q<<7,L=L+m|0,w^=L,w=w>>>32-8|w<<8,h=h+w|0,m^=h,m=m>>>32-7|m<<7,F=F+Y|0,o^=F,o=o>>>32-8|o<<8,a=a+o|0,Y^=a,Y=Y>>>32-7|Y<<7,j=j+P|0,_^=j,_=_>>>32-8|_<<8,u=u+_|0,P^=u,P=P>>>32-7|P<<7;lt.writeUint32LE(j+i|0,t,0),lt.writeUint32LE(F+f|0,t,4),lt.writeUint32LE(U+n|0,t,8),lt.writeUint32LE(L+d|0,t,12),lt.writeUint32LE(m+c|0,t,16),lt.writeUint32LE(P+y|0,t,20),lt.writeUint32LE(Y+A|0,t,24),lt.writeUint32LE(Q+x|0,t,28),lt.writeUint32LE(C+E|0,t,32),lt.writeUint32LE(h+N|0,t,36),lt.writeUint32LE(u+D|0,t,40),lt.writeUint32LE(a+I|0,t,44),lt.writeUint32LE(o+q|0,t,48),lt.writeUint32LE(l+H|0,t,52),lt.writeUint32LE(w+V|0,t,56),lt.writeUint32LE(_+z|0,t,60)}function wo(t,e,r,i,f){if(f===void 0&&(f=0),t.length!==32)throw new Error("ChaCha: key size must be 32 bytes");if(i.length>>=8,e++;if(i>0)throw new Error("ChaCha: counter overflow")}var Ao={},gr={};Object.defineProperty(gr,"__esModule",{value:!0});function Wl(t,e,r){return~(t-1)&e|t-1&r}gr.select=Wl;function Ql(t,e){return(t|0)-(e|0)-1>>>31&1}gr.lessOrEqual=Ql;function xo(t,e){if(t.length!==e.length)return 0;for(var r=0,i=0;i>>8}gr.compare=xo;function Xl(t,e){return t.length===0||e.length===0?!1:xo(t,e)!==0}gr.equal=Xl,function(t){Object.defineProperty(t,"__esModule",{value:!0});var e=gr,r=Et;t.DIGEST_LENGTH=16;var i=function(){function d(c){this.digestLength=t.DIGEST_LENGTH,this._buffer=new Uint8Array(16),this._r=new Uint16Array(10),this._h=new Uint16Array(10),this._pad=new Uint16Array(8),this._leftover=0,this._fin=0,this._finished=!1;var y=c[0]|c[1]<<8;this._r[0]=y&8191;var A=c[2]|c[3]<<8;this._r[1]=(y>>>13|A<<3)&8191;var x=c[4]|c[5]<<8;this._r[2]=(A>>>10|x<<6)&7939;var E=c[6]|c[7]<<8;this._r[3]=(x>>>7|E<<9)&8191;var N=c[8]|c[9]<<8;this._r[4]=(E>>>4|N<<12)&255,this._r[5]=N>>>1&8190;var D=c[10]|c[11]<<8;this._r[6]=(N>>>14|D<<2)&8191;var I=c[12]|c[13]<<8;this._r[7]=(D>>>11|I<<5)&8065;var q=c[14]|c[15]<<8;this._r[8]=(I>>>8|q<<8)&8191,this._r[9]=q>>>5&127,this._pad[0]=c[16]|c[17]<<8,this._pad[1]=c[18]|c[19]<<8,this._pad[2]=c[20]|c[21]<<8,this._pad[3]=c[22]|c[23]<<8,this._pad[4]=c[24]|c[25]<<8,this._pad[5]=c[26]|c[27]<<8,this._pad[6]=c[28]|c[29]<<8,this._pad[7]=c[30]|c[31]<<8}return d.prototype._blocks=function(c,y,A){for(var x=this._fin?0:2048,E=this._h[0],N=this._h[1],D=this._h[2],I=this._h[3],q=this._h[4],H=this._h[5],V=this._h[6],z=this._h[7],j=this._h[8],F=this._h[9],U=this._r[0],L=this._r[1],m=this._r[2],P=this._r[3],Y=this._r[4],Q=this._r[5],C=this._r[6],h=this._r[7],u=this._r[8],a=this._r[9];A>=16;){var o=c[y+0]|c[y+1]<<8;E+=o&8191;var l=c[y+2]|c[y+3]<<8;N+=(o>>>13|l<<3)&8191;var w=c[y+4]|c[y+5]<<8;D+=(l>>>10|w<<6)&8191;var _=c[y+6]|c[y+7]<<8;I+=(w>>>7|_<<9)&8191;var g=c[y+8]|c[y+9]<<8;q+=(_>>>4|g<<12)&8191,H+=g>>>1&8191;var s=c[y+10]|c[y+11]<<8;V+=(g>>>14|s<<2)&8191;var p=c[y+12]|c[y+13]<<8;z+=(s>>>11|p<<5)&8191;var b=c[y+14]|c[y+15]<<8;j+=(p>>>8|b<<8)&8191,F+=b>>>5|x;var S=0,G=S;G+=E*U,G+=N*(5*a),G+=D*(5*u),G+=I*(5*h),G+=q*(5*C),S=G>>>13,G&=8191,G+=H*(5*Q),G+=V*(5*Y),G+=z*(5*P),G+=j*(5*m),G+=F*(5*L),S+=G>>>13,G&=8191;var M=S;M+=E*L,M+=N*U,M+=D*(5*a),M+=I*(5*u),M+=q*(5*h),S=M>>>13,M&=8191,M+=H*(5*C),M+=V*(5*Q),M+=z*(5*Y),M+=j*(5*P),M+=F*(5*m),S+=M>>>13,M&=8191;var k=S;k+=E*m,k+=N*L,k+=D*U,k+=I*(5*a),k+=q*(5*u),S=k>>>13,k&=8191,k+=H*(5*h),k+=V*(5*C),k+=z*(5*Q),k+=j*(5*Y),k+=F*(5*P),S+=k>>>13,k&=8191;var B=S;B+=E*P,B+=N*m,B+=D*L,B+=I*U,B+=q*(5*a),S=B>>>13,B&=8191,B+=H*(5*u),B+=V*(5*h),B+=z*(5*C),B+=j*(5*Q),B+=F*(5*Y),S+=B>>>13,B&=8191;var T=S;T+=E*Y,T+=N*P,T+=D*m,T+=I*L,T+=q*U,S=T>>>13,T&=8191,T+=H*(5*a),T+=V*(5*u),T+=z*(5*h),T+=j*(5*C),T+=F*(5*Q),S+=T>>>13,T&=8191;var O=S;O+=E*Q,O+=N*Y,O+=D*P,O+=I*m,O+=q*L,S=O>>>13,O&=8191,O+=H*U,O+=V*(5*a),O+=z*(5*u),O+=j*(5*h),O+=F*(5*C),S+=O>>>13,O&=8191;var v=S;v+=E*C,v+=N*Q,v+=D*Y,v+=I*P,v+=q*m,S=v>>>13,v&=8191,v+=H*L,v+=V*U,v+=z*(5*a),v+=j*(5*u),v+=F*(5*h),S+=v>>>13,v&=8191;var R=S;R+=E*h,R+=N*C,R+=D*Q,R+=I*Y,R+=q*P,S=R>>>13,R&=8191,R+=H*m,R+=V*L,R+=z*U,R+=j*(5*a),R+=F*(5*u),S+=R>>>13,R&=8191;var $=S;$+=E*u,$+=N*h,$+=D*C,$+=I*Q,$+=q*Y,S=$>>>13,$&=8191,$+=H*P,$+=V*m,$+=z*L,$+=j*U,$+=F*(5*a),S+=$>>>13,$&=8191;var J=S;J+=E*a,J+=N*u,J+=D*h,J+=I*C,J+=q*Q,S=J>>>13,J&=8191,J+=H*Y,J+=V*P,J+=z*m,J+=j*L,J+=F*U,S+=J>>>13,J&=8191,S=(S<<2)+S|0,S=S+G|0,G=S&8191,S=S>>>13,M+=S,E=G,N=M,D=k,I=B,q=T,H=O,V=v,z=R,j=$,F=J,y+=16,A-=16}this._h[0]=E,this._h[1]=N,this._h[2]=D,this._h[3]=I,this._h[4]=q,this._h[5]=H,this._h[6]=V,this._h[7]=z,this._h[8]=j,this._h[9]=F},d.prototype.finish=function(c,y){y===void 0&&(y=0);var A=new Uint16Array(10),x,E,N,D;if(this._leftover){for(D=this._leftover,this._buffer[D++]=1;D<16;D++)this._buffer[D]=0;this._fin=1,this._blocks(this._buffer,0,16)}for(x=this._h[1]>>>13,this._h[1]&=8191,D=2;D<10;D++)this._h[D]+=x,x=this._h[D]>>>13,this._h[D]&=8191;for(this._h[0]+=x*5,x=this._h[0]>>>13,this._h[0]&=8191,this._h[1]+=x,x=this._h[1]>>>13,this._h[1]&=8191,this._h[2]+=x,A[0]=this._h[0]+5,x=A[0]>>>13,A[0]&=8191,D=1;D<10;D++)A[D]=this._h[D]+x,x=A[D]>>>13,A[D]&=8191;for(A[9]-=8192,E=(x^1)-1,D=0;D<10;D++)A[D]&=E;for(E=~E,D=0;D<10;D++)this._h[D]=this._h[D]&E|A[D];for(this._h[0]=(this._h[0]|this._h[1]<<13)&65535,this._h[1]=(this._h[1]>>>3|this._h[2]<<10)&65535,this._h[2]=(this._h[2]>>>6|this._h[3]<<7)&65535,this._h[3]=(this._h[3]>>>9|this._h[4]<<4)&65535,this._h[4]=(this._h[4]>>>12|this._h[5]<<1|this._h[6]<<14)&65535,this._h[5]=(this._h[6]>>>2|this._h[7]<<11)&65535,this._h[6]=(this._h[7]>>>5|this._h[8]<<8)&65535,this._h[7]=(this._h[8]>>>8|this._h[9]<<5)&65535,N=this._h[0]+this._pad[0],this._h[0]=N&65535,D=1;D<8;D++)N=(this._h[D]+this._pad[D]|0)+(N>>>16)|0,this._h[D]=N&65535;return c[y+0]=this._h[0]>>>0,c[y+1]=this._h[0]>>>8,c[y+2]=this._h[1]>>>0,c[y+3]=this._h[1]>>>8,c[y+4]=this._h[2]>>>0,c[y+5]=this._h[2]>>>8,c[y+6]=this._h[3]>>>0,c[y+7]=this._h[3]>>>8,c[y+8]=this._h[4]>>>0,c[y+9]=this._h[4]>>>8,c[y+10]=this._h[5]>>>0,c[y+11]=this._h[5]>>>8,c[y+12]=this._h[6]>>>0,c[y+13]=this._h[6]>>>8,c[y+14]=this._h[7]>>>0,c[y+15]=this._h[7]>>>8,this._finished=!0,this},d.prototype.update=function(c){var y=0,A=c.length,x;if(this._leftover){x=16-this._leftover,x>A&&(x=A);for(var E=0;E=16&&(x=A-A%16,this._blocks(c,y,x),y+=x,A-=x),A){for(var E=0;E16)throw new Error("ChaCha20Poly1305: incorrect nonce length");var D=new Uint8Array(16);D.set(A,D.length-A.length);var I=new Uint8Array(32);e.stream(this._key,D,I,4);var q=x.length+this.tagLength,H;if(N){if(N.length!==q)throw new Error("ChaCha20Poly1305: incorrect destination length");H=N}else H=new Uint8Array(q);return e.streamXOR(this._key,D,x,H,4),this._authenticate(H.subarray(H.length-this.tagLength,H.length),I,H.subarray(0,H.length-this.tagLength),E),i.wipe(D),H},y.prototype.open=function(A,x,E,N){if(A.length>16)throw new Error("ChaCha20Poly1305: incorrect nonce length");if(x.length0&&D.update(d.subarray(N.length%16))),D.update(E),E.length%16>0&&D.update(d.subarray(E.length%16));var I=new Uint8Array(8);N&&f.writeUint64LE(N.length,I),D.update(I),f.writeUint64LE(E.length,I),D.update(I);for(var q=D.digest(),H=0;Hthis.blockSize?this._inner.update(r).finish(i).clean():i.set(r);for(var f=0;f1&&this._hmac.update(this._buffer),this._info&&this._hmac.update(this._info),this._hmac.update(this._counter),this._hmac.finish(this._buffer),this._bufpos=0},t.prototype.expand=function(e){for(var r=new Uint8Array(e),i=0;i256)throw new Error("randomString charset is too long");let N="";const D=x.length,I=256-256%D;for(;A>0;){const q=f(Math.ceil(A*256/I),E);for(let H=0;H0;H++){const V=q[H];V0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._temp,this._state,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._temp,this._state,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%64<56?64:128;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._state.set(y.state),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.state),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA256=i;var f=new Int32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(c,y,A,x,E){for(;E>=64;){for(var N=y[0],D=y[1],I=y[2],q=y[3],H=y[4],V=y[5],z=y[6],j=y[7],F=0;F<16;F++){var U=x+F*4;c[F]=e.readUint32BE(A,U)}for(var F=16;F<64;F++){var L=c[F-2],m=(L>>>17|L<<32-17)^(L>>>19|L<<32-19)^L>>>10;L=c[F-15];var P=(L>>>7|L<<32-7)^(L>>>18|L<<32-18)^L>>>3;c[F]=(m+c[F-7]|0)+(P+c[F-16]|0)}for(var F=0;F<64;F++){var m=(((H>>>6|H<<26)^(H>>>11|H<<21)^(H>>>25|H<<7))+(H&V^~H&z)|0)+(j+(f[F]+c[F]|0)|0)|0,P=((N>>>2|N<<32-2)^(N>>>13|N<<32-13)^(N>>>22|N<<32-22))+(N&D^N&I^D&I)|0;j=z,z=V,V=H,H=q+m|0,q=I,I=D,D=N,N=m+P|0}y[0]+=N,y[1]+=D,y[2]+=I,y[3]+=q,y[4]+=H,y[5]+=V,y[6]+=z,y[7]+=j,x+=64,E-=64}return x}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(Oi);var Of={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.sharedKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.scalarMultBase=t.scalarMult=t.SHARED_KEY_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=void 0;const e=Br,r=Et;t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=32,t.SHARED_KEY_LENGTH=32;function i(F){const U=new Float64Array(16);if(F)for(let L=0;L>16&1),L[Q-1]&=65535;L[15]=m[15]-32767-(L[14]>>16&1);const Y=L[15]>>16&1;L[14]&=65535,c(m,L,1-Y)}for(let P=0;P<16;P++)F[2*P]=m[P]&255,F[2*P+1]=m[P]>>8}function A(F,U){for(let L=0;L<16;L++)F[L]=U[2*L]+(U[2*L+1]<<8);F[15]&=32767}function x(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]+L[m]}function E(F,U,L){for(let m=0;m<16;m++)F[m]=U[m]-L[m]}function N(F,U,L){let m,P,Y=0,Q=0,C=0,h=0,u=0,a=0,o=0,l=0,w=0,_=0,g=0,s=0,p=0,b=0,S=0,G=0,M=0,k=0,B=0,T=0,O=0,v=0,R=0,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=L[0],te=L[1],se=L[2],oe=L[3],ee=L[4],ae=L[5],ne=L[6],Z=L[7],ve=L[8],me=L[9],re=L[10],ge=L[11],we=L[12],ie=L[13],Ae=L[14],xe=L[15];m=U[0],Y+=m*pe,Q+=m*te,C+=m*se,h+=m*oe,u+=m*ee,a+=m*ae,o+=m*ne,l+=m*Z,w+=m*ve,_+=m*me,g+=m*re,s+=m*ge,p+=m*we,b+=m*ie,S+=m*Ae,G+=m*xe,m=U[1],Q+=m*pe,C+=m*te,h+=m*se,u+=m*oe,a+=m*ee,o+=m*ae,l+=m*ne,w+=m*Z,_+=m*ve,g+=m*me,s+=m*re,p+=m*ge,b+=m*we,S+=m*ie,G+=m*Ae,M+=m*xe,m=U[2],C+=m*pe,h+=m*te,u+=m*se,a+=m*oe,o+=m*ee,l+=m*ae,w+=m*ne,_+=m*Z,g+=m*ve,s+=m*me,p+=m*re,b+=m*ge,S+=m*we,G+=m*ie,M+=m*Ae,k+=m*xe,m=U[3],h+=m*pe,u+=m*te,a+=m*se,o+=m*oe,l+=m*ee,w+=m*ae,_+=m*ne,g+=m*Z,s+=m*ve,p+=m*me,b+=m*re,S+=m*ge,G+=m*we,M+=m*ie,k+=m*Ae,B+=m*xe,m=U[4],u+=m*pe,a+=m*te,o+=m*se,l+=m*oe,w+=m*ee,_+=m*ae,g+=m*ne,s+=m*Z,p+=m*ve,b+=m*me,S+=m*re,G+=m*ge,M+=m*we,k+=m*ie,B+=m*Ae,T+=m*xe,m=U[5],a+=m*pe,o+=m*te,l+=m*se,w+=m*oe,_+=m*ee,g+=m*ae,s+=m*ne,p+=m*Z,b+=m*ve,S+=m*me,G+=m*re,M+=m*ge,k+=m*we,B+=m*ie,T+=m*Ae,O+=m*xe,m=U[6],o+=m*pe,l+=m*te,w+=m*se,_+=m*oe,g+=m*ee,s+=m*ae,p+=m*ne,b+=m*Z,S+=m*ve,G+=m*me,M+=m*re,k+=m*ge,B+=m*we,T+=m*ie,O+=m*Ae,v+=m*xe,m=U[7],l+=m*pe,w+=m*te,_+=m*se,g+=m*oe,s+=m*ee,p+=m*ae,b+=m*ne,S+=m*Z,G+=m*ve,M+=m*me,k+=m*re,B+=m*ge,T+=m*we,O+=m*ie,v+=m*Ae,R+=m*xe,m=U[8],w+=m*pe,_+=m*te,g+=m*se,s+=m*oe,p+=m*ee,b+=m*ae,S+=m*ne,G+=m*Z,M+=m*ve,k+=m*me,B+=m*re,T+=m*ge,O+=m*we,v+=m*ie,R+=m*Ae,$+=m*xe,m=U[9],_+=m*pe,g+=m*te,s+=m*se,p+=m*oe,b+=m*ee,S+=m*ae,G+=m*ne,M+=m*Z,k+=m*ve,B+=m*me,T+=m*re,O+=m*ge,v+=m*we,R+=m*ie,$+=m*Ae,J+=m*xe,m=U[10],g+=m*pe,s+=m*te,p+=m*se,b+=m*oe,S+=m*ee,G+=m*ae,M+=m*ne,k+=m*Z,B+=m*ve,T+=m*me,O+=m*re,v+=m*ge,R+=m*we,$+=m*ie,J+=m*Ae,W+=m*xe,m=U[11],s+=m*pe,p+=m*te,b+=m*se,S+=m*oe,G+=m*ee,M+=m*ae,k+=m*ne,B+=m*Z,T+=m*ve,O+=m*me,v+=m*re,R+=m*ge,$+=m*we,J+=m*ie,W+=m*Ae,X+=m*xe,m=U[12],p+=m*pe,b+=m*te,S+=m*se,G+=m*oe,M+=m*ee,k+=m*ae,B+=m*ne,T+=m*Z,O+=m*ve,v+=m*me,R+=m*re,$+=m*ge,J+=m*we,W+=m*ie,X+=m*Ae,be+=m*xe,m=U[13],b+=m*pe,S+=m*te,G+=m*se,M+=m*oe,k+=m*ee,B+=m*ae,T+=m*ne,O+=m*Z,v+=m*ve,R+=m*me,$+=m*re,J+=m*ge,W+=m*we,X+=m*ie,be+=m*Ae,ye+=m*xe,m=U[14],S+=m*pe,G+=m*te,M+=m*se,k+=m*oe,B+=m*ee,T+=m*ae,O+=m*ne,v+=m*Z,R+=m*ve,$+=m*me,J+=m*re,W+=m*ge,X+=m*we,be+=m*ie,ye+=m*Ae,fe+=m*xe,m=U[15],G+=m*pe,M+=m*te,k+=m*se,B+=m*oe,T+=m*ee,O+=m*ae,v+=m*ne,R+=m*Z,$+=m*ve,J+=m*me,W+=m*re,X+=m*ge,be+=m*we,ye+=m*ie,fe+=m*Ae,Ee+=m*xe,Y+=38*M,Q+=38*k,C+=38*B,h+=38*T,u+=38*O,a+=38*v,o+=38*R,l+=38*$,w+=38*J,_+=38*W,g+=38*X,s+=38*be,p+=38*ye,b+=38*fe,S+=38*Ee,P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),P=1,m=Y+P+65535,P=Math.floor(m/65536),Y=m-P*65536,m=Q+P+65535,P=Math.floor(m/65536),Q=m-P*65536,m=C+P+65535,P=Math.floor(m/65536),C=m-P*65536,m=h+P+65535,P=Math.floor(m/65536),h=m-P*65536,m=u+P+65535,P=Math.floor(m/65536),u=m-P*65536,m=a+P+65535,P=Math.floor(m/65536),a=m-P*65536,m=o+P+65535,P=Math.floor(m/65536),o=m-P*65536,m=l+P+65535,P=Math.floor(m/65536),l=m-P*65536,m=w+P+65535,P=Math.floor(m/65536),w=m-P*65536,m=_+P+65535,P=Math.floor(m/65536),_=m-P*65536,m=g+P+65535,P=Math.floor(m/65536),g=m-P*65536,m=s+P+65535,P=Math.floor(m/65536),s=m-P*65536,m=p+P+65535,P=Math.floor(m/65536),p=m-P*65536,m=b+P+65535,P=Math.floor(m/65536),b=m-P*65536,m=S+P+65535,P=Math.floor(m/65536),S=m-P*65536,m=G+P+65535,P=Math.floor(m/65536),G=m-P*65536,Y+=P-1+37*(P-1),F[0]=Y,F[1]=Q,F[2]=C,F[3]=h,F[4]=u,F[5]=a,F[6]=o,F[7]=l,F[8]=w,F[9]=_,F[10]=g,F[11]=s,F[12]=p,F[13]=b,F[14]=S,F[15]=G}function D(F,U){N(F,U,U)}function I(F,U){const L=i();for(let m=0;m<16;m++)L[m]=U[m];for(let m=253;m>=0;m--)D(L,L),m!==2&&m!==4&&N(L,L,U);for(let m=0;m<16;m++)F[m]=L[m]}function q(F,U){const L=new Uint8Array(32),m=new Float64Array(80),P=i(),Y=i(),Q=i(),C=i(),h=i(),u=i();for(let w=0;w<31;w++)L[w]=F[w];L[31]=F[31]&127|64,L[0]&=248,A(m,U);for(let w=0;w<16;w++)Y[w]=m[w];P[0]=C[0]=1;for(let w=254;w>=0;--w){const _=L[w>>>3]>>>(w&7)&1;c(P,Y,_),c(Q,C,_),x(h,P,Q),E(P,P,Q),x(Q,Y,C),E(Y,Y,C),D(C,h),D(u,P),N(P,Q,P),N(Q,Y,h),x(h,P,Q),E(P,P,Q),D(Y,P),E(Q,C,u),N(P,Q,n),x(P,P,C),N(Q,Q,P),N(P,C,u),N(C,Y,m),D(Y,h),c(P,Y,_),c(Q,C,_)}for(let w=0;w<16;w++)m[w+16]=P[w],m[w+32]=Q[w],m[w+48]=Y[w],m[w+64]=C[w];const a=m.subarray(32),o=m.subarray(16);I(a,a),N(o,o,a);const l=new Uint8Array(32);return y(l,o),l}t.scalarMult=q;function H(F){return q(F,f)}t.scalarMultBase=H;function V(F){if(F.length!==t.SECRET_KEY_LENGTH)throw new Error(`x25519: seed must be ${t.SECRET_KEY_LENGTH} bytes`);const U=new Uint8Array(F);return{publicKey:H(U),secretKey:U}}t.generateKeyPairFromSeed=V;function z(F){const U=(0,e.randomBytes)(32,F),L=V(U);return(0,r.wipe)(U),L}t.generateKeyPair=z;function j(F,U,L=!1){if(F.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect secret key length");if(U.length!==t.PUBLIC_KEY_LENGTH)throw new Error("X25519: incorrect public key length");const m=q(F,U);if(L){let P=0;for(let Y=0;Yf+n.length,0));const r=Io(e);let i=0;for(const f of t)r.set(f,i),i+=f.length;return r}function d1(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),i=0;i>>0,F=new Uint8Array(j);V!==z;){for(var U=I[V],L=0,m=j-1;(U!==0||L>>0,F[m]=U%c>>>0,U=U/c>>>0;if(U!==0)throw new Error("Non-zero carry");H=L,V++}for(var P=j-H;P!==j&&F[P]===0;)P++;for(var Y=y.repeat(q);P>>0,j=new Uint8Array(z);I[q];){var F=r[I.charCodeAt(q)];if(F===255)return;for(var U=0,L=z-1;(F!==0||U>>0,j[L]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");V=U,q++}if(I[q]!==" "){for(var m=z-V;m!==z&&j[m]===0;)m++;for(var P=new Uint8Array(H+(z-m)),Y=H;m!==z;)P[Y++]=j[m++];return P}}}function D(I){var q=N(I);if(q)return q;throw new Error(`Non-${e} character`)}return{encode:E,decodeUnsafe:N,decode:D}}var l1=d1,b1=l1;const No=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},v1=t=>new TextEncoder().encode(t),p1=t=>new TextDecoder().decode(t);class m1{constructor(e,r,i){this.name=e,this.prefix=r,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class g1{constructor(e,r,i){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Co(this,e)}}class y1{constructor(e){this.decoders=e}or(e){return Co(this,e)}decode(e){const r=e[0],i=this.decoders[r];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Co=(t,e)=>new y1({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class w1{constructor(e,r,i,f){this.name=e,this.prefix=r,this.baseEncode=i,this.baseDecode=f,this.encoder=new m1(e,r,i),this.decoder=new g1(e,r,f)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const bn=({name:t,prefix:e,encode:r,decode:i})=>new w1(t,e,r,i),Ri=({prefix:t,name:e,alphabet:r})=>{const{encode:i,decode:f}=b1(r,e);return bn({prefix:t,name:e,encode:i,decode:n=>No(f(n))})},A1=(t,e,r,i)=>{const f={};for(let x=0;x=8&&(c-=8,d[A++]=255&y>>c)}if(c>=r||255&y<<8-c)throw new SyntaxError("Unexpected end of data");return d},x1=(t,e,r)=>{const i=e[e.length-1]==="=",f=(1<r;)d-=r,n+=e[f&c>>d];if(d&&(n+=e[f&c<bn({prefix:e,name:t,encode(f){return x1(f,i,r)},decode(f){return A1(f,i,r,t)}}),_1=bn({prefix:"\0",name:"identity",encode:t=>p1(t),decode:t=>v1(t)});var M1=Object.freeze({__proto__:null,identity:_1});const E1=ht({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var S1=Object.freeze({__proto__:null,base2:E1});const D1=ht({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var I1=Object.freeze({__proto__:null,base8:D1});const N1=Ri({prefix:"9",name:"base10",alphabet:"0123456789"});var C1=Object.freeze({__proto__:null,base10:N1});const B1=ht({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),O1=ht({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var R1=Object.freeze({__proto__:null,base16:B1,base16upper:O1});const P1=ht({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),T1=ht({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),F1=ht({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),U1=ht({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),L1=ht({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),q1=ht({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),z1=ht({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),k1=ht({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),H1=ht({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var K1=Object.freeze({__proto__:null,base32:P1,base32upper:T1,base32pad:F1,base32padupper:U1,base32hex:L1,base32hexupper:q1,base32hexpad:z1,base32hexpadupper:k1,base32z:H1});const j1=Ri({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),$1=Ri({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var V1=Object.freeze({__proto__:null,base36:j1,base36upper:$1});const G1=Ri({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Y1=Ri({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var J1=Object.freeze({__proto__:null,base58btc:G1,base58flickr:Y1});const W1=ht({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Q1=ht({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),X1=ht({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Z1=ht({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var e2=Object.freeze({__proto__:null,base64:W1,base64pad:Q1,base64url:X1,base64urlpad:Z1});const Bo=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),t2=Bo.reduce((t,e,r)=>(t[r]=e,t),[]),r2=Bo.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function i2(t){return t.reduce((e,r)=>(e+=t2[r],e),"")}function n2(t){const e=[];for(const r of t){const i=r2[r.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(i)}return new Uint8Array(e)}const f2=bn({prefix:"\u{1F680}",name:"base256emoji",encode:i2,decode:n2});var a2=Object.freeze({__proto__:null,base256emoji:f2}),o2=Ro,Oo=128,s2=127,u2=~s2,h2=Math.pow(2,31);function Ro(t,e,r){e=e||[],r=r||0;for(var i=r;t>=h2;)e[r++]=t&255|Oo,t/=128;for(;t&u2;)e[r++]=t&255|Oo,t>>>=7;return e[r]=t|0,Ro.bytes=r-i+1,e}var c2=Pf,d2=128,Po=127;function Pf(t,i){var r=0,i=i||0,f=0,n=i,d,c=t.length;do{if(n>=c)throw Pf.bytes=0,new RangeError("Could not decode varint");d=t[n++],r+=f<28?(d&Po)<=d2);return Pf.bytes=n-i,r}var l2=Math.pow(2,7),b2=Math.pow(2,14),v2=Math.pow(2,21),p2=Math.pow(2,28),m2=Math.pow(2,35),g2=Math.pow(2,42),y2=Math.pow(2,49),w2=Math.pow(2,56),A2=Math.pow(2,63),x2=function(t){return t(To.encode(t,e,r),e),Uo=t=>To.encodingLength(t),Tf=(t,e)=>{const r=e.byteLength,i=Uo(t),f=i+Uo(r),n=new Uint8Array(f+r);return Fo(t,n,0),Fo(r,n,i),n.set(e,f),new M2(t,r,e,n)};class M2{constructor(e,r,i,f){this.code=e,this.size=r,this.digest=i,this.bytes=f}}const Lo=({name:t,code:e,encode:r})=>new E2(t,e,r);class E2{constructor(e,r,i){this.name=e,this.code=r,this.encode=i}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?Tf(this.code,r):r.then(i=>Tf(this.code,i))}else throw Error("Unknown type, must be binary type")}}const qo=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),S2=Lo({name:"sha2-256",code:18,encode:qo("SHA-256")}),D2=Lo({name:"sha2-512",code:19,encode:qo("SHA-512")});var I2=Object.freeze({__proto__:null,sha256:S2,sha512:D2});const zo=0,N2="identity",ko=No;var C2=Object.freeze({__proto__:null,identity:{code:zo,name:N2,encode:ko,digest:t=>Tf(zo,ko(t))}});new TextEncoder,new TextDecoder;const vn={...M1,...S1,...I1,...C1,...R1,...K1,...V1,...J1,...e2,...a2};({...I2,...C2});function Ho(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const Ko=Ho("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Ff=Ho("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=Io(t.length);for(let r=0;r",z2="MIT",k2={url:"https://github.com/indutny/elliptic/issues"},H2="https://github.com/indutny/elliptic",K2={brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},j2={"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"},$2={name:B2,version:O2,description:R2,main:P2,files:T2,scripts:F2,repository:U2,keywords:L2,author:q2,license:z2,bugs:k2,homepage:H2,devDependencies:K2,dependencies:j2},Dt={},ir={exports:{}};(function(t){(function(e,r){function i(C,h){if(!C)throw new Error(h||"Assertion failed")}function f(C,h){C.super_=h;var u=function(){};u.prototype=h.prototype,C.prototype=new u,C.prototype.constructor=C}function n(C,h,u){if(n.isBN(C))return C;this.negative=0,this.words=null,this.length=0,this.red=null,C!==null&&((h==="le"||h==="be")&&(u=h,h=10),this._init(C||0,h||10,u||"be"))}typeof e=="object"?e.exports=n:r.BN=n,n.BN=n,n.wordSize=26;var d;try{typeof window<"u"&&typeof window.Buffer<"u"?d=window.Buffer:d=$i.Buffer}catch{}n.isBN=function(h){return h instanceof n?!0:h!==null&&typeof h=="object"&&h.constructor.wordSize===n.wordSize&&Array.isArray(h.words)},n.max=function(h,u){return h.cmp(u)>0?h:u},n.min=function(h,u){return h.cmp(u)<0?h:u},n.prototype._init=function(h,u,a){if(typeof h=="number")return this._initNumber(h,u,a);if(typeof h=="object")return this._initArray(h,u,a);u==="hex"&&(u=16),i(u===(u|0)&&u>=2&&u<=36),h=h.toString().replace(/\s+/g,"");var o=0;h[0]==="-"&&(o++,this.negative=1),o=0;o-=3)w=h[o]|h[o-1]<<8|h[o-2]<<16,this.words[l]|=w<<_&67108863,this.words[l+1]=w>>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);else if(a==="le")for(o=0,l=0;o>>26-_&67108863,_+=24,_>=26&&(_-=26,l++);return this.strip()};function c(C,h){var u=C.charCodeAt(h);return u>=65&&u<=70?u-55:u>=97&&u<=102?u-87:u-48&15}function y(C,h,u){var a=c(C,u);return u-1>=h&&(a|=c(C,u-1)<<4),a}n.prototype._parseHex=function(h,u,a){this.length=Math.ceil((h.length-u)/6),this.words=new Array(this.length);for(var o=0;o=u;o-=2)_=y(h,u,o)<=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8;else{var g=h.length-u;for(o=g%2===0?u+1:u;o=18?(l-=18,w+=1,this.words[w]|=_>>>26):l+=8}this.strip()};function A(C,h,u,a){for(var o=0,l=Math.min(C.length,u),w=h;w=49?o+=_-49+10:_>=17?o+=_-17+10:o+=_}return o}n.prototype._parseBase=function(h,u,a){this.words=[0],this.length=1;for(var o=0,l=1;l<=67108863;l*=u)o++;o--,l=l/u|0;for(var w=h.length-a,_=w%o,g=Math.min(w,w-_)+a,s=0,p=a;p1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},n.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},n.prototype.inspect=function(){return(this.red?""};var x=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],E=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];n.prototype.toString=function(h,u){h=h||10,u=u|0||1;var a;if(h===16||h==="hex"){a="";for(var o=0,l=0,w=0;w>>24-o&16777215,l!==0||w!==this.length-1?a=x[6-g.length]+g+a:a=g+a,o+=2,o>=26&&(o-=26,w--)}for(l!==0&&(a=l.toString(16)+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}if(h===(h|0)&&h>=2&&h<=36){var s=E[h],p=N[h];a="";var b=this.clone();for(b.negative=0;!b.isZero();){var S=b.modn(p).toString(h);b=b.idivn(p),b.isZero()?a=S+a:a=x[s-S.length]+S+a}for(this.isZero()&&(a="0"+a);a.length%u!==0;)a="0"+a;return this.negative!==0&&(a="-"+a),a}i(!1,"Base should be between 2 and 36")},n.prototype.toNumber=function(){var h=this.words[0];return this.length===2?h+=this.words[1]*67108864:this.length===3&&this.words[2]===1?h+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-h:h},n.prototype.toJSON=function(){return this.toString(16)},n.prototype.toBuffer=function(h,u){return i(typeof d<"u"),this.toArrayLike(d,h,u)},n.prototype.toArray=function(h,u){return this.toArrayLike(Array,h,u)},n.prototype.toArrayLike=function(h,u,a){var o=this.byteLength(),l=a||Math.max(1,o);i(o<=l,"byte array longer than desired length"),i(l>0,"Requested array length <= 0"),this.strip();var w=u==="le",_=new h(l),g,s,p=this.clone();if(w){for(s=0;!p.isZero();s++)g=p.andln(255),p.iushrn(8),_[s]=g;for(;s=4096&&(a+=13,u>>>=13),u>=64&&(a+=7,u>>>=7),u>=8&&(a+=4,u>>>=4),u>=2&&(a+=2,u>>>=2),a+u},n.prototype._zeroBits=function(h){if(h===0)return 26;var u=h,a=0;return u&8191||(a+=13,u>>>=13),u&127||(a+=7,u>>>=7),u&15||(a+=4,u>>>=4),u&3||(a+=2,u>>>=2),u&1||a++,a},n.prototype.bitLength=function(){var h=this.words[this.length-1],u=this._countBits(h);return(this.length-1)*26+u};function D(C){for(var h=new Array(C.bitLength()),u=0;u>>o}return h}n.prototype.zeroBits=function(){if(this.isZero())return 0;for(var h=0,u=0;uh.length?this.clone().ior(h):h.clone().ior(this)},n.prototype.uor=function(h){return this.length>h.length?this.clone().iuor(h):h.clone().iuor(this)},n.prototype.iuand=function(h){var u;this.length>h.length?u=h:u=this;for(var a=0;ah.length?this.clone().iand(h):h.clone().iand(this)},n.prototype.uand=function(h){return this.length>h.length?this.clone().iuand(h):h.clone().iuand(this)},n.prototype.iuxor=function(h){var u,a;this.length>h.length?(u=this,a=h):(u=h,a=this);for(var o=0;oh.length?this.clone().ixor(h):h.clone().ixor(this)},n.prototype.uxor=function(h){return this.length>h.length?this.clone().iuxor(h):h.clone().iuxor(this)},n.prototype.inotn=function(h){i(typeof h=="number"&&h>=0);var u=Math.ceil(h/26)|0,a=h%26;this._expand(u),a>0&&u--;for(var o=0;o0&&(this.words[o]=~this.words[o]&67108863>>26-a),this.strip()},n.prototype.notn=function(h){return this.clone().inotn(h)},n.prototype.setn=function(h,u){i(typeof h=="number"&&h>=0);var a=h/26|0,o=h%26;return this._expand(a+1),u?this.words[a]=this.words[a]|1<h.length?(a=this,o=h):(a=h,o=this);for(var l=0,w=0;w>>26;for(;l!==0&&w>>26;if(this.length=a.length,l!==0)this.words[this.length]=l,this.length++;else if(a!==this)for(;wh.length?this.clone().iadd(h):h.clone().iadd(this)},n.prototype.isub=function(h){if(h.negative!==0){h.negative=0;var u=this.iadd(h);return h.negative=1,u._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(h),this.negative=1,this._normSign();var a=this.cmp(h);if(a===0)return this.negative=0,this.length=1,this.words[0]=0,this;var o,l;a>0?(o=this,l=h):(o=h,l=this);for(var w=0,_=0;_>26,this.words[_]=u&67108863;for(;w!==0&&_>26,this.words[_]=u&67108863;if(w===0&&_>>26,b=g&67108863,S=Math.min(s,h.length-1),G=Math.max(0,s-C.length+1);G<=S;G++){var M=s-G|0;o=C.words[M]|0,l=h.words[G]|0,w=o*l+b,p+=w/67108864|0,b=w&67108863}u.words[s]=b|0,g=p|0}return g!==0?u.words[s]=g|0:u.length--,u.strip()}var q=function(h,u,a){var o=h.words,l=u.words,w=a.words,_=0,g,s,p,b=o[0]|0,S=b&8191,G=b>>>13,M=o[1]|0,k=M&8191,B=M>>>13,T=o[2]|0,O=T&8191,v=T>>>13,R=o[3]|0,$=R&8191,J=R>>>13,W=o[4]|0,X=W&8191,be=W>>>13,ye=o[5]|0,fe=ye&8191,Ee=ye>>>13,pe=o[6]|0,te=pe&8191,se=pe>>>13,oe=o[7]|0,ee=oe&8191,ae=oe>>>13,ne=o[8]|0,Z=ne&8191,ve=ne>>>13,me=o[9]|0,re=me&8191,ge=me>>>13,we=l[0]|0,ie=we&8191,Ae=we>>>13,xe=l[1]|0,_e=xe&8191,je=xe>>>13,$e=l[2]|0,Me=$e&8191,Ve=$e>>>13,Ge=l[3]|0,Se=Ge&8191,Ie=Ge>>>13,Ne=l[4]|0,ue=Ne&8191,Ce=Ne>>>13,Be=l[5]|0,he=Be&8191,Oe=Be>>>13,Re=l[6]|0,ce=Re&8191,Pe=Re>>>13,Te=l[7]|0,de=Te&8191,Fe=Te>>>13,Ue=l[8]|0,le=Ue&8191,Le=Ue>>>13,We=l[9]|0,De=We&8191,Qe=We>>>13;a.negative=h.negative^u.negative,a.length=19,g=Math.imul(S,ie),s=Math.imul(S,Ae),s=s+Math.imul(G,ie)|0,p=Math.imul(G,Ae);var Ye=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,g=Math.imul(k,ie),s=Math.imul(k,Ae),s=s+Math.imul(B,ie)|0,p=Math.imul(B,Ae),g=g+Math.imul(S,_e)|0,s=s+Math.imul(S,je)|0,s=s+Math.imul(G,_e)|0,p=p+Math.imul(G,je)|0;var Je=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Je>>>26)|0,Je&=67108863,g=Math.imul(O,ie),s=Math.imul(O,Ae),s=s+Math.imul(v,ie)|0,p=Math.imul(v,Ae),g=g+Math.imul(k,_e)|0,s=s+Math.imul(k,je)|0,s=s+Math.imul(B,_e)|0,p=p+Math.imul(B,je)|0,g=g+Math.imul(S,Me)|0,s=s+Math.imul(S,Ve)|0,s=s+Math.imul(G,Me)|0,p=p+Math.imul(G,Ve)|0;var Ut=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,g=Math.imul($,ie),s=Math.imul($,Ae),s=s+Math.imul(J,ie)|0,p=Math.imul(J,Ae),g=g+Math.imul(O,_e)|0,s=s+Math.imul(O,je)|0,s=s+Math.imul(v,_e)|0,p=p+Math.imul(v,je)|0,g=g+Math.imul(k,Me)|0,s=s+Math.imul(k,Ve)|0,s=s+Math.imul(B,Me)|0,p=p+Math.imul(B,Ve)|0,g=g+Math.imul(S,Se)|0,s=s+Math.imul(S,Ie)|0,s=s+Math.imul(G,Se)|0,p=p+Math.imul(G,Ie)|0;var Lt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,g=Math.imul(X,ie),s=Math.imul(X,Ae),s=s+Math.imul(be,ie)|0,p=Math.imul(be,Ae),g=g+Math.imul($,_e)|0,s=s+Math.imul($,je)|0,s=s+Math.imul(J,_e)|0,p=p+Math.imul(J,je)|0,g=g+Math.imul(O,Me)|0,s=s+Math.imul(O,Ve)|0,s=s+Math.imul(v,Me)|0,p=p+Math.imul(v,Ve)|0,g=g+Math.imul(k,Se)|0,s=s+Math.imul(k,Ie)|0,s=s+Math.imul(B,Se)|0,p=p+Math.imul(B,Ie)|0,g=g+Math.imul(S,ue)|0,s=s+Math.imul(S,Ce)|0,s=s+Math.imul(G,ue)|0,p=p+Math.imul(G,Ce)|0;var qt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qt>>>26)|0,qt&=67108863,g=Math.imul(fe,ie),s=Math.imul(fe,Ae),s=s+Math.imul(Ee,ie)|0,p=Math.imul(Ee,Ae),g=g+Math.imul(X,_e)|0,s=s+Math.imul(X,je)|0,s=s+Math.imul(be,_e)|0,p=p+Math.imul(be,je)|0,g=g+Math.imul($,Me)|0,s=s+Math.imul($,Ve)|0,s=s+Math.imul(J,Me)|0,p=p+Math.imul(J,Ve)|0,g=g+Math.imul(O,Se)|0,s=s+Math.imul(O,Ie)|0,s=s+Math.imul(v,Se)|0,p=p+Math.imul(v,Ie)|0,g=g+Math.imul(k,ue)|0,s=s+Math.imul(k,Ce)|0,s=s+Math.imul(B,ue)|0,p=p+Math.imul(B,Ce)|0,g=g+Math.imul(S,he)|0,s=s+Math.imul(S,Oe)|0,s=s+Math.imul(G,he)|0,p=p+Math.imul(G,Oe)|0;var zt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zt>>>26)|0,zt&=67108863,g=Math.imul(te,ie),s=Math.imul(te,Ae),s=s+Math.imul(se,ie)|0,p=Math.imul(se,Ae),g=g+Math.imul(fe,_e)|0,s=s+Math.imul(fe,je)|0,s=s+Math.imul(Ee,_e)|0,p=p+Math.imul(Ee,je)|0,g=g+Math.imul(X,Me)|0,s=s+Math.imul(X,Ve)|0,s=s+Math.imul(be,Me)|0,p=p+Math.imul(be,Ve)|0,g=g+Math.imul($,Se)|0,s=s+Math.imul($,Ie)|0,s=s+Math.imul(J,Se)|0,p=p+Math.imul(J,Ie)|0,g=g+Math.imul(O,ue)|0,s=s+Math.imul(O,Ce)|0,s=s+Math.imul(v,ue)|0,p=p+Math.imul(v,Ce)|0,g=g+Math.imul(k,he)|0,s=s+Math.imul(k,Oe)|0,s=s+Math.imul(B,he)|0,p=p+Math.imul(B,Oe)|0,g=g+Math.imul(S,ce)|0,s=s+Math.imul(S,Pe)|0,s=s+Math.imul(G,ce)|0,p=p+Math.imul(G,Pe)|0;var kt=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kt>>>26)|0,kt&=67108863,g=Math.imul(ee,ie),s=Math.imul(ee,Ae),s=s+Math.imul(ae,ie)|0,p=Math.imul(ae,Ae),g=g+Math.imul(te,_e)|0,s=s+Math.imul(te,je)|0,s=s+Math.imul(se,_e)|0,p=p+Math.imul(se,je)|0,g=g+Math.imul(fe,Me)|0,s=s+Math.imul(fe,Ve)|0,s=s+Math.imul(Ee,Me)|0,p=p+Math.imul(Ee,Ve)|0,g=g+Math.imul(X,Se)|0,s=s+Math.imul(X,Ie)|0,s=s+Math.imul(be,Se)|0,p=p+Math.imul(be,Ie)|0,g=g+Math.imul($,ue)|0,s=s+Math.imul($,Ce)|0,s=s+Math.imul(J,ue)|0,p=p+Math.imul(J,Ce)|0,g=g+Math.imul(O,he)|0,s=s+Math.imul(O,Oe)|0,s=s+Math.imul(v,he)|0,p=p+Math.imul(v,Oe)|0,g=g+Math.imul(k,ce)|0,s=s+Math.imul(k,Pe)|0,s=s+Math.imul(B,ce)|0,p=p+Math.imul(B,Pe)|0,g=g+Math.imul(S,de)|0,s=s+Math.imul(S,Fe)|0,s=s+Math.imul(G,de)|0,p=p+Math.imul(G,Fe)|0;var qr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(qr>>>26)|0,qr&=67108863,g=Math.imul(Z,ie),s=Math.imul(Z,Ae),s=s+Math.imul(ve,ie)|0,p=Math.imul(ve,Ae),g=g+Math.imul(ee,_e)|0,s=s+Math.imul(ee,je)|0,s=s+Math.imul(ae,_e)|0,p=p+Math.imul(ae,je)|0,g=g+Math.imul(te,Me)|0,s=s+Math.imul(te,Ve)|0,s=s+Math.imul(se,Me)|0,p=p+Math.imul(se,Ve)|0,g=g+Math.imul(fe,Se)|0,s=s+Math.imul(fe,Ie)|0,s=s+Math.imul(Ee,Se)|0,p=p+Math.imul(Ee,Ie)|0,g=g+Math.imul(X,ue)|0,s=s+Math.imul(X,Ce)|0,s=s+Math.imul(be,ue)|0,p=p+Math.imul(be,Ce)|0,g=g+Math.imul($,he)|0,s=s+Math.imul($,Oe)|0,s=s+Math.imul(J,he)|0,p=p+Math.imul(J,Oe)|0,g=g+Math.imul(O,ce)|0,s=s+Math.imul(O,Pe)|0,s=s+Math.imul(v,ce)|0,p=p+Math.imul(v,Pe)|0,g=g+Math.imul(k,de)|0,s=s+Math.imul(k,Fe)|0,s=s+Math.imul(B,de)|0,p=p+Math.imul(B,Fe)|0,g=g+Math.imul(S,le)|0,s=s+Math.imul(S,Le)|0,s=s+Math.imul(G,le)|0,p=p+Math.imul(G,Le)|0;var zr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(zr>>>26)|0,zr&=67108863,g=Math.imul(re,ie),s=Math.imul(re,Ae),s=s+Math.imul(ge,ie)|0,p=Math.imul(ge,Ae),g=g+Math.imul(Z,_e)|0,s=s+Math.imul(Z,je)|0,s=s+Math.imul(ve,_e)|0,p=p+Math.imul(ve,je)|0,g=g+Math.imul(ee,Me)|0,s=s+Math.imul(ee,Ve)|0,s=s+Math.imul(ae,Me)|0,p=p+Math.imul(ae,Ve)|0,g=g+Math.imul(te,Se)|0,s=s+Math.imul(te,Ie)|0,s=s+Math.imul(se,Se)|0,p=p+Math.imul(se,Ie)|0,g=g+Math.imul(fe,ue)|0,s=s+Math.imul(fe,Ce)|0,s=s+Math.imul(Ee,ue)|0,p=p+Math.imul(Ee,Ce)|0,g=g+Math.imul(X,he)|0,s=s+Math.imul(X,Oe)|0,s=s+Math.imul(be,he)|0,p=p+Math.imul(be,Oe)|0,g=g+Math.imul($,ce)|0,s=s+Math.imul($,Pe)|0,s=s+Math.imul(J,ce)|0,p=p+Math.imul(J,Pe)|0,g=g+Math.imul(O,de)|0,s=s+Math.imul(O,Fe)|0,s=s+Math.imul(v,de)|0,p=p+Math.imul(v,Fe)|0,g=g+Math.imul(k,le)|0,s=s+Math.imul(k,Le)|0,s=s+Math.imul(B,le)|0,p=p+Math.imul(B,Le)|0,g=g+Math.imul(S,De)|0,s=s+Math.imul(S,Qe)|0,s=s+Math.imul(G,De)|0,p=p+Math.imul(G,Qe)|0;var kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(kr>>>26)|0,kr&=67108863,g=Math.imul(re,_e),s=Math.imul(re,je),s=s+Math.imul(ge,_e)|0,p=Math.imul(ge,je),g=g+Math.imul(Z,Me)|0,s=s+Math.imul(Z,Ve)|0,s=s+Math.imul(ve,Me)|0,p=p+Math.imul(ve,Ve)|0,g=g+Math.imul(ee,Se)|0,s=s+Math.imul(ee,Ie)|0,s=s+Math.imul(ae,Se)|0,p=p+Math.imul(ae,Ie)|0,g=g+Math.imul(te,ue)|0,s=s+Math.imul(te,Ce)|0,s=s+Math.imul(se,ue)|0,p=p+Math.imul(se,Ce)|0,g=g+Math.imul(fe,he)|0,s=s+Math.imul(fe,Oe)|0,s=s+Math.imul(Ee,he)|0,p=p+Math.imul(Ee,Oe)|0,g=g+Math.imul(X,ce)|0,s=s+Math.imul(X,Pe)|0,s=s+Math.imul(be,ce)|0,p=p+Math.imul(be,Pe)|0,g=g+Math.imul($,de)|0,s=s+Math.imul($,Fe)|0,s=s+Math.imul(J,de)|0,p=p+Math.imul(J,Fe)|0,g=g+Math.imul(O,le)|0,s=s+Math.imul(O,Le)|0,s=s+Math.imul(v,le)|0,p=p+Math.imul(v,Le)|0,g=g+Math.imul(k,De)|0,s=s+Math.imul(k,Qe)|0,s=s+Math.imul(B,De)|0,p=p+Math.imul(B,Qe)|0;var Hr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,g=Math.imul(re,Me),s=Math.imul(re,Ve),s=s+Math.imul(ge,Me)|0,p=Math.imul(ge,Ve),g=g+Math.imul(Z,Se)|0,s=s+Math.imul(Z,Ie)|0,s=s+Math.imul(ve,Se)|0,p=p+Math.imul(ve,Ie)|0,g=g+Math.imul(ee,ue)|0,s=s+Math.imul(ee,Ce)|0,s=s+Math.imul(ae,ue)|0,p=p+Math.imul(ae,Ce)|0,g=g+Math.imul(te,he)|0,s=s+Math.imul(te,Oe)|0,s=s+Math.imul(se,he)|0,p=p+Math.imul(se,Oe)|0,g=g+Math.imul(fe,ce)|0,s=s+Math.imul(fe,Pe)|0,s=s+Math.imul(Ee,ce)|0,p=p+Math.imul(Ee,Pe)|0,g=g+Math.imul(X,de)|0,s=s+Math.imul(X,Fe)|0,s=s+Math.imul(be,de)|0,p=p+Math.imul(be,Fe)|0,g=g+Math.imul($,le)|0,s=s+Math.imul($,Le)|0,s=s+Math.imul(J,le)|0,p=p+Math.imul(J,Le)|0,g=g+Math.imul(O,De)|0,s=s+Math.imul(O,Qe)|0,s=s+Math.imul(v,De)|0,p=p+Math.imul(v,Qe)|0;var Kr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Kr>>>26)|0,Kr&=67108863,g=Math.imul(re,Se),s=Math.imul(re,Ie),s=s+Math.imul(ge,Se)|0,p=Math.imul(ge,Ie),g=g+Math.imul(Z,ue)|0,s=s+Math.imul(Z,Ce)|0,s=s+Math.imul(ve,ue)|0,p=p+Math.imul(ve,Ce)|0,g=g+Math.imul(ee,he)|0,s=s+Math.imul(ee,Oe)|0,s=s+Math.imul(ae,he)|0,p=p+Math.imul(ae,Oe)|0,g=g+Math.imul(te,ce)|0,s=s+Math.imul(te,Pe)|0,s=s+Math.imul(se,ce)|0,p=p+Math.imul(se,Pe)|0,g=g+Math.imul(fe,de)|0,s=s+Math.imul(fe,Fe)|0,s=s+Math.imul(Ee,de)|0,p=p+Math.imul(Ee,Fe)|0,g=g+Math.imul(X,le)|0,s=s+Math.imul(X,Le)|0,s=s+Math.imul(be,le)|0,p=p+Math.imul(be,Le)|0,g=g+Math.imul($,De)|0,s=s+Math.imul($,Qe)|0,s=s+Math.imul(J,De)|0,p=p+Math.imul(J,Qe)|0;var jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(jr>>>26)|0,jr&=67108863,g=Math.imul(re,ue),s=Math.imul(re,Ce),s=s+Math.imul(ge,ue)|0,p=Math.imul(ge,Ce),g=g+Math.imul(Z,he)|0,s=s+Math.imul(Z,Oe)|0,s=s+Math.imul(ve,he)|0,p=p+Math.imul(ve,Oe)|0,g=g+Math.imul(ee,ce)|0,s=s+Math.imul(ee,Pe)|0,s=s+Math.imul(ae,ce)|0,p=p+Math.imul(ae,Pe)|0,g=g+Math.imul(te,de)|0,s=s+Math.imul(te,Fe)|0,s=s+Math.imul(se,de)|0,p=p+Math.imul(se,Fe)|0,g=g+Math.imul(fe,le)|0,s=s+Math.imul(fe,Le)|0,s=s+Math.imul(Ee,le)|0,p=p+Math.imul(Ee,Le)|0,g=g+Math.imul(X,De)|0,s=s+Math.imul(X,Qe)|0,s=s+Math.imul(be,De)|0,p=p+Math.imul(be,Qe)|0;var $r=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+($r>>>26)|0,$r&=67108863,g=Math.imul(re,he),s=Math.imul(re,Oe),s=s+Math.imul(ge,he)|0,p=Math.imul(ge,Oe),g=g+Math.imul(Z,ce)|0,s=s+Math.imul(Z,Pe)|0,s=s+Math.imul(ve,ce)|0,p=p+Math.imul(ve,Pe)|0,g=g+Math.imul(ee,de)|0,s=s+Math.imul(ee,Fe)|0,s=s+Math.imul(ae,de)|0,p=p+Math.imul(ae,Fe)|0,g=g+Math.imul(te,le)|0,s=s+Math.imul(te,Le)|0,s=s+Math.imul(se,le)|0,p=p+Math.imul(se,Le)|0,g=g+Math.imul(fe,De)|0,s=s+Math.imul(fe,Qe)|0,s=s+Math.imul(Ee,De)|0,p=p+Math.imul(Ee,Qe)|0;var Vr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,g=Math.imul(re,ce),s=Math.imul(re,Pe),s=s+Math.imul(ge,ce)|0,p=Math.imul(ge,Pe),g=g+Math.imul(Z,de)|0,s=s+Math.imul(Z,Fe)|0,s=s+Math.imul(ve,de)|0,p=p+Math.imul(ve,Fe)|0,g=g+Math.imul(ee,le)|0,s=s+Math.imul(ee,Le)|0,s=s+Math.imul(ae,le)|0,p=p+Math.imul(ae,Le)|0,g=g+Math.imul(te,De)|0,s=s+Math.imul(te,Qe)|0,s=s+Math.imul(se,De)|0,p=p+Math.imul(se,Qe)|0;var Gr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,g=Math.imul(re,de),s=Math.imul(re,Fe),s=s+Math.imul(ge,de)|0,p=Math.imul(ge,Fe),g=g+Math.imul(Z,le)|0,s=s+Math.imul(Z,Le)|0,s=s+Math.imul(ve,le)|0,p=p+Math.imul(ve,Le)|0,g=g+Math.imul(ee,De)|0,s=s+Math.imul(ee,Qe)|0,s=s+Math.imul(ae,De)|0,p=p+Math.imul(ae,Qe)|0;var Yr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Yr>>>26)|0,Yr&=67108863,g=Math.imul(re,le),s=Math.imul(re,Le),s=s+Math.imul(ge,le)|0,p=Math.imul(ge,Le),g=g+Math.imul(Z,De)|0,s=s+Math.imul(Z,Qe)|0,s=s+Math.imul(ve,De)|0,p=p+Math.imul(ve,Qe)|0;var Jr=(_+g|0)+((s&8191)<<13)|0;_=(p+(s>>>13)|0)+(Jr>>>26)|0,Jr&=67108863,g=Math.imul(re,De),s=Math.imul(re,Qe),s=s+Math.imul(ge,De)|0,p=Math.imul(ge,Qe);var Wr=(_+g|0)+((s&8191)<<13)|0;return _=(p+(s>>>13)|0)+(Wr>>>26)|0,Wr&=67108863,w[0]=Ye,w[1]=Je,w[2]=Ut,w[3]=Lt,w[4]=qt,w[5]=zt,w[6]=kt,w[7]=qr,w[8]=zr,w[9]=kr,w[10]=Hr,w[11]=Kr,w[12]=jr,w[13]=$r,w[14]=Vr,w[15]=Gr,w[16]=Yr,w[17]=Jr,w[18]=Wr,_!==0&&(w[19]=_,a.length++),a};Math.imul||(q=I);function H(C,h,u){u.negative=h.negative^C.negative,u.length=C.length+h.length;for(var a=0,o=0,l=0;l>>26)|0,o+=w>>>26,w&=67108863}u.words[l]=_,a=w,w=o}return a!==0?u.words[l]=a:u.length--,u.strip()}function V(C,h,u){var a=new z;return a.mulp(C,h,u)}n.prototype.mulTo=function(h,u){var a,o=this.length+h.length;return this.length===10&&h.length===10?a=q(this,h,u):o<63?a=I(this,h,u):o<1024?a=H(this,h,u):a=V(this,h,u),a};function z(C,h){this.x=C,this.y=h}z.prototype.makeRBT=function(h){for(var u=new Array(h),a=n.prototype._countBits(h)-1,o=0;o>=1;return o},z.prototype.permute=function(h,u,a,o,l,w){for(var _=0;_>>1)l++;return 1<>>13,a[2*w+1]=l&8191,l=l>>>13;for(w=2*u;w>=26,u+=o/67108864|0,u+=l>>>26,this.words[a]=l&67108863}return u!==0&&(this.words[a]=u,this.length++),this},n.prototype.muln=function(h){return this.clone().imuln(h)},n.prototype.sqr=function(){return this.mul(this)},n.prototype.isqr=function(){return this.imul(this.clone())},n.prototype.pow=function(h){var u=D(h);if(u.length===0)return new n(1);for(var a=this,o=0;o=0);var u=h%26,a=(h-u)/26,o=67108863>>>26-u<<26-u,l;if(u!==0){var w=0;for(l=0;l>>26-u}w&&(this.words[l]=w,this.length++)}if(a!==0){for(l=this.length-1;l>=0;l--)this.words[l+a]=this.words[l];for(l=0;l=0);var o;u?o=(u-u%26)/26:o=0;var l=h%26,w=Math.min((h-l)/26,this.length),_=67108863^67108863>>>l<w)for(this.length-=w,s=0;s=0&&(p!==0||s>=o);s--){var b=this.words[s]|0;this.words[s]=p<<26-l|b>>>l,p=b&_}return g&&p!==0&&(g.words[g.length++]=p),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},n.prototype.ishrn=function(h,u,a){return i(this.negative===0),this.iushrn(h,u,a)},n.prototype.shln=function(h){return this.clone().ishln(h)},n.prototype.ushln=function(h){return this.clone().iushln(h)},n.prototype.shrn=function(h){return this.clone().ishrn(h)},n.prototype.ushrn=function(h){return this.clone().iushrn(h)},n.prototype.testn=function(h){i(typeof h=="number"&&h>=0);var u=h%26,a=(h-u)/26,o=1<=0);var u=h%26,a=(h-u)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=a)return this;if(u!==0&&a++,this.length=Math.min(a,this.length),u!==0){var o=67108863^67108863>>>u<=67108864;u++)this.words[u]-=67108864,u===this.length-1?this.words[u+1]=1:this.words[u+1]++;return this.length=Math.max(this.length,u+1),this},n.prototype.isubn=function(h){if(i(typeof h=="number"),i(h<67108864),h<0)return this.iaddn(-h);if(this.negative!==0)return this.negative=0,this.iaddn(h),this.negative=1,this;if(this.words[0]-=h,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var u=0;u>26)-(g/67108864|0),this.words[l+a]=w&67108863}for(;l>26,this.words[l+a]=w&67108863;if(_===0)return this.strip();for(i(_===-1),_=0,l=0;l>26,this.words[l]=w&67108863;return this.negative=1,this.strip()},n.prototype._wordDiv=function(h,u){var a=this.length-h.length,o=this.clone(),l=h,w=l.words[l.length-1]|0,_=this._countBits(w);a=26-_,a!==0&&(l=l.ushln(a),o.iushln(a),w=l.words[l.length-1]|0);var g=o.length-l.length,s;if(u!=="mod"){s=new n(null),s.length=g+1,s.words=new Array(s.length);for(var p=0;p=0;S--){var G=(o.words[l.length+S]|0)*67108864+(o.words[l.length+S-1]|0);for(G=Math.min(G/w|0,67108863),o._ishlnsubmul(l,G,S);o.negative!==0;)G--,o.negative=0,o._ishlnsubmul(l,1,S),o.isZero()||(o.negative^=1);s&&(s.words[S]=G)}return s&&s.strip(),o.strip(),u!=="div"&&a!==0&&o.iushrn(a),{div:s||null,mod:o}},n.prototype.divmod=function(h,u,a){if(i(!h.isZero()),this.isZero())return{div:new n(0),mod:new n(0)};var o,l,w;return this.negative!==0&&h.negative===0?(w=this.neg().divmod(h,u),u!=="mod"&&(o=w.div.neg()),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.iadd(h)),{div:o,mod:l}):this.negative===0&&h.negative!==0?(w=this.divmod(h.neg(),u),u!=="mod"&&(o=w.div.neg()),{div:o,mod:w.mod}):this.negative&h.negative?(w=this.neg().divmod(h.neg(),u),u!=="div"&&(l=w.mod.neg(),a&&l.negative!==0&&l.isub(h)),{div:w.div,mod:l}):h.length>this.length||this.cmp(h)<0?{div:new n(0),mod:this}:h.length===1?u==="div"?{div:this.divn(h.words[0]),mod:null}:u==="mod"?{div:null,mod:new n(this.modn(h.words[0]))}:{div:this.divn(h.words[0]),mod:new n(this.modn(h.words[0]))}:this._wordDiv(h,u)},n.prototype.div=function(h){return this.divmod(h,"div",!1).div},n.prototype.mod=function(h){return this.divmod(h,"mod",!1).mod},n.prototype.umod=function(h){return this.divmod(h,"mod",!0).mod},n.prototype.divRound=function(h){var u=this.divmod(h);if(u.mod.isZero())return u.div;var a=u.div.negative!==0?u.mod.isub(h):u.mod,o=h.ushrn(1),l=h.andln(1),w=a.cmp(o);return w<0||l===1&&w===0?u.div:u.div.negative!==0?u.div.isubn(1):u.div.iaddn(1)},n.prototype.modn=function(h){i(h<=67108863);for(var u=(1<<26)%h,a=0,o=this.length-1;o>=0;o--)a=(u*a+(this.words[o]|0))%h;return a},n.prototype.idivn=function(h){i(h<=67108863);for(var u=0,a=this.length-1;a>=0;a--){var o=(this.words[a]|0)+u*67108864;this.words[a]=o/h|0,u=o%h}return this.strip()},n.prototype.divn=function(h){return this.clone().idivn(h)},n.prototype.egcd=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=new n(0),_=new n(1),g=0;u.isEven()&&a.isEven();)u.iushrn(1),a.iushrn(1),++g;for(var s=a.clone(),p=u.clone();!u.isZero();){for(var b=0,S=1;!(u.words[0]&S)&&b<26;++b,S<<=1);if(b>0)for(u.iushrn(b);b-- >0;)(o.isOdd()||l.isOdd())&&(o.iadd(s),l.isub(p)),o.iushrn(1),l.iushrn(1);for(var G=0,M=1;!(a.words[0]&M)&&G<26;++G,M<<=1);if(G>0)for(a.iushrn(G);G-- >0;)(w.isOdd()||_.isOdd())&&(w.iadd(s),_.isub(p)),w.iushrn(1),_.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(w),l.isub(_)):(a.isub(u),w.isub(o),_.isub(l))}return{a:w,b:_,gcd:a.iushln(g)}},n.prototype._invmp=function(h){i(h.negative===0),i(!h.isZero());var u=this,a=h.clone();u.negative!==0?u=u.umod(h):u=u.clone();for(var o=new n(1),l=new n(0),w=a.clone();u.cmpn(1)>0&&a.cmpn(1)>0;){for(var _=0,g=1;!(u.words[0]&g)&&_<26;++_,g<<=1);if(_>0)for(u.iushrn(_);_-- >0;)o.isOdd()&&o.iadd(w),o.iushrn(1);for(var s=0,p=1;!(a.words[0]&p)&&s<26;++s,p<<=1);if(s>0)for(a.iushrn(s);s-- >0;)l.isOdd()&&l.iadd(w),l.iushrn(1);u.cmp(a)>=0?(u.isub(a),o.isub(l)):(a.isub(u),l.isub(o))}var b;return u.cmpn(1)===0?b=o:b=l,b.cmpn(0)<0&&b.iadd(h),b},n.prototype.gcd=function(h){if(this.isZero())return h.abs();if(h.isZero())return this.abs();var u=this.clone(),a=h.clone();u.negative=0,a.negative=0;for(var o=0;u.isEven()&&a.isEven();o++)u.iushrn(1),a.iushrn(1);do{for(;u.isEven();)u.iushrn(1);for(;a.isEven();)a.iushrn(1);var l=u.cmp(a);if(l<0){var w=u;u=a,a=w}else if(l===0||a.cmpn(1)===0)break;u.isub(a)}while(!0);return a.iushln(o)},n.prototype.invm=function(h){return this.egcd(h).a.umod(h)},n.prototype.isEven=function(){return(this.words[0]&1)===0},n.prototype.isOdd=function(){return(this.words[0]&1)===1},n.prototype.andln=function(h){return this.words[0]&h},n.prototype.bincn=function(h){i(typeof h=="number");var u=h%26,a=(h-u)/26,o=1<>>26,_&=67108863,this.words[w]=_}return l!==0&&(this.words[w]=l,this.length++),this},n.prototype.isZero=function(){return this.length===1&&this.words[0]===0},n.prototype.cmpn=function(h){var u=h<0;if(this.negative!==0&&!u)return-1;if(this.negative===0&&u)return 1;this.strip();var a;if(this.length>1)a=1;else{u&&(h=-h),i(h<=67108863,"Number is too big");var o=this.words[0]|0;a=o===h?0:oh.length)return 1;if(this.length=0;a--){var o=this.words[a]|0,l=h.words[a]|0;if(o!==l){ol&&(u=1);break}}return u},n.prototype.gtn=function(h){return this.cmpn(h)===1},n.prototype.gt=function(h){return this.cmp(h)===1},n.prototype.gten=function(h){return this.cmpn(h)>=0},n.prototype.gte=function(h){return this.cmp(h)>=0},n.prototype.ltn=function(h){return this.cmpn(h)===-1},n.prototype.lt=function(h){return this.cmp(h)===-1},n.prototype.lten=function(h){return this.cmpn(h)<=0},n.prototype.lte=function(h){return this.cmp(h)<=0},n.prototype.eqn=function(h){return this.cmpn(h)===0},n.prototype.eq=function(h){return this.cmp(h)===0},n.red=function(h){return new Y(h)},n.prototype.toRed=function(h){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),h.convertTo(this)._forceRed(h)},n.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},n.prototype._forceRed=function(h){return this.red=h,this},n.prototype.forceRed=function(h){return i(!this.red,"Already a number in reduction context"),this._forceRed(h)},n.prototype.redAdd=function(h){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,h)},n.prototype.redIAdd=function(h){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,h)},n.prototype.redSub=function(h){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,h)},n.prototype.redISub=function(h){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,h)},n.prototype.redShl=function(h){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,h)},n.prototype.redMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.mul(this,h)},n.prototype.redIMul=function(h){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,h),this.red.imul(this,h)},n.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},n.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},n.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},n.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},n.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},n.prototype.redPow=function(h){return i(this.red&&!h.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,h)};var j={k256:null,p224:null,p192:null,p25519:null};function F(C,h){this.name=C,this.p=new n(h,16),this.n=this.p.bitLength(),this.k=new n(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}F.prototype._tmp=function(){var h=new n(null);return h.words=new Array(Math.ceil(this.n/13)),h},F.prototype.ireduce=function(h){var u=h,a;do this.split(u,this.tmp),u=this.imulK(u),u=u.iadd(this.tmp),a=u.bitLength();while(a>this.n);var o=a0?u.isub(this.p):u.strip!==void 0?u.strip():u._strip(),u},F.prototype.split=function(h,u){h.iushrn(this.n,0,u)},F.prototype.imulK=function(h){return h.imul(this.k)};function U(){F.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}f(U,F),U.prototype.split=function(h,u){for(var a=4194303,o=Math.min(h.length,9),l=0;l>>22,w=_}w>>>=22,h.words[l-10]=w,w===0&&h.length>10?h.length-=10:h.length-=9},U.prototype.imulK=function(h){h.words[h.length]=0,h.words[h.length+1]=0,h.length+=2;for(var u=0,a=0;a>>=26,h.words[a]=l,u=o}return u!==0&&(h.words[h.length++]=u),h},n._prime=function(h){if(j[h])return j[h];var u;if(h==="k256")u=new U;else if(h==="p224")u=new L;else if(h==="p192")u=new m;else if(h==="p25519")u=new P;else throw new Error("Unknown prime "+h);return j[h]=u,u};function Y(C){if(typeof C=="string"){var h=n._prime(C);this.m=h.p,this.prime=h}else i(C.gtn(1),"modulus must be greater than 1"),this.m=C,this.prime=null}Y.prototype._verify1=function(h){i(h.negative===0,"red works only with positives"),i(h.red,"red works only with red numbers")},Y.prototype._verify2=function(h,u){i((h.negative|u.negative)===0,"red works only with positives"),i(h.red&&h.red===u.red,"red works only with red numbers")},Y.prototype.imod=function(h){return this.prime?this.prime.ireduce(h)._forceRed(this):h.umod(this.m)._forceRed(this)},Y.prototype.neg=function(h){return h.isZero()?h.clone():this.m.sub(h)._forceRed(this)},Y.prototype.add=function(h,u){this._verify2(h,u);var a=h.add(u);return a.cmp(this.m)>=0&&a.isub(this.m),a._forceRed(this)},Y.prototype.iadd=function(h,u){this._verify2(h,u);var a=h.iadd(u);return a.cmp(this.m)>=0&&a.isub(this.m),a},Y.prototype.sub=function(h,u){this._verify2(h,u);var a=h.sub(u);return a.cmpn(0)<0&&a.iadd(this.m),a._forceRed(this)},Y.prototype.isub=function(h,u){this._verify2(h,u);var a=h.isub(u);return a.cmpn(0)<0&&a.iadd(this.m),a},Y.prototype.shl=function(h,u){return this._verify1(h),this.imod(h.ushln(u))},Y.prototype.imul=function(h,u){return this._verify2(h,u),this.imod(h.imul(u))},Y.prototype.mul=function(h,u){return this._verify2(h,u),this.imod(h.mul(u))},Y.prototype.isqr=function(h){return this.imul(h,h.clone())},Y.prototype.sqr=function(h){return this.mul(h,h)},Y.prototype.sqrt=function(h){if(h.isZero())return h.clone();var u=this.m.andln(3);if(i(u%2===1),u===3){var a=this.m.add(new n(1)).iushrn(2);return this.pow(h,a)}for(var o=this.m.subn(1),l=0;!o.isZero()&&o.andln(1)===0;)l++,o.iushrn(1);i(!o.isZero());var w=new n(1).toRed(this),_=w.redNeg(),g=this.m.subn(1).iushrn(1),s=this.m.bitLength();for(s=new n(2*s*s).toRed(this);this.pow(s,g).cmp(_)!==0;)s.redIAdd(_);for(var p=this.pow(s,o),b=this.pow(h,o.addn(1).iushrn(1)),S=this.pow(h,o),G=l;S.cmp(w)!==0;){for(var M=S,k=0;M.cmp(w)!==0;k++)M=M.redSqr();i(k=0;l--){for(var p=u.words[l],b=s-1;b>=0;b--){var S=p>>b&1;if(w!==o[0]&&(w=this.sqr(w)),S===0&&_===0){g=0;continue}_<<=1,_|=S,g++,!(g!==a&&(l!==0||b!==0))&&(w=this.mul(w,o[_]),g=0,_=0)}s=26}return w},Y.prototype.convertTo=function(h){var u=h.umod(this.m);return u===h?u.clone():u},Y.prototype.convertFrom=function(h){var u=h.clone();return u.red=null,u},n.mont=function(h){return new Q(h)};function Q(C){Y.call(this,C),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new n(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}f(Q,Y),Q.prototype.convertTo=function(h){return this.imod(h.ushln(this.shift))},Q.prototype.convertFrom=function(h){var u=this.imod(h.mul(this.rinv));return u.red=null,u},Q.prototype.imul=function(h,u){if(h.isZero()||u.isZero())return h.words[0]=0,h.length=1,h;var a=h.imul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.mul=function(h,u){if(h.isZero()||u.isZero())return new n(0)._forceRed(this);var a=h.mul(u),o=a.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),l=a.isub(o).iushrn(this.shift),w=l;return l.cmp(this.m)>=0?w=l.isub(this.m):l.cmpn(0)<0&&(w=l.iadd(this.m)),w._forceRed(this)},Q.prototype.invm=function(h){var u=this.imod(h._invmp(this.m).mul(this.r2));return u._forceRed(this)}})(t,Rn)})(ir);var Uf={};(function(t){var e=t;function r(n,d){if(Array.isArray(n))return n.slice();if(!n)return[];var c=[];if(typeof n!="string"){for(var y=0;y>8,E=A&255;x?c.push(x,E):c.push(E)}return c}e.toArray=r;function i(n){return n.length===1?"0"+n:n}e.zero2=i;function f(n){for(var d="",c=0;c(q>>1)-1?V=(q>>1)-z:V=z,H.isubn(V)):V=0,D[I]=V,H.iushrn(1)}return D}e.getNAF=n;function d(x,E){var N=[[],[]];x=x.clone(),E=E.clone();for(var D=0,I=0,q;x.cmpn(-D)>0||E.cmpn(-I)>0;){var H=x.andln(3)+D&3,V=E.andln(3)+I&3;H===3&&(H=-1),V===3&&(V=-1);var z;H&1?(q=x.andln(7)+D&7,(q===3||q===5)&&V===2?z=-H:z=H):z=0,N[0].push(z);var j;V&1?(q=E.andln(7)+I&7,(q===3||q===5)&&H===2?j=-V:j=V):j=0,N[1].push(j),2*D===z+1&&(D=1-D),2*I===j+1&&(I=1-I),x.iushrn(1),E.iushrn(1)}return N}e.getJSF=d;function c(x,E,N){var D="_"+E;x.prototype[E]=function(){return this[D]!==void 0?this[D]:this[D]=N.call(this)}}e.cachedProperty=c;function y(x){return typeof x=="string"?e.toArray(x,"hex"):x}e.parseBytes=y;function A(x){return new r(x,"hex","le")}e.intFromLE=A}(Dt);var pn={exports:{}},Lf;pn.exports=function(e){return Lf||(Lf=new yr(null)),Lf.generate(e)};function yr(t){this.rand=t}if(pn.exports.Rand=yr,yr.prototype.generate=function(e){return this._rand(e)},yr.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var r=new Uint8Array(e),i=0;i0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}var yn=wr;wr.prototype.point=function(){throw new Error("Not implemented")},wr.prototype.validate=function(){throw new Error("Not implemented")},wr.prototype._fixedNafMul=function(e,r){gn(e.precomputed);var i=e._getDoubles(),f=mn(r,1,this._bitLength),n=(1<=c;A--)y=(y<<1)+f[A];d.push(y)}for(var x=this.jpoint(null,null,null),E=this.jpoint(null,null,null),N=n;N>0;N--){for(c=0;c=0;y--){for(var A=0;y>=0&&d[y]===0;y--)A++;if(y>=0&&A++,c=c.dblp(A),y<0)break;var x=d[y];gn(x!==0),e.type==="affine"?x>0?c=c.mixedAdd(n[x-1>>1]):c=c.mixedAdd(n[-x-1>>1].neg()):x>0?c=c.add(n[x-1>>1]):c=c.add(n[-x-1>>1].neg())}return e.type==="affine"?c.toP():c},wr.prototype._wnafMulAdd=function(e,r,i,f,n){var d=this._wnafT1,c=this._wnafT2,y=this._wnafT3,A=0,x,E,N;for(x=0;x=1;x-=2){var I=x-1,q=x;if(d[I]!==1||d[q]!==1){y[I]=mn(i[I],d[I],this._bitLength),y[q]=mn(i[q],d[q],this._bitLength),A=Math.max(y[I].length,A),A=Math.max(y[q].length,A);continue}var H=[r[I],null,null,r[q]];r[I].y.cmp(r[q].y)===0?(H[1]=r[I].add(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg())):r[I].y.cmp(r[q].y.redNeg())===0?(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].add(r[q].neg())):(H[1]=r[I].toJ().mixedAdd(r[q]),H[2]=r[I].toJ().mixedAdd(r[q].neg()));var V=[-3,-1,-5,-7,0,7,5,1,3],z=V2(i[I],i[q]);for(A=Math.max(z[0].length,A),y[I]=new Array(A),y[q]=new Array(A),E=0;E=0;x--){for(var m=0;x>=0;){var P=!0;for(E=0;E=0&&m++,U=U.dblp(m),x<0)break;for(E=0;E0?N=c[E][Y-1>>1]:Y<0&&(N=c[E][-Y-1>>1].neg()),N.type==="affine"?U=U.mixedAdd(N):U=U.add(N))}}for(x=0;x=Math.ceil((e.bitLength()+1)/r.step):!1},Pt.prototype._getDoubles=function(e,r){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var i=[this],f=this,n=0;n=0&&(D=A,I=x),E.negative&&(E=E.neg(),N=N.neg()),D.negative&&(D=D.neg(),I=I.neg()),[{a:E,b:N},{a:D,b:I}]},Tt.prototype._endoSplit=function(e){var r=this.endo.basis,i=r[0],f=r[1],n=f.b.mul(e).divRound(this.n),d=i.b.neg().mul(e).divRound(this.n),c=n.mul(i.a),y=d.mul(f.a),A=n.mul(i.b),x=d.mul(f.b),E=e.sub(c).sub(y),N=A.add(x).neg();return{k1:E,k2:N}},Tt.prototype.pointFromX=function(e,r){e=new rt(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),f=i.redSqrt();if(f.redSqr().redSub(i).cmp(this.zero)!==0)throw new Error("invalid point");var n=f.fromRed().isOdd();return(r&&!n||!r&&n)&&(f=f.redNeg()),this.point(e,f)},Tt.prototype.validate=function(e){if(e.inf)return!0;var r=e.x,i=e.y,f=this.a.redMul(r),n=r.redSqr().redMul(r).redIAdd(f).redIAdd(this.b);return i.redSqr().redISub(n).cmpn(0)===0},Tt.prototype._endoWnafMulAdd=function(e,r,i){for(var f=this._endoWnafT1,n=this._endoWnafT2,d=0;d":""},ft.prototype.isInfinity=function(){return this.inf},ft.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var r=this.y.redSub(e.y);r.cmpn(0)!==0&&(r=r.redMul(this.x.redSub(e.x).redInvm()));var i=r.redSqr().redISub(this.x).redISub(e.x),f=r.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,f)},ft.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var r=this.curve.a,i=this.x.redSqr(),f=e.redInvm(),n=i.redAdd(i).redIAdd(i).redIAdd(r).redMul(f),d=n.redSqr().redISub(this.x.redAdd(this.x)),c=n.redMul(this.x.redSub(d)).redISub(this.y);return this.curve.point(d,c)},ft.prototype.getX=function(){return this.x.fromRed()},ft.prototype.getY=function(){return this.y.fromRed()},ft.prototype.mul=function(e){return e=new rt(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},ft.prototype.mulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n):this.curve._wnafMulAdd(1,f,n,2)},ft.prototype.jmulAdd=function(e,r,i){var f=[this,r],n=[e,i];return this.curve.endo?this.curve._endoWnafMulAdd(f,n,!0):this.curve._wnafMulAdd(1,f,n,2,!0)},ft.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)},ft.prototype.neg=function(e){if(this.inf)return this;var r=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var i=this.precomputed,f=function(n){return n.neg()};r.precomputed={naf:i.naf&&{wnd:i.naf.wnd,points:i.naf.points.map(f)},doubles:i.doubles&&{step:i.doubles.step,points:i.doubles.points.map(f)}}}return r},ft.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function ct(t,e,r,i){di.BasePoint.call(this,t,"jacobian"),e===null&&r===null&&i===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new rt(0)):(this.x=new rt(e,16),this.y=new rt(r,16),this.z=new rt(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}zf(ct,di.BasePoint),Tt.prototype.jpoint=function(e,r,i){return new ct(this,e,r,i)},ct.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),r=e.redSqr(),i=this.x.redMul(r),f=this.y.redMul(r).redMul(e);return this.curve.point(i,f)},ct.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},ct.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var r=e.z.redSqr(),i=this.z.redSqr(),f=this.x.redMul(r),n=e.x.redMul(i),d=this.y.redMul(r.redMul(e.z)),c=e.y.redMul(i.redMul(this.z)),y=f.redSub(n),A=d.redSub(c);if(y.cmpn(0)===0)return A.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var x=y.redSqr(),E=x.redMul(y),N=f.redMul(x),D=A.redSqr().redIAdd(E).redISub(N).redISub(N),I=A.redMul(N.redISub(D)).redISub(d.redMul(E)),q=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,I,q)},ct.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var r=this.z.redSqr(),i=this.x,f=e.x.redMul(r),n=this.y,d=e.y.redMul(r).redMul(this.z),c=i.redSub(f),y=n.redSub(d);if(c.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var A=c.redSqr(),x=A.redMul(c),E=i.redMul(A),N=y.redSqr().redIAdd(x).redISub(E).redISub(E),D=y.redMul(E.redISub(N)).redISub(n.redMul(x)),I=this.z.redMul(c);return this.curve.jpoint(N,D,I)},ct.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var r;if(this.curve.zeroA||this.curve.threeA){var i=this;for(r=0;r=0)return!1;if(i.redIAdd(n),this.x.cmp(i)===0)return!0}},ct.prototype.inspect=function(){return this.isInfinity()?"":""},ct.prototype.isInfinity=function(){return this.z.cmpn(0)===0};var li=ir.exports,Go=ni.exports,wn=yn,W2=Dt;function bi(t){wn.call(this,"mont",t),this.a=new li(t.a,16).toRed(this.red),this.b=new li(t.b,16).toRed(this.red),this.i4=new li(4).toRed(this.red).redInvm(),this.two=new li(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}Go(bi,wn);var Q2=bi;bi.prototype.validate=function(e){var r=e.normalize().x,i=r.redSqr(),f=i.redMul(r).redAdd(i.redMul(this.a)).redAdd(r),n=f.redSqrt();return n.redSqr().cmp(f)===0};function at(t,e,r){wn.BasePoint.call(this,t,"projective"),e===null&&r===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new li(e,16),this.z=new li(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}Go(at,wn.BasePoint),bi.prototype.decodePoint=function(e,r){return this.point(W2.toArray(e,r),1)},bi.prototype.point=function(e,r){return new at(this,e,r)},bi.prototype.pointFromJSON=function(e){return at.fromJSON(this,e)},at.prototype.precompute=function(){},at.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},at.fromJSON=function(e,r){return new at(e,r[0],r[1]||e.one)},at.prototype.inspect=function(){return this.isInfinity()?"":""},at.prototype.isInfinity=function(){return this.z.cmpn(0)===0},at.prototype.dbl=function(){var e=this.x.redAdd(this.z),r=e.redSqr(),i=this.x.redSub(this.z),f=i.redSqr(),n=r.redSub(f),d=r.redMul(f),c=n.redMul(f.redAdd(this.curve.a24.redMul(n)));return this.curve.point(d,c)},at.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.diffAdd=function(e,r){var i=this.x.redAdd(this.z),f=this.x.redSub(this.z),n=e.x.redAdd(e.z),d=e.x.redSub(e.z),c=d.redMul(i),y=n.redMul(f),A=r.z.redMul(c.redAdd(y).redSqr()),x=r.x.redMul(c.redISub(y).redSqr());return this.curve.point(A,x)},at.prototype.mul=function(e){for(var r=e.clone(),i=this,f=this.curve.point(null,null),n=this,d=[];r.cmpn(0)!==0;r.iushrn(1))d.push(r.andln(1));for(var c=d.length-1;c>=0;c--)d[c]===0?(i=i.diffAdd(f,n),f=f.dbl()):(f=i.diffAdd(f,n),i=i.dbl());return f},at.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},at.prototype.eq=function(e){return this.getX().cmp(e.getX())===0},at.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},at.prototype.getX=function(){return this.normalize(),this.x.fromRed()};var X2=Dt,hr=ir.exports,Yo=ni.exports,An=yn,Z2=X2.assert;function nr(t){this.twisted=(t.a|0)!==1,this.mOneA=this.twisted&&(t.a|0)===-1,this.extended=this.mOneA,An.call(this,"edwards",t),this.a=new hr(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new hr(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new hr(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),Z2(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(t.c|0)===1}Yo(nr,An);var e3=nr;nr.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},nr.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},nr.prototype.jpoint=function(e,r,i,f){return this.point(e,r,i,f)},nr.prototype.pointFromX=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=this.c2.redSub(this.a.redMul(i)),n=this.one.redSub(this.c2.redMul(this.d).redMul(i)),d=f.redMul(n.redInvm()),c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");var y=c.fromRed().isOdd();return(r&&!y||!r&&y)&&(c=c.redNeg()),this.point(e,c)},nr.prototype.pointFromY=function(e,r){e=new hr(e,16),e.red||(e=e.toRed(this.red));var i=e.redSqr(),f=i.redSub(this.c2),n=i.redMul(this.d).redMul(this.c2).redSub(this.a),d=f.redMul(n.redInvm());if(d.cmp(this.zero)===0){if(r)throw new Error("invalid point");return this.point(this.zero,e)}var c=d.redSqrt();if(c.redSqr().redSub(d).cmp(this.zero)!==0)throw new Error("invalid point");return c.fromRed().isOdd()!==r&&(c=c.redNeg()),this.point(c,e)},nr.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var r=e.x.redSqr(),i=e.y.redSqr(),f=r.redMul(this.a).redAdd(i),n=this.c2.redMul(this.one.redAdd(this.d.redMul(r).redMul(i)));return f.cmp(n)===0};function et(t,e,r,i,f){An.BasePoint.call(this,t,"projective"),e===null&&r===null&&i===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new hr(e,16),this.y=new hr(r,16),this.z=i?new hr(i,16):this.curve.one,this.t=f&&new hr(f,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}Yo(et,An.BasePoint),nr.prototype.pointFromJSON=function(e){return et.fromJSON(this,e)},nr.prototype.point=function(e,r,i,f){return new et(this,e,r,i,f)},et.fromJSON=function(e,r){return new et(e,r[0],r[1],r[2])},et.prototype.inspect=function(){return this.isInfinity()?"":""},et.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},et.prototype._extDbl=function(){var e=this.x.redSqr(),r=this.y.redSqr(),i=this.z.redSqr();i=i.redIAdd(i);var f=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(r),d=f.redAdd(r),c=d.redSub(i),y=f.redSub(r),A=n.redMul(c),x=d.redMul(y),E=n.redMul(y),N=c.redMul(d);return this.curve.point(A,x,N,E)},et.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),r=this.x.redSqr(),i=this.y.redSqr(),f,n,d,c,y,A;if(this.curve.twisted){c=this.curve._mulA(r);var x=c.redAdd(i);this.zOne?(f=e.redSub(r).redSub(i).redMul(x.redSub(this.curve.two)),n=x.redMul(c.redSub(i)),d=x.redSqr().redSub(x).redSub(x)):(y=this.z.redSqr(),A=x.redSub(y).redISub(y),f=e.redSub(r).redISub(i).redMul(A),n=x.redMul(c.redSub(i)),d=x.redMul(A))}else c=r.redAdd(i),y=this.curve._mulC(this.z).redSqr(),A=c.redSub(y).redSub(y),f=this.curve._mulC(e.redISub(c)).redMul(A),n=this.curve._mulC(c).redMul(r.redISub(i)),d=c.redMul(A);return this.curve.point(f,n,d)},et.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},et.prototype._extAdd=function(e){var r=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),i=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),f=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),d=i.redSub(r),c=n.redSub(f),y=n.redAdd(f),A=i.redAdd(r),x=d.redMul(c),E=y.redMul(A),N=d.redMul(A),D=c.redMul(y);return this.curve.point(x,E,D,N)},et.prototype._projAdd=function(e){var r=this.z.redMul(e.z),i=r.redSqr(),f=this.x.redMul(e.x),n=this.y.redMul(e.y),d=this.curve.d.redMul(f).redMul(n),c=i.redSub(d),y=i.redAdd(d),A=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(f).redISub(n),x=r.redMul(c).redMul(A),E,N;return this.curve.twisted?(E=r.redMul(y).redMul(n.redSub(this.curve._mulA(f))),N=c.redMul(y)):(E=r.redMul(y).redMul(n.redSub(f)),N=this.curve._mulC(c).redMul(y)),this.curve.point(x,E,N)},et.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},et.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},et.prototype.mulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!1)},et.prototype.jmulAdd=function(e,r,i){return this.curve._wnafMulAdd(1,[this,r],[e,i],2,!0)},et.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},et.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},et.prototype.getX=function(){return this.normalize(),this.x.fromRed()},et.prototype.getY=function(){return this.normalize(),this.y.fromRed()},et.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0},et.prototype.eqXToP=function(e){var r=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(r)===0)return!0;for(var i=e.clone(),f=this.curve.redN.redMul(this.z);;){if(i.iadd(this.curve.n),i.cmp(this.curve.p)>=0)return!1;if(r.redIAdd(f),this.x.cmp(r)===0)return!0}},et.prototype.toP=et.prototype.normalize,et.prototype.mixedAdd=et.prototype.add,function(t){var e=t;e.base=yn,e.short=J2,e.mont=Q2,e.edwards=e3}(qf);var xn={},kf,Jo;function t3(){return Jo||(Jo=1,kf={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}),kf}(function(t){var e=t,r=_t,i=qf,f=Dt,n=f.assert;function d(A){A.type==="short"?this.curve=new i.short(A):A.type==="edwards"?this.curve=new i.edwards(A):this.curve=new i.mont(A),this.g=this.curve.g,this.n=this.curve.n,this.hash=A.hash,n(this.g.validate(),"Invalid curve"),n(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}e.PresetCurve=d;function c(A,x){Object.defineProperty(e,A,{configurable:!0,enumerable:!0,get:function(){var E=new d(x);return Object.defineProperty(e,A,{configurable:!0,enumerable:!0,value:E}),E}})}c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:r.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:r.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:r.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:r.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:r.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:r.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var y;try{y=t3()}catch{y=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:r.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",y]})})(xn);var r3=_t,Rr=Uf,Wo=Ir;function Ar(t){if(!(this instanceof Ar))return new Ar(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=Rr.toArray(t.entropy,t.entropyEnc||"hex"),r=Rr.toArray(t.nonce,t.nonceEnc||"hex"),i=Rr.toArray(t.pers,t.persEnc||"hex");Wo(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i3=Ar;Ar.prototype._init=function(e,r,i){var f=e.concat(r).concat(i);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(i||[])),this._reseed=1},Ar.prototype.generate=function(e,r,i,f){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof r!="string"&&(f=i,i=r,r=null),i&&(i=Rr.toArray(i,f||"hex"),this._update(i));for(var n=[];n.length"};var _n=ir.exports,Kf=Dt,o3=Kf.assert;function Mn(t,e){if(t instanceof Mn)return t;this._importDER(t,e)||(o3(t.r&&t.s,"Signature without r or s"),this.r=new _n(t.r,16),this.s=new _n(t.s,16),t.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}var s3=Mn;function u3(){this.place=0}function jf(t,e){var r=t[e.place++];if(!(r&128))return r;var i=r&15;if(i===0||i>4||t[e.place]===0)return!1;for(var f=0,n=0,d=e.place;n>>=0;return f<=127?!1:(e.place=d,f)}function Qo(t){for(var e=0,r=t.length-1;!t[e]&&!(t[e+1]&128)&&e>>3);for(t.push(r|128);--r;)t.push(e>>>(r<<3)&255);t.push(e)}Mn.prototype.toDER=function(e){var r=this.r.toArray(),i=this.s.toArray();for(r[0]&128&&(r=[0].concat(r)),i[0]&128&&(i=[0].concat(i)),r=Qo(r),i=Qo(i);!i[0]&&!(i[1]&128);)i=i.slice(1);var f=[2];$f(f,r.length),f=f.concat(r),f.push(2),$f(f,i.length);var n=f.concat(i),d=[48];return $f(d,n.length),d=d.concat(n),Kf.encode(d,e)};var Pr=ir.exports,Xo=i3,h3=Dt,Vf=xn,c3=pn.exports,Zo=h3.assert,Gf=a3,En=s3;function Ft(t){if(!(this instanceof Ft))return new Ft(t);typeof t=="string"&&(Zo(Object.prototype.hasOwnProperty.call(Vf,t),"Unknown curve "+t),t=Vf[t]),t instanceof Vf.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}var d3=Ft;Ft.prototype.keyPair=function(e){return new Gf(this,e)},Ft.prototype.keyFromPrivate=function(e,r){return Gf.fromPrivate(this,e,r)},Ft.prototype.keyFromPublic=function(e,r){return Gf.fromPublic(this,e,r)},Ft.prototype.genKeyPair=function(e){e||(e={});for(var r=new Xo({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||c3(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),i=this.n.byteLength(),f=this.n.sub(new Pr(2));;){var n=new Pr(r.generate(i));if(!(n.cmp(f)>0))return n.iaddn(1),this.keyFromPrivate(n)}},Ft.prototype._truncateToN=function(e,r){var i=e.byteLength()*8-this.n.bitLength();return i>0&&(e=e.ushrn(i)),!r&&e.cmp(this.n)>=0?e.sub(this.n):e},Ft.prototype.sign=function(e,r,i,f){typeof i=="object"&&(f=i,i=null),f||(f={}),r=this.keyFromPrivate(r,i),e=this._truncateToN(new Pr(e,16));for(var n=this.n.byteLength(),d=r.getPrivate().toArray("be",n),c=e.toArray("be",n),y=new Xo({hash:this.hash,entropy:d,nonce:c,pers:f.pers,persEnc:f.persEnc||"utf8"}),A=this.n.sub(new Pr(1)),x=0;;x++){var E=f.k?f.k(x):new Pr(y.generate(this.n.byteLength()));if(E=this._truncateToN(E,!0),!(E.cmpn(1)<=0||E.cmp(A)>=0)){var N=this.g.mul(E);if(!N.isInfinity()){var D=N.getX(),I=D.umod(this.n);if(I.cmpn(0)!==0){var q=E.invm(this.n).mul(I.mul(r.getPrivate()).iadd(e));if(q=q.umod(this.n),q.cmpn(0)!==0){var H=(N.getY().isOdd()?1:0)|(D.cmp(I)!==0?2:0);return f.canonical&&q.cmp(this.nh)>0&&(q=this.n.sub(q),H^=1),new En({r:I,s:q,recoveryParam:H})}}}}}},Ft.prototype.verify=function(e,r,i,f){e=this._truncateToN(new Pr(e,16)),i=this.keyFromPublic(i,f),r=new En(r,"hex");var n=r.r,d=r.s;if(n.cmpn(1)<0||n.cmp(this.n)>=0||d.cmpn(1)<0||d.cmp(this.n)>=0)return!1;var c=d.invm(this.n),y=c.mul(e).umod(this.n),A=c.mul(n).umod(this.n),x;return this.curve._maxwellTrick?(x=this.g.jmulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.eqXToP(n)):(x=this.g.mulAdd(y,i.getPublic(),A),x.isInfinity()?!1:x.getX().umod(this.n).cmp(n)===0)},Ft.prototype.recoverPubKey=function(t,e,r,i){Zo((3&r)===r,"The recovery param is more than two bits"),e=new En(e,i);var f=this.n,n=new Pr(t),d=e.r,c=e.s,y=r&1,A=r>>1;if(d.cmp(this.curve.p.umod(this.curve.n))>=0&&A)throw new Error("Unable to find sencond key candinate");A?d=this.curve.pointFromX(d.add(this.curve.n),y):d=this.curve.pointFromX(d,y);var x=e.r.invm(f),E=f.sub(n).mul(x).umod(f),N=c.mul(x).umod(f);return this.g.mulAdd(E,d,N)},Ft.prototype.getKeyRecoveryParam=function(t,e,r,i){if(e=new En(e,i),e.recoveryParam!==null)return e.recoveryParam;for(var f=0;f<4;f++){var n;try{n=this.recoverPubKey(t,e,f)}catch{continue}if(n.eq(r))return f}throw new Error("Unable to find valid recovery factor")};var Ti=Dt,es=Ti.assert,ts=Ti.parseBytes,vi=Ti.cachedProperty;function ot(t,e){this.eddsa=t,this._secret=ts(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=ts(e.pub)}ot.fromPublic=function(e,r){return r instanceof ot?r:new ot(e,{pub:r})},ot.fromSecret=function(e,r){return r instanceof ot?r:new ot(e,{secret:r})},ot.prototype.secret=function(){return this._secret},vi(ot,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())}),vi(ot,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())}),vi(ot,"privBytes",function(){var e=this.eddsa,r=this.hash(),i=e.encodingLength-1,f=r.slice(0,e.encodingLength);return f[0]&=248,f[i]&=127,f[i]|=64,f}),vi(ot,"priv",function(){return this.eddsa.decodeInt(this.privBytes())}),vi(ot,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()}),vi(ot,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)}),ot.prototype.sign=function(e){return es(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},ot.prototype.verify=function(e,r){return this.eddsa.verify(e,r,this)},ot.prototype.getSecret=function(e){return es(this._secret,"KeyPair is public only"),Ti.encode(this.secret(),e)},ot.prototype.getPublic=function(e){return Ti.encode(this.pubBytes(),e)};var l3=ot,b3=ir.exports,Sn=Dt,rs=Sn.assert,Dn=Sn.cachedProperty,v3=Sn.parseBytes;function Tr(t,e){this.eddsa=t,typeof e!="object"&&(e=v3(e)),Array.isArray(e)&&(rs(e.length===t.encodingLength*2,"Signature has invalid size"),e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),rs(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof b3&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}Dn(Tr,"S",function(){return this.eddsa.decodeInt(this.Sencoded())}),Dn(Tr,"R",function(){return this.eddsa.decodePoint(this.Rencoded())}),Dn(Tr,"Rencoded",function(){return this.eddsa.encodePoint(this.R())}),Dn(Tr,"Sencoded",function(){return this.eddsa.encodeInt(this.S())}),Tr.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},Tr.prototype.toHex=function(){return Sn.encode(this.toBytes(),"hex").toUpperCase()};var p3=Tr,m3=_t,g3=xn,pi=Dt,y3=pi.assert,is=pi.parseBytes,ns=l3,fs=p3;function At(t){if(y3(t==="ed25519","only tested with ed25519 so far"),!(this instanceof At))return new At(t);t=g3[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=m3.sha512}var w3=At;At.prototype.sign=function(e,r){e=is(e);var i=this.keyFromSecret(r),f=this.hashInt(i.messagePrefix(),e),n=this.g.mul(f),d=this.encodePoint(n),c=this.hashInt(d,i.pubBytes(),e).mul(i.priv()),y=f.add(c).umod(this.curve.n);return this.makeSignature({R:n,S:y,Rencoded:d})},At.prototype.verify=function(e,r,i){if(e=is(e),r=this.makeSignature(r),r.S().gte(r.eddsa.curve.n)||r.S().isNeg())return!1;var f=this.keyFromPublic(i),n=this.hashInt(r.Rencoded(),f.pubBytes(),e),d=this.g.mul(r.S()),c=r.R().add(f.pub().mul(n));return c.eq(d)},At.prototype.hashInt=function(){for(var e=this.hash(),r=0;r0){for(;this._bufferLength0;)this._buffer[this._bufferLength++]=y[x++],A--;this._bufferLength===this.blockSize&&(n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,this._buffer,0,this.blockSize),this._bufferLength=0)}for(A>=this.blockSize&&(x=n(this._tempHi,this._tempLo,this._stateHi,this._stateLo,y,x,A),A%=this.blockSize);A>0;)this._buffer[this._bufferLength++]=y[x++],A--;return this},c.prototype.finish=function(y){if(!this._finished){var A=this._bytesHashed,x=this._bufferLength,E=A/536870912|0,N=A<<3,D=A%128<112?128:256;this._buffer[x]=128;for(var I=x+1;I0?new Uint8Array(this._buffer):void 0,bufferLength:this._bufferLength,bytesHashed:this._bytesHashed}},c.prototype.restoreState=function(y){return this._stateHi.set(y.stateHi),this._stateLo.set(y.stateLo),this._bufferLength=y.bufferLength,y.buffer&&this._buffer.set(y.buffer),this._bytesHashed=y.bytesHashed,this._finished=!1,this},c.prototype.cleanSavedState=function(y){r.wipe(y.stateHi),r.wipe(y.stateLo),y.buffer&&r.wipe(y.buffer),y.bufferLength=0,y.bytesHashed=0},c}();t.SHA512=i;var f=new Int32Array([1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591]);function n(c,y,A,x,E,N,D){for(var I=A[0],q=A[1],H=A[2],V=A[3],z=A[4],j=A[5],F=A[6],U=A[7],L=x[0],m=x[1],P=x[2],Y=x[3],Q=x[4],C=x[5],h=x[6],u=x[7],a,o,l,w,_,g,s,p;D>=128;){for(var b=0;b<16;b++){var S=8*b+N;c[b]=e.readUint32BE(E,S),y[b]=e.readUint32BE(E,S+4)}for(var b=0;b<80;b++){var G=I,M=q,k=H,B=V,T=z,O=j,v=F,R=U,$=L,J=m,W=P,X=Y,be=Q,ye=C,fe=h,Ee=u;if(a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(z>>>14|Q<<32-14)^(z>>>18|Q<<32-18)^(Q>>>41-32|z<<32-(41-32)),o=(Q>>>14|z<<32-14)^(Q>>>18|z<<32-18)^(z>>>41-32|Q<<32-(41-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=z&j^~z&F,o=Q&C^~Q&h,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=f[b*2],o=f[b*2+1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=c[b%16],o=y[b%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,l=s&65535|p<<16,w=_&65535|g<<16,a=l,o=w,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=(I>>>28|L<<32-28)^(L>>>34-32|I<<32-(34-32))^(L>>>39-32|I<<32-(39-32)),o=(L>>>28|I<<32-28)^(I>>>34-32|L<<32-(34-32))^(I>>>39-32|L<<32-(39-32)),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,a=I&q^I&H^q&H,o=L&m^L&P^m&P,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,R=s&65535|p<<16,Ee=_&65535|g<<16,a=B,o=X,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=l,o=w,_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,B=s&65535|p<<16,X=_&65535|g<<16,q=G,H=M,V=k,z=B,j=T,F=O,U=v,I=R,m=$,P=J,Y=W,Q=X,C=be,h=ye,u=fe,L=Ee,b%16===15)for(var S=0;S<16;S++)a=c[S],o=y[S],_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=c[(S+9)%16],o=y[(S+9)%16],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+1)%16],w=y[(S+1)%16],a=(l>>>1|w<<32-1)^(l>>>8|w<<32-8)^l>>>7,o=(w>>>1|l<<32-1)^(w>>>8|l<<32-8)^(w>>>7|l<<32-7),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,l=c[(S+14)%16],w=y[(S+14)%16],a=(l>>>19|w<<32-19)^(w>>>61-32|l<<32-(61-32))^l>>>6,o=(w>>>19|l<<32-19)^(l>>>61-32|w<<32-(61-32))^(w>>>6|l<<32-6),_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,c[S]=s&65535|p<<16,y[S]=_&65535|g<<16}a=I,o=L,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[0],o=x[0],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[0]=I=s&65535|p<<16,x[0]=L=_&65535|g<<16,a=q,o=m,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[1],o=x[1],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[1]=q=s&65535|p<<16,x[1]=m=_&65535|g<<16,a=H,o=P,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[2],o=x[2],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[2]=H=s&65535|p<<16,x[2]=P=_&65535|g<<16,a=V,o=Y,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[3],o=x[3],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[3]=V=s&65535|p<<16,x[3]=Y=_&65535|g<<16,a=z,o=Q,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[4],o=x[4],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[4]=z=s&65535|p<<16,x[4]=Q=_&65535|g<<16,a=j,o=C,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[5],o=x[5],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[5]=j=s&65535|p<<16,x[5]=C=_&65535|g<<16,a=F,o=h,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[6],o=x[6],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[6]=F=s&65535|p<<16,x[6]=h=_&65535|g<<16,a=U,o=u,_=o&65535,g=o>>>16,s=a&65535,p=a>>>16,a=A[7],o=x[7],_+=o&65535,g+=o>>>16,s+=a&65535,p+=a>>>16,g+=_>>>16,s+=g>>>16,p+=s>>>16,A[7]=U=s&65535|p<<16,x[7]=u=_&65535|g<<16,N+=128,D-=128}return N}function d(c){var y=new i;y.update(c);var A=y.digest();return y.clean(),A}t.hash=d})(as),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertSecretKeyToX25519=t.convertPublicKeyToX25519=t.verify=t.sign=t.extractPublicKeyFromSecretKey=t.generateKeyPair=t.generateKeyPairFromSeed=t.SEED_LENGTH=t.SECRET_KEY_LENGTH=t.PUBLIC_KEY_LENGTH=t.SIGNATURE_LENGTH=void 0;const e=Br,r=as,i=Et;t.SIGNATURE_LENGTH=64,t.PUBLIC_KEY_LENGTH=32,t.SECRET_KEY_LENGTH=64,t.SEED_LENGTH=32;function f(B){const T=new Float64Array(16);if(B)for(let O=0;O>16&1),O[J-1]&=65535;O[15]=v[15]-32767-(O[14]>>16&1);const $=O[15]>>16&1;O[14]&=65535,q(v,O,1-$)}for(let R=0;R<16;R++)B[2*R]=v[R]&255,B[2*R+1]=v[R]>>8}function V(B,T){let O=0;for(let v=0;v<32;v++)O|=B[v]^T[v];return(1&O-1>>>8)-1}function z(B,T){const O=new Uint8Array(32),v=new Uint8Array(32);return H(O,B),H(v,T),V(O,v)}function j(B){const T=new Uint8Array(32);return H(T,B),T[0]&1}function F(B,T){for(let O=0;O<16;O++)B[O]=T[2*O]+(T[2*O+1]<<8);B[15]&=32767}function U(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]+O[v]}function L(B,T,O){for(let v=0;v<16;v++)B[v]=T[v]-O[v]}function m(B,T,O){let v,R,$=0,J=0,W=0,X=0,be=0,ye=0,fe=0,Ee=0,pe=0,te=0,se=0,oe=0,ee=0,ae=0,ne=0,Z=0,ve=0,me=0,re=0,ge=0,we=0,ie=0,Ae=0,xe=0,_e=0,je=0,$e=0,Me=0,Ve=0,Ge=0,Se=0,Ie=O[0],Ne=O[1],ue=O[2],Ce=O[3],Be=O[4],he=O[5],Oe=O[6],Re=O[7],ce=O[8],Pe=O[9],Te=O[10],de=O[11],Fe=O[12],Ue=O[13],le=O[14],Le=O[15];v=T[0],$+=v*Ie,J+=v*Ne,W+=v*ue,X+=v*Ce,be+=v*Be,ye+=v*he,fe+=v*Oe,Ee+=v*Re,pe+=v*ce,te+=v*Pe,se+=v*Te,oe+=v*de,ee+=v*Fe,ae+=v*Ue,ne+=v*le,Z+=v*Le,v=T[1],J+=v*Ie,W+=v*Ne,X+=v*ue,be+=v*Ce,ye+=v*Be,fe+=v*he,Ee+=v*Oe,pe+=v*Re,te+=v*ce,se+=v*Pe,oe+=v*Te,ee+=v*de,ae+=v*Fe,ne+=v*Ue,Z+=v*le,ve+=v*Le,v=T[2],W+=v*Ie,X+=v*Ne,be+=v*ue,ye+=v*Ce,fe+=v*Be,Ee+=v*he,pe+=v*Oe,te+=v*Re,se+=v*ce,oe+=v*Pe,ee+=v*Te,ae+=v*de,ne+=v*Fe,Z+=v*Ue,ve+=v*le,me+=v*Le,v=T[3],X+=v*Ie,be+=v*Ne,ye+=v*ue,fe+=v*Ce,Ee+=v*Be,pe+=v*he,te+=v*Oe,se+=v*Re,oe+=v*ce,ee+=v*Pe,ae+=v*Te,ne+=v*de,Z+=v*Fe,ve+=v*Ue,me+=v*le,re+=v*Le,v=T[4],be+=v*Ie,ye+=v*Ne,fe+=v*ue,Ee+=v*Ce,pe+=v*Be,te+=v*he,se+=v*Oe,oe+=v*Re,ee+=v*ce,ae+=v*Pe,ne+=v*Te,Z+=v*de,ve+=v*Fe,me+=v*Ue,re+=v*le,ge+=v*Le,v=T[5],ye+=v*Ie,fe+=v*Ne,Ee+=v*ue,pe+=v*Ce,te+=v*Be,se+=v*he,oe+=v*Oe,ee+=v*Re,ae+=v*ce,ne+=v*Pe,Z+=v*Te,ve+=v*de,me+=v*Fe,re+=v*Ue,ge+=v*le,we+=v*Le,v=T[6],fe+=v*Ie,Ee+=v*Ne,pe+=v*ue,te+=v*Ce,se+=v*Be,oe+=v*he,ee+=v*Oe,ae+=v*Re,ne+=v*ce,Z+=v*Pe,ve+=v*Te,me+=v*de,re+=v*Fe,ge+=v*Ue,we+=v*le,ie+=v*Le,v=T[7],Ee+=v*Ie,pe+=v*Ne,te+=v*ue,se+=v*Ce,oe+=v*Be,ee+=v*he,ae+=v*Oe,ne+=v*Re,Z+=v*ce,ve+=v*Pe,me+=v*Te,re+=v*de,ge+=v*Fe,we+=v*Ue,ie+=v*le,Ae+=v*Le,v=T[8],pe+=v*Ie,te+=v*Ne,se+=v*ue,oe+=v*Ce,ee+=v*Be,ae+=v*he,ne+=v*Oe,Z+=v*Re,ve+=v*ce,me+=v*Pe,re+=v*Te,ge+=v*de,we+=v*Fe,ie+=v*Ue,Ae+=v*le,xe+=v*Le,v=T[9],te+=v*Ie,se+=v*Ne,oe+=v*ue,ee+=v*Ce,ae+=v*Be,ne+=v*he,Z+=v*Oe,ve+=v*Re,me+=v*ce,re+=v*Pe,ge+=v*Te,we+=v*de,ie+=v*Fe,Ae+=v*Ue,xe+=v*le,_e+=v*Le,v=T[10],se+=v*Ie,oe+=v*Ne,ee+=v*ue,ae+=v*Ce,ne+=v*Be,Z+=v*he,ve+=v*Oe,me+=v*Re,re+=v*ce,ge+=v*Pe,we+=v*Te,ie+=v*de,Ae+=v*Fe,xe+=v*Ue,_e+=v*le,je+=v*Le,v=T[11],oe+=v*Ie,ee+=v*Ne,ae+=v*ue,ne+=v*Ce,Z+=v*Be,ve+=v*he,me+=v*Oe,re+=v*Re,ge+=v*ce,we+=v*Pe,ie+=v*Te,Ae+=v*de,xe+=v*Fe,_e+=v*Ue,je+=v*le,$e+=v*Le,v=T[12],ee+=v*Ie,ae+=v*Ne,ne+=v*ue,Z+=v*Ce,ve+=v*Be,me+=v*he,re+=v*Oe,ge+=v*Re,we+=v*ce,ie+=v*Pe,Ae+=v*Te,xe+=v*de,_e+=v*Fe,je+=v*Ue,$e+=v*le,Me+=v*Le,v=T[13],ae+=v*Ie,ne+=v*Ne,Z+=v*ue,ve+=v*Ce,me+=v*Be,re+=v*he,ge+=v*Oe,we+=v*Re,ie+=v*ce,Ae+=v*Pe,xe+=v*Te,_e+=v*de,je+=v*Fe,$e+=v*Ue,Me+=v*le,Ve+=v*Le,v=T[14],ne+=v*Ie,Z+=v*Ne,ve+=v*ue,me+=v*Ce,re+=v*Be,ge+=v*he,we+=v*Oe,ie+=v*Re,Ae+=v*ce,xe+=v*Pe,_e+=v*Te,je+=v*de,$e+=v*Fe,Me+=v*Ue,Ve+=v*le,Ge+=v*Le,v=T[15],Z+=v*Ie,ve+=v*Ne,me+=v*ue,re+=v*Ce,ge+=v*Be,we+=v*he,ie+=v*Oe,Ae+=v*Re,xe+=v*ce,_e+=v*Pe,je+=v*Te,$e+=v*de,Me+=v*Fe,Ve+=v*Ue,Ge+=v*le,Se+=v*Le,$+=38*ve,J+=38*me,W+=38*re,X+=38*ge,be+=38*we,ye+=38*ie,fe+=38*Ae,Ee+=38*xe,pe+=38*_e,te+=38*je,se+=38*$e,oe+=38*Me,ee+=38*Ve,ae+=38*Ge,ne+=38*Se,R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),R=1,v=$+R+65535,R=Math.floor(v/65536),$=v-R*65536,v=J+R+65535,R=Math.floor(v/65536),J=v-R*65536,v=W+R+65535,R=Math.floor(v/65536),W=v-R*65536,v=X+R+65535,R=Math.floor(v/65536),X=v-R*65536,v=be+R+65535,R=Math.floor(v/65536),be=v-R*65536,v=ye+R+65535,R=Math.floor(v/65536),ye=v-R*65536,v=fe+R+65535,R=Math.floor(v/65536),fe=v-R*65536,v=Ee+R+65535,R=Math.floor(v/65536),Ee=v-R*65536,v=pe+R+65535,R=Math.floor(v/65536),pe=v-R*65536,v=te+R+65535,R=Math.floor(v/65536),te=v-R*65536,v=se+R+65535,R=Math.floor(v/65536),se=v-R*65536,v=oe+R+65535,R=Math.floor(v/65536),oe=v-R*65536,v=ee+R+65535,R=Math.floor(v/65536),ee=v-R*65536,v=ae+R+65535,R=Math.floor(v/65536),ae=v-R*65536,v=ne+R+65535,R=Math.floor(v/65536),ne=v-R*65536,v=Z+R+65535,R=Math.floor(v/65536),Z=v-R*65536,$+=R-1+37*(R-1),B[0]=$,B[1]=J,B[2]=W,B[3]=X,B[4]=be,B[5]=ye,B[6]=fe,B[7]=Ee,B[8]=pe,B[9]=te,B[10]=se,B[11]=oe,B[12]=ee,B[13]=ae,B[14]=ne,B[15]=Z}function P(B,T){m(B,T,T)}function Y(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=253;v>=0;v--)P(O,O),v!==2&&v!==4&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function Q(B,T){const O=f();let v;for(v=0;v<16;v++)O[v]=T[v];for(v=250;v>=0;v--)P(O,O),v!==1&&m(O,O,T);for(v=0;v<16;v++)B[v]=O[v]}function C(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f(),be=f(),ye=f();L(O,B[1],B[0]),L(ye,T[1],T[0]),m(O,O,ye),U(v,B[0],B[1]),U(ye,T[0],T[1]),m(v,v,ye),m(R,B[3],T[3]),m(R,R,A),m($,B[2],T[2]),U($,$,$),L(J,v,O),L(W,$,R),U(X,$,R),U(be,v,O),m(B[0],J,W),m(B[1],be,X),m(B[2],X,W),m(B[3],J,be)}function h(B,T,O){for(let v=0;v<4;v++)q(B[v],T[v],O)}function u(B,T){const O=f(),v=f(),R=f();Y(R,T[2]),m(O,T[0],R),m(v,T[1],R),H(B,v),B[31]^=j(O)<<7}function a(B,T,O){D(B[0],d),D(B[1],c),D(B[2],c),D(B[3],d);for(let v=255;v>=0;--v){const R=O[v/8|0]>>(v&7)&1;h(B,T,R),C(T,B),C(B,B),h(B,T,R)}}function o(B,T){const O=[f(),f(),f(),f()];D(O[0],x),D(O[1],E),D(O[2],c),m(O[3],x,E),a(B,O,T)}function l(B){if(B.length!==t.SEED_LENGTH)throw new Error(`ed25519: seed must be ${t.SEED_LENGTH} bytes`);const T=(0,r.hash)(B);T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(32),v=[f(),f(),f(),f()];o(v,T),u(O,v);const R=new Uint8Array(64);return R.set(B),R.set(O,32),{publicKey:O,secretKey:R}}t.generateKeyPairFromSeed=l;function w(B){const T=(0,e.randomBytes)(32,B),O=l(T);return(0,i.wipe)(T),O}t.generateKeyPair=w;function _(B){if(B.length!==t.SECRET_KEY_LENGTH)throw new Error(`ed25519: secret key must be ${t.SECRET_KEY_LENGTH} bytes`);return new Uint8Array(B.subarray(32))}t.extractPublicKeyFromSecretKey=_;const g=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function s(B,T){let O,v,R,$;for(v=63;v>=32;--v){for(O=0,R=v-32,$=v-12;R<$;++R)T[R]+=O-16*T[v]*g[R-(v-32)],O=Math.floor((T[R]+128)/256),T[R]-=O*256;T[R]+=O,T[v]=0}for(O=0,R=0;R<32;R++)T[R]+=O-(T[31]>>4)*g[R],O=T[R]>>8,T[R]&=255;for(R=0;R<32;R++)T[R]-=O*g[R];for(v=0;v<32;v++)T[v+1]+=T[v]>>8,B[v]=T[v]&255}function p(B){const T=new Float64Array(64);for(let O=0;O<64;O++)T[O]=B[O];for(let O=0;O<64;O++)B[O]=0;s(B,T)}function b(B,T){const O=new Float64Array(64),v=[f(),f(),f(),f()],R=(0,r.hash)(B.subarray(0,32));R[0]&=248,R[31]&=127,R[31]|=64;const $=new Uint8Array(64);$.set(R.subarray(32),32);const J=new r.SHA512;J.update($.subarray(32)),J.update(T);const W=J.digest();J.clean(),p(W),o(v,W),u($,v),J.reset(),J.update($.subarray(0,32)),J.update(B.subarray(32)),J.update(T);const X=J.digest();p(X);for(let be=0;be<32;be++)O[be]=W[be];for(let be=0;be<32;be++)for(let ye=0;ye<32;ye++)O[be+ye]+=X[be]*R[ye];return s($.subarray(32),O),$}t.sign=b;function S(B,T){const O=f(),v=f(),R=f(),$=f(),J=f(),W=f(),X=f();return D(B[2],c),F(B[1],T),P(R,B[1]),m($,R,y),L(R,R,B[2]),U($,B[2],$),P(J,$),P(W,J),m(X,W,J),m(O,X,R),m(O,O,$),Q(O,O),m(O,O,R),m(O,O,$),m(O,O,$),m(B[0],O,$),P(v,B[0]),m(v,v,$),z(v,R)&&m(B[0],B[0],N),P(v,B[0]),m(v,v,$),z(v,R)?-1:(j(B[0])===T[31]>>7&&L(B[0],d,B[0]),m(B[3],B[0],B[1]),0)}function G(B,T,O){const v=new Uint8Array(32),R=[f(),f(),f(),f()],$=[f(),f(),f(),f()];if(O.length!==t.SIGNATURE_LENGTH)throw new Error(`ed25519: signature must be ${t.SIGNATURE_LENGTH} bytes`);if(S($,B))return!1;const J=new r.SHA512;J.update(O.subarray(0,32)),J.update(B),J.update(T);const W=J.digest();return p(W),a(R,$,W),o($,O.subarray(32)),C(R,$),u(v,R),!V(O,v)}t.verify=G;function M(B){let T=[f(),f(),f(),f()];if(S(T,B))throw new Error("Ed25519: invalid public key");let O=f(),v=f(),R=T[1];U(O,c,R),L(v,c,R),Y(v,v),m(O,O,v);let $=new Uint8Array(32);return H($,O),$}t.convertPublicKeyToX25519=M;function k(B){const T=(0,r.hash)(B.subarray(0,32));T[0]&=248,T[31]&=127,T[31]|=64;const O=new Uint8Array(T.subarray(0,32));return(0,i.wipe)(T),O}t.convertSecretKeyToX25519=k}(A3);const os=".",ss="base64url",x3="utf8",_3="utf8";function us(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function M3(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?us(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function hs(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const cs=hs("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),Yf=hs("ascii","a",t=>{let e="a";for(let r=0;r{t=t.substring(1);const e=M3(t.length);for(let r=0;r{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,r=t.replace(e,'$1"$2n"$3');return JSON.parse(r,(i,f)=>typeof f=="string"&&f.match(/^\d+n$/)?BigInt(f.substring(0,f.length-1)):f)};function D3(t){if(typeof t!="string")throw new Error(`Cannot safe json parse value of type ${typeof t}`);try{return S3(t)}catch{return t}}function ls(t){return D3(E3(Jf(t,ss),x3))}function I3(t){return Jf(t,ss)}function N3(t){const e=t.split(os),r=ls(e[0]),i=ls(e[1]),f=I3(e[2]),n=Jf(e.slice(0,2).join(os),_3);return{header:r,payload:i,signature:f,data:n}}const Wf="base10",gt="base16",Qf="base64pad",C3="base64url",mi="utf8",Xf=0,gi=1,Fi=2,B3=0,bs=1,Ui=12,Zf=32;function O3(){const t=Of.generateKeyPair();return{privateKey:St(t.secretKey,gt),publicKey:St(t.publicKey,gt)}}function R3(){const t=Br.randomBytes(Zf);return St(t,gt)}function P3(t,e){const r=Of.sharedKey(Rt(t,gt),Rt(e,gt),!0),i=new n1(Oi.SHA256,r).expand(Zf);return St(i,gt)}function T3(t){const e=Oi.hash(Rt(t,gt));return St(e,gt)}function F3(t){const e=Oi.hash(Rt(t,mi));return St(e,gt)}function ea(t){return Rt(`${t}`,Wf)}function Fr(t){return Number(St(t,Wf))}function U3(t){const e=ea(typeof t.type<"u"?t.type:Xf);if(Fr(e)===gi&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const r=typeof t.senderPublicKey<"u"?Rt(t.senderPublicKey,gt):void 0,i=typeof t.iv<"u"?Rt(t.iv,gt):Br.randomBytes(Ui),f=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)).seal(i,Rt(t.message,mi));return ta({type:e,sealed:f,iv:i,senderPublicKey:r,encoding:t.encoding})}function L3(t,e){const r=ea(Fi),i=Br.randomBytes(Ui),f=Rt(t,mi);return ta({type:r,sealed:f,iv:i,encoding:e})}function q3(t){const e=new Ef.ChaCha20Poly1305(Rt(t.symKey,gt)),{sealed:r,iv:i}=In({encoded:t.encoded,encoding:t?.encoding}),f=e.open(i,r);if(f===null)throw new Error("Failed to decrypt");return St(f,mi)}function z3(t,e){const{sealed:r}=In({encoded:t,encoding:e});return St(r,mi)}function ta(t){const{encoding:e=Qf}=t;if(Fr(t.type)===Fi)return St(Rf([t.type,t.sealed]),e);if(Fr(t.type)===gi){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return St(Rf([t.type,t.senderPublicKey,t.iv,t.sealed]),e)}return St(Rf([t.type,t.iv,t.sealed]),e)}function In(t){const{encoded:e,encoding:r=Qf}=t,i=Rt(e,r),f=i.slice(B3,bs),n=bs;if(Fr(f)===gi){const A=n+Zf,x=A+Ui,E=i.slice(n,A),N=i.slice(A,x),D=i.slice(x);return{type:f,sealed:D,iv:N,senderPublicKey:E}}if(Fr(f)===Fi){const A=i.slice(n),x=Br.randomBytes(Ui);return{type:f,sealed:A,iv:x}}const d=n+Ui,c=i.slice(n,d),y=i.slice(d);return{type:f,sealed:y,iv:c}}function k3(t,e){const r=In({encoded:t,encoding:e?.encoding});return vs({type:Fr(r.type),senderPublicKey:typeof r.senderPublicKey<"u"?St(r.senderPublicKey,gt):void 0,receiverPublicKey:e?.receiverPublicKey})}function vs(t){const e=t?.type||Xf;if(e===gi){if(typeof t?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof t?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function H3(t){return t.type===gi&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function K3(t){return t.type===Fi}function ps(t){return new $o.ec("p256").keyFromPublic({x:Buffer.from(t.x,"base64").toString("hex"),y:Buffer.from(t.y,"base64").toString("hex")},"hex")}function j3(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");const r=e.length%4;return r>0&&(e+="=".repeat(4-r)),e}function $3(t){return Buffer.from(j3(t),"base64")}function V3(t,e){const[r,i,f]=t.split("."),n=$3(f);if(n.length!==64)throw new Error("Invalid signature length");const d=n.slice(0,32).toString("hex"),c=n.slice(32,64).toString("hex"),y=`${r}.${i}`,A=new Oi.SHA256().update(Buffer.from(y)).digest(),x=ps(e),E=Buffer.from(A).toString("hex");if(!x.verify(E,{r:d,s:c}))throw new Error("Invalid signature");return N3(t).payload}const G3={waku:{publish:"waku_publish",batchPublish:"waku_batchPublish",subscribe:"waku_subscribe",batchSubscribe:"waku_batchSubscribe",subscription:"waku_subscription",unsubscribe:"waku_unsubscribe",batchUnsubscribe:"waku_batchUnsubscribe",batchFetchMessages:"waku_batchFetchMessages"},irn:{publish:"irn_publish",batchPublish:"irn_batchPublish",subscribe:"irn_subscribe",batchSubscribe:"irn_batchSubscribe",subscription:"irn_subscription",unsubscribe:"irn_unsubscribe",batchUnsubscribe:"irn_batchUnsubscribe",batchFetchMessages:"irn_batchFetchMessages"},iridium:{publish:"iridium_publish",batchPublish:"iridium_batchPublish",subscribe:"iridium_subscribe",batchSubscribe:"iridium_batchSubscribe",subscription:"iridium_subscription",unsubscribe:"iridium_unsubscribe",batchUnsubscribe:"iridium_batchUnsubscribe",batchFetchMessages:"iridium_batchFetchMessages"}},ms="irn";function Y3(t){return t?.relay||{protocol:ms}}function J3(t){const e=G3[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}var W3=Object.defineProperty,Q3=Object.defineProperties,X3=Object.getOwnPropertyDescriptors,gs=Object.getOwnPropertySymbols,Z3=Object.prototype.hasOwnProperty,eb=Object.prototype.propertyIsEnumerable,ys=(t,e,r)=>e in t?W3(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,ws=(t,e)=>{for(var r in e||(e={}))Z3.call(e,r)&&ys(t,r,e[r]);if(gs)for(var r of gs(e))eb.call(e,r)&&ys(t,r,e[r]);return t},tb=(t,e)=>Q3(t,X3(e));function As(t,e="-"){const r={},i="relay"+e;return Object.keys(t).forEach(f=>{if(f.startsWith(i)){const n=f.replace(i,""),d=t[f];r[n]=d}}),r}function rb(t){t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),r=t.indexOf("?")!==-1?t.indexOf("?"):void 0,i=t.substring(0,e),f=t.substring(e+1,r).split("@"),n=typeof r<"u"?t.substring(r):"",d=xi.parse(n),c=typeof d.methods=="string"?d.methods.split(","):void 0;return{protocol:i,topic:xs(f[0]),version:parseInt(f[1],10),symKey:d.symKey,relay:As(d),methods:c,expiryTimestamp:d.expiryTimestamp?parseInt(d.expiryTimestamp,10):void 0}}function xs(t){return t.startsWith("//")?t.substring(2):t}function _s(t,e="-"){const r="relay",i={};return Object.keys(t).forEach(f=>{const n=r+e+f;t[f]&&(i[n]=t[f])}),i}function ib(t){return`${t.protocol}:${t.topic}@${t.version}?`+xi.stringify(ws(tb(ws({symKey:t.symKey},_s(t.relay)),{expiryTimestamp:t.expiryTimestamp}),t.methods?{methods:t.methods.join(",")}:{}))}function nb(t,e,r){return`${t}?wc_ev=${r}&topic=${e}`}var fb=Object.defineProperty,ab=Object.defineProperties,ob=Object.getOwnPropertyDescriptors,Ms=Object.getOwnPropertySymbols,sb=Object.prototype.hasOwnProperty,ub=Object.prototype.propertyIsEnumerable,Es=(t,e,r)=>e in t?fb(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,hb=(t,e)=>{for(var r in e||(e={}))sb.call(e,r)&&Es(t,r,e[r]);if(Ms)for(var r of Ms(e))ub.call(e,r)&&Es(t,r,e[r]);return t},cb=(t,e)=>ab(t,ob(e));function Ur(t){const e=[];return t.forEach(r=>{const[i,f]=r.split(":");e.push(`${i}:${f}`)}),e}function Ss(t){const e=[];return Object.values(t).forEach(r=>{e.push(...Ur(r.accounts))}),e}function Ds(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.methods)}),r}function Is(t,e){const r=[];return Object.values(t).forEach(i=>{Ur(i.accounts).includes(e)&&r.push(...i.events)}),r}function db(t,e){const r=qs(t,e);if(r)throw new Error(r.message);const i={};for(const[f,n]of Object.entries(t))i[f]={methods:n.methods,events:n.events,chains:n.accounts.map(d=>`${d.split(":")[0]}:${d.split(":")[1]}`)};return i}function lb(t){const{proposal:{requiredNamespaces:e,optionalNamespaces:r={}},supportedNamespaces:i}=t,f=ia(e),n=ia(r),d={};Object.keys(i).forEach(A=>{const x=i[A].chains,E=i[A].methods,N=i[A].events,D=i[A].accounts;x.forEach(I=>{if(!D.some(q=>q.includes(I)))throw new Error(`No accounts provided for chain ${I} in namespace ${A}`)}),d[A]={chains:x,methods:E,events:N,accounts:D}});const c=ks(e,d,"approve()");if(c)throw new Error(c.message);const y={};return!Object.keys(e).length&&!Object.keys(r).length?d:(Object.keys(f).forEach(A=>{const x=i[A].chains.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.chains)==null?void 0:H.includes(I)}),E=i[A].methods.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.methods)==null?void 0:H.includes(I)}),N=i[A].events.filter(I=>{var q,H;return(H=(q=f[A])==null?void 0:q.events)==null?void 0:H.includes(I)}),D=x.map(I=>i[A].accounts.filter(q=>q.includes(`${I}:`))).flat();y[A]={chains:x,methods:E,events:N,accounts:D}}),Object.keys(n).forEach(A=>{var x,E,N,D,I,q;if(!i[A])return;const H=(E=(x=n[A])==null?void 0:x.chains)==null?void 0:E.filter(F=>i[A].chains.includes(F)),V=i[A].methods.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.methods)==null?void 0:L.includes(F)}),z=i[A].events.filter(F=>{var U,L;return(L=(U=n[A])==null?void 0:U.events)==null?void 0:L.includes(F)}),j=H?.map(F=>i[A].accounts.filter(U=>U.includes(`${F}:`))).flat();y[A]={chains:fr((N=y[A])==null?void 0:N.chains,H),methods:fr((D=y[A])==null?void 0:D.methods,V),events:fr((I=y[A])==null?void 0:I.events,z),accounts:fr((q=y[A])==null?void 0:q.accounts,j)}}),y)}function ra(t){return t.includes(":")}function Ns(t){return ra(t)?t.split(":")[0]:t}function ia(t){var e,r,i;const f={};if(!Nn(t))return f;for(const[n,d]of Object.entries(t)){const c=ra(n)?[n]:d.chains,y=d.methods||[],A=d.events||[],x=Ns(n);f[x]=cb(hb({},f[x]),{chains:fr(c,(e=f[x])==null?void 0:e.chains),methods:fr(y,(r=f[x])==null?void 0:r.methods),events:fr(A,(i=f[x])==null?void 0:i.events)})}return f}function Cs(t){const e={};return t?.forEach(r=>{const[i,f]=r.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[]}),e[i].accounts.push(r),e[i].chains.push(`${i}:${f}`)}),e}function bb(t,e){e=e.map(i=>i.replace("did:pkh:",""));const r=Cs(e);for(const[i,f]of Object.entries(r))f.methods?f.methods=fr(f.methods,t):f.methods=t,f.events=["chainChanged","accountsChanged"];return r}const Bs={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},Os={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function cr(t,e){const{message:r,code:i}=Os[t];return{message:e?`${r} ${e}`:r,code:i}}function Lr(t,e){const{message:r,code:i}=Bs[t];return{message:e?`${r} ${e}`:r,code:i}}function Li(t,e){return Array.isArray(t)?typeof e<"u"&&t.length?t.every(e):!0:!1}function Nn(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function xr(t){return typeof t>"u"}function It(t,e){return e&&xr(t)?!0:typeof t=="string"&&!!t.trim().length}function Cn(t,e){return e&&xr(t)?!0:typeof t=="number"&&!isNaN(t)}function vb(t,e){const{requiredNamespaces:r}=e,i=Object.keys(t.namespaces),f=Object.keys(r);let n=!0;return lr(f,i)?(i.forEach(d=>{const{accounts:c,methods:y,events:A}=t.namespaces[d],x=Ur(c),E=r[d];(!lr(zi(d,E),x)||!lr(E.methods,y)||!lr(E.events,A))&&(n=!1)}),n):!1}function qi(t){return It(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function Rs(t){if(It(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const r=e[0]+":"+e[1];return!!e[2]&&qi(r)}}return!1}function pb(t){if(It(t,!1))try{return typeof new URL(t)<"u"}catch{return!1}return!1}function mb(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function gb(t){return t?.topic}function yb(t,e){let r=null;return It(t?.publicKey,!1)||(r=cr("MISSING_OR_INVALID",`${e} controller public key should be a string`)),r}function na(t){let e=!0;return Li(t)?t.length&&(e=t.every(r=>It(r,!1))):e=!1,e}function Ps(t,e,r){let i=null;return Li(e)&&e.length?e.forEach(f=>{i||qi(f)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chain ${f} should be a string and conform to "namespace:chainId" format`))}):qi(t)||(i=Lr("UNSUPPORTED_CHAINS",`${r}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),i}function Ts(t,e,r){let i=null;return Object.entries(t).forEach(([f,n])=>{if(i)return;const d=Ps(f,zi(f,n),`${e} ${r}`);d&&(i=d)}),i}function Fs(t,e){let r=null;return Li(t)?t.forEach(i=>{r||Rs(i)||(r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, account ${i} should be a string and conform to "namespace:chainId:address" format`))}):r=Lr("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),r}function Us(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Fs(i?.accounts,`${e} namespace`);f&&(r=f)}),r}function Ls(t,e){let r=null;return na(t?.methods)?na(t?.events)||(r=Lr("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):r=Lr("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),r}function fa(t,e){let r=null;return Object.values(t).forEach(i=>{if(r)return;const f=Ls(i,`${e}, namespace`);f&&(r=f)}),r}function wb(t,e,r){let i=null;if(t&&Nn(t)){const f=fa(t,e);f&&(i=f);const n=Ts(t,e,r);n&&(i=n)}else i=cr("MISSING_OR_INVALID",`${e}, ${r} should be an object with data`);return i}function qs(t,e){let r=null;if(t&&Nn(t)){const i=fa(t,e);i&&(r=i);const f=Us(t,e);f&&(r=f)}else r=cr("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return r}function zs(t){return It(t.protocol,!0)}function Ab(t,e){let r=!1;return e&&!t?r=!0:t&&Li(t)&&t.length&&t.forEach(i=>{r=zs(i)}),r}function xb(t){return typeof t=="number"}function _b(t){return typeof t<"u"&&typeof t!==null}function Mb(t){return!(!t||typeof t!="object"||!t.code||!Cn(t.code,!1)||!t.message||!It(t.message,!1))}function Eb(t){return!(xr(t)||!It(t.method,!1))}function Sb(t){return!(xr(t)||xr(t.result)&&xr(t.error)||!Cn(t.id,!1)||!It(t.jsonrpc,!1))}function Db(t){return!(xr(t)||!It(t.name,!1))}function Ib(t,e){return!(!qi(e)||!Ss(t).includes(e))}function Nb(t,e,r){return It(r,!1)?Ds(t,e).includes(r):!1}function Cb(t,e,r){return It(r,!1)?Is(t,e).includes(r):!1}function ks(t,e,r){let i=null;const f=Bb(t),n=Ob(e),d=Object.keys(f),c=Object.keys(n),y=Hs(Object.keys(t)),A=Hs(Object.keys(e)),x=y.filter(E=>!A.includes(E));return x.length&&(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces keys don't satisfy requiredNamespaces. -+ Required: ${x.toString()} -+ Received: ${Object.keys(e).toString()}`)),lr(d,c)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces chains don't satisfy required namespaces. -+ Required: ${d.toString()} -+ Approved: ${c.toString()}`)),Object.keys(e).forEach(E=>{if(!E.includes(":")||i)return;const N=Ur(e[E].accounts);N.includes(E)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces accounts don't satisfy namespace accounts for ${E} -+ Required: ${E} -+ Approved: ${N.toString()}`))}),d.forEach(E=>{i||(lr(f[E].methods,n[E].methods)?lr(f[E].events,n[E].events)||(i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces events don't satisfy namespace events for ${E}`)):i=cr("NON_CONFORMING_NAMESPACES",`${r} namespaces methods don't satisfy namespace methods for ${E}`))}),i}function Bb(t){const e={};return Object.keys(t).forEach(r=>{var i;r.includes(":")?e[r]=t[r]:(i=t[r].chains)==null||i.forEach(f=>{e[f]={methods:t[r].methods,events:t[r].events}})}),e}function Hs(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Ob(t){const e={};return Object.keys(t).forEach(r=>{if(r.includes(":"))e[r]=t[r];else{const i=Ur(t[r].accounts);i?.forEach(f=>{e[f]={accounts:t[r].accounts.filter(n=>n.includes(`${f}:`)),methods:t[r].methods,events:t[r].events}})}}),e}function Rb(t,e){return Cn(t,!1)&&t<=e.max&&t>=e.min}function Pb(){const t=Dr();return new Promise(e=>{switch(t){case vt.browser:e(Ks());break;case vt.reactNative:e(js());break;case vt.node:e($s());break;default:e(!0)}})}function Ks(){return _i()&&navigator?.onLine}async function js(){if(Zr()&&typeof global<"u"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t?.isConnected}return!0}function $s(){return!0}function Tb(t){switch(Dr()){case vt.browser:Vs(t);break;case vt.reactNative:Gs(t);break;case vt.node:break}}function Vs(t){!Zr()&&_i()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function Gs(t){Zr()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}const aa={};class Fb{static get(e){return aa[e]}static set(e,r){aa[e]=r}static delete(e){delete aa[e]}}K.BASE10=Wf,K.BASE16=gt,K.BASE64=Qf,K.BASE64URL=C3,K.COLON=ah,K.DEFAULT_DEPTH=$n,K.EMPTY_SPACE=Ki,K.ENV_MAP=vt,K.INTERNAL_ERRORS=Os,K.MemoryStore=Fb,K.ONE_THOUSAND=oh,K.REACT_NATIVE_PRODUCT=qa,K.RELAYER_DEFAULT_PROTOCOL=ms,K.SDK_ERRORS=Bs,K.SDK_TYPE=ka,K.SLASH=za,K.TYPE_0=Xf,K.TYPE_1=gi,K.TYPE_2=Fi,K.UTF8=mi,K.addResourceToRecap=ho,K.appendToQueryString=Ha,K.assertType=lh,K.assignAbilityToActions=xf,K.base64Decode=so,K.base64Encode=oo,K.buildApprovedNamespaces=lb,K.buildAuthObject=ml,K.buildNamespacesFromAuth=bb,K.buildRecapStatement=lo,K.calcExpiry=Eh,K.capitalize=yh,K.capitalizeWord=Ya,K.createDelayedPromise=wh,K.createEncodedRecap=Al,K.createExpiringPromise=Ah,K.createRecap=uo,K.decodeRecap=mr,K.decodeTypeByte=Fr,K.decodeTypeTwoEnvelope=z3,K.decrypt=q3,K.deriveSymKey=P3,K.deserialize=In,K.encodeRecap=an,K.encodeTypeByte=ea,K.encodeTypeTwoEnvelope=L3,K.encrypt=U3,K.engineEvent=Dh,K.enumify=gh,K.formatAccountId=ca,K.formatAccountWithChain=Ys,K.formatChainId=ha,K.formatExpirerTarget=Gn,K.formatIdTarget=_h,K.formatMessage=io,K.formatMessageContext=bh,K.formatRelayParams=_s,K.formatRelayRpcUrl=ch,K.formatStatementFromRecap=Mf,K.formatTopicTarget=xh,K.formatUA=$a,K.formatUri=ib,K.generateKeyPair=O3,K.generateRandomBytes32=R3,K.getAccountsChains=Ur,K.getAccountsFromNamespaces=Ws,K.getAddressFromAccount=da,K.getAddressesFromAccounts=Js,K.getAppMetadata=uh,K.getBrowserOnlineStatus=Ks,K.getBundleId=sh,K.getChainFromAccount=la,K.getChainsFromAccounts=ba,K.getChainsFromNamespace=zi,K.getChainsFromNamespaces=Qs,K.getChainsFromRecap=Ml,K.getChainsFromRequiredNamespaces=Xs,K.getCommonValuesInArrays=Yn,K.getCryptoKeyFromKeyData=ps,K.getDecodedRecapFromResources=no,K.getDeepLink=Nh,K.getDidAddress=Af,K.getDidAddressSegments=fn,K.getDidChainId=wf,K.getEnvironment=Dr,K.getHttpUrl=dh,K.getInternalError=cr,K.getJavascriptID=ja,K.getJavascriptOS=Ka,K.getLastItems=Ga,K.getLinkModeURL=nb,K.getMethodsFromRecap=_l,K.getNamespacedDidChainId=vl,K.getNamespacesChains=Ss,K.getNamespacesEventsForChainId=Is,K.getNamespacesFromAccounts=Cs,K.getNamespacesMethodsForChainId=Ds,K.getNodeOnlineStatus=$s,K.getReCapActions=ao,K.getReactNativeOnlineStatus=js,K.getRecapAbilitiesFromResource=wl,K.getRecapFromResources=on,K.getRecapResource=fo,K.getRelayClientMetadata=hh,K.getRelayProtocolApi=J3,K.getRelayProtocolName=Y3,K.getRequiredNamespacesFromNamespaces=db,K.getSdkError=Lr,K.getSearchParamFromURL=Ch,K.getUniqueValues=On,K.handleDeeplinkRedirect=Ih,K.hasOverlap=lr,K.hashKey=T3,K.hashMessage=F3,K.isBrowser=_i,K.isCaipNamespace=ra,K.isConformingNamespaces=ks,K.isExpired=Sh,K.isNode=Vn,K.isOnline=Pb,K.isProposalStruct=mb,K.isReactNative=Zr,K.isRecap=_f,K.isSessionCompatible=vb,K.isSessionStruct=gb,K.isTypeOneEnvelope=H3,K.isTypeTwoEnvelope=K3,K.isUndefined=xr,K.isValidAccountId=Rs,K.isValidAccounts=Fs,K.isValidActions=Ls,K.isValidArray=Li,K.isValidChainId=qi,K.isValidChains=Ps,K.isValidController=yb,K.isValidEip1271Signature=Z0,K.isValidEip191Signature=X0,K.isValidErrorReason=Mb,K.isValidEvent=Db,K.isValidId=xb,K.isValidNamespaceAccounts=Us,K.isValidNamespaceActions=fa,K.isValidNamespaceChains=Ts,K.isValidNamespaceMethodsOrEvents=na,K.isValidNamespaces=qs,K.isValidNamespacesChainId=Ib,K.isValidNamespacesEvent=Cb,K.isValidNamespacesRequest=Nb,K.isValidNumber=Cn,K.isValidObject=Nn,K.isValidParams=_b,K.isValidRecap=tr,K.isValidRelay=zs,K.isValidRelays=Ab,K.isValidRequest=Eb,K.isValidRequestExpiry=Rb,K.isValidRequiredNamespaces=wb,K.isValidResponse=Sb,K.isValidString=It,K.isValidUrl=pb,K.mapEntries=mh,K.mapToObj=vh,K.mergeArrays=fr,K.mergeEncodedRecaps=xl,K.mergeRecaps=co,K.normalizeNamespaces=ia,K.objToMap=ph,K.parseAccountId=Bn,K.parseChainId=ua,K.parseContextNames=Va,K.parseExpirerTarget=Mh,K.parseNamespaceKey=Ns,K.parseRelayParams=As,K.parseTopic=xs,K.parseUri=rb,K.populateAuthPayload=gl,K.recapHasResource=yl,K.serialize=ta,K.subscribeToBrowserNetworkChange=Vs,K.subscribeToNetworkChange=Tb,K.subscribeToReactNativeNetworkChange=Gs,K.uuidv4=Bh,K.validateDecoding=k3,K.validateEncoding=vs,K.validateSignedCacao=pl,K.verifyP256Jwt=V3,K.verifySignature=Q0,Object.defineProperty(K,"__esModule",{value:!0})}); -+//# sourceMappingURL=index.umd.js.map -diff --git a/node_modules/@walletconnect/utils/dist/index.umd.js.map b/node_modules/@walletconnect/utils/dist/index.umd.js.map -new file mode 100644 -index 0000000000000000000000000000000000000000..d47c049165a021ba5d43e927092840659f16aee6 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/index.umd.js.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.umd.js","sources":["../src/caip.ts","../../../node_modules/detect-browser/es/index.js","../../../node_modules/@walletconnect/time/node_modules/tslib/tslib.es6.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../../node_modules/@walletconnect/time/dist/cjs/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../../node_modules/@walletconnect/time/dist/cjs/types/index.js","../../../node_modules/@walletconnect/time/dist/cjs/index.js","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../../node_modules/strict-uri-encode/index.js","../../../node_modules/decode-uri-component/index.js","../../../node_modules/split-on-first/index.js","../../../node_modules/filter-obj/index.js","../../../node_modules/query-string/index.js","../src/misc.ts","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/logger/lib.esm/_version.js","../../../node_modules/@ethersproject/logger/lib.esm/index.js","../../../node_modules/@ethersproject/bytes/lib.esm/_version.js","../../../node_modules/@ethersproject/bytes/lib.esm/index.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/bn.js/lib/bn.js","../../../node_modules/@ethersproject/bignumber/lib.esm/_version.js","../../../node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","../../../node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/strings/lib.esm/idna.js","../../../node_modules/@ethersproject/hash/lib.esm/_version.js","../../../node_modules/@ethersproject/base64/lib.esm/base64.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/decoder.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/include.js","../../../node_modules/@ethersproject/hash/lib.esm/ens-normalize/lib.js","../../../node_modules/@ethersproject/hash/lib.esm/namehash.js","../../../node_modules/@ethersproject/hash/lib.esm/message.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/@ethersproject/hash/lib.esm/typed-data.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js","../src/signatures.ts","../src/cacao.ts","../../../node_modules/@stablelib/int/lib/int.js","../../../node_modules/@stablelib/binary/lib/binary.js","../../../node_modules/@stablelib/wipe/lib/wipe.js","../../../node_modules/@stablelib/chacha/lib/chacha.js","../../../node_modules/@stablelib/constant-time/lib/constant-time.js","../../../node_modules/@stablelib/poly1305/lib/poly1305.js","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js","../../../node_modules/@stablelib/hash/lib/hash.js","../../../node_modules/@stablelib/hmac/lib/hmac.js","../../../node_modules/@stablelib/hkdf/lib/hkdf.js","../../../node_modules/@stablelib/random/lib/source/browser.js","../../../node_modules/@stablelib/random/lib/source/node.js","../../../node_modules/@stablelib/random/lib/source/system.js","../../../node_modules/@stablelib/random/lib/random.js","../../../node_modules/@stablelib/sha256/lib/sha256.js","../../../node_modules/@stablelib/x25519/lib/x25519.js","../node_modules/uint8arrays/esm/src/alloc.js","../node_modules/uint8arrays/esm/src/concat.js","../../../node_modules/multiformats/esm/vendor/base-x.js","../../../node_modules/multiformats/esm/src/bytes.js","../../../node_modules/multiformats/esm/src/bases/base.js","../../../node_modules/multiformats/esm/src/bases/identity.js","../../../node_modules/multiformats/esm/src/bases/base2.js","../../../node_modules/multiformats/esm/src/bases/base8.js","../../../node_modules/multiformats/esm/src/bases/base10.js","../../../node_modules/multiformats/esm/src/bases/base16.js","../../../node_modules/multiformats/esm/src/bases/base32.js","../../../node_modules/multiformats/esm/src/bases/base36.js","../../../node_modules/multiformats/esm/src/bases/base58.js","../../../node_modules/multiformats/esm/src/bases/base64.js","../../../node_modules/multiformats/esm/src/bases/base256emoji.js","../../../node_modules/multiformats/esm/vendor/varint.js","../../../node_modules/multiformats/esm/src/varint.js","../../../node_modules/multiformats/esm/src/hashes/digest.js","../../../node_modules/multiformats/esm/src/hashes/hasher.js","../../../node_modules/multiformats/esm/src/hashes/sha2-browser.js","../../../node_modules/multiformats/esm/src/hashes/identity.js","../../../node_modules/multiformats/esm/src/codecs/json.js","../../../node_modules/multiformats/esm/src/basics.js","../node_modules/uint8arrays/esm/src/util/bases.js","../node_modules/uint8arrays/esm/src/from-string.js","../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/brorand/index.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/mont.js","../../../node_modules/elliptic/lib/elliptic/curve/edwards.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic/eddsa/key.js","../../../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../../../node_modules/elliptic/lib/elliptic/eddsa/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../../node_modules/@stablelib/sha512/lib/sha512.js","../../../node_modules/@stablelib/ed25519/lib/ed25519.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/constants.js","../../../node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../../node_modules/uint8arrays/esm/src/alloc.js","../../../node_modules/uint8arrays/esm/src/util/bases.js","../../../node_modules/uint8arrays/esm/src/to-string.js","../../../node_modules/uint8arrays/esm/src/from-string.js","../../../node_modules/@walletconnect/safe-json/dist/esm/index.js","../../../node_modules/@walletconnect/relay-auth/dist/esm/utils.js","../src/crypto.ts","../../../node_modules/@walletconnect/relay-api/dist/index.es.js","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/errors.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts"],"sourcesContent":["import { SessionTypes, ProposalTypes } from \"@walletconnect/types\";\n\ninterface ChainIdParams {\n namespace: string;\n reference: string;\n}\n\ninterface AccountIdParams extends ChainIdParams {\n address: string;\n}\n\nconst CAIP_DELIMITER = \":\";\n\nexport function parseChainId(chain: string): ChainIdParams {\n const [namespace, reference] = chain.split(CAIP_DELIMITER);\n return { namespace, reference };\n}\n\nexport function formatChainId(params: ChainIdParams): string {\n const { namespace, reference } = params;\n return [namespace, reference].join(CAIP_DELIMITER);\n}\n\nexport function parseAccountId(account: string): AccountIdParams {\n const [namespace, reference, address] = account.split(CAIP_DELIMITER);\n return { namespace, reference, address };\n}\n\nexport function formatAccountId(params: AccountIdParams): string {\n const { namespace, reference, address } = params;\n return [namespace, reference, address].join(CAIP_DELIMITER);\n}\n\nexport function getUniqueValues(array: string[], parser: (str: string) => string): string[] {\n const unique: string[] = [];\n array.forEach((str) => {\n const value = parser(str);\n if (!unique.includes(value)) unique.push(value);\n });\n return unique;\n}\n\nexport function getAddressFromAccount(account: string) {\n const { address } = parseAccountId(account);\n return address;\n}\n\nexport function getChainFromAccount(account: string) {\n const { namespace, reference } = parseAccountId(account);\n const chain = formatChainId({ namespace, reference });\n return chain;\n}\n\nexport function formatAccountWithChain(address: string, chain: string) {\n const { namespace, reference } = parseChainId(chain);\n const account = formatAccountId({ namespace, reference, address });\n return account;\n}\n\nexport function getAddressesFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getAddressFromAccount);\n}\n\nexport function getChainsFromAccounts(accounts: string[]) {\n return getUniqueValues(accounts, getChainFromAccount);\n}\n\nexport function getAccountsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const accounts: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n accounts.push(...ns.accounts);\n });\n return accounts;\n}\n\nexport function getChainsFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(namespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = namespaces[key];\n chains.push(...getChainsFromAccounts(ns.accounts));\n });\n return chains;\n}\n\nexport function getChainsFromRequiredNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n keys: string[] = [],\n): string[] {\n const chains: string[] = [];\n Object.keys(requiredNamespaces).forEach((key) => {\n if (keys.length && !keys.includes(key)) return;\n const ns = requiredNamespaces[key];\n chains.push(...getChainsFromNamespace(key, ns));\n });\n return chains;\n}\n\nexport function getChainsFromNamespace(\n namespace: string,\n namespaceProps: ProposalTypes.BaseRequiredNamespace,\n) {\n // check if chainId is provided in the key as `eip155:1` or in the namespace as chains[]\n return namespace.includes(\":\") ? [namespace] : namespaceProps.chains || [];\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== \"undefined\" && typeof window[name] !== \"undefined\") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow(\"document\");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow(\"document\");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow(\"navigator\");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow(\"navigator\");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow(\"location\");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow(\"location\");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow(\"crypto\");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow(\"crypto\");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow(\"localStorage\");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow(\"localStorage\");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = require(\"@walletconnect/window-getters\");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName(\"link\");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute(\"rel\");\n if (rel) {\n if (rel.toLowerCase().indexOf(\"icon\") > -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","import { detect } from \"detect-browser\";\nimport { FIVE_MINUTES, fromMiliseconds, toMiliseconds } from \"@walletconnect/time\";\nimport {\n SignClientTypes,\n RelayerClientMetadata,\n EngineTypes,\n RelayerTypes,\n} from \"@walletconnect/types\";\nimport { getDocument, getLocation, getNavigator } from \"@walletconnect/window-getters\";\nimport { getWindowMetadata } from \"@walletconnect/window-metadata\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-utils\";\nimport { IKeyValueStorage } from \"@walletconnect/keyvaluestorage\";\nimport * as qs from \"query-string\";\n\n// -- constants -----------------------------------------//\nexport const REACT_NATIVE_PRODUCT = \"ReactNative\";\n\nexport const ENV_MAP = {\n reactNative: \"react-native\",\n node: \"node\",\n browser: \"browser\",\n unknown: \"unknown\",\n};\n\nexport const EMPTY_SPACE = \" \";\n\nexport const COLON = \":\";\n\nexport const SLASH = \"/\";\n\nexport const DEFAULT_DEPTH = 2;\n\nexport const ONE_THOUSAND = 1000;\n\nexport const SDK_TYPE = \"js\";\n\n// -- env -----------------------------------------------//\n\nexport function isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\"\n );\n}\n\nexport function isReactNative(): boolean {\n return !getDocument() && !!getNavigator() && navigator.product === REACT_NATIVE_PRODUCT;\n}\n\nexport function isBrowser(): boolean {\n return !isNode() && !!getNavigator() && !!getDocument();\n}\n\nexport function getEnvironment(): string {\n if (isReactNative()) return ENV_MAP.reactNative;\n if (isNode()) return ENV_MAP.node;\n if (isBrowser()) return ENV_MAP.browser;\n return ENV_MAP.unknown;\n}\n\nexport function getBundleId(): string | undefined {\n try {\n if (\n isReactNative() &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Application !== \"undefined\"\n ) {\n return (global as any).Application?.applicationId;\n }\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n// -- query -----------------------------------------------//\n\nexport function appendToQueryString(queryString: string, newQueryParams: any): string {\n let queryParams = qs.parse(queryString);\n\n queryParams = { ...queryParams, ...newQueryParams };\n\n queryString = qs.stringify(queryParams);\n\n return queryString;\n}\n\n// -- metadata ----------------------------------------------//\n\nexport function getAppMetadata(): SignClientTypes.Metadata {\n return (\n getWindowMetadata() || {\n name: \"\",\n description: \"\",\n url: \"\",\n icons: [\"\"],\n }\n );\n}\n\nexport function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata {\n const env = getEnvironment();\n\n const metadata: RelayerClientMetadata = { protocol, version, env };\n if (env === \"browser\") {\n metadata.host = getLocation()?.host || \"unknown\";\n }\n return metadata;\n}\n\n// -- rpcUrl ----------------------------------------------//\n\nexport function getJavascriptOS() {\n const env = getEnvironment();\n // global.Platform is set by react-native-compat\n if (\n env === ENV_MAP.reactNative &&\n typeof global !== \"undefined\" &&\n typeof (global as any)?.Platform !== \"undefined\"\n ) {\n const { OS, Version } = (global as any).Platform;\n return [OS, Version].join(\"-\");\n }\n\n const info = detect();\n if (info === null) return \"unknown\";\n const os = info.os ? info.os.replace(\" \", \"\").toLowerCase() : \"unknown\";\n if (info.type === \"browser\") {\n return [os, info.name, info.version].join(\"-\");\n }\n return [os, info.version].join(\"-\");\n}\n\nexport function getJavascriptID() {\n const env = getEnvironment();\n return env === ENV_MAP.browser ? [env, getLocation()?.host || \"unknown\"].join(\":\") : env;\n}\n\nexport function formatUA(protocol: string, version: number, sdkVersion: string) {\n const os = getJavascriptOS();\n const id = getJavascriptID();\n return [[protocol, version].join(\"-\"), [SDK_TYPE, sdkVersion].join(\"-\"), os, id].join(\"/\");\n}\nconsole;\n\nexport function formatRelayRpcUrl({\n protocol,\n version,\n relayUrl,\n sdkVersion,\n auth,\n projectId,\n useOnCloseEvent,\n bundleId,\n}: RelayerTypes.RpcUrlParams) {\n const splitUrl = relayUrl.split(\"?\");\n const ua = formatUA(protocol, version, sdkVersion);\n const params = {\n auth,\n ua,\n projectId,\n useOnCloseEvent: useOnCloseEvent || undefined,\n origin: bundleId || undefined,\n };\n const queryString = appendToQueryString(splitUrl[1] || \"\", params);\n return splitUrl[0] + \"?\" + queryString;\n}\n\nexport function getHttpUrl(url: string) {\n // regex from https://stackoverflow.com/questions/3883871/regexp-to-grab-protocol-from-url\n const matches = url.match(/^[^:]+(?=:\\/\\/)/gi) || [];\n let protocol = matches[0];\n const domain = typeof protocol !== \"undefined\" ? url.split(\"://\")[1] : url;\n protocol = protocol === \"wss\" ? \"https\" : \"http\";\n return [protocol, domain].join(\"://\");\n}\n\n// -- assert ------------------------------------------------- //\n\nexport function assertType(obj: any, key: string, type: string) {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid \"${key}\" param`);\n }\n}\n\n// -- context ------------------------------------------------- //\n\nexport function parseContextNames(context: string, depth = DEFAULT_DEPTH) {\n return getLastItems(context.split(SLASH), depth);\n}\n\nexport function formatMessageContext(context: string): string {\n return parseContextNames(context).join(EMPTY_SPACE);\n}\n\n// -- array ------------------------------------------------- //\n\nexport function hasOverlap(a: any[], b: any[]): boolean {\n const matches = a.filter((x) => b.includes(x));\n return matches.length === a.length;\n}\n\nexport function getLastItems(arr: any[], depth = DEFAULT_DEPTH): any[] {\n return arr.slice(Math.max(arr.length - depth, 0));\n}\n\n// -- map ------------------------------------------------- //\n\nexport function mapToObj(map: Map): Record {\n return Object.fromEntries(map.entries());\n}\n\nexport function objToMap(obj: Record): Map {\n return new Map(Object.entries(obj));\n}\n\nexport function mapEntries(\n obj: Record,\n cb: (x: A) => B,\n): Record {\n const res = {};\n Object.keys(obj).forEach((key) => {\n res[key] = cb(obj[key]);\n });\n return res;\n}\n\n// -- enum ------------------------------------------------- //\n\n// source: https://github.com/microsoft/TypeScript/issues/3192#issuecomment-261720275\nexport const enumify = (x: T): T => x;\n\n// -- string ------------------------------------------------- //\n\nexport function capitalizeWord(word: string) {\n return word.trim().replace(/^\\w/, (c) => c.toUpperCase());\n}\n\nexport function capitalize(str: string) {\n return str\n .split(EMPTY_SPACE)\n .map((w) => capitalizeWord(w))\n .join(EMPTY_SPACE);\n}\n\n// -- promises --------------------------------------------- //\nexport function createDelayedPromise(\n expiry: number = FIVE_MINUTES,\n expireErrorMessage?: string,\n) {\n const timeout = toMiliseconds(expiry || FIVE_MINUTES);\n let cacheResolve: undefined | ((value: T | PromiseLike) => void);\n let cacheReject: undefined | ((value?: ErrorResponse) => void);\n let cacheTimeout: undefined | NodeJS.Timeout;\n\n const done = () =>\n new Promise((promiseResolve, promiseReject) => {\n cacheTimeout = setTimeout(() => {\n promiseReject(new Error(expireErrorMessage));\n }, timeout);\n cacheResolve = promiseResolve;\n cacheReject = promiseReject;\n });\n const resolve = (value?: T) => {\n if (cacheTimeout && cacheResolve) {\n clearTimeout(cacheTimeout);\n cacheResolve(value as T);\n }\n };\n const reject = (value?: ErrorResponse) => {\n if (cacheTimeout && cacheReject) {\n clearTimeout(cacheTimeout);\n cacheReject(value);\n }\n };\n\n return {\n resolve,\n reject,\n done,\n };\n}\n\nexport function createExpiringPromise(\n promise: Promise,\n expiry: number,\n expireErrorMessage?: string,\n) {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error(expireErrorMessage)), expiry);\n try {\n const result = await promise;\n resolve(result);\n } catch (error) {\n reject(error);\n }\n clearTimeout(timeout);\n });\n}\n\n// -- expirer --------------------------------------------- //\n\nexport function formatExpirerTarget(type: \"topic\" | \"id\", value: string | number): string {\n if (typeof value === \"string\" && value.startsWith(`${type}:`)) return value;\n if (type.toLowerCase() === \"topic\") {\n if (typeof value !== \"string\")\n throw new Error(`Value must be \"string\" for expirer target type: topic`);\n return `topic:${value}`;\n } else if (type.toLowerCase() === \"id\") {\n if (typeof value !== \"number\")\n throw new Error(`Value must be \"number\" for expirer target type: id`);\n return `id:${value}`;\n }\n throw new Error(`Unknown expirer target type: ${type}`);\n}\n\nexport function formatTopicTarget(topic: string): string {\n return formatExpirerTarget(\"topic\", topic);\n}\n\nexport function formatIdTarget(id: number): string {\n return formatExpirerTarget(\"id\", id);\n}\n\nexport function parseExpirerTarget(target: string) {\n const [type, value] = target.split(\":\");\n const parsed: { id?: number; topic?: string } = { id: undefined, topic: undefined };\n if (type === \"topic\" && typeof value === \"string\") {\n parsed.topic = value;\n } else if (type === \"id\" && Number.isInteger(Number(value))) {\n parsed.id = Number(value);\n } else {\n throw new Error(`Invalid target, expected id:number or topic:string, got ${type}:${value}`);\n }\n\n return parsed;\n}\n\nexport function calcExpiry(ttl: number, now?: number): number {\n return fromMiliseconds((now || Date.now()) + toMiliseconds(ttl));\n}\n\nexport function isExpired(expiry: number) {\n return Date.now() >= toMiliseconds(expiry);\n}\n\n// -- events ---------------------------------------------- //\n\nexport function engineEvent(event: EngineTypes.Event, id?: number | string | undefined) {\n return `${event}${id ? `:${id}` : \"\"}`;\n}\n\nexport function mergeArrays(a: T[] = [], b: T[] = []): T[] {\n return [...new Set([...a, ...b])];\n}\n\nexport async function handleDeeplinkRedirect({\n id,\n topic,\n wcDeepLink,\n}: {\n id: number;\n topic: string;\n wcDeepLink: string;\n}) {\n try {\n if (!wcDeepLink) return;\n\n const json = typeof wcDeepLink === \"string\" ? JSON.parse(wcDeepLink) : wcDeepLink;\n let deeplink = json?.href;\n\n if (typeof deeplink !== \"string\") return;\n\n if (deeplink.endsWith(\"/\")) deeplink = deeplink.slice(0, -1);\n\n const link = `${deeplink}/wc?requestId=${id}&sessionTopic=${topic}`;\n\n const env = getEnvironment();\n\n if (env === ENV_MAP.browser) {\n if (!getDocument()?.hasFocus()) {\n console.warn(\"Document does not have focus, skipping deeplink.\");\n return;\n }\n\n if (link.startsWith(\"https://\") || link.startsWith(\"http://\")) {\n window.open(link, \"_blank\", \"noreferrer noopener\");\n } else {\n window.open(link, \"_self\", \"noreferrer noopener\");\n }\n } else if (env === ENV_MAP.reactNative) {\n // global.Linking is set by react-native-compat\n if (typeof (global as any)?.Linking !== \"undefined\") {\n await (global as any).Linking.openURL(link);\n }\n }\n } catch (err) {\n // Silent error, just log in console\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport async function getDeepLink(store: IKeyValueStorage, key: string) {\n try {\n const deepLink = await store.getItem(key);\n if (deepLink) return deepLink;\n\n // check localStorage as fallback\n if (!isBrowser()) return;\n return localStorage.getItem(key) as string;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(err);\n }\n}\n\nexport function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[] {\n return arr1.filter((value) => arr2.includes(value));\n}\n\nexport function getSearchParamFromURL(url: string, param: any) {\n const include = url.includes(param);\n if (!include) return null;\n const params = url.split(/([&,?,=])/);\n const index = params.indexOf(param);\n const value = params[index + 2];\n return value;\n}\n\nexport function uuidv4() {\n if (typeof crypto !== \"undefined\" && crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n\n return v.toString(16);\n });\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","export const version = \"logger/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n ///////////////////\n // Interaction Errors\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ErrorCode[\"ACTION_REJECTED\"] = \"ACTION_REJECTED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map","export const version = \"bytes/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"bignumber/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (BigNumber.isBigNumber(value) ||\n (typeof (value) === \"number\" && (value % 1) === 0) ||\n (typeof (value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof (value) === \"bigint\") ||\n isBytes(value));\n}\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n pow(other) {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n and(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n or(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n xor(other) {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\n }\n return toBN(this).toString(10);\n }\n toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n return value;\n }\n if (typeof (value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof (hex) === \"string\") {\n return BigNumber.from(hex);\n }\n }\n else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n if (typeof (hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\n }\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n value = \"0x0\" + value.substring(2);\n }\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n fraction = \"0\";\n }\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\n if (typeof (value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type + \")\", \"format.\" + key, value[key]);\n }\n return value[key];\n };\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n subUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n divUnsafe(other) {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n numeric = numeric.fromTwos(fixedFormat.width);\n }\n const hex = numeric.toTwos((fixedFormat.signed ? 0 : 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) {\n break;\n }\n i++;\n }\n return i;\n }\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n }\n else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n }\n ;\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n // See above loop for invalid continuation byte\n if (res === null) {\n continue;\n }\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 0x80) {\n result.push(c);\n }\n else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n }\n else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n }\n else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\";\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) {\n continue;\n }\n return range;\n }\n }\n return null;\n}\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\nconst Table_B_2_ranges = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [23], l: 127 },\n { h: 54, s: 1, e: [48], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [2, 6, 8], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [18, 24, 66], l: 19, d: 2 },\n { h: 26, s: 32, e: [17], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [38], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [1, 4, 5, 7, 8, 11, 12, 17], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [2, 7, 8, 17], l: 52 },\n { h: 24, s: -120023, e: [2, 7, 13, 15, 16, 17], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [17], l: 56 },\n { h: 24, s: -119601, e: [17], l: 58 },\n { h: 24, s: -119659, e: [17], l: 58 },\n { h: 24, s: -119717, e: [17], l: 58 },\n { h: 24, s: -119775, e: [17], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","export const version = \"hash/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\nexport function encode(data) {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n//# sourceMappingURL=base64.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array, depth) {\n if (depth == null) {\n depth = 1;\n }\n const result = [];\n const forEach = result.forEach;\n const flatDeep = function (arr, depth) {\n forEach.call(arr, function (val) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n }\n else {\n result.push(val);\n }\n });\n };\n flatDeep(array, depth);\n return result;\n}\nfunction fromEntries(array) {\n const result = {};\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\nexport function decode_arithmetic(bytes) {\n let pos = 0;\n function u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n // decode the frequency table\n let symbol_count = u16();\n let total = 1;\n let acc = [0, 1]; // first symbol has frequency 1\n for (let i = 1; i < symbol_count; i++) {\n acc.push(total += u16());\n }\n // skip the sized-payload that the last 3 symbols index into\n let skip = u16();\n let pos_payload = pos;\n pos += skip;\n let read_width = 0;\n let read_buffer = 0;\n function read_bit() {\n if (read_width == 0) {\n // this will read beyond end of buffer\n // but (undefined|0) => zero pad\n read_buffer = (read_buffer << 8) | bytes[pos++];\n read_width = 8;\n }\n return (read_buffer >> --read_width) & 1;\n }\n const N = 31;\n const FULL = Math.pow(2, N);\n const HALF = FULL >>> 1;\n const QRTR = HALF >> 1;\n const MASK = FULL - 1;\n // fill register\n let register = 0;\n for (let i = 0; i < N; i++)\n register = (register << 1) | read_bit();\n let symbols = [];\n let low = 0;\n let range = FULL; // treat like a float\n while (true) {\n let value = Math.floor((((register - low + 1) * total) - 1) / range);\n let start = 0;\n let end = symbol_count;\n while (end - start > 1) { // binary search\n let mid = (start + end) >>> 1;\n if (value < acc[mid]) {\n end = mid;\n }\n else {\n start = mid;\n }\n }\n if (start == 0)\n break; // first symbol is end mark\n symbols.push(start);\n let a = low + Math.floor(range * acc[start] / total);\n let b = low + Math.floor(range * acc[start + 1] / total) - 1;\n while (((a ^ b) & HALF) == 0) {\n register = (register << 1) & MASK | read_bit();\n a = (a << 1) & MASK;\n b = (b << 1) & MASK | 1;\n }\n while (a & ~b & QRTR) {\n register = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n a = (a << 1) ^ HALF;\n b = ((b ^ HALF) << 1) | HALF | 1;\n }\n low = a;\n range = 1 + b - a;\n }\n let offset = symbol_count - 4;\n return symbols.map(x => {\n switch (x - offset) {\n case 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n case 1: return offset + bytes[pos_payload++];\n default: return x - 1;\n }\n });\n}\n// returns an iterator which returns the next symbol\nexport function read_payload(v) {\n let pos = 0;\n return () => v[pos++];\n}\nexport function read_compressed_payload(bytes) {\n return read_payload(decode_arithmetic(bytes));\n}\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i) {\n return (i & 1) ? (~i >> 1) : (i >> 1);\n}\nfunction read_counts(n, next) {\n let v = Array(n);\n for (let i = 0; i < n; i++)\n v[i] = 1 + next();\n return v;\n}\nfunction read_ascending(n, next) {\n let v = Array(n);\n for (let i = 0, x = -1; i < n; i++)\n v[i] = x += 1 + next();\n return v;\n}\nfunction read_deltas(n, next) {\n let v = Array(n);\n for (let i = 0, x = 0; i < n; i++)\n v[i] = x += signed(next());\n return v;\n}\nexport function read_member_array(next, lookup) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next) {\n let ret = [];\n while (true) {\n let w = next();\n if (w == 0)\n break;\n ret.push(read_linear_table(w, next));\n }\n while (true) {\n let w = next() - 1;\n if (w < 0)\n break;\n ret.push(read_replacement_table(w, next));\n }\n return fromEntries(flat(ret));\n}\nexport function read_zero_terminated_array(next) {\n let v = [];\n while (true) {\n let i = next();\n if (i == 0)\n break;\n v.push(i);\n }\n return v;\n}\nfunction read_transposed(n, w, next) {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\nfunction read_linear_table(w, next) {\n let dx = 1 + next();\n let dy = next();\n let vN = read_zero_terminated_array(next);\n let m = read_transposed(vN.length, 1 + w, next);\n return flat(m.map((v, i) => {\n const x = v[0], ys = v.slice(1);\n //let [x, ...ys] = v;\n //return Array(vN[i]).fill().map((_, j) => {\n return Array(vN[i]).fill(undefined).map((_, j) => {\n let j_dy = j * dy;\n return [x + j * dx, ys.map(y => y + j_dy)];\n });\n }));\n}\nfunction read_replacement_table(w, next) {\n let n = 1 + next();\n let m = read_transposed(n, 1 + w, next);\n return m.map(v => [v[0], v.slice(1)]);\n}\nexport function read_emoji_trie(next) {\n let sorted = read_member_array(next).sort((a, b) => a - b);\n return read();\n function read() {\n let branches = [];\n while (true) {\n let keys = read_member_array(next, sorted);\n if (keys.length == 0)\n break;\n branches.push({ set: new Set(keys), node: read() });\n }\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n let temp = next();\n let valid = temp % 3;\n temp = (temp / 3) | 0;\n let fe0f = !!(temp & 1);\n temp >>= 1;\n let save = temp == 1;\n let check = temp == 2;\n return { branches, valid, fe0f, save, check };\n }\n}\n//# sourceMappingURL=decoder.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { decode } from \"@ethersproject/base64\";\nimport { read_compressed_payload } from './decoder.js';\nexport function getData() {\n return read_compressed_payload(decode('AEQF2AO2DEsA2wIrAGsBRABxAN8AZwCcAEwAqgA0AGwAUgByADcATAAVAFYAIQAyACEAKAAYAFgAGwAjABQAMAAmADIAFAAfABQAKwATACoADgAbAA8AHQAYABoAGQAxADgALAAoADwAEwA9ABMAGgARAA4ADwAWABMAFgAIAA8AHgQXBYMA5BHJAS8JtAYoAe4AExozi0UAH21tAaMnBT8CrnIyhrMDhRgDygIBUAEHcoFHUPe8AXBjAewCjgDQR8IICIcEcQLwATXCDgzvHwBmBoHNAqsBdBcUAykgDhAMShskMgo8AY8jqAQfAUAfHw8BDw87MioGlCIPBwZCa4ELatMAAMspJVgsDl8AIhckSg8XAHdvTwBcIQEiDT4OPhUqbyECAEoAS34Aej8Ybx83JgT/Xw8gHxZ/7w8RICxPHA9vBw+Pfw8PHwAPFv+fAsAvCc8vEr8ivwD/EQ8Bol8OEBa/A78hrwAPCU8vESNvvwWfHwNfAVoDHr+ZAAED34YaAdJPAK7PLwSEgDLHAGo1Pz8Pvx9fUwMrpb8O/58VTzAPIBoXIyQJNF8hpwIVAT8YGAUADDNBaX3RAMomJCg9EhUeA29MABsZBTMNJipjOhc19gcIDR8bBwQHEggCWi6DIgLuAQYA+BAFCha3A5XiAEsqM7UFFgFLhAMjFTMYE1Klnw74nRVBG/ASCm0BYRN/BrsU3VoWy+S0vV8LQx+vN8gF2AC2AK5EAWwApgYDKmAAroQ0NDQ0AT+OCg7wAAIHRAbpNgVcBV0APTA5BfbPFgMLzcYL/QqqA82eBALKCjQCjqYCht0/k2+OAsXQAoP3ASTKDgDw6ACKAUYCMpIKJpRaAE4A5womABzZvs0REEKiACIQAd5QdAECAj4Ywg/wGqY2AVgAYADYvAoCGAEubA0gvAY2ALAAbpbvqpyEAGAEpgQAJgAG7gAgAEACmghUFwCqAMpAINQIwC4DthRAAPcycKgApoIdABwBfCisABoATwBqASIAvhnSBP8aH/ECeAKXAq40NjgDBTwFYQU6AXs3oABgAD4XNgmcCY1eCl5tIFZeUqGgyoNHABgAEQAaABNwWQAmABMATPMa3T34ADldyprmM1M2XociUQgLzvwAXT3xABgAEQAaABNwIGFAnADD8AAgAD4BBJWzaCcIAIEBFMAWwKoAAdq9BWAF5wLQpALEtQAKUSGkahR4GnJM+gsAwCgeFAiUAECQ0BQuL8AAIAAAADKeIheclvFqQAAETr4iAMxIARMgAMIoHhQIAn0E0pDQFC4HhznoAAAAIAI2C0/4lvFqQAAETgBJJwYCAy4ABgYAFAA8MBKYEH4eRhTkAjYeFcgACAYAeABsOqyQ5gRwDayqugEgaIIAtgoACgDmEABmBAWGme5OBJJA2m4cDeoAmITWAXwrMgOgAGwBCh6CBXYF1Tzg1wKAAFdiuABRAFwAXQBsAG8AdgBrAHYAbwCEAHEwfxQBVE5TEQADVFhTBwBDANILAqcCzgLTApQCrQL6vAAMAL8APLhNBKkE6glGKTAU4Dr4N2EYEwBCkABKk8rHAbYBmwIoAiU4Ajf/Aq4CowCAANIChzgaNBsCsTgeODcFXrgClQKdAqQBiQGYAqsCsjTsNHsfNPA0ixsAWTWiOAMFPDQSNCk2BDZHNow2TTZUNhk28Jk9VzI3QkEoAoICoQKwAqcAQAAxBV4FXbS9BW47YkIXP1ciUqs05DS/FwABUwJW11e6nHuYZmSh/RAYA8oMKvZ8KASoUAJYWAJ6ILAsAZSoqjpgA0ocBIhmDgDWAAawRDQoAAcuAj5iAHABZiR2AIgiHgCaAU68ACxuHAG0ygM8MiZIAlgBdF4GagJqAPZOHAMuBgoATkYAsABiAHgAMLoGDPj0HpKEBAAOJgAuALggTAHWAeAMEDbd20Uege0ADwAWADkAQgA9OHd+2MUQZBBhBgNNDkxxPxUQArEPqwvqERoM1irQ090ANK4H8ANYB/ADWANYB/AH8ANYB/ADWANYA1gDWBwP8B/YxRBkD00EcgWTBZAE2wiIJk4RhgctCNdUEnQjHEwDSgEBIypJITuYMxAlR0wRTQgIATZHbKx9PQNMMbBU+pCnA9AyVDlxBgMedhKlAC8PeCE1uk6DekxxpQpQT7NX9wBFBgASqwAS5gBJDSgAUCwGPQBI4zTYABNGAE2bAE3KAExdGABKaAbgAFBXAFCOAFBJABI2SWdObALDOq0//QomCZhvwHdTBkIQHCemEPgMNAG2ATwN7kvZBPIGPATKH34ZGg/OlZ0Ipi3eDO4m5C6igFsj9iqEBe5L9TzeC05RaQ9aC2YJ5DpkgU8DIgEOIowK3g06CG4Q9ArKbA3mEUYHOgPWSZsApgcCCxIdNhW2JhFirQsKOXgG/Br3C5AmsBMqev0F1BoiBk4BKhsAANAu6IWxWjJcHU9gBgQLJiPIFKlQIQ0mQLh4SRocBxYlqgKSQ3FKiFE3HpQh9zw+DWcuFFF9B/Y8BhlQC4I8n0asRQ8R0z6OPUkiSkwtBDaALDAnjAnQD4YMunxzAVoJIgmyDHITMhEYN8YIOgcaLpclJxYIIkaWYJsE+KAD9BPSAwwFQAlCBxQDthwuEy8VKgUOgSXYAvQ21i60ApBWgQEYBcwPJh/gEFFH4Q7qCJwCZgOEJewALhUiABginAhEZABgj9lTBi7MCMhqbSN1A2gU6GIRdAeSDlgHqBw0FcAc4nDJXgyGCSiksAlcAXYJmgFgBOQICjVcjKEgQmdUi1kYnCBiQUBd/QIyDGYVoES+h3kCjA9sEhwBNgF0BzoNAgJ4Ee4RbBCWCOyGBTW2M/k6JgRQIYQgEgooA1BszwsoJvoM+WoBpBJjAw00PnfvZ6xgtyUX/gcaMsZBYSHyC5NPzgydGsIYQ1QvGeUHwAP0GvQn60FYBgADpAQUOk4z7wS+C2oIjAlAAEoOpBgH2BhrCnKM0QEyjAG4mgNYkoQCcJAGOAcMAGgMiAV65gAeAqgIpAAGANADWAA6Aq4HngAaAIZCAT4DKDABIuYCkAOUCDLMAZYwAfQqBBzEDBYA+DhuSwLDsgKAa2ajBd5ZAo8CSjYBTiYEBk9IUgOwcuIA3ABMBhTgSAEWrEvMG+REAeBwLADIAPwABjYHBkIBzgH0bgC4AWALMgmjtLYBTuoqAIQAFmwB2AKKAN4ANgCA8gFUAE4FWvoF1AJQSgESMhksWGIBvAMgATQBDgB6BsyOpsoIIARuB9QCEBwV4gLvLwe2AgMi4BPOQsYCvd9WADIXUu5eZwqoCqdeaAC0YTQHMnM9UQAPH6k+yAdy/BZIiQImSwBQ5gBQQzSaNTFWSTYBpwGqKQK38AFtqwBI/wK37gK3rQK3sAK6280C0gK33AK3zxAAUEIAUD9SklKDArekArw5AEQAzAHCO147WTteO1k7XjtZO147WTteO1kDmChYI03AVU0oJqkKbV9GYewMpw3VRMk6ShPcYFJgMxPJLbgUwhXPJVcZPhq9JwYl5VUKDwUt1GYxCC00dhe9AEApaYNCY4ceMQpMHOhTklT5LRwAskujM7ANrRsWREEFSHXuYisWDwojAmSCAmJDXE6wXDchAqH4AmiZAmYKAp+FOBwMAmY8AmYnBG8EgAN/FAN+kzkHOXgYOYM6JCQCbB4CMjc4CwJtyAJtr/CLADRoRiwBaADfAOIASwYHmQyOAP8MwwAOtgJ3MAJ2o0ACeUxEAni7Hl3cRa9G9AJ8QAJ6yQJ9CgJ88UgBSH5kJQAsFklZSlwWGErNAtECAtDNSygDiFADh+dExpEzAvKiXQQDA69Lz0wuJgTQTU1NsAKLQAKK2cIcCB5EaAa4Ao44Ao5dQZiCAo7aAo5deVG1UzYLUtVUhgKT/AKTDQDqAB1VH1WwVdEHLBwplocy4nhnRTw6ApegAu+zWCKpAFomApaQApZ9nQCqWa1aCoJOADwClrYClk9cRVzSApnMApllXMtdCBoCnJw5wzqeApwXAp+cAp65iwAeEDIrEAKd8gKekwC2PmE1YfACntQCoG8BqgKeoCACnk+mY8lkKCYsAiewAiZ/AqD8AqBN2AKmMAKlzwKoAAB+AqfzaH1osgAESmodatICrOQCrK8CrWgCrQMCVx4CVd0CseLYAx9PbJgCsr4OArLpGGzhbWRtSWADJc4Ctl08QG6RAylGArhfArlIFgK5K3hwN3DiAr0aAy2zAzISAr6JcgMDM3ICvhtzI3NQAsPMAsMFc4N0TDZGdOEDPKgDPJsDPcACxX0CxkgCxhGKAshqUgLIRQLJUALJLwJkngLd03h6YniveSZL0QMYpGcDAmH1GfSVJXsMXpNevBICz2wCz20wTFTT9BSgAMeuAs90ASrrA04TfkwGAtwoAtuLAtJQA1JdA1NgAQIDVY2AikABzBfuYUZ2AILPg44C2sgC2d+EEYRKpz0DhqYAMANkD4ZyWvoAVgLfZgLeuXR4AuIw7RUB8zEoAfScAfLTiALr9ALpcXoAAur6AurlAPpIAboC7ooC652Wq5cEAu5AA4XhmHpw4XGiAvMEAGoDjheZlAL3FAORbwOSiAL3mQL52gL4Z5odmqy8OJsfA52EAv77ARwAOp8dn7QDBY4DpmsDptoA0sYDBmuhiaIGCgMMSgFgASACtgNGAJwEgLpoBgC8BGzAEowcggCEDC6kdjoAJAM0C5IKRoABZCgiAIzw3AYBLACkfng9ogigkgNmWAN6AEQCvrkEVqTGAwCsBRbAA+4iQkMCHR072jI2PTbUNsk2RjY5NvA23TZKNiU3EDcZN5I+RTxDRTBCJkK5VBYKFhZfwQCWygU3AJBRHpu+OytgNxa61A40GMsYjsn7BVwFXQVcBV0FaAVdBVwFXQVcBV0FXAVdBVwFXUsaCNyKAK4AAQUHBwKU7oICoW1e7jAEzgPxA+YDwgCkBFDAwADABKzAAOxFLhitA1UFTDeyPkM+bj51QkRCuwTQWWQ8X+0AWBYzsACNA8xwzAGm7EZ/QisoCTAbLDs6fnLfb8H2GccsbgFw13M1HAVkBW/Jxsm9CNRO8E8FDD0FBQw9FkcClOYCoMFegpDfADgcMiA2AJQACB8AsigKAIzIEAJKeBIApY5yPZQIAKQiHb4fvj5BKSRPQrZCOz0oXyxgOywfKAnGbgMClQaCAkILXgdeCD9IIGUgQj5fPoY+dT52Ao5CM0dAX9BTVG9SDzFwWTQAbxBzJF/lOEIQQglCCkKJIAls5AcClQICoKPMODEFxhi6KSAbiyfIRrMjtCgdWCAkPlFBIitCsEJRzAbMAV/OEyQzDg0OAQQEJ36i328/Mk9AybDJsQlq3tDRApUKAkFzXf1d/j9uALYP6hCoFgCTGD8kPsFKQiobrm0+zj0KSD8kPnVCRBwMDyJRTHFgMTJa5rwXQiQ2YfI/JD7BMEJEHGINTw4TOFlIRzwJO0icMQpyPyQ+wzJCRBv6DVgnKB01NgUKj2bwYzMqCoBkznBgEF+zYDIocwRIX+NgHj4HICNfh2C4CwdwFWpTG/lgUhYGAwRfv2Ts8mAaXzVgml/XYIJfuWC4HI1gUF9pYJZgMR6ilQHMAOwLAlDRefC0in4AXAEJA6PjCwc0IamOANMMCAECRQDFNRTZBgd+CwQlRA+r6+gLBDEFBnwUBXgKATIArwAGRAAHA3cDdAN2A3kDdwN9A3oDdQN7A30DfAN4A3oDfQAYEAAlAtYASwMAUAFsAHcKAHcAmgB3AHUAdQB2AHVu8UgAygDAAHcAdQB1AHYAdQALCgB3AAsAmgB3AAsCOwB3AAtu8UgAygDAAHgKAJoAdwB3AHUAdQB2AHUAeAB1AHUAdgB1bvFIAMoAwAALCgCaAHcACwB3AAsCOwB3AAtu8UgAygDAAH4ACwGgALcBpwC6AahdAu0COwLtbvFIAMoAwAALCgCaAu0ACwLtAAsCOwLtAAtu8UgAygDAA24ACwNvAAu0VsQAAzsAABCkjUIpAAsAUIusOggWcgMeBxVsGwL67U/2HlzmWOEeOgALASvuAAseAfpKUpnpGgYJDCIZM6YyARUE9ThqAD5iXQgnAJYJPnOzw0ZAEZxEKsIAkA4DhAHnTAIDxxUDK0lxCQlPYgIvIQVYJQBVqE1GakUAKGYiDToSBA1EtAYAXQJYAIF8GgMHRyAAIAjOe9YncekRAA0KACUrjwE7Ayc6AAYWAqaiKG4McEcqANoN3+Mg9TwCBhIkuCny+JwUQ29L008JluRxu3K+oAdqiHOqFH0AG5SUIfUJ5SxCGfxdipRzqTmT4V5Zb+r1Uo4Vm+NqSSEl2mNvR2JhIa8SpYO6ntdwFXHCWTCK8f2+Hxo7uiG3drDycAuKIMP5bhi06ACnqArH1rz4Rqg//lm6SgJGEVbF9xJHISaR6HxqxSnkw6shDnelHKNEfGUXSJRJ1GcsmtJw25xrZMDK9gXSm1/YMkdX4/6NKYOdtk/NQ3/NnDASjTc3fPjIjW/5sVfVObX2oTDWkr1dF9f3kxBsD3/3aQO8hPfRz+e0uEiJqt1161griu7gz8hDDwtpy+F+BWtefnKHZPAxcZoWbnznhJpy0e842j36bcNzGnIEusgGX0a8ZxsnjcSsPDZ09yZ36fCQbriHeQ72JRMILNl6ePPf2HWoVwgWAm1fb3V2sAY0+B6rAXqSwPBgseVmoqsBTSrm91+XasMYYySI8eeRxH3ZvHkMz3BQ5aJ3iUVbYPNM3/7emRtjlsMgv/9VyTsyt/mK+8fgWeT6SoFaclXqn42dAIsvAarF5vNNWHzKSkKQ/8Hfk5ZWK7r9yliOsooyBjRhfkHP4Q2DkWXQi6FG/9r/IwbmkV5T7JSopHKn1pJwm9tb5Ot0oyN1Z2mPpKXHTxx2nlK08fKk1hEYA8WgVVWL5lgx0iTv+KdojJeU23ZDjmiubXOxVXJKKi2Wjuh2HLZOFLiSC7Tls5SMh4f+Pj6xUSrNjFqLGehRNB8lC0QSLNmkJJx/wSG3MnjE9T1CkPwJI0wH2lfzwETIiVqUxg0dfu5q39Gt+hwdcxkhhNvQ4TyrBceof3Mhs/IxFci1HmHr4FMZgXEEczPiGCx0HRwzAqDq2j9AVm1kwN0mRVLWLylgtoPNapF5cY4Y1wJh/e0BBwZj44YgZrDNqvD/9Hv7GFYdUQeDJuQ3EWI4HaKqavU1XjC/n41kT4L79kqGq0kLhdTZvgP3TA3fS0ozVz+5piZsoOtIvBUFoMKbNcmBL6YxxaUAusHB38XrS8dQMnQwJfUUkpRoGr5AUeWicvBTzyK9g77+yCkf5PAysL7r/JjcZgrbvRpMW9iyaxZvKO6ceZN2EwIxKwVFPuvFuiEPGCoagbMo+SpydLrXqBzNCDGFCrO/rkcwa2xhokQZ5CdZ0AsU3JfSqJ6n5I14YA+P/uAgfhPU84Tlw7cEFfp7AEE8ey4sP12PTt4Cods1GRgDOB5xvyiR5m+Bx8O5nBCNctU8BevfV5A08x6RHd5jcwPTMDSZJOedIZ1cGQ704lxbAzqZOP05ZxaOghzSdvFBHYqomATARyAADK4elP8Ly3IrUZKfWh23Xy20uBUmLS4Pfagu9+oyVa2iPgqRP3F2CTUsvJ7+RYnN8fFZbU/HVvxvcFFDKkiTqV5UBZ3Gz54JAKByi9hkKMZJvuGgcSYXFmw08UyoQyVdfTD1/dMkCHXcTGAKeROgArsvmRrQTLUOXioOHGK2QkjHuoYFgXciZoTJd6Fs5q1QX1G+p/e26hYsEf7QZD1nnIyl/SFkNtYYmmBhpBrxl9WbY0YpHWRuw2Ll/tj9mD8P4snVzJl4F9J+1arVeTb9E5r2ILH04qStjxQNwn3m4YNqxmaNbLAqW2TN6LidwuJRqS+NXbtqxoeDXpxeGWmxzSkWxjkyCkX4NQRme6q5SAcC+M7+9ETfA/EwrzQajKakCwYyeunP6ZFlxU2oMEn1Pz31zeStW74G406ZJFCl1wAXIoUKkWotYEpOuXB1uVNxJ63dpJEqfxBeptwIHNrPz8BllZoIcBoXwgfJ+8VAUnVPvRvexnw0Ma/WiGYuJO5y8QTvEYBigFmhUxY5RqzE8OcywN/8m4UYrlaniJO75XQ6KSo9+tWHlu+hMi0UVdiKQp7NelnoZUzNaIyBPVeOwK6GNp+FfHuPOoyhaWuNvTYFkvxscMQWDh+zeFCFkgwbXftiV23ywJ4+uwRqmg9k3KzwIQpzppt8DBBOMbrqwQM5Gb05sEwdKzMiAqOloaA/lr0KA+1pr0/+HiWoiIjHA/wir2nIuS3PeU/ji3O6ZwoxcR1SZ9FhtLC5S0FIzFhbBWcGVP/KpxOPSiUoAdWUpqKH++6Scz507iCcxYI6rdMBICPJZea7OcmeFw5mObJSiqpjg2UoWNIs+cFhyDSt6geV5qgi3FunmwwDoGSMgerFOZGX1m0dMCYo5XOruxO063dwENK9DbnVM9wYFREzh4vyU1WYYJ/LRRp6oxgjqP/X5a8/4Af6p6NWkQferzBmXme0zY/4nwMJm/wd1tIqSwGz+E3xPEAOoZlJit3XddD7/BT1pllzOx+8bmQtANQ/S6fZexc6qi3W+Q2xcmXTUhuS5mpHQRvcxZUN0S5+PL9lXWUAaRZhEH8hTdAcuNMMCuVNKTEGtSUKNi3O6KhSaTzck8csZ2vWRZ+d7mW8c4IKwXIYd25S/zIftPkwPzufjEvOHWVD1m+FjpDVUTV0DGDuHj6QnaEwLu/dEgdLQOg9E1Sro9XHJ8ykLAwtPu+pxqKDuFexqON1sKQm7rwbE1E68UCfA/erovrTCG+DBSNg0l4goDQvZN6uNlbyLpcZAwj2UclycvLpIZMgv4yRlpb3YuMftozorbcGVHt/VeDV3+Fdf1TP0iuaCsPi2G4XeGhsyF1ubVDxkoJhmniQ0/jSg/eYML9KLfnCFgISWkp91eauR3IQvED0nAPXK+6hPCYs+n3+hCZbiskmVMG2da+0EsZPonUeIY8EbfusQXjsK/eFDaosbPjEfQS0RKG7yj5GG69M7MeO1HmiUYocgygJHL6M1qzUDDwUSmr99V7Sdr2F3JjQAJY+F0yH33Iv3+C9M38eML7gTgmNu/r2bUMiPvpYbZ6v1/IaESirBHNa7mPKn4dEmYg7v/+HQgPN1G79jBQ1+soydfDC2r+h2Bl/KIc5KjMK7OH6nb1jLsNf0EHVe2KBiE51ox636uyG6Lho0t3J34L5QY/ilE3mikaF4HKXG1mG1rCevT1Vv6GavltxoQe/bMrpZvRggnBxSEPEeEzkEdOxTnPXHVjUYdw8JYvjB/o7Eegc3Ma+NUxLLnsK0kJlinPmUHzHGtrk5+CAbVzFOBqpyy3QVUnzTDfC/0XD94/okH+OB+i7g9lolhWIjSnfIb+Eq43ZXOWmwvjyV/qqD+t0e+7mTEM74qP/Ozt8nmC7mRpyu63OB4KnUzFc074SqoyPUAgM+/TJGFo6T44EHnQU4X4z6qannVqgw/U7zCpwcmXV1AubIrvOmkKHazJAR55ePjp5tLBsN8vAqs3NAHdcEHOR2xQ0lsNAFzSUuxFQCFYvXLZJdOj9p4fNq6p0HBGUik2YzaI4xySy91KzhQ0+q1hjxvImRwPRf76tChlRkhRCi74NXZ9qUNeIwP+s5p+3m5nwPdNOHgSLD79n7O9m1n1uDHiMntq4nkYwV5OZ1ENbXxFd4PgrlvavZsyUO4MqYlqqn1O8W/I1dEZq5dXhrbETLaZIbC2Kj/Aa/QM+fqUOHdf0tXAQ1huZ3cmWECWSXy/43j35+Mvq9xws7JKseriZ1pEWKc8qlzNrGPUGcVgOa9cPJYIJsGnJTAUsEcDOEVULO5x0rXBijc1lgXEzQQKhROf8zIV82w8eswc78YX11KYLWQRcgHNJElBxfXr72lS2RBSl07qTKorO2uUDZr3sFhYsvnhLZn0A94KRzJ/7DEGIAhW5ZWFpL8gEwu1aLA9MuWZzNwl8Oze9Y+bX+v9gywRVnoB5I/8kXTXU3141yRLYrIOOz6SOnyHNy4SieqzkBXharjfjqq1q6tklaEbA8Qfm2DaIPs7OTq/nvJBjKfO2H9bH2cCMh1+5gspfycu8f/cuuRmtDjyqZ7uCIMyjdV3a+p3fqmXsRx4C8lujezIFHnQiVTXLXuI1XrwN3+siYYj2HHTvESUx8DlOTXpak9qFRK+L3mgJ1WsD7F4cu1aJoFoYQnu+wGDMOjJM3kiBQWHCcvhJ/HRdxodOQp45YZaOTA22Nb4XKCVxqkbwMYFhzYQYIAnCW8FW14uf98jhUG2zrKhQQ0q0CEq0t5nXyvUyvR8DvD69LU+g3i+HFWQMQ8PqZuHD+sNKAV0+M6EJC0szq7rEr7B5bQ8BcNHzvDMc9eqB5ZCQdTf80Obn4uzjwpYU7SISdtV0QGa9D3Wrh2BDQtpBKxaNFV+/Cy2P/Sv+8s7Ud0Fd74X4+o/TNztWgETUapy+majNQ68Lq3ee0ZO48VEbTZYiH1Co4OlfWef82RWeyUXo7woM03PyapGfikTnQinoNq5z5veLpeMV3HCAMTaZmA1oGLAn7XS3XYsz+XK7VMQsc4XKrmDXOLU/pSXVNUq8dIqTba///3x6LiLS6xs1xuCAYSfcQ3+rQgmu7uvf3THKt5Ooo97TqcbRqxx7EASizaQCBQllG/rYxVapMLgtLbZS64w1MDBMXX+PQpBKNwqUKOf2DDRDUXQf9EhOS0Qj4nTmlA8dzSLz/G1d+Ud8MTy/6ghhdiLpeerGY/UlDOfiuqFsMUU5/UYlP+BAmgRLuNpvrUaLlVkrqDievNVEAwF+4CoM1MZTmjxjJMsKJq+u8Zd7tNCUFy6LiyYXRJQ4VyvEQFFaCGKsxIwQkk7EzZ6LTJq2hUuPhvAW+gQnSG6J+MszC+7QCRHcnqDdyNRJ6T9xyS87A6MDutbzKGvGktpbXqtzWtXb9HsfK2cBMomjN9a4y+TaJLnXxAeX/HWzmf4cR4vALt/P4w4qgKY04ml4ZdLOinFYS6cup3G/1ie4+t1eOnpBNlqGqs75ilzkT4+DsZQxNvaSKJ//6zIbbk/M7LOhFmRc/1R+kBtz7JFGdZm/COotIdvQoXpTqP/1uqEUmCb/QWoGLMwO5ANcHzxdY48IGP5+J+zKOTBFZ4Pid+GTM+Wq12MV/H86xEJptBa6T+p3kgpwLedManBHC2GgNrFpoN2xnrMz9WFWX/8/ygSBkavq2Uv7FdCsLEYLu9LLIvAU0bNRDtzYl+/vXmjpIvuJFYjmI0im6QEYqnIeMsNjXG4vIutIGHijeAG/9EDBozKV5cldkHbLxHh25vT+ZEzbhXlqvpzKJwcEgfNwLAKFeo0/pvEE10XDB+EXRTXtSzJozQKFFAJhMxYkVaCW+E9AL7tMeU8acxidHqzb6lX4691UsDpy/LLRmT+epgW56+5Cw8tB4kMUv6s9lh3eRKbyGs+H/4mQMaYzPTf2OOdokEn+zzgvoD3FqNKk8QqGAXVsqcGdXrT62fSPkR2vROFi68A6se86UxRUk4cajfPyCC4G5wDhD+zNq4jodQ4u4n/m37Lr36n4LIAAsVr02dFi9AiwA81MYs2rm4eDlDNmdMRvEKRHfBwW5DdMNp0jPFZMeARqF/wL4XBfd+EMLBfMzpH5GH6NaW+1vrvMdg+VxDzatk3MXgO3ro3P/DpcC6+Mo4MySJhKJhSR01SGGGp5hPWmrrUgrv3lDnP+HhcI3nt3YqBoVAVTBAQT5iuhTg8nvPtd8ZeYj6w1x6RqGUBrSku7+N1+BaasZvjTk64RoIDlL8brpEcJx3OmY7jLoZsswdtmhfC/G21llXhITOwmvRDDeTTPbyASOa16cF5/A1fZAidJpqju3wYAy9avPR1ya6eNp9K8XYrrtuxlqi+bDKwlfrYdR0RRiKRVTLOH85+ZY7XSmzRpfZBJjaTa81VDcJHpZnZnSQLASGYW9l51ZV/h7eVzTi3Hv6hUsgc/51AqJRTkpbFVLXXszoBL8nBX0u/0jBLT8nH+fJePbrwURT58OY+UieRjd1vs04w0VG5VN2U6MoGZkQzKN/ptz0Q366dxoTGmj7i1NQGHi9GgnquXFYdrCfZBmeb7s0T6yrdlZH5cZuwHFyIJ/kAtGsTg0xH5taAAq44BAk1CPk9KVVbqQzrCUiFdF/6gtlPQ8bHHc1G1W92MXGZ5HEHftyLYs8mbD/9xYRUWkHmlM0zC2ilJlnNgV4bfALpQghxOUoZL7VTqtCHIaQSXm+YUMnpkXybnV+A6xlm2CVy8fn0Xlm2XRa0+zzOa21JWWmixfiPMSCZ7qA4rS93VN3pkpF1s5TonQjisHf7iU9ZGvUPOAKZcR1pbeVf/Ul7OhepGCaId9wOtqo7pJ7yLcBZ0pFkOF28y4zEI/kcUNmutBHaQpBdNM8vjCS6HZRokkeo88TBAjGyG7SR+6vUgTcyK9Imalj0kuxz0wmK+byQU11AiJFk/ya5dNduRClcnU64yGu/ieWSeOos1t3ep+RPIWQ2pyTYVbZltTbsb7NiwSi3AV+8KLWk7LxCnfZUetEM8ThnsSoGH38/nyAwFguJp8FjvlHtcWZuU4hPva0rHfr0UhOOJ/F6vS62FW7KzkmRll2HEc7oUq4fyi5T70Vl7YVIfsPHUCdHesf9Lk7WNVWO75JDkYbMI8TOW8JKVtLY9d6UJRITO8oKo0xS+o99Yy04iniGHAaGj88kEWgwv0OrHdY/nr76DOGNS59hXCGXzTKUvDl9iKpLSWYN1lxIeyywdNpTkhay74w2jFT6NS8qkjo5CxA1yfSYwp6AJIZNKIeEK5PJAW7ORgWgwp0VgzYpqovMrWxbu+DGZ6Lhie1RAqpzm8VUzKJOH3mCzWuTOLsN3VT/dv2eeYe9UjbR8YTBsLz7q60VN1sU51k+um1f8JxD5pPhbhSC8rRaB454tmh6YUWrJI3+GWY0qeWioj/tbkYITOkJaeuGt4JrJvHA+l0Gu7kY7XOaa05alMnRWVCXqFgLIwSY4uF59Ue5SU4QKuc/HamDxbr0x6csCetXGoP7Qn1Bk/J9DsynO/UD6iZ1Hyrz+jit0hDCwi/E9OjgKTbB3ZQKQ/0ZOvevfNHG0NK4Aj3Cp7NpRk07RT1i/S0EL93Ag8GRgKI9CfpajKyK6+Jj/PI1KO5/85VAwz2AwzP8FTBb075IxCXv6T9RVvWT2tUaqxDS92zrGUbWzUYk9mSs82pECH+fkqsDt93VW++4YsR/dHCYcQSYTO/KaBMDj9LSD/J/+z20Kq8XvZUAIHtm9hRPP3ItbuAu2Hm5lkPs92pd7kCxgRs0xOVBnZ13ccdA0aunrwv9SdqElJRC3g+oCu+nXyCgmXUs9yMjTMAIHfxZV+aPKcZeUBWt057Xo85Ks1Ir5gzEHCWqZEhrLZMuF11ziGtFQUds/EESajhagzcKsxamcSZxGth4UII+adPhQkUnx2WyN+4YWR+r3f8MnkyGFuR4zjzxJS8WsQYR5PTyRaD9ixa6Mh741nBHbzfjXHskGDq179xaRNrCIB1z1xRfWfjqw2pHc1zk9xlPpL8sQWAIuETZZhbnmL54rceXVNRvUiKrrqIkeogsl0XXb17ylNb0f4GA9Wd44vffEG8FSZGHEL2fbaTGRcSiCeA8PmA/f6Hz8HCS76fXUHwgwkzSwlI71ekZ7Fapmlk/KC+Hs8hUcw3N2LN5LhkVYyizYFl/uPeVP5lsoJHhhfWvvSWruCUW1ZcJOeuTbrDgywJ/qG07gZJplnTvLcYdNaH0KMYOYMGX+rB4NGPFmQsNaIwlWrfCezxre8zXBrsMT+edVLbLqN1BqB76JH4BvZTqUIMfGwPGEn+EnmTV86fPBaYbFL3DFEhjB45CewkXEAtJxk4/Ms2pPXnaRqdky0HOYdcUcE2zcXq4vaIvW2/v0nHFJH2XXe22ueDmq/18XGtELSq85j9X8q0tcNSSKJIX8FTuJF/Pf8j5PhqG2u+osvsLxYrvvfeVJL+4tkcXcr9JV7v0ERmj/X6fM3NC4j6dS1+9Umr2oPavqiAydTZPLMNRGY23LO9zAVDly7jD+70G5TPPLdhRIl4WxcYjLnM+SNcJ26FOrkrISUtPObIz5Zb3AG612krnpy15RMW+1cQjlnWFI6538qky9axd2oJmHIHP08KyP0ubGO+TQNOYuv2uh17yCIvR8VcStw7o1g0NM60sk+8Tq7YfIBJrtp53GkvzXH7OA0p8/n/u1satf/VJhtR1l8Wa6Gmaug7haSpaCaYQax6ta0mkutlb+eAOSG1aobM81D9A4iS1RRlzBBoVX6tU1S6WE2N9ORY6DfeLRC4l9Rvr5h95XDWB2mR1d4WFudpsgVYwiTwT31ljskD8ZyDOlm5DkGh9N/UB/0AI5Xvb8ZBmai2hQ4BWMqFwYnzxwB26YHSOv9WgY3JXnvoN+2R4rqGVh/LLDMtpFP+SpMGJNWvbIl5SOodbCczW2RKleksPoUeGEzrjtKHVdtZA+kfqO+rVx/iclCqwoopepvJpSTDjT+b9GWylGRF8EDbGlw6eUzmJM95Ovoz+kwLX3c2fTjFeYEsE7vUZm3mqdGJuKh2w9/QGSaqRHs99aScGOdDqkFcACoqdbBoQqqjamhH6Q9ng39JCg3lrGJwd50Qk9ovnqBTr8MME7Ps2wiVfygUmPoUBJJfJWX5Nda0nuncbFkA=='));\n}\n//# sourceMappingURL=include.js.map","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\nimport { getData } from './include.js';\nconst r = getData();\nimport { read_member_array, read_mapped_map, read_emoji_trie } from './decoder.js';\n// @TODO: This should be lazily loaded\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\nfunction explode_cp(name) {\n return toUtf8CodePoints(name);\n}\nfunction filter_fe0f(cps) {\n return cps.filter(cp => cp != 0xFE0F);\n}\nexport function ens_normalize_post_check(name) {\n for (let label of name.split('.')) {\n let cps = explode_cp(label);\n try {\n for (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n if (cps[i] !== UNDERSCORE) {\n throw new Error(`underscore only allowed at start`);\n }\n }\n if (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n throw new Error(`invalid label extension`);\n }\n }\n catch (err) {\n throw new Error(`Invalid label \"${label}\": ${err.message}`);\n }\n }\n return name;\n}\nexport function ens_normalize(name) {\n return ens_normalize_post_check(normalize(name, filter_fe0f));\n}\nfunction normalize(name, emoji_filter) {\n let input = explode_cp(name).reverse(); // flip for pop\n let output = [];\n while (input.length) {\n let emoji = consume_emoji_reversed(input);\n if (emoji) {\n output.push(...emoji_filter(emoji));\n continue;\n }\n let cp = input.pop();\n if (VALID.has(cp)) {\n output.push(cp);\n continue;\n }\n if (IGNORED.has(cp)) {\n continue;\n }\n let cps = MAPPED[cp];\n if (cps) {\n output.push(...cps);\n continue;\n }\n throw new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n }\n return ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\nfunction nfc(s) {\n return s.normalize('NFC');\n}\nfunction consume_emoji_reversed(cps, eaten) {\n var _a;\n let node = EMOJI_ROOT;\n let emoji;\n let saved;\n let stack = [];\n let pos = cps.length;\n if (eaten)\n eaten.length = 0; // clear input buffer (if needed)\n while (pos) {\n let cp = cps[--pos];\n node = (_a = node.branches.find(x => x.set.has(cp))) === null || _a === void 0 ? void 0 : _a.node;\n if (!node)\n break;\n if (node.save) { // remember\n saved = cp;\n }\n else if (node.check) { // check exclusion\n if (cp === saved)\n break;\n }\n stack.push(cp);\n if (node.fe0f) {\n stack.push(0xFE0F);\n if (pos > 0 && cps[pos - 1] == 0xFE0F)\n pos--; // consume optional FE0F\n }\n if (node.valid) { // this is a valid emoji (so far)\n emoji = stack.slice(); // copy stack\n if (node.valid == 2)\n emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n if (eaten)\n eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n cps.length = pos; // truncate\n }\n }\n return emoji;\n}\n//# sourceMappingURL=lib.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { ens_normalize } from \"./ens-normalize/lib\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nfunction checkComponent(comp) {\n if (comp.length === 0) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n return comp;\n}\nfunction ensNameSplit(name) {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps = [];\n if (name.length === 0) {\n return comps;\n }\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n // There was a stray separator at the end of the name\n if (last >= bytes.length) {\n throw new Error(\"invalid ENS name; empty component\");\n }\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\nexport function ensNormalize(name) {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\nexport function isValidName(name) {\n try {\n return (ensNameSplit(name).length !== 0);\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let result = Zeros;\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n }))) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n }\n else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits) {\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return hexConcat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n return function (value) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${type}`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\n else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${primaryTypes.map((t) => (JSON.stringify(t))).join(\", \")}`, \"types\", types);\n }\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return encoder;\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n return callback(type, value);\n }\n }\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v) => this._visit(subtype, v, callback));\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${JSON.stringify(name)}`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_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 SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${index}]`, set);\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","import { AuthTypes } from \"@walletconnect/types\";\nimport { hashMessage } from \"@ethersproject/hash\";\nimport { recoverAddress } from \"@ethersproject/transactions\";\nconst DEFAULT_RPC_URL = \"https://rpc.walletconnect.com/v1\";\n\nexport async function verifySignature(\n address: string,\n reconstructedMessage: string,\n cacaoSignature: AuthTypes.CacaoSignature,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n): Promise {\n // Determine if this signature is from an EOA or a contract.\n switch (cacaoSignature.t) {\n case \"eip191\":\n return isValidEip191Signature(address, reconstructedMessage, cacaoSignature.s);\n case \"eip1271\":\n return await isValidEip1271Signature(\n address,\n reconstructedMessage,\n cacaoSignature.s,\n chainId,\n projectId,\n baseRpcUrl,\n );\n break;\n default:\n throw new Error(\n `verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${cacaoSignature.t}`,\n );\n }\n}\n\nexport function isValidEip191Signature(\n address: string,\n message: string,\n signature: string,\n): boolean {\n const recoveredAddress = recoverAddress(hashMessage(message), signature);\n return recoveredAddress.toLowerCase() === address.toLowerCase();\n}\n\nexport async function isValidEip1271Signature(\n address: string,\n reconstructedMessage: string,\n signature: string,\n chainId: string,\n projectId: string,\n baseRpcUrl?: string,\n) {\n try {\n const eip1271MagicValue = \"0x1626ba7e\";\n const dynamicTypeOffset = \"0000000000000000000000000000000000000000000000000000000000000040\";\n const dynamicTypeLength = \"0000000000000000000000000000000000000000000000000000000000000041\";\n const nonPrefixedSignature = signature.substring(2);\n const nonPrefixedHashedMessage = hashMessage(reconstructedMessage).substring(2);\n\n const data =\n eip1271MagicValue +\n nonPrefixedHashedMessage +\n dynamicTypeOffset +\n dynamicTypeLength +\n nonPrefixedSignature;\n const response = await fetch(\n `${baseRpcUrl || DEFAULT_RPC_URL}/?chainId=${chainId}&projectId=${projectId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n id: generateJsonRpcId(),\n jsonrpc: \"2.0\",\n method: \"eth_call\",\n params: [{ to: address, data }, \"latest\"],\n }),\n },\n );\n const { result } = await response.json();\n if (!result) return false;\n\n // Remove right-padded zeros from result to get only the concrete recovered value.\n const recoveredValue = result.slice(0, eip1271MagicValue.length);\n return recoveredValue.toLowerCase() === eip1271MagicValue.toLowerCase();\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(\"isValidEip1271Signature: \", error);\n return false;\n }\n}\n\nfunction generateJsonRpcId() {\n return Date.now() + Math.floor(Math.random() * 1000);\n}\n","import { AuthTypes } from \"@walletconnect/types\";\nimport { getCommonValuesInArrays } from \"./misc\";\nimport { verifySignature } from \"./signatures\";\nconst didPrefix = \"did:pkh:\";\nexport const getDidAddressSegments = (iss: string) => {\n return iss?.split(\":\");\n};\n\nexport const getDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return iss.includes(didPrefix) ? segments[3] : segments[1];\n }\n return undefined;\n};\n\nexport const getNamespacedDidChainId = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments[2] + \":\" + segments[3];\n }\n return undefined;\n};\n\nexport const getDidAddress = (iss: string) => {\n const segments = iss && getDidAddressSegments(iss);\n if (segments) {\n return segments.pop();\n }\n return undefined;\n};\n\nexport async function validateSignedCacao(params: { cacao: AuthTypes.Cacao; projectId?: string }) {\n const { cacao, projectId } = params;\n const { s: signature, p: payload } = cacao;\n const reconstructed = formatMessage(payload, payload.iss);\n const walletAddress = getDidAddress(payload.iss) as string;\n const isValid = await verifySignature(\n walletAddress,\n reconstructed,\n signature,\n getDidChainId(payload.iss) as string,\n projectId as string,\n );\n\n return isValid;\n}\n\nexport const formatMessage = (cacao: AuthTypes.FormatMessageParams, iss: string) => {\n const header = `${cacao.domain} wants you to sign in with your Ethereum account:`;\n const walletAddress = getDidAddress(iss);\n\n if (!cacao.aud && !cacao.uri) {\n throw new Error(\"Either `aud` or `uri` is required to construct the message\");\n }\n\n let statement = cacao.statement || undefined;\n const uri = `URI: ${cacao.aud || cacao.uri}`;\n const version = `Version: ${cacao.version}`;\n const chainId = `Chain ID: ${getDidChainId(iss)}`;\n const nonce = `Nonce: ${cacao.nonce}`;\n const issuedAt = `Issued At: ${cacao.iat}`;\n const expirationTime = cacao.exp ? `Expiration Time: ${cacao.exp}` : undefined;\n const notBefore = cacao.nbf ? `Not Before: ${cacao.nbf}` : undefined;\n const requestId = cacao.requestId ? `Request ID: ${cacao.requestId}` : undefined;\n const resources = cacao.resources\n ? `Resources:${cacao.resources.map((resource) => `\\n- ${resource}`).join(\"\")}`\n : undefined;\n const recap = getRecapFromResources(cacao.resources);\n if (recap) {\n const decoded = decodeRecap(recap);\n statement = formatStatementFromRecap(statement, decoded);\n }\n\n const message = [\n header,\n walletAddress,\n ``,\n statement,\n ``,\n uri,\n version,\n chainId,\n nonce,\n issuedAt,\n expirationTime,\n notBefore,\n requestId,\n resources,\n ]\n .filter((val) => val !== undefined && val !== null) // remove unnecessary empty lines\n .join(\"\\n\");\n\n return message;\n};\n\nexport function buildAuthObject(\n requestPayload: AuthTypes.PayloadParams,\n signature: AuthTypes.CacaoSignature,\n iss: string,\n) {\n if (!iss.includes(\"did:pkh:\")) {\n iss = `did:pkh:${iss}`;\n }\n\n const authObject: AuthTypes.Cacao = {\n h: {\n t: \"caip122\",\n },\n p: {\n iss,\n domain: requestPayload.domain,\n aud: requestPayload.aud,\n version: requestPayload.version,\n nonce: requestPayload.nonce,\n iat: requestPayload.iat,\n statement: requestPayload.statement,\n requestId: requestPayload.requestId,\n resources: requestPayload.resources,\n nbf: requestPayload.nbf,\n exp: requestPayload.exp,\n },\n s: signature,\n };\n return authObject;\n}\ntype PopulateAuthPayloadParams = {\n authPayload: AuthTypes.PayloadParams;\n chains: string[];\n methods: string[];\n};\nexport function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams {\n const { authPayload, chains, methods } = params;\n const statement = authPayload.statement || \"\";\n\n if (!chains?.length) return authPayload;\n\n const requested = authPayload.chains;\n const supported = chains;\n\n const supportedChains = getCommonValuesInArrays(requested, supported);\n if (!supportedChains?.length) {\n throw new Error(\"No supported chains\");\n }\n\n const requestedRecaps = getDecodedRecapFromResources(authPayload.resources);\n if (!requestedRecaps) return authPayload;\n\n isValidRecap(requestedRecaps);\n const resource = getRecapResource(requestedRecaps, \"eip155\");\n let updatedResources = authPayload?.resources || [];\n\n if (resource?.length) {\n const actions = getReCapActions(resource);\n const supportedActions = getCommonValuesInArrays(actions, methods);\n if (!supportedActions?.length) {\n throw new Error(\n `Supported methods don't satisfy the requested: ${JSON.stringify(\n actions,\n )}, supported: ${JSON.stringify(methods)}`,\n );\n }\n const formattedActions = assignAbilityToActions(\"request\", supportedActions as string[], {\n chains: supportedChains,\n });\n const updatedRecap = addResourceToRecap(requestedRecaps, \"eip155\", formattedActions);\n // remove recap from resources as we will add the updated one\n updatedResources = authPayload?.resources?.slice(0, -1) || [];\n updatedResources.push(encodeRecap(updatedRecap));\n }\n\n return {\n ...authPayload,\n statement: buildRecapStatement(statement, getRecapFromResources(updatedResources)),\n chains: supportedChains,\n resources: authPayload?.resources || updatedResources.length > 0 ? updatedResources : undefined,\n };\n}\n\nexport function getDecodedRecapFromResources(resources?: string[]) {\n const resource = getRecapFromResources(resources);\n if (!resource) return;\n if (!isRecap(resource)) return;\n return decodeRecap(resource);\n}\n\nexport function recapHasResource(recap: any, resource: string) {\n return recap?.att?.hasOwnProperty(resource);\n}\n\nexport function getRecapResource(recap: any, resource: string): any[] {\n return recap?.att?.[resource] ? Object.keys(recap?.att?.[resource]) : [];\n}\n\nexport function getRecapAbilitiesFromResource(actions: any[]) {\n return actions?.map((action) => Object.keys(action)) || [];\n}\n\nexport function getReCapActions(abilities: any[]) {\n return abilities?.map((ability) => ability.split(\"/\")?.[1]) || [];\n}\n\nexport function base64Encode(input: unknown): string {\n return Buffer.from(JSON.stringify(input)).toString(\"base64\");\n}\n\nexport function base64Decode(encodedString: string): string {\n return JSON.parse(Buffer.from(encodedString, \"base64\").toString(\"utf-8\"));\n}\n\nexport function isValidRecap(recap: any) {\n if (!recap) throw new Error(\"No recap provided, value is undefined\");\n if (!recap.att) throw new Error(\"No `att` property found\");\n const resources = Object.keys(recap.att);\n if (!resources?.length) throw new Error(\"No resources found in `att` property\");\n resources.forEach((resource) => {\n const resourceAbilities = recap.att[resource];\n if (Array.isArray(resourceAbilities))\n throw new Error(`Resource must be an object: ${resource}`);\n if (typeof resourceAbilities !== \"object\")\n throw new Error(`Resource must be an object: ${resource}`);\n if (!Object.keys(resourceAbilities).length)\n throw new Error(`Resource object is empty: ${resource}`);\n\n Object.keys(resourceAbilities).forEach((ability) => {\n const limits = resourceAbilities[ability];\n if (!Array.isArray(limits))\n throw new Error(`Ability limits ${ability} must be an array of objects, found: ${limits}`);\n if (!limits.length)\n throw new Error(`Value of ${ability} is empty array, must be an array with objects`);\n limits.forEach((limit) => {\n if (typeof limit !== \"object\")\n throw new Error(\n `Ability limits (${ability}) must be an array of objects, found: ${limit}`,\n );\n });\n });\n });\n}\n\nexport function createRecap(resource: string, ability: string, actions: string[], limits = {}) {\n actions?.sort((a, b) => a.localeCompare(b));\n return {\n att: { [resource]: assignAbilityToActions(ability, actions, limits) },\n };\n}\n\ntype RecapType = {\n att: {\n [key: string]: Record;\n };\n};\nexport function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]) {\n recap.att[resource] = {\n ...actions,\n };\n const keys = Object.keys(recap.att)?.sort((a, b) => a.localeCompare(b));\n const sorted = keys.reduce(\n (obj, key) => {\n obj.att[key] = recap.att[key];\n return obj;\n },\n { att: {} },\n );\n return sorted;\n}\n\nexport function assignAbilityToActions(ability: string, actions: string[], limits = {}) {\n // sort resources alphabetically\n actions = actions?.sort((a, b) => a.localeCompare(b));\n const abilities = actions.map((action) => {\n return {\n [`${ability}/${action}`]: [limits],\n };\n });\n return Object.assign({}, ...abilities);\n}\n\nexport function encodeRecap(recap: any) {\n isValidRecap(recap);\n // remove the padding from the base64 string as per recap spec\n return `urn:recap:${base64Encode(recap).replace(/=/g, \"\")}`;\n}\n\nexport function decodeRecap(recap: any): RecapType {\n // base64Decode adds padding internally so don't need to add it back if it was removed\n const decoded = base64Decode(recap.replace(\"urn:recap:\", \"\"));\n isValidRecap(decoded);\n return decoded as unknown as RecapType;\n}\n\nexport function createEncodedRecap(resource: string, ability: string, actions: string[]): string {\n const recap = createRecap(resource, ability, actions);\n return encodeRecap(recap);\n}\n\nexport function isRecap(resource: string) {\n return resource && resource.includes(\"urn:recap:\");\n}\n\nexport function mergeEncodedRecaps(recap1: string, recap2: string) {\n const decoded1 = decodeRecap(recap1);\n const decoded2 = decodeRecap(recap2);\n const merged = mergeRecaps(decoded1, decoded2);\n return encodeRecap(merged);\n}\n\nexport function mergeRecaps(recap1: RecapType, recap2: RecapType) {\n isValidRecap(recap1);\n isValidRecap(recap2);\n const keys = Object.keys(recap1.att)\n .concat(Object.keys(recap2.att))\n .sort((a, b) => a.localeCompare(b));\n const mergedRecap = { att: {} };\n keys.forEach((key) => {\n const actions = Object.keys(recap1.att?.[key] || {})\n .concat(Object.keys(recap2.att?.[key] || {}))\n .sort((a, b) => a.localeCompare(b));\n actions.forEach((action) => {\n mergedRecap.att[key] = {\n ...mergedRecap.att[key],\n [action]: recap1.att[key]?.[action] || recap2.att[key]?.[action],\n };\n });\n });\n return mergedRecap;\n}\n\nexport function formatStatementFromRecap(statement = \"\", recap: RecapType) {\n isValidRecap(recap);\n const base = \"I further authorize the stated URI to perform the following actions on my behalf: \";\n\n if (statement.includes(base)) return statement;\n\n const statementForRecap: string[] = [];\n let currentCounter = 0;\n Object.keys(recap.att).forEach((resource) => {\n const actions = Object.keys(recap.att[resource]).map((ability: any) => {\n return {\n ability: ability.split(\"/\")[0],\n action: ability.split(\"/\")[1],\n };\n });\n //\n actions.sort((a, b) => a.action.localeCompare(b.action));\n const uniqueAbilities = {};\n actions.forEach((action: any) => {\n if (!uniqueAbilities[action.ability]) {\n uniqueAbilities[action.ability] = [];\n }\n uniqueAbilities[action.ability].push(action.action);\n });\n const abilities = Object.keys(uniqueAbilities).map((ability) => {\n currentCounter++;\n return `(${currentCounter}) '${ability}': '${uniqueAbilities[ability].join(\n \"', '\",\n )}' for '${resource}'.`;\n });\n statementForRecap.push(abilities.join(\", \").replace(\".,\", \".\"));\n });\n\n const recapStatemet = statementForRecap.join(\" \");\n const recapStatement = `${base}${recapStatemet}`;\n // add a space if there is a statement\n return `${statement ? statement + \" \" : \"\"}${recapStatement}`;\n}\n\nexport function getMethodsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n // methods are only available for eip155 as per the current implementation\n const resource = decoded.att?.eip155;\n if (!resource) return [];\n return Object.keys(resource).map((ability: any) => ability.split(\"/\")[1]);\n}\n\nexport function getChainsFromRecap(recap: string) {\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n const chains: string[] = [];\n\n Object.values(decoded.att).forEach((resource: any) => {\n Object.values(resource).forEach((ability: any) => {\n if (ability?.[0]?.chains) {\n chains.push(ability[0].chains);\n }\n });\n });\n return [...new Set(chains.flat())];\n}\n\nexport function buildRecapStatement(statement: string, recap: unknown) {\n if (!recap) return statement;\n const decoded = decodeRecap(recap);\n isValidRecap(decoded);\n return formatStatementFromRecap(statement, decoded);\n}\n\nexport function getRecapFromResources(resources?: string[]) {\n if (!resources) return;\n // per spec, recap is always the last resource\n const resource = resources?.[resources.length - 1];\n return isRecap(resource) ? resource : undefined;\n}\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === \"number\" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = require(\"@stablelib/int\");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintBE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintBE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"readUintLE supports only bitLengths divisible by 8\");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error(\"readUintLE: array is too short for the given bitLength\");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintBE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintBE value must be an integer\");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error(\"writeUintLE supports only bitLengths divisible by 8\");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error(\"writeUintLE value must be an integer\");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number (\"double\") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // \"expa\" -- ChaCha's \"sigma\" constant\n var j1 = 0x3320646E; // \"nd 3\" for 32-byte keys\n var j2 = 0x79622D32; // \"2-by\"\n var j3 = 0x6B206574; // \"te k\"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error(\"ChaCha: key size must be 32 bytes\");\n }\n if (dst.length < src.length) {\n throw new Error(\"ChaCha: destination is shorter than source\");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error(\"ChaCha nonce must be 8 or 12 bytes\");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error(\"ChaCha nonce with counter must be 16 bytes\");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error(\"ChaCha: counter overflow\");\n }\n}\n//# sourceMappingURL=chacha.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they'll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon's Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\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 this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var 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);\n 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);\n d0 &= 0x1fff;\n var 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);\n 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);\n d1 &= 0x1fff;\n var 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);\n 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);\n d2 &= 0x1fff;\n var 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);\n 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);\n d3 &= 0x1fff;\n var 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);\n 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);\n d4 &= 0x1fff;\n var 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);\n 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);\n d5 &= 0x1fff;\n var 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);\n 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);\n d6 &= 0x1fff;\n var 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);\n 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);\n d7 &= 0x1fff;\n var 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);\n 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);\n d8 &= 0x1fff;\n var 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);\n 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);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\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 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 Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\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 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 mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n 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 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 mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished — others just return saved result.\n if (this._finished) {\n throw new Error(\"Poly1305 was finished\");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar chacha_1 = require(\"@stablelib/chacha\");\nvar poly1305_1 = require(\"@stablelib/poly1305\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nvar binary_1 = require(\"@stablelib/binary\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error(\"ChaCha20Poly1305 needs 32-byte key\");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can \"simplify\" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * (\"IV\"), or full 16-byte counter (called \"32-bit fixed-common part\")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error(\"ChaCha20Poly1305: incorrect nonce length\");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we'll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error(\"ChaCha20Poly1305: incorrect destination length\");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== \"undefined\" &&\n typeof h.restoreState !== \"undefined\" &&\n typeof h.cleanSavedState !== \"undefined\");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = require(\"@stablelib/hash\");\nvar constant_time_1 = require(\"@stablelib/constant-time\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't reset() because hash doesn't implement restoreState()\");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't saveState() because hash doesn't implement it\");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error(\"hmac: can't restoreState() because hash doesn't implement it\");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error(\"hmac: can't cleanSavedState() because hash doesn't implement it\");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error(\"Authentication error\");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hmac_1 = require(\"@stablelib/hmac\");\nvar wipe_1 = require(\"@stablelib/wipe\");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== 'undefined'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Browser random byte generator is not available.\");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeRandomSource = void 0;\nconst wipe_1 = require(\"@stablelib/wipe\");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (typeof require !== \"undefined\") {\n const nodeCrypto = require(\"crypto\");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error(\"Node.js random byte generator is not available.\");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error(\"NodeRandomSource: got fewer bytes than requested\");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SystemRandomSource = void 0;\nconst browser_1 = require(\"./browser\");\nconst node_1 = require(\"./node\");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = \"\";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Browser\";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = \"Node\";\n return;\n }\n // No sources, we're out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error(\"System random byte generator is not available.\");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = require(\"./source/system\");\nconst binary_1 = require(\"@stablelib/binary\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It's not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error(\"randomString charset is too short\");\n }\n if (charset.length > 256) {\n throw new Error(\"randomString charset is too long\");\n }\n let out = '';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, \"0123456789\")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let 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 const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer's public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume \"contributory behavior\". Specially,\n * > contributory behavior means that both parties' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party's\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect secret key length\");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error(\"X25519: incorrect public key length\");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error(\"X25519: invalid shared key\");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map","export function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return globalThis.Buffer.alloc(size);\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return globalThis.Buffer.allocUnsafe(size);\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return output;\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","var encode_1 = encode;\nvar MSB = 128, REST = 127, MSBALL = ~REST, INT = Math.pow(2, 31);\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n while (num >= INT) {\n out[offset++] = num & 255 | MSB;\n num /= 128;\n }\n while (num & MSBALL) {\n out[offset++] = num & 255 | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 128, REST$1 = 127;\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint');\n }\n b = buf[counter++];\n res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1);\n read.bytes = counter - offset;\n return res;\n}\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\nvar length = function (value) {\n return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;\n};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;","import varint from '../vendor/varint.js';\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset);\n return [\n code,\n varint.decode.bytes\n ];\n};\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset);\n return target;\n};\nexport const encodingLength = int => {\n return varint.encodingLength(int);\n};","import {\n coerce,\n equals as equalBytes\n} from '../bytes.js';\nimport * as varint from '../varint.js';\nexport const create = (code, digest) => {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\n const bytes = new Uint8Array(digestOffset + size);\n varint.encodeTo(code, bytes, 0);\n varint.encodeTo(size, bytes, sizeOffset);\n bytes.set(digest, digestOffset);\n return new Digest(code, size, digest, bytes);\n};\nexport const decode = multihash => {\n const bytes = coerce(multihash);\n const [code, sizeOffset] = varint.decode(bytes);\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset));\n const digest = bytes.subarray(sizeOffset + digestOffset);\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n};\nexport const equals = (a, b) => {\n if (a === b) {\n return true;\n } else {\n return a.code === b.code && a.size === b.size && equalBytes(a.bytes, b.bytes);\n }\n};\nexport class Digest {\n constructor(code, size, digest, bytes) {\n this.code = code;\n this.size = size;\n this.digest = digest;\n this.bytes = bytes;\n }\n}","import * as Digest from './digest.js';\nexport const from = ({name, code, encode}) => new Hasher(name, code, encode);\nexport class Hasher {\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\n }\n digest(input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input);\n return result instanceof Uint8Array ? Digest.create(this.code, result) : result.then(digest => Digest.create(this.code, digest));\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}","import { from } from './hasher.js';\nconst sha = name => async data => new Uint8Array(await crypto.subtle.digest(name, data));\nexport const sha256 = from({\n name: 'sha2-256',\n code: 18,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 19,\n encode: sha('SHA-512')\n});","import { coerce } from '../bytes.js';\nimport * as Digest from './digest.js';\nconst code = 0;\nconst name = 'identity';\nconst encode = coerce;\nconst digest = input => Digest.create(code, encode(input));\nexport const identity = {\n code,\n name,\n encode,\n digest\n};","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(string, 'utf8');\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar binary_1 = require(\"@stablelib/binary\");\nvar wipe_1 = require(\"@stablelib/wipe\");\nexports.DIGEST_LENGTH = 64;\nexports.BLOCK_SIZE = 128;\n/**\n * SHA-2-512 cryptographic hash algorithm.\n */\nvar SHA512 = /** @class */ (function () {\n function SHA512() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._stateHi = new Int32Array(8); // hash state, high bytes\n this._stateLo = new Int32Array(8); // hash state, low bytes\n this._tempHi = new Int32Array(16); // temporary state, high bytes\n this._tempLo = new Int32Array(16); // temporary state, low bytes\n this._buffer = new Uint8Array(256); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA512.prototype._initState = function () {\n this._stateHi[0] = 0x6a09e667;\n this._stateHi[1] = 0xbb67ae85;\n this._stateHi[2] = 0x3c6ef372;\n this._stateHi[3] = 0xa54ff53a;\n this._stateHi[4] = 0x510e527f;\n this._stateHi[5] = 0x9b05688c;\n this._stateHi[6] = 0x1f83d9ab;\n this._stateHi[7] = 0x5be0cd19;\n this._stateLo[0] = 0xf3bcc908;\n this._stateLo[1] = 0x84caa73b;\n this._stateLo[2] = 0xfe94f82b;\n this._stateLo[3] = 0x5f1d36f1;\n this._stateLo[4] = 0xade682d1;\n this._stateLo[5] = 0x2b3e6c1f;\n this._stateLo[6] = 0xfb41bd6b;\n this._stateLo[7] = 0x137e2179;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA512.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA512.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._tempHi);\n wipe_1.wipe(this._tempLo);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA512.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error(\"SHA512: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA512.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 128 < 112) ? 128 : 256;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 8; i++) {\n binary_1.writeUint32BE(this._stateHi[i], out, i * 8);\n binary_1.writeUint32BE(this._stateLo[i], out, i * 8 + 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA512.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be\n * used with restoreState(). Only chain value is saved, not buffers or\n * other state variables.\n */\n SHA512.prototype.saveState = function () {\n if (this._finished) {\n throw new Error(\"SHA256: cannot save finished state\");\n }\n return {\n stateHi: new Int32Array(this._stateHi),\n stateLo: new Int32Array(this._stateLo),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Restores state saved by\n * saveState() and sets bytesHashed to the given value.\n */\n SHA512.prototype.restoreState = function (savedState) {\n this._stateHi.set(savedState.stateHi);\n this._stateLo.set(savedState.stateLo);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA512.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.stateHi);\n wipe_1.wipe(savedState.stateLo);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA512;\n}());\nexports.SHA512 = SHA512;\n// Constants\nvar K = new Int32Array([\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]);\nfunction hashBlocks(wh, wl, hh, hl, m, pos, len) {\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var h, l;\n var th, tl;\n var a, b, c, d;\n while (len >= 128) {\n for (var i = 0; i < 16; i++) {\n var j = 8 * i + pos;\n wh[i] = binary_1.readUint32BE(m, j);\n wl[i] = binary_1.readUint32BE(m, j + 4);\n }\n for (var i = 0; i < 80; i++) {\n var bh0 = ah0;\n var bh1 = ah1;\n var bh2 = ah2;\n var bh3 = ah3;\n var bh4 = ah4;\n var bh5 = ah5;\n var bh6 = ah6;\n var bh7 = ah7;\n var bl0 = al0;\n var bl1 = al1;\n var bl2 = al2;\n var bl3 = al3;\n var bl4 = al4;\n var bl5 = al5;\n var bl6 = al6;\n var bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) |\n (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) |\n (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) |\n (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) |\n (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\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 al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (var j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) |\n (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) |\n (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) |\n (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) |\n (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n len -= 128;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA512();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha512.js.map","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;\n/**\n * Package ed25519 implements Ed25519 public-key signature algorithm.\n */\nconst random_1 = require(\"@stablelib/random\");\nconst sha512_1 = require(\"@stablelib/sha512\");\nconst wipe_1 = require(\"@stablelib/wipe\");\nexports.SIGNATURE_LENGTH = 64;\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 64;\nexports.SEED_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst gf0 = gf();\nconst gf1 = gf([1]);\nconst D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203\n]);\nconst D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406\n]);\nconst X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169\n]);\nconst Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666\n]);\nconst I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83\n]);\nfunction set25519(r, a) {\n for (let i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let 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}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let 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 const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction verify32(x, y) {\n let d = 0;\n for (let i = 0; i < 32; i++) {\n d |= x[i] ^ y[i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction neq25519(a, b) {\n const c = new Uint8Array(32);\n const d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return verify32(c, d);\n}\nfunction par25519(a) {\n const d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\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 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 // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\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}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 253; a >= 0; a--) {\n square(c, c);\n if (a !== 2 && a !== 4) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction pow2523(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 250; a >= 0; a--) {\n square(c, c);\n if (a !== 1) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction edadd(p, q) {\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n sub(a, p[1], p[0]);\n sub(t, q[1], q[0]);\n mul(a, a, t);\n add(b, p[0], p[1]);\n add(t, q[0], q[1]);\n mul(b, b, t);\n mul(c, p[3], q[3]);\n mul(c, c, D2);\n mul(d, p[2], q[2]);\n add(d, d, d);\n sub(e, b, a);\n sub(f, d, c);\n add(g, d, c);\n add(h, b, a);\n mul(p[0], e, f);\n mul(p[1], h, g);\n mul(p[2], g, f);\n mul(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n for (let i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n const tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n mul(tx, p[0], zi);\n mul(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (let i = 255; i >= 0; --i) {\n const b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n edadd(q, p);\n edadd(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n const q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n mul(q[3], X, Y);\n scalarmult(p, q, s);\n}\n// Generates key pair from secret 32-byte seed.\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SEED_LENGTH) {\n throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);\n }\n const d = (0, sha512_1.hash)(seed);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const publicKey = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n scalarbase(p, d);\n pack(publicKey, p);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\nfunction extractPublicKeyFromSecretKey(secretKey) {\n if (secretKey.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n return new Uint8Array(secretKey.subarray(32));\n}\nexports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;\nconst L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,\n 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 let carry;\n let i;\n let j;\n let 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++) {\n x[j] -= carry * L[j];\n }\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n const x = new Float64Array(64);\n for (let i = 0; i < 64; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 64; i++) {\n r[i] = 0;\n }\n modL(r, x);\n}\n// Returns 64-byte signature of the message under the 64-byte secret key.\nfunction sign(secretKey, message) {\n const x = new Float64Array(64);\n const p = [gf(), gf(), gf(), gf()];\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const signature = new Uint8Array(64);\n signature.set(d.subarray(32), 32);\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(32));\n hs.update(message);\n const r = hs.digest();\n hs.clean();\n reduce(r);\n scalarbase(p, r);\n pack(signature, p);\n hs.reset();\n hs.update(signature.subarray(0, 32));\n hs.update(secretKey.subarray(32));\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n for (let i = 0; i < 32; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 32; i++) {\n for (let j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n modL(signature.subarray(32), x);\n return signature;\n}\nexports.sign = sign;\nfunction unpackneg(r, p) {\n const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n square(num, r[1]);\n mul(den, num, D);\n sub(num, num, r[2]);\n add(den, r[2], den);\n square(den2, den);\n square(den4, den2);\n mul(den6, den4, den2);\n mul(t, den6, num);\n mul(t, t, den);\n pow2523(t, t);\n mul(t, t, num);\n mul(t, t, den);\n mul(t, t, den);\n mul(r[0], t, den);\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n mul(r[0], r[0], I);\n }\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n return -1;\n }\n if (par25519(r[0]) === (p[31] >> 7)) {\n sub(r[0], gf0, r[0]);\n }\n mul(r[3], r[0], r[1]);\n return 0;\n}\nfunction verify(publicKey, message, signature) {\n const t = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n const q = [gf(), gf(), gf(), gf()];\n if (signature.length !== exports.SIGNATURE_LENGTH) {\n throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);\n }\n if (unpackneg(q, publicKey)) {\n return false;\n }\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(0, 32));\n hs.update(publicKey);\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, signature.subarray(32));\n edadd(p, q);\n pack(t, p);\n if (verify32(signature, t)) {\n return false;\n }\n return true;\n}\nexports.verify = verify;\n/**\n * Convert Ed25519 public key to X25519 public key.\n *\n * Throws if given an invalid public key.\n */\nfunction convertPublicKeyToX25519(publicKey) {\n let q = [gf(), gf(), gf(), gf()];\n if (unpackneg(q, publicKey)) {\n throw new Error(\"Ed25519: invalid public key\");\n }\n // Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n let a = gf();\n let b = gf();\n let y = q[1];\n add(a, gf1, y);\n sub(b, gf1, y);\n inv25519(b, b);\n mul(a, a, b);\n let z = new Uint8Array(32);\n pack25519(z, a);\n return z;\n}\nexports.convertPublicKeyToX25519 = convertPublicKeyToX25519;\n/**\n * Convert Ed25519 secret (private) key to X25519 secret key.\n */\nfunction convertSecretKeyToX25519(secretKey) {\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const o = new Uint8Array(d.subarray(0, 32));\n (0, wipe_1.wipe)(d);\n return o;\n}\nexports.convertSecretKeyToX25519 = convertSecretKeyToX25519;\n//# sourceMappingURL=ed25519.js.map","export const JWT_IRIDIUM_ALG = \"EdDSA\";\nexport const JWT_IRIDIUM_TYP = \"JWT\";\nexport const JWT_DELIMITER = \".\";\nexport const JWT_ENCODING = \"base64url\";\nexport const JSON_ENCODING = \"utf8\";\nexport const DATA_ENCODING = \"utf8\";\nexport const DID_DELIMITER = \":\";\nexport const DID_PREFIX = \"did\";\nexport const DID_METHOD = \"key\";\nexport const MULTICODEC_ED25519_ENCODING = \"base58btc\";\nexport const MULTICODEC_ED25519_BASE = \"z\";\nexport const MULTICODEC_ED25519_HEADER = \"K36\";\nexport const MULTICODEC_ED25519_LENGTH = 32;\nexport const KEY_PAIR_SEED_LENGTH = 32;\n//# sourceMappingURL=constants.js.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","const JSONStringify = data => JSON.stringify(data, (_, value) => typeof value === \"bigint\" ? value.toString() + \"n\" : value);\nconst JSONParse = json => {\n const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n const serializedData = json.replace(numbersBiggerThanMaxInt, \"$1\\\"$2n\\\"$3\");\n return JSON.parse(serializedData, (_, value) => {\n const isCustomFormatBigInt = typeof value === \"string\" && value.match(/^\\d+n$/);\n if (isCustomFormatBigInt)\n return BigInt(value.substring(0, value.length - 1));\n return value;\n });\n};\nexport function safeJsonParse(value) {\n if (typeof value !== \"string\") {\n throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n }\n try {\n return JSONParse(value);\n }\n catch (_a) {\n return value;\n }\n}\nexport function safeJsonStringify(value) {\n return typeof value === \"string\" ? value : JSONStringify(value) || \"\";\n}\n//# sourceMappingURL=index.js.map","import { concat } from \"uint8arrays/concat\";\nimport { toString } from \"uint8arrays/to-string\";\nimport { fromString } from \"uint8arrays/from-string\";\nimport { safeJsonParse, safeJsonStringify } from \"@walletconnect/safe-json\";\nimport { DATA_ENCODING, DID_DELIMITER, DID_METHOD, DID_PREFIX, JSON_ENCODING, JWT_DELIMITER, JWT_ENCODING, MULTICODEC_ED25519_BASE, MULTICODEC_ED25519_ENCODING, MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_LENGTH, } from \"./constants\";\nexport function decodeJSON(str) {\n return safeJsonParse(toString(fromString(str, JWT_ENCODING), JSON_ENCODING));\n}\nexport function encodeJSON(val) {\n return toString(fromString(safeJsonStringify(val), JSON_ENCODING), JWT_ENCODING);\n}\nexport function encodeIss(publicKey) {\n const header = fromString(MULTICODEC_ED25519_HEADER, MULTICODEC_ED25519_ENCODING);\n const multicodec = MULTICODEC_ED25519_BASE +\n toString(concat([header, publicKey]), MULTICODEC_ED25519_ENCODING);\n return [DID_PREFIX, DID_METHOD, multicodec].join(DID_DELIMITER);\n}\nexport function decodeIss(issuer) {\n const [prefix, method, multicodec] = issuer.split(DID_DELIMITER);\n if (prefix !== DID_PREFIX || method !== DID_METHOD) {\n throw new Error(`Issuer must be a DID with method \"key\"`);\n }\n const base = multicodec.slice(0, 1);\n if (base !== MULTICODEC_ED25519_BASE) {\n throw new Error(`Issuer must be a key in mulicodec format`);\n }\n const bytes = fromString(multicodec.slice(1), MULTICODEC_ED25519_ENCODING);\n const type = toString(bytes.slice(0, 2), MULTICODEC_ED25519_ENCODING);\n if (type !== MULTICODEC_ED25519_HEADER) {\n throw new Error(`Issuer must be a public key with type \"Ed25519\"`);\n }\n const publicKey = bytes.slice(2);\n if (publicKey.length !== MULTICODEC_ED25519_LENGTH) {\n throw new Error(`Issuer must be a public key with length 32 bytes`);\n }\n return publicKey;\n}\nexport function encodeSig(bytes) {\n return toString(bytes, JWT_ENCODING);\n}\nexport function decodeSig(encoded) {\n return fromString(encoded, JWT_ENCODING);\n}\nexport function encodeData(params) {\n return fromString([encodeJSON(params.header), encodeJSON(params.payload)].join(JWT_DELIMITER), DATA_ENCODING);\n}\nexport function decodeData(data) {\n const params = toString(data, DATA_ENCODING).split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n return { header, payload };\n}\nexport function encodeJWT(params) {\n return [\n encodeJSON(params.header),\n encodeJSON(params.payload),\n encodeSig(params.signature),\n ].join(JWT_DELIMITER);\n}\nexport function decodeJWT(jwt) {\n const params = jwt.split(JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n const signature = decodeSig(params[2]);\n const data = fromString(params.slice(0, 2).join(JWT_DELIMITER), DATA_ENCODING);\n return { header, payload, signature, data };\n}\n//# sourceMappingURL=utils.js.map","import { ChaCha20Poly1305 } from \"@stablelib/chacha20poly1305\";\nimport { HKDF } from \"@stablelib/hkdf\";\nimport { randomBytes } from \"@stablelib/random\";\nimport { hash, SHA256 } from \"@stablelib/sha256\";\nimport * as x25519 from \"@stablelib/x25519\";\nimport { CryptoTypes } from \"@walletconnect/types\";\nimport { concat, fromString, toString } from \"uint8arrays\";\nimport { ec as EC } from \"elliptic\";\nimport { decodeJWT } from \"@walletconnect/relay-auth\";\n\nexport const BASE10 = \"base10\";\nexport const BASE16 = \"base16\";\nexport const BASE64 = \"base64pad\";\nexport const BASE64URL = \"base64url\";\nexport const UTF8 = \"utf8\";\n\nexport const TYPE_0 = 0;\nexport const TYPE_1 = 1;\nexport const TYPE_2 = 2;\n\nexport type P256KeyDataType = {\n crv: \"P-256\";\n ext: true;\n key_ops: [\"verify\"];\n kty: string;\n x: string;\n y: string;\n};\n\nconst ZERO_INDEX = 0;\nconst TYPE_LENGTH = 1;\nconst IV_LENGTH = 12;\nconst KEY_LENGTH = 32;\n\nexport function generateKeyPair(): CryptoTypes.KeyPair {\n const keyPair = x25519.generateKeyPair();\n return {\n privateKey: toString(keyPair.secretKey, BASE16),\n publicKey: toString(keyPair.publicKey, BASE16),\n };\n}\n\nexport function generateRandomBytes32(): string {\n const random = randomBytes(KEY_LENGTH);\n return toString(random, BASE16);\n}\n\nexport function deriveSymKey(privateKeyA: string, publicKeyB: string): string {\n const sharedKey = x25519.sharedKey(\n fromString(privateKeyA, BASE16),\n fromString(publicKeyB, BASE16),\n true,\n );\n const hkdf = new HKDF(SHA256, sharedKey);\n const symKey = hkdf.expand(KEY_LENGTH);\n return toString(symKey, BASE16);\n}\n\nexport function hashKey(key: string): string {\n const result = hash(fromString(key, BASE16));\n return toString(result, BASE16);\n}\n\nexport function hashMessage(message: string): string {\n const result = hash(fromString(message, UTF8));\n return toString(result, BASE16);\n}\n\nexport function encodeTypeByte(type: number): Uint8Array {\n return fromString(`${type}`, BASE10);\n}\n\nexport function decodeTypeByte(byte: Uint8Array): number {\n return Number(toString(byte, BASE10));\n}\n\nexport function encrypt(params: CryptoTypes.EncryptParams): string {\n const type = encodeTypeByte(typeof params.type !== \"undefined\" ? params.type : TYPE_0);\n if (decodeTypeByte(type) === TYPE_1 && typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n const senderPublicKey =\n typeof params.senderPublicKey !== \"undefined\"\n ? fromString(params.senderPublicKey, BASE16)\n : undefined;\n\n const iv =\n typeof params.iv !== \"undefined\" ? fromString(params.iv, BASE16) : randomBytes(IV_LENGTH);\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const sealed = box.seal(iv, fromString(params.message, UTF8));\n return serialize({ type, sealed, iv, senderPublicKey, encoding: params.encoding });\n}\n\nexport function encodeTypeTwoEnvelope(\n message: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const type = encodeTypeByte(TYPE_2);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n const sealed = fromString(message, UTF8);\n return serialize({ type, sealed, iv, encoding });\n}\n\nexport function decrypt(params: CryptoTypes.DecryptParams): string {\n const box = new ChaCha20Poly1305(fromString(params.symKey, BASE16));\n const { sealed, iv } = deserialize({ encoded: params.encoded, encoding: params?.encoding });\n const message = box.open(iv, sealed);\n if (message === null) throw new Error(\"Failed to decrypt\");\n return toString(message, UTF8);\n}\n\nexport function decodeTypeTwoEnvelope(\n encoded: string,\n encoding?: CryptoTypes.EncodingType,\n): string {\n const { sealed } = deserialize({ encoded, encoding });\n return toString(sealed, UTF8);\n}\n\nexport function serialize(params: CryptoTypes.EncodingParams): string {\n const { encoding = BASE64 } = params;\n\n if (decodeTypeByte(params.type) === TYPE_2) {\n return toString(concat([params.type, params.sealed]), encoding);\n }\n if (decodeTypeByte(params.type) === TYPE_1) {\n if (typeof params.senderPublicKey === \"undefined\") {\n throw new Error(\"Missing sender public key for type 1 envelope\");\n }\n return toString(\n concat([params.type, params.senderPublicKey, params.iv, params.sealed]),\n encoding,\n );\n }\n // default to type 0 envelope\n return toString(concat([params.type, params.iv, params.sealed]), encoding);\n}\n\nexport function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams {\n const { encoded, encoding = BASE64 } = params;\n const bytes = fromString(encoded, encoding);\n const type = bytes.slice(ZERO_INDEX, TYPE_LENGTH);\n const slice1 = TYPE_LENGTH;\n if (decodeTypeByte(type) === TYPE_1) {\n const slice2 = slice1 + KEY_LENGTH;\n const slice3 = slice2 + IV_LENGTH;\n const senderPublicKey = bytes.slice(slice1, slice2);\n const iv = bytes.slice(slice2, slice3);\n const sealed = bytes.slice(slice3);\n return { type, sealed, iv, senderPublicKey };\n }\n if (decodeTypeByte(type) === TYPE_2) {\n const sealed = bytes.slice(slice1);\n // iv is not used in type 2 envelopes\n const iv = randomBytes(IV_LENGTH);\n return { type, sealed, iv };\n }\n // default to type 0 envelope\n const slice2 = slice1 + IV_LENGTH;\n const iv = bytes.slice(slice1, slice2);\n const sealed = bytes.slice(slice2);\n return { type, sealed, iv };\n}\n\nexport function validateDecoding(\n encoded: string,\n opts?: CryptoTypes.DecodeOptions,\n): CryptoTypes.EncodingValidation {\n const deserialized = deserialize({ encoded, encoding: opts?.encoding });\n return validateEncoding({\n type: decodeTypeByte(deserialized.type),\n senderPublicKey:\n typeof deserialized.senderPublicKey !== \"undefined\"\n ? toString(deserialized.senderPublicKey, BASE16)\n : undefined,\n receiverPublicKey: opts?.receiverPublicKey,\n });\n}\n\nexport function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation {\n const type = opts?.type || TYPE_0;\n if (type === TYPE_1) {\n if (typeof opts?.senderPublicKey === \"undefined\") {\n throw new Error(\"missing sender public key\");\n }\n if (typeof opts?.receiverPublicKey === \"undefined\") {\n throw new Error(\"missing receiver public key\");\n }\n }\n return {\n type,\n senderPublicKey: opts?.senderPublicKey,\n receiverPublicKey: opts?.receiverPublicKey,\n };\n}\n\nexport function isTypeOneEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return (\n result.type === TYPE_1 &&\n typeof result.senderPublicKey === \"string\" &&\n typeof result.receiverPublicKey === \"string\"\n );\n}\n\nexport function isTypeTwoEnvelope(\n result: CryptoTypes.EncodingValidation,\n): result is CryptoTypes.TypeOneParams {\n return result.type === TYPE_2;\n}\nexport function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair {\n const ec = new EC(\"p256\");\n const key = ec.keyFromPublic(\n {\n x: Buffer.from(keyData.x, \"base64\").toString(\"hex\"),\n y: Buffer.from(keyData.y, \"base64\").toString(\"hex\"),\n },\n \"hex\",\n );\n return key;\n}\n\nfunction base64UrlToBase64(base64Url: string) {\n let base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = base64.length % 4;\n if (padding > 0) {\n base64 += \"=\".repeat(4 - padding);\n }\n return base64;\n}\n\nfunction base64UrlDecode(base64Url: string) {\n return Buffer.from(base64UrlToBase64(base64Url), \"base64\");\n}\n\nexport function verifyP256Jwt(token: string, keyData: P256KeyDataType) {\n const [headerBase64Url, payloadBase64Url, signatureBase64Url] = token.split(\".\");\n\n // Decode the signature\n const signatureBuffer = base64UrlDecode(signatureBase64Url);\n\n // Check if signature length is correct (64 bytes for P-256)\n if (signatureBuffer.length !== 64) {\n throw new Error(\"Invalid signature length\");\n }\n\n // Extract r and s from the signature\n const r = signatureBuffer.slice(0, 32).toString(\"hex\");\n const s = signatureBuffer.slice(32, 64).toString(\"hex\");\n\n // Create the signing input\n const signingInput = `${headerBase64Url}.${payloadBase64Url}`;\n\n const sha256 = new SHA256();\n const buffer = sha256.update(Buffer.from(signingInput)).digest();\n\n const key = getCryptoKeyFromKeyData(keyData);\n\n // Convert the hash to hex format\n const hashHex = Buffer.from(buffer).toString(\"hex\");\n\n // Verify the signature\n const isValid = key.verify(hashHex, { r, s });\n\n if (!isValid) {\n throw new Error(\"Invalid signature\");\n }\n const data = decodeJWT(token) as unknown as { payload: T };\n return data.payload;\n}\n","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","import { RELAY_JSONRPC } from \"@walletconnect/relay-api\";\nimport { RelayerTypes } from \"@walletconnect/types\";\n\nexport const RELAYER_DEFAULT_PROTOCOL = \"irn\";\n\nexport function getRelayProtocolName(\n opts?: RelayerTypes.RequestOptions,\n): RelayerTypes.ProtocolOptions {\n return opts?.relay || { protocol: RELAYER_DEFAULT_PROTOCOL };\n}\n\nexport function getRelayProtocolApi(protocol: string) {\n const jsonrpc = RELAY_JSONRPC[protocol];\n if (typeof jsonrpc === \"undefined\") {\n throw new Error(`Relay Protocol not supported: ${protocol}`);\n }\n return jsonrpc;\n}\n","import * as qs from \"query-string\";\nimport { EngineTypes, RelayerTypes } from \"@walletconnect/types\";\n\n// -- uri -------------------------------------------------- //\n\nexport function parseRelayParams(params: any, delimiter = \"-\"): RelayerTypes.ProtocolOptions {\n const relay: any = {};\n const prefix = \"relay\" + delimiter;\n Object.keys(params).forEach((key) => {\n if (key.startsWith(prefix)) {\n const name = key.replace(prefix, \"\");\n const value = params[key];\n relay[name] = value;\n }\n });\n return relay;\n}\n\nexport function parseUri(str: string): EngineTypes.UriParameters {\n // remove android schema prefix\n str = str.includes(\"wc://\") ? str.replace(\"wc://\", \"\") : str;\n // remove ios schema prefix\n str = str.includes(\"wc:\") ? str.replace(\"wc:\", \"\") : str;\n const pathStart: number = str.indexOf(\":\");\n const pathEnd: number | undefined = str.indexOf(\"?\") !== -1 ? str.indexOf(\"?\") : undefined;\n const protocol: string = str.substring(0, pathStart);\n const path: string = str.substring(pathStart + 1, pathEnd);\n const requiredValues = path.split(\"@\");\n const queryString: string = typeof pathEnd !== \"undefined\" ? str.substring(pathEnd) : \"\";\n const queryParams = qs.parse(queryString);\n const methods =\n typeof queryParams.methods === \"string\" ? queryParams.methods.split(\",\") : undefined;\n const result = {\n protocol,\n topic: parseTopic(requiredValues[0]),\n version: parseInt(requiredValues[1], 10),\n symKey: queryParams.symKey as string,\n relay: parseRelayParams(queryParams),\n methods,\n expiryTimestamp: queryParams.expiryTimestamp\n ? parseInt(queryParams.expiryTimestamp as string, 10)\n : undefined,\n };\n return result;\n}\n\nexport function parseTopic(topic: string): string {\n return topic.startsWith(\"//\") ? topic.substring(2) : topic;\n}\n\nexport function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter = \"-\") {\n const prefix = \"relay\";\n const params: any = {};\n Object.keys(relay).forEach((key) => {\n const k = prefix + delimiter + key;\n if (relay[key]) {\n params[k] = relay[key];\n }\n });\n return params;\n}\n\nexport function formatUri(params: EngineTypes.UriParameters): string {\n return (\n `${params.protocol}:${params.topic}@${params.version}?` +\n qs.stringify({\n symKey: params.symKey,\n ...formatRelayParams(params.relay),\n expiryTimestamp: params.expiryTimestamp,\n ...(params.methods ? { methods: params.methods.join(\",\") } : {}),\n })\n );\n}\n\nexport function getLinkModeURL(\n universalLink: string,\n topic: string,\n encodedEnvelope: string,\n): string {\n return `${universalLink}?wc_ev=${encodedEnvelope}&topic=${topic}`;\n}\n","import { ProposalTypes, SessionTypes } from \"@walletconnect/types\";\nimport { mergeArrays } from \"./misc\";\nimport { isConformingNamespaces, isValidNamespaces, isValidObject } from \"./validators\";\n\nexport function getAccountsChains(accounts: SessionTypes.Namespace[\"accounts\"]) {\n const chains: string[] = [];\n accounts.forEach((account) => {\n const [chain, chainId] = account.split(\":\");\n chains.push(`${chain}:${chainId}`);\n });\n\n return chains;\n}\n\nexport function getNamespacesChains(namespaces: SessionTypes.Namespaces) {\n const chains: string[] = [];\n Object.values(namespaces).forEach((namespace) => {\n chains.push(...getAccountsChains(namespace.accounts));\n });\n\n return chains;\n}\n\nexport function getNamespacesMethodsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const methods: SessionTypes.Namespace[\"methods\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) methods.push(...namespace.methods);\n });\n\n return methods;\n}\n\nexport function getNamespacesEventsForChainId(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n) {\n const events: SessionTypes.Namespace[\"events\"] = [];\n Object.values(namespaces).forEach((namespace) => {\n const chains = getAccountsChains(namespace.accounts);\n if (chains.includes(chainId)) events.push(...namespace.events);\n });\n\n return events;\n}\n\nexport function getRequiredNamespacesFromNamespaces(\n namespaces: SessionTypes.Namespaces,\n caller: string,\n): ProposalTypes.RequiredNamespaces {\n const validNamespacesError = isValidNamespaces(namespaces, caller);\n if (validNamespacesError) throw new Error(validNamespacesError.message);\n\n const required = {};\n for (const [namespace, values] of Object.entries(namespaces)) {\n required[namespace] = {\n methods: values.methods,\n events: values.events,\n chains: values.accounts.map((account) => `${account.split(\":\")[0]}:${account.split(\":\")[1]}`),\n };\n }\n return required;\n}\n\nexport type BuildApprovedNamespacesParams = {\n proposal: ProposalTypes.Struct;\n supportedNamespaces: Record<\n string,\n { chains: string[]; methods: string[]; events: string[]; accounts: string[] }\n >;\n};\n\n/**\n * util designed for Wallets that builds namespaces structure by provided supported chains, methods, events & accounts.\n * It takes required & optional namespaces provided in the session proposal\n * along with the supported chains/methods/events/accounts by the wallet and returns a structured namespaces object\n * @param {BuildApprovedNamespacesParams} params\n * @returns {SessionTypes.Namespaces}\n */\nexport function buildApprovedNamespaces(\n params: BuildApprovedNamespacesParams,\n): SessionTypes.Namespaces {\n const {\n proposal: { requiredNamespaces, optionalNamespaces = {} },\n supportedNamespaces,\n } = params;\n const normalizedRequired = normalizeNamespaces(requiredNamespaces);\n const normalizedOptional = normalizeNamespaces(optionalNamespaces);\n\n // build approved namespaces\n const namespaces = {};\n Object.keys(supportedNamespaces).forEach((namespace) => {\n const supportedChains = supportedNamespaces[namespace].chains;\n const supportedMethods = supportedNamespaces[namespace].methods;\n const supportedEvents = supportedNamespaces[namespace].events;\n const supportedAccounts = supportedNamespaces[namespace].accounts;\n\n supportedChains.forEach((chain) => {\n if (!supportedAccounts.some((account) => account.includes(chain))) {\n throw new Error(`No accounts provided for chain ${chain} in namespace ${namespace}`);\n }\n });\n\n namespaces[namespace] = {\n chains: supportedChains,\n methods: supportedMethods,\n events: supportedEvents,\n accounts: supportedAccounts,\n };\n });\n\n // verify all required namespaces are supported\n const err = isConformingNamespaces(requiredNamespaces, namespaces, \"approve()\");\n if (err) throw new Error(err.message);\n\n const approvedNamespaces = {};\n\n // if both required & optional namespaces are empty, return all supported namespaces by the wallet\n if (!Object.keys(requiredNamespaces).length && !Object.keys(optionalNamespaces).length)\n return namespaces;\n\n // assign accounts for the required namespaces\n Object.keys(normalizedRequired).forEach((requiredNamespace) => {\n const chains = supportedNamespaces[requiredNamespace].chains.filter((chain) =>\n normalizedRequired[requiredNamespace]?.chains?.includes(chain),\n );\n const methods = supportedNamespaces[requiredNamespace].methods.filter((method) =>\n normalizedRequired[requiredNamespace]?.methods?.includes(method),\n );\n const events = supportedNamespaces[requiredNamespace].events.filter((event) =>\n normalizedRequired[requiredNamespace]?.events?.includes(event),\n );\n\n const accounts = chains\n .map((chain: string) =>\n supportedNamespaces[requiredNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[requiredNamespace] = {\n chains,\n methods,\n events,\n accounts,\n };\n });\n\n // add optional namespaces\n Object.keys(normalizedOptional).forEach((optionalNamespace) => {\n if (!supportedNamespaces[optionalNamespace]) return;\n\n const chainsToAdd = normalizedOptional[optionalNamespace]?.chains?.filter((chain) =>\n supportedNamespaces[optionalNamespace].chains.includes(chain),\n );\n const methodsToAdd = supportedNamespaces[optionalNamespace].methods.filter((method) =>\n normalizedOptional[optionalNamespace]?.methods?.includes(method),\n );\n const eventsToAdd = supportedNamespaces[optionalNamespace].events.filter((event) =>\n normalizedOptional[optionalNamespace]?.events?.includes(event),\n );\n\n const accountsToAdd = chainsToAdd\n ?.map((chain: string) =>\n supportedNamespaces[optionalNamespace].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n )\n .flat();\n\n approvedNamespaces[optionalNamespace] = {\n chains: mergeArrays(approvedNamespaces[optionalNamespace]?.chains, chainsToAdd),\n methods: mergeArrays(approvedNamespaces[optionalNamespace]?.methods, methodsToAdd),\n events: mergeArrays(approvedNamespaces[optionalNamespace]?.events, eventsToAdd),\n accounts: mergeArrays(approvedNamespaces[optionalNamespace]?.accounts, accountsToAdd),\n };\n });\n\n return approvedNamespaces;\n}\n\nexport function isCaipNamespace(namespace: string): boolean {\n return namespace.includes(\":\");\n}\n\nexport function parseNamespaceKey(namespace: string) {\n return isCaipNamespace(namespace) ? namespace.split(\":\")[0] : namespace;\n}\n\n/**\n * Converts\n * ```\n * {\n * \"eip155:1\": {...},\n * \"eip155:2\": {...},\n * }\n * ```\n * into\n * ```\n * {\n * \"eip155\": {\n * chains: [\"eip155:1\", \"eip155:2\"],\n * ...\n * }\n * }\n *```\n */\nexport function normalizeNamespaces(\n namespaces: ProposalTypes.RequiredNamespaces,\n): ProposalTypes.RequiredNamespaces {\n const normalizedNamespaces = {} as ProposalTypes.RequiredNamespaces;\n if (!isValidObject(namespaces)) return normalizedNamespaces;\n for (const [key, values] of Object.entries(namespaces)) {\n const chains = isCaipNamespace(key) ? [key] : values.chains;\n const methods = values.methods || [];\n const events = values.events || [];\n const normalizedKey = parseNamespaceKey(key);\n normalizedNamespaces[normalizedKey] = {\n ...normalizedNamespaces[normalizedKey],\n chains: mergeArrays(chains, normalizedNamespaces[normalizedKey]?.chains),\n methods: mergeArrays(methods, normalizedNamespaces[normalizedKey]?.methods),\n events: mergeArrays(events, normalizedNamespaces[normalizedKey]?.events),\n };\n }\n return normalizedNamespaces;\n}\n\nexport function getNamespacesFromAccounts(accounts: string[]) {\n const namespaces = {};\n accounts?.forEach((account) => {\n const [namespace, chainId] = account.split(\":\");\n if (!namespaces[namespace]) {\n namespaces[namespace] = {\n accounts: [],\n chains: [],\n events: [],\n };\n }\n namespaces[namespace].accounts.push(account);\n namespaces[namespace].chains.push(`${namespace}:${chainId}`);\n });\n\n return namespaces;\n}\n\nexport function buildNamespacesFromAuth(methods: string[], accounts: string[]) {\n accounts = accounts.map((account) => account.replace(\"did:pkh:\", \"\"));\n\n const namespaces = getNamespacesFromAccounts(accounts);\n\n for (const [_, values] of Object.entries(namespaces) as [string, SessionTypes.Namespace][]) {\n if (!values.methods) {\n values.methods = methods;\n } else {\n values.methods = mergeArrays(values.methods, methods);\n }\n values.events = [\"chainChanged\", \"accountsChanged\"];\n }\n return namespaces;\n}\n","/**\n * Types\n */\nexport type SdkErrorKey = keyof typeof SDK_ERRORS;\nexport type InternalErrorKey = keyof typeof INTERNAL_ERRORS;\n\n/**\n * Constants\n */\nexport const SDK_ERRORS = {\n /* ----- INVALID (1xxx) ----- */\n INVALID_METHOD: {\n message: \"Invalid method.\",\n code: 1001,\n },\n INVALID_EVENT: {\n message: \"Invalid event.\",\n code: 1002,\n },\n INVALID_UPDATE_REQUEST: {\n message: \"Invalid update request.\",\n code: 1003,\n },\n INVALID_EXTEND_REQUEST: {\n message: \"Invalid extend request.\",\n code: 1004,\n },\n INVALID_SESSION_SETTLE_REQUEST: {\n message: \"Invalid session settle request.\",\n code: 1005,\n },\n /* ----- UNAUTHORIZED (3xxx) ----- */\n UNAUTHORIZED_METHOD: {\n message: \"Unauthorized method.\",\n code: 3001,\n },\n UNAUTHORIZED_EVENT: {\n message: \"Unauthorized event.\",\n code: 3002,\n },\n UNAUTHORIZED_UPDATE_REQUEST: {\n message: \"Unauthorized update request.\",\n code: 3003,\n },\n UNAUTHORIZED_EXTEND_REQUEST: {\n message: \"Unauthorized extend request.\",\n code: 3004,\n },\n /* ----- REJECTED (5xxx) ----- */\n USER_REJECTED: {\n message: \"User rejected.\",\n code: 5000,\n },\n USER_REJECTED_CHAINS: {\n message: \"User rejected chains.\",\n code: 5001,\n },\n USER_REJECTED_METHODS: {\n message: \"User rejected methods.\",\n code: 5002,\n },\n USER_REJECTED_EVENTS: {\n message: \"User rejected events.\",\n code: 5003,\n },\n UNSUPPORTED_CHAINS: {\n message: \"Unsupported chains.\",\n code: 5100,\n },\n UNSUPPORTED_METHODS: {\n message: \"Unsupported methods.\",\n code: 5101,\n },\n UNSUPPORTED_EVENTS: {\n message: \"Unsupported events.\",\n code: 5102,\n },\n UNSUPPORTED_ACCOUNTS: {\n message: \"Unsupported accounts.\",\n code: 5103,\n },\n UNSUPPORTED_NAMESPACE_KEY: {\n message: \"Unsupported namespace key.\",\n code: 5104,\n },\n /* ----- REASON (6xxx) ----- */\n USER_DISCONNECTED: {\n message: \"User disconnected.\",\n code: 6000,\n },\n /* ----- FAILURE (7xxx) ----- */\n SESSION_SETTLEMENT_FAILED: {\n message: \"Session settlement failed.\",\n code: 7000,\n },\n /* ----- PAIRING (10xxx) ----- */\n WC_METHOD_UNSUPPORTED: {\n message: \"Unsupported wc_ method.\",\n code: 10001,\n },\n};\n\nexport const INTERNAL_ERRORS = {\n NOT_INITIALIZED: {\n message: \"Not initialized.\",\n code: 1,\n },\n NO_MATCHING_KEY: {\n message: \"No matching key.\",\n code: 2,\n },\n RESTORE_WILL_OVERRIDE: {\n message: \"Restore will override.\",\n code: 3,\n },\n RESUBSCRIBED: {\n message: \"Resubscribed.\",\n code: 4,\n },\n MISSING_OR_INVALID: {\n message: \"Missing or invalid.\",\n code: 5,\n },\n EXPIRED: {\n message: \"Expired.\",\n code: 6,\n },\n UNKNOWN_TYPE: {\n message: \"Unknown type.\",\n code: 7,\n },\n MISMATCHED_TOPIC: {\n message: \"Mismatched topic.\",\n code: 8,\n },\n NON_CONFORMING_NAMESPACES: {\n message: \"Non conforming namespaces.\",\n code: 9,\n },\n};\n\n/**\n * Utilities\n */\nexport function getInternalError(key: InternalErrorKey, context?: string | number) {\n const { message, code } = INTERNAL_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n\nexport function getSdkError(key: SdkErrorKey, context?: string | number) {\n const { message, code } = SDK_ERRORS[key];\n return {\n message: context ? `${message} ${context}` : message,\n code,\n };\n}\n","import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from \"@walletconnect/types\";\nimport { ErrorResponse } from \"@walletconnect/jsonrpc-types\";\nimport {\n getNamespacesChains,\n getNamespacesMethodsForChainId,\n getNamespacesEventsForChainId,\n getAccountsChains,\n} from \"./namespaces\";\nimport { getSdkError, getInternalError } from \"./errors\";\nimport { hasOverlap } from \"./misc\";\nimport { getChainsFromNamespace } from \"./caip\";\n\nexport type ErrorObject = { message: string; code: number } | null;\n\n// -- types validation ----------------------------------------------------- //\n\nexport function isValidArray(arr: any, itemCondition?: (item: any) => boolean) {\n if (Array.isArray(arr)) {\n if (typeof itemCondition !== \"undefined\" && arr.length) {\n return arr.every(itemCondition);\n } else {\n return true;\n }\n }\n return false;\n}\n\nexport function isValidObject(obj: any) {\n return Object.getPrototypeOf(obj) === Object.prototype && Object.keys(obj).length;\n}\n\nexport function isUndefined(input: any): input is undefined {\n return typeof input === \"undefined\";\n}\n\nexport function isValidString(input: any, optional: boolean): input is string {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"string\" && Boolean(input.trim().length);\n}\n\nexport function isValidNumber(input: any, optional: boolean) {\n if (optional && isUndefined(input)) return true;\n\n return typeof input === \"number\" && !isNaN(input);\n}\n\n// -- protocol validation -------------------------------------------------- //\n\nexport function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams) {\n const { requiredNamespaces } = params;\n const sessionKeys = Object.keys(session.namespaces);\n const paramsKeys = Object.keys(requiredNamespaces);\n let compatible = true;\n\n if (!hasOverlap(paramsKeys, sessionKeys)) return false;\n\n sessionKeys.forEach((key) => {\n const { accounts, methods, events } = session.namespaces[key];\n const chains = getAccountsChains(accounts);\n const requiredNamespace = requiredNamespaces[key];\n if (\n !hasOverlap(getChainsFromNamespace(key, requiredNamespace), chains) ||\n !hasOverlap(requiredNamespace.methods, methods) ||\n !hasOverlap(requiredNamespace.events, events)\n ) {\n compatible = false;\n }\n });\n\n return compatible;\n}\n\nexport function isValidChainId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n return split.length === 2;\n }\n return false;\n}\n\nexport function isValidAccountId(value: any) {\n if (isValidString(value, false) && value.includes(\":\")) {\n const split = value.split(\":\");\n if (split.length === 3) {\n const chainId = split[0] + \":\" + split[1];\n return !!split[2] && isValidChainId(chainId);\n }\n }\n return false;\n}\n\nexport function isValidUrl(value: any) {\n if (isValidString(value, false)) {\n try {\n const url = new URL(value);\n return typeof url !== \"undefined\";\n } catch (e) {\n return false;\n }\n }\n return false;\n}\n\nexport function isProposalStruct(input: any): input is ProposalTypes.Struct {\n return input?.proposer?.publicKey;\n}\n\nexport function isSessionStruct(input: any): input is SessionTypes.Struct {\n return input?.topic;\n}\n\nexport function isValidController(input: any, method: string) {\n let error: ErrorObject = null;\n if (!isValidString(input?.publicKey, false)) {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method} controller public key should be a string`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceMethodsOrEvents(input: any): input is string {\n let valid = true;\n if (isValidArray(input)) {\n if (input.length) {\n valid = input.every((item: any) => isValidString(item, false));\n }\n } else {\n valid = false;\n }\n\n return valid;\n}\n\nexport function isValidChains(key: string, chains: any, context: string) {\n let error: ErrorObject = null;\n\n if (isValidArray(chains) && chains.length) {\n chains.forEach((chain: any) => {\n if (error) return;\n if (!isValidChainId(chain)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chain ${chain} should be a string and conform to \"namespace:chainId\" format`,\n );\n }\n });\n } else if (!isValidChainId(key)) {\n error = getSdkError(\n \"UNSUPPORTED_CHAINS\",\n `${context}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceChains(namespaces: any, method: string, type: string) {\n let error: ErrorObject = null;\n Object.entries(namespaces).forEach(([key, namespace]: [string, any]) => {\n if (error) return;\n const validChainsError = isValidChains(\n key,\n getChainsFromNamespace(key, namespace),\n `${method} ${type}`,\n );\n if (validChainsError) {\n error = validChainsError;\n }\n });\n\n return error;\n}\n\nexport function isValidAccounts(accounts: any, context: string) {\n let error: ErrorObject = null;\n if (isValidArray(accounts)) {\n accounts.forEach((account: any) => {\n if (error) return;\n if (!isValidAccountId(account)) {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, account ${account} should be a string and conform to \"namespace:chainId:address\" format`,\n );\n }\n });\n } else {\n error = getSdkError(\n \"UNSUPPORTED_ACCOUNTS\",\n `${context}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceAccounts(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validAccountsError = isValidAccounts(namespace?.accounts, `${method} namespace`);\n if (validAccountsError) {\n error = validAccountsError;\n }\n });\n\n return error;\n}\n\nexport function isValidActions(namespace: any, context: string) {\n let error: ErrorObject = null;\n if (!isValidNamespaceMethodsOrEvents(namespace?.methods)) {\n error = getSdkError(\n \"UNSUPPORTED_METHODS\",\n `${context}, methods should be an array of strings or empty array for no methods`,\n );\n } else if (!isValidNamespaceMethodsOrEvents(namespace?.events)) {\n error = getSdkError(\n \"UNSUPPORTED_EVENTS\",\n `${context}, events should be an array of strings or empty array for no events`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaceActions(input: any, method: string) {\n let error: ErrorObject = null;\n Object.values(input).forEach((namespace: any) => {\n if (error) return;\n const validActionsError = isValidActions(namespace, `${method}, namespace`);\n if (validActionsError) {\n error = validActionsError;\n }\n });\n\n return error;\n}\n\nexport function isValidRequiredNamespaces(input: any, method: string, type: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validChainsError = isValidNamespaceChains(input, method, type);\n if (validChainsError) {\n error = validChainsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, ${type} should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidNamespaces(input: any, method: string) {\n let error: ErrorObject = null;\n if (input && isValidObject(input)) {\n const validActionsError = isValidNamespaceActions(input, method);\n if (validActionsError) {\n error = validActionsError;\n }\n const validAccountsError = isValidNamespaceAccounts(input, method);\n if (validAccountsError) {\n error = validAccountsError;\n }\n } else {\n error = getInternalError(\n \"MISSING_OR_INVALID\",\n `${method}, namespaces should be an object with data`,\n );\n }\n\n return error;\n}\n\nexport function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions {\n return isValidString(input.protocol, true);\n}\n\nexport function isValidRelays(\n input: any,\n optional: boolean,\n): input is RelayerTypes.ProtocolOptions[] {\n let valid = false;\n\n if (optional && !input) valid = true;\n else if (input && isValidArray(input) && input.length) {\n input.forEach((relay: RelayerTypes.ProtocolOptions) => {\n valid = isValidRelay(relay);\n });\n }\n\n return valid;\n}\n\nexport function isValidId(input: any) {\n return typeof input === \"number\";\n}\n\nexport function isValidParams(input: any) {\n return typeof input !== \"undefined\" && typeof input !== null;\n}\n\nexport function isValidErrorReason(input: any): input is ErrorResponse {\n if (!input) return false;\n if (typeof input !== \"object\") return false;\n if (!input.code || !isValidNumber(input.code, false)) return false;\n if (!input.message || !isValidString(input.message, false)) return false;\n\n return true;\n}\n\nexport function isValidRequest(request: any) {\n if (isUndefined(request)) return false;\n if (!isValidString(request.method, false)) return false;\n return true;\n}\n\nexport function isValidResponse(response: any) {\n if (isUndefined(response)) return false;\n if (isUndefined(response.result) && isUndefined(response.error)) return false;\n if (!isValidNumber(response.id, false)) return false;\n if (!isValidString(response.jsonrpc, false)) return false;\n return true;\n}\n\nexport function isValidEvent(event: any) {\n if (isUndefined(event)) return false;\n if (!isValidString(event.name, false)) return false;\n return true;\n}\n\nexport function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string) {\n if (!isValidChainId(chainId)) return false;\n const chains = getNamespacesChains(namespaces);\n if (!chains.includes(chainId)) return false;\n\n return true;\n}\n\nexport function isValidNamespacesRequest(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n method: string,\n) {\n if (!isValidString(method, false)) return false;\n const methods = getNamespacesMethodsForChainId(namespaces, chainId);\n return methods.includes(method);\n}\n\nexport function isValidNamespacesEvent(\n namespaces: SessionTypes.Namespaces,\n chainId: string,\n eventName: string,\n) {\n if (!isValidString(eventName, false)) return false;\n const events = getNamespacesEventsForChainId(namespaces, chainId);\n return events.includes(eventName);\n}\n\nexport function isConformingNamespaces(\n requiredNamespaces: ProposalTypes.RequiredNamespaces,\n namespaces: SessionTypes.Namespaces,\n context: string,\n) {\n let error: ErrorObject = null;\n\n const parsedRequired = parseNamespaces(requiredNamespaces);\n const parsedApproved = parseApprovedNamespaces(namespaces);\n const requiredChains = Object.keys(parsedRequired);\n const approvedChains = Object.keys(parsedApproved);\n\n const uniqueRequired = filterDuplicateNamespaces(Object.keys(requiredNamespaces));\n const uniqueApproved = filterDuplicateNamespaces(Object.keys(namespaces));\n const missingRequiredNamespaces = uniqueRequired.filter(\n (namespace) => !uniqueApproved.includes(namespace),\n );\n\n if (missingRequiredNamespaces.length) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces keys don't satisfy requiredNamespaces.\n Required: ${missingRequiredNamespaces.toString()}\n Received: ${Object.keys(namespaces).toString()}`,\n );\n }\n\n if (!hasOverlap(requiredChains, approvedChains)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces chains don't satisfy required namespaces.\n Required: ${requiredChains.toString()}\n Approved: ${approvedChains.toString()}`,\n );\n }\n\n // validate inline defined chains with approved accounts\n Object.keys(namespaces).forEach((chain) => {\n if (!chain.includes(\":\")) return;\n if (error) return;\n const chains = getAccountsChains(namespaces[chain].accounts);\n if (!chains.includes(chain)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces accounts don't satisfy namespace accounts for ${chain}\n Required: ${chain}\n Approved: ${chains.toString()}`,\n );\n }\n });\n\n requiredChains.forEach((chain) => {\n if (error) return;\n\n if (!hasOverlap(parsedRequired[chain].methods, parsedApproved[chain].methods)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces methods don't satisfy namespace methods for ${chain}`,\n );\n } else if (!hasOverlap(parsedRequired[chain].events, parsedApproved[chain].events)) {\n error = getInternalError(\n \"NON_CONFORMING_NAMESPACES\",\n `${context} namespaces events don't satisfy namespace events for ${chain}`,\n );\n }\n });\n\n return error;\n}\n\nfunction parseNamespaces(namespaces: ProposalTypes.RequiredNamespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n // e.g. `eip155:1`\n const isInlineChainDefinition = key.includes(\":\");\n\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n namespaces[key].chains?.forEach((chain) => {\n parsed[chain] = {\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nfunction filterDuplicateNamespaces(namespaces: string[]) {\n return [\n ...new Set(\n namespaces.map((namespace) =>\n namespace.includes(\":\") ? namespace.split(\":\")[0] : namespace,\n ),\n ),\n ];\n}\n\nfunction parseApprovedNamespaces(namespaces: SessionTypes.Namespaces) {\n const parsed = {};\n Object.keys(namespaces).forEach((key) => {\n const isInlineChainDefinition = key.includes(\":\");\n if (isInlineChainDefinition) {\n parsed[key] = namespaces[key];\n } else {\n const chains = getAccountsChains(namespaces[key].accounts);\n chains?.forEach((chain) => {\n parsed[chain] = {\n accounts: namespaces[key].accounts.filter((account: string) =>\n account.includes(`${chain}:`),\n ),\n methods: namespaces[key].methods,\n events: namespaces[key].events,\n };\n });\n }\n });\n return parsed;\n}\n\nexport function isValidRequestExpiry(expiry: number, boundaries: { min: number; max: number }) {\n return isValidNumber(expiry, false) && expiry <= boundaries.max && expiry >= boundaries.min;\n}\n","import { getEnvironment, ENV_MAP, isBrowser, isReactNative } from \"./misc\";\n\nexport function isOnline(): Promise {\n const env = getEnvironment();\n return new Promise((resolve) => {\n switch (env) {\n case ENV_MAP.browser:\n resolve(getBrowserOnlineStatus());\n break;\n case ENV_MAP.reactNative:\n resolve(getReactNativeOnlineStatus());\n break;\n case ENV_MAP.node:\n resolve(getNodeOnlineStatus());\n break;\n default:\n resolve(true);\n }\n });\n}\n\nexport function getBrowserOnlineStatus() {\n return isBrowser() && navigator?.onLine;\n}\n\nexport async function getReactNativeOnlineStatus(): Promise {\n // global.NetInfo is set in react-native-compat\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n const state = await (global as any)?.NetInfo.fetch();\n return state?.isConnected;\n }\n // fallback to true if global.NetInfo is undefined, meaning an older version of react-native-compat is used\n return true;\n}\n\nexport function getNodeOnlineStatus() {\n /**\n * TODO: need to implement\n */\n return true;\n}\n\nexport function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void) {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.browser:\n subscribeToBrowserNetworkChange(callbackHandler);\n break;\n case ENV_MAP.reactNative:\n subscribeToReactNativeNetworkChange(callbackHandler);\n break;\n case ENV_MAP.node:\n // wip: need to implement\n break;\n default:\n break;\n }\n}\n\nexport function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (!isReactNative() && isBrowser()) {\n window.addEventListener(\"online\", () => callbackHandler(true));\n window.addEventListener(\"offline\", () => callbackHandler(false));\n }\n}\n\n// global.NetInfo is set in react-native-compat\nexport function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void) {\n if (isReactNative() && typeof global !== \"undefined\" && (global as any)?.NetInfo) {\n (global as any)?.NetInfo.addEventListener((state: any) => callbackHandler(state?.isConnected));\n }\n}\n","const memoryStore = {};\n\nexport abstract class MemoryStore {\n static get(key: string) {\n return memoryStore[key] as T | undefined;\n }\n\n static set(key: string, value: unknown) {\n memoryStore[key] = value;\n }\n\n static delete(key: string) {\n delete memoryStore[key];\n }\n}\n"],"names":["this","delay_1","delay","require$$0","require$$1","require$$2","watch","require$$3","require$$4","cjs","decode","strictUriEncode","splitOnFirst","h","g","E","x","f","l","T","w.parse","w.stringify","N","y","R","m","d","M","global","version","logger","concat","BN","_BN","_constructorGuard","throwFault","toHex","Zero","r","hashMessage","minimalisticAssert","assert","inherits_browserModule","inherits","utils","rotr32","rotl32","sum32","sum32_3","sum32_4","sum32_5","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","SHA256","SHA512","sha","hmac","commonjsRequire","getNAF","getJSF","assert$1","BaseCurve","base","BasePoint","assert$2","ShortCurve","Point","JPoint","hash","HmacDRBG","hmacDrbg","assert$3","KeyPair","key","assert$4","Signature","signature","Position","getLength","rmPadding","constructLength","rand","assert$5","EC","ec","EC$1","c","j","$","A","w","k","wipe_1","hmac_1","require","allocUnsafe","fromString","toString","from","basex","encode","identity","varint","varint.encodingLength","varint.encodeTo","Digest.create","sha512","name","base2","base8","base10","base16","base32","base36","base64","base256emoji","createCodec","string","ascii","BASES","bases","brorandModule","brorand","crypto","Base","curve","curves","require$$5","require$$6","parseBytes","cachedProperty","S","u","v.generateKeyPair","o","v.sharedKey","C","K","B","f.parse","f.stringify","z","F","O","b","a","t"],"mappings":"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AG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACrF,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;SAC1B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;SAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD;EACA,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAChB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;EACjB,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAA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AC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC3C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;EAC1C,OAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;EACA,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC7B,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;EACjC,OAAM,CAAC,CAAC,EAAE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AAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACd,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EAChB,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAChB,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA,GAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;OACd,WAAW,GAAG,UAAU,CAAC;MAC1B;AACH;KACE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;OACjC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;OAC5C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C;EACA;EACA,OAAM,IAAI,MAAM,GAAG,OAAO,CAAC;SACrB,OAAO,GAAG,CAAC,CAAC;EAClB,OAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;EACpC,OAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACvC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;EACrE,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACd,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;WAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACjC,SAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;EACA,SAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;EAC/B,SAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;WAC9C,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;EAC9B,SAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;WACvB,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;EACA,SAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;WACzB,MAAM,IAAI,SAAS,CAAC;UACrB;SACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACrB,KAAK,GAAG,MAAM,CAAC;SACf,MAAM,GAAG,OAAO,CAAC;QAClB;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC3B,MAAK,MAAM;EACX,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACd;AACL;EACA,KAAI,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;MACrB;AACH;KACE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;EACvC;EACA;EACA;OACI,OAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;MACjC;AACH;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;OAC7C,IAAI,GAAG,CAAC;OACR,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;EACvC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;SAC3C,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACxC,MAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;SACnB,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACvC,MAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;SACrB,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACrC,MAAK,MAAM;SACL,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAClC;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AAqMJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;OAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;OAChD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;EACA,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;EACA;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EACxC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/C,KAAK,KAAK,EAAE,CAAC;SACb,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;EACnC;EACA,OAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;SACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAChC;AACL;EACA,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;AACL;OACI,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;EACrC,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;OACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;EAC5B,KAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;EACA;EACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC;OACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;SAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;QACvB;AACL;EACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;SAClB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;WACtD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;WACQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAClB;QACF;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;OAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;OAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;EAC5B,KAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;OACrD,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;EACA,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;EACjD,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;WAC9C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;WAC1B,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;UAC/B;AACP;SACM,IAAI,KAAK,EAAE;WACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC9B,SAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;UACf;QACF;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC7C,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACnC;AACP;SACM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACtB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UACnB;AACP;EACA,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;EAC7C;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;EAChC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;OAC3D,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;OAC9C,IAAI,CAAC,CAAC;OACN,IAAI,IAAI,EAAE;SACR,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;EACpC,MAAK,MAAM;SACL,CAAC,GAAG,CAAC,CAAC;QACP;AACL;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;EACtB,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACnD,KAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACpD,KAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;OACI,CAAC,IAAI,CAAC,CAAC;OACP,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;EACA;OACI,IAAI,WAAW,EAAE;EACrB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClC,SAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACtC;EACP,OAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAEZ,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EAChC,OAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;EACvB,OAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxC,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;UACnC;EACP,MAAK,MAAM;SACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB;AACL;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;OACd,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;SAChE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;EACzD,OAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;QACrB;AACL;EACA;EACA,KAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;SAC9B,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;QACjD;AACL;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;SACrB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC7D;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;EAC7C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;OACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;OACvC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;EAChD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;OACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;EACA;OACI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;EACA;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;EACA,KAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACrB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;OAC3C,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;OAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;OACI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SACpB,OAAO,IAAI,CAAC;QACb;AACL;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;SACX,CAAC,EAAE,CAAC;QACL;EACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;EACA,KAAI,IAAI,CAAC,KAAK,CAAC,EAAE;EACjB,OAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACtD,OAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACrC;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;OACzC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;EAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;EACA;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;EAC3D,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClD,SAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;WAClB,OAAO,IAAI,CAAC;UACb;AACP;EACA,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACL;EACA;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;EACA;OACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;SAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;SAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;WACzB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9B,QAAO,MAAM;WACL,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;UACrB;QACF;EACL,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;EAC5B,KAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,OAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACtB,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB,OAAO,IAAI,CAAC;QACb;AACL;OACI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAChD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrC,OAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;EACxB,MAAK,MAAM;EACX;SACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;WACzD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;WAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;UACxB;QACF;AACL;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;EACvC,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;OACI,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;OACjC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;OAClE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;OAC7B,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;OACI,IAAI,CAAC,CAAC;EACV,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;EAC9C,OAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;EAC3C,OAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;EAC7B,OAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;EACpD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACvC;OACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;EAC9C,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;EACtB,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QACvC;AACL;OACI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC1C;EACA;EACA,KAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;OACrB,KAAK,GAAG,CAAC,CAAC;EACd,KAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACtC,OAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;EACvC,OAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;SAChB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QAC/B;EACL,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;EACA,KAAI,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;OACpD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;EACA;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;OACpC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;EACvC,KAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;EACzB,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EACzB,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjC;AACL;EACA;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;OAC5B,IAAI,CAAC,CAAC;AACV;EACA,KAAI,IAAI,IAAI,KAAK,KAAK,EAAE;EACxB,OAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EACvB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;SACjB,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;EACpC,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;WACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAChB;QACF;AACL;EACA,KAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/C,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;SACvB,CAAC,GAAG,IAAI,CAAC;SACT,IAAI,CAAC,EAAE;WACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;UAChB;QACF;AACL;EACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;EACtD,UAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;EACA;EACA;EACA,OAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;SACM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAC/B,OAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;WACvB,EAAE,EAAE,CAAC;EACb,SAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;WACf,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAChC,SAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,WAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjB;UACF;SACD,IAAI,CAAC,EAAE;WACL,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;UACjB;QACF;OACD,IAAI,CAAC,EAAE;EACX,OAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACZ;EACL,KAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AACf;EACA;OACI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;EACvC,OAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB;AACL;EACA,KAAI,OAAO;EACX,OAAM,GAAG,EAAE,CAAC,IAAI,IAAI;SACd,GAAG,EAAE,CAAC;EACZ,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA,GAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;OAC1D,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;EACvB,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACtB,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EACtB,QAAO,CAAC;QACH;AACL;EACA,KAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACtB,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EACnD,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;UACrB;AACP;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;WACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf;UACF;AACP;EACA,OAAM,OAAO;WACL,GAAG,EAAE,GAAG;WACR,GAAG,EAAE,GAAG;EAChB,QAAO,CAAC;QACH;AACL;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EACnD,OAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;UACrB;AACP;EACA,OAAM,OAAO;WACL,GAAG,EAAE,GAAG;EAChB,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;EACpB,QAAO,CAAC;QACH;AACL;OACI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;EAC9C,OAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;WAClB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;WACpB,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5C,WAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf;UACF;AACP;EACA,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;WACZ,GAAG,EAAE,GAAG;EAChB,QAAO,CAAC;QACH;AACL;EACA;AACA;EACA;EACA,KAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;EACvD,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;WACd,GAAG,EAAE,IAAI;EACjB,QAAO,CAAC;QACH;AACL;EACA;EACA,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1B,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;EAC1B,SAAQ,OAAO;EACf,WAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC5B,GAAG,EAAE,IAAI;EACnB,UAAS,CAAC;UACH;AACP;EACA,OAAM,IAAI,IAAI,KAAK,KAAK,EAAE;EAC1B,SAAQ,OAAO;aACL,GAAG,EAAE,IAAI;EACnB,WAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/C,UAAS,CAAC;UACH;AACP;EACA,OAAM,OAAO;EACb,SAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,SAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,QAAO,CAAC;QACH;AACL;OACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;EAC9C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;EAC9C,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;EAC7C,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;OAC9C,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;EACA;EACA,KAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;OACI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;OACI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACxB,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OACtB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;EACA;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AAC1D;EACA;OACI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrE,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;EACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;OACzB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,OAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;QAC7C;AACL;EACA,KAAI,OAAO,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;EACjC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC3B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,KAAI,IAAI,QAAQ,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;AAC7B;EACA,KAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;EACtD,OAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;EACpC,OAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;QACjB;AACL;EACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;OACd,OAAO,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf;AACL;EACA;OACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;EACA;OACI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OAClB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;OACI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACrC,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACZ,EAAE,CAAC,CAAC;QACL;AACL;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;EACvB,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;EACA,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;EACxB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;aACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;EACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;cACZ;AACX;EACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;UACF;AACP;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;aACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;EACtC,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,aAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;cACZ;AACX;EACA,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,WAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACb;UACF;AACP;SACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;EACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,QAAO,MAAM;EACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACX;QACF;AACL;EACA,KAAI,OAAO;SACL,CAAC,EAAE,CAAC;SACJ,CAAC,EAAE,CAAC;EACV,OAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;EACtB,MAAK,CAAC;EACN,IAAG,CAAC;AACJ;EACA;EACA;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;OACxC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;OACzB,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACjB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;EACA,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;SACpB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACpB,MAAK,MAAM;EACX,OAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACf;AACL;OACI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;EACA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAC3C,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;EACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;EAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChB;AACX;EACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd;UACF;AACP;EACA,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;EAChF,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACpB,SAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;EACxB,WAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;EAC1B,aAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;cAChB;AACX;EACA,WAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACd;UACF;AACP;SACM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;EACzB,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACpB,QAAO,MAAM;EACb,SAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,SAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;UACb;QACF;AACL;OACI,IAAI,GAAG,CAAC;OACR,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;SACnB,GAAG,GAAG,EAAE,CAAC;EACf,MAAK,MAAM;SACL,GAAG,GAAG,EAAE,CAAC;QACV;AACL;OACI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EACzB,OAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;OACpC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;EACA,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;EACzB,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;EACxB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;EACnB,KAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;EACA;EACA,KAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;EAC3D,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAClB,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;AACL;EACA,KAAI,GAAG;EACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;EACP,OAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;EACzB,SAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACb;AACP;SACM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACvB,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB;EACA,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;WACV,CAAC,GAAG,CAAC,CAAC;WACN,CAAC,GAAG,CAAC,CAAC;EACd,QAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;EAC7C,SAAQ,MAAM;UACP;AACP;EACA,OAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,QAAQ,IAAI,EAAE;AACnB;EACA,KAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC3B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;EACzC,KAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC5C,KAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;EACpC,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;OACjB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;EACA;EACA,KAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;SACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACpB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnB,OAAO,IAAI,CAAC;QACb;AACL;EACA;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,CAAC,IAAI,KAAK,CAAC;EACjB,OAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;SACjB,CAAC,IAAI,SAAS,CAAC;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;EAC5B,OAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACf;OACD,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACpD,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C,KAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;EACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;OAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;EACA,KAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClB;OACI,IAAI,GAAG,CAAC;EACZ,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;SACnB,GAAG,GAAG,CAAC,CAAC;EACd,MAAK,MAAM;SACL,IAAI,QAAQ,EAAE;EACpB,SAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;UACZ;AACP;SACM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;SACM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAChC,OAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC;EACL,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;OACzC,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EACxC,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;EAC7D,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC7B,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;OACzC,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAC1C;OACI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EAC3C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;EACA,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,KAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACzC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;EACA,OAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;EAC5B,OAAM,IAAI,CAAC,GAAG,CAAC,EAAE;EACjB,SAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;EACjB,QAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;WAChB,GAAG,GAAG,CAAC,CAAC;UACT;EACP,OAAM,MAAM;QACP;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACjC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;OACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;OACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;OAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;KACE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;EAC9B,KAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACxB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OACxC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;OAC3D,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;EACjE,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC9C,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;OACzE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EACtC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;EACpD,KAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;OACf,OAAO,IAAI,CAAC;EAChB,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;OAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;EAC/D,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;OAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;OAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;OAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;OAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACpC,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;OACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;OACzC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;OACxD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;OACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;OACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,IAAG,CAAC;AACJ;KACE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;EAC9C,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;OAClD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACxB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA;KACE,IAAI,MAAM,GAAG;OACX,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,MAAM,EAAE,IAAI;EAChB,IAAG,CAAC;AACJ;EACA;EACA,GAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;EAC5B;EACA,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;OACjB,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;OACvB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;OAC5B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;OACI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;MACxB;AACH;KACE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;OACvC,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;OAC9C,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;EACpD;EACA;EACA,KAAI,IAAI,CAAC,GAAG,GAAG,CAAC;OACZ,IAAI,IAAI,CAAC;AACb;EACA,KAAI,GAAG;SACD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACxB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3B,OAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;EAC3B,MAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;OACI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClD,KAAI,IAAI,GAAG,KAAK,CAAC,EAAE;SACb,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;EACnB,MAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;SAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACrB,MAAK,MAAM;EACX,OAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;EACjC;EACA,SAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;EAClB,QAAO,MAAM;EACb;EACA,SAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;UACZ;QACF;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA,GAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACvD,KAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EACjC,IAAG,CAAC;AACJ;KACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;OAC5C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC5B,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,yEAAyE,CAAC,CAAC;MAC9E;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EACxD;EACA,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;EACA,KAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EAC3C,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACrC,OAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC;EACL,KAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;EACA,KAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;SACrB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACzB,OAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EACvB,OAAM,OAAO;QACR;AACL;EACA;OACI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,KAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;EACA,KAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SAClC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;SAC3D,IAAI,GAAG,IAAI,CAAC;QACb;OACD,IAAI,MAAM,EAAE,CAAC;OACb,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;OAC3B,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;EACzC,OAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM;EACX,OAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACnB;EACL,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAC9C;OACI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAClC,KAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;EACA;EACA,KAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;SACnC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC/B,OAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;SAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;EACpC,OAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;QACxC;AACL;EACA;EACA,KAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EACzC,OAAM,GAAG,CAAC,MAAM,EAAE,CAAC;EACnB,OAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EAC3C,SAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;UACd;QACF;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,gEAAgE,CAAC,CAAC;MACrE;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;KACE,SAAS,IAAI,IAAI;OACf,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,MAAM;SACN,uDAAuD,CAAC,CAAC;MAC5D;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;KACE,SAAS,MAAM,IAAI;EACrB;OACI,MAAM,CAAC,IAAI;EACf,OAAM,IAAI;EACV,OAAM,OAAO;SACP,qEAAqE,CAAC,CAAC;MAC1E;EACH,GAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;KACE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;EAChD;EACA,KAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;EACjD,OAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;SACxB,EAAE,MAAM,EAAE,CAAC;AACjB;SACM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB,KAAK,GAAG,EAAE,CAAC;QACZ;EACL,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;QACjC;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;KACE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;EACpC;OACI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;OACI,IAAI,KAAK,CAAC;EACd,KAAI,IAAI,IAAI,KAAK,MAAM,EAAE;EACzB,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;EAChC,OAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;EACzB,MAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EAClC,OAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;EAC3B,MAAK,MAAM;SACL,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAC1C;EACL,KAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;OACI,OAAO,KAAK,CAAC;EACjB,IAAG,CAAC;AACJ;EACA;EACA;EACA;EACA,GAAE,SAAS,GAAG,EAAE,CAAC,EAAE;EACnB,KAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EAC/B,OAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;EACvB,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACzB,MAAK,MAAM;SACL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;EACzD,OAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;EACjB,OAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB;MACF;AACH;KACE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;OAC7C,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;OAC1D,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;EACrD,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;EACpD,KAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;EAC7E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;SAC7B,iCAAiC,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EACzC,KAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjE;EACA,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;OACxC,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;EACvC,KAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACpB,OAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QAClB;AACL;EACA,KAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EACzC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;OACnB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;EACL,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;OACI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;OACpB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;OACD,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACxC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAChC,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACtC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EACzC,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;OACnC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;OACI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;OAC3B,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;EACA;EACA,KAAI,IAAI,IAAI,KAAK,CAAC,EAAE;SACd,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzB;AACL;EACA;EACA;EACA;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACd,KAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;SACtC,CAAC,EAAE,CAAC;EACV,OAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACb;OACD,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;EACA,KAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACpC,KAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;EACA;EACA;EACA,KAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OACpC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;EAC/B,KAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;EACA,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EAC9C,OAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB;AACL;OACI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;OACvB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;OACzC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3B,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC;OACV,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;EAC7B,OAAM,IAAI,GAAG,GAAG,CAAC,CAAC;EAClB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;EAC/C,SAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;UACpB;EACP,OAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACd,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;SACM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACtB,OAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;SACf,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChB,CAAC,GAAG,CAAC,CAAC;QACP;AACL;OACI,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;OACrC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;EAC5B,OAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;SACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;EACrC,MAAK,MAAM;EACX,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB;EACL,IAAG,CAAC;AACJ;EACA,GAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;EAC5C,KAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnD,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;EACA,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;OACnB,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;EACzC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACnC,KAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACf,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,OAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC;AACL;EACA,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC;EACpB,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC;OACnB,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;EACrC,KAAI,IAAI,KAAK,KAAK,CAAC,EAAE;SACf,KAAK,GAAG,EAAE,CAAC;QACZ;AACL;EACA,KAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;SACpC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,OAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;WACnC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;EAClC,SAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;aAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB;AACT;WACQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;aAC9B,UAAU,GAAG,CAAC,CAAC;EACzB,WAAU,SAAS;YACV;AACT;WACQ,OAAO,KAAK,CAAC,CAAC;WACd,OAAO,IAAI,GAAG,CAAC;WACf,UAAU,EAAE,CAAC;EACrB,SAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;EACA,SAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;WAClC,UAAU,GAAG,CAAC,CAAC;WACf,OAAO,GAAG,CAAC,CAAC;UACb;SACD,KAAK,GAAG,EAAE,CAAC;QACZ;AACL;OACI,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;OACjD,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;OACI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACrC,IAAG,CAAC;AACJ;KACE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;EACzD,KAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;EAC1B,KAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;OACf,OAAO,GAAG,CAAC;EACf,IAAG,CAAC;AACJ;EACA;EACA;EACA;AACA;KACE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;EAChC,KAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB,IAAG,CAAC;AACJ;EACA,GAAE,SAAS,IAAI,EAAE,CAAC,EAAE;OAChB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;OACI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;OAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;EAC/B,OAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACtC;AACL;EACA,KAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC1C,KAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EACtC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;OACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3D,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACvC,KAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACnC;EACH,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;KACE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;EACtD,KAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC5C,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;EAC1D,KAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;EAC1C,KAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;OACb,OAAO,CAAC,CAAC;EACb,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;OACzC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;SAC5B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACrB,OAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACb,OAAO,CAAC,CAAC;QACV;AACL;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACtB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;OACI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB;AACL;EACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;EACA,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;OACvC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;OACI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC9E,KAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACzC,KAAI,IAAI,GAAG,GAAG,CAAC,CAAC;OACZ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;SACtB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;SACxB,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB;AACL;EACA,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;AACJ;KACE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;EAC1C;OACI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACvD,KAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAC/B,IAAG,CAAC;IACH,EAAmC,MAAM,EAAEH,cAAI,CAAC,CAAA;;;;;EC19G1C,MAAM6B,SAAO,GAAG,iBAAiB;;ECSxC,IAAIG,IAAE,GAAGC,IAAG,CAAC,EAAE,CAAC;EAIhB,MAAMH,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EACnC,MAAMK,mBAAiB,GAAG,EAAE,CAAC;EAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;EAC3B,SAAS,cAAc,CAAC,KAAK,EAAE;EACtC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;EAC3D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;EAC1D,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;EACpE,QAAQ,WAAW,CAAC,KAAK,CAAC;EAC1B,SAAS,QAAQ,KAAK,CAAC,KAAK,QAAQ,CAAC;EACrC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;EACxB,CAAC;EACD;EACA,IAAI,oBAAoB,GAAG,KAAK,CAAC;EAC1B,MAAM,SAAS,CAAC;EACvB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE;EACvC,QAAQ,IAAI,gBAAgB,KAAKA,mBAAiB,EAAE;EACpD,YAAYJ,QAAM,CAAC,UAAU,CAAC,sDAAsD,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC3H,gBAAgB,SAAS,EAAE,iBAAiB;EAC5C,aAAa,CAAC,CAAC;EACf,SAAS;EACT,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;EACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,QAAQ,CAAC,KAAK,EAAE;EACpB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;EACvD,KAAK;EACL,IAAI,MAAM,CAAC,KAAK,EAAE;EAClB,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACrD,KAAK;EACL,IAAI,GAAG,GAAG;EACV,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAClC,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1D,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EACxC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;EACxB,YAAYK,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;EAClD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAC3B,YAAYA,YAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;EAClD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAC3B,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;EACxD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;EACvD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE;EAChD,YAAYA,YAAU,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;EACxD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;EACjD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EAC5C,YAAYA,YAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChD,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,EAAE,CAAC,KAAK,EAAE;EACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,GAAG,CAAC,KAAK,EAAE;EACf,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,UAAU,GAAG;EACjB,QAAQ,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACtC,KAAK;EACL,IAAI,MAAM,GAAG;EACb,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;EACnC,KAAK;EACL,IAAI,QAAQ,GAAG;EACf,QAAQ,IAAI;EACZ,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;EACzC,SAAS;EACT,QAAQ,OAAO,KAAK,EAAE;EACtB,YAAYA,YAAU,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;EAChE,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC;EACpB,KAAK;EACL,IAAI,QAAQ,GAAG;EACf,QAAQ,IAAI;EACZ,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC3C,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE,GAAG;EACrB,QAAQ,OAAOL,QAAM,CAAC,UAAU,CAAC,uCAAuC,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC/G,YAAY,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;EAClC,SAAS,CAAC,CAAC;EACX,KAAK;EACL,IAAI,QAAQ,GAAG;EACf;EACA,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;EAClC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EACrC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;EAC3C,oBAAoB,oBAAoB,GAAG,IAAI,CAAC;EAChD,oBAAoBA,QAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;EACzG,iBAAiB;EACjB,aAAa;EACb,iBAAiB,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EAC1C,gBAAgBA,QAAM,CAAC,UAAU,CAAC,gFAAgF,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;EAC3J,aAAa;EACb,iBAAiB;EACjB,gBAAgBA,QAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;EAC1H,aAAa;EACb,SAAS;EACT,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,WAAW,GAAG;EAClB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;EACzB,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,EAAE;EAChB,QAAQ,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;EAC9D,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,KAAK,YAAY,SAAS,EAAE;EACxC,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;EACjD,gBAAgB,OAAO,IAAI,SAAS,CAACI,mBAAiB,EAAEE,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACtE,aAAa;EACb,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;EAC3C,gBAAgB,OAAO,IAAI,SAAS,CAACF,mBAAiB,EAAEE,OAAK,CAAC,IAAIJ,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9E,aAAa;EACb,YAAY,OAAOF,QAAM,CAAC,kBAAkB,CAAC,0BAA0B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACzF,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;EAC3B,gBAAgBK,YAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;EACjE,aAAa;EACb,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;EACzD,gBAAgBA,YAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;EAChE,aAAa;EACb,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACjD,SAAS;EACT,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC;EAC/B,QAAQ,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;EAC5C,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;EACvD,SAAS;EACT,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;EAC/B,YAAY,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;EACrD,SAAS;EACT,QAAQ,IAAI,QAAQ,EAAE;EACtB;EACA,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;EACtC,gBAAgB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;EACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;EAC/C,oBAAoB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC/C,iBAAiB;EACjB,aAAa;EACb,iBAAiB;EACjB;EACA,gBAAgB,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;EACxC;EACA,gBAAgB,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;EAClE,oBAAoB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;EACvC,iBAAiB;EACjB,gBAAgB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;EAC/C,oBAAoB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;EAC/F,wBAAwB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACnD,qBAAqB;EACrB,iBAAiB;EACjB,aAAa;EACb,SAAS;EACT,QAAQ,OAAOL,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACpF,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE;EAC9B,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;EAC/C,KAAK;EACL,CAAC;EACD;EACA,SAASM,OAAK,CAAC,KAAK,EAAE;EACtB;EACA,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACrC,QAAQ,OAAOA,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACzC,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC1B;EACA,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACnC;EACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EAC9B,YAAYN,QAAM,CAAC,kBAAkB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACrE,SAAS;EACT;EACA,QAAQ,KAAK,GAAGM,OAAK,CAAC,KAAK,CAAC,CAAC;EAC7B;EACA,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;EAC9B,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT;EACA,QAAQ,OAAO,GAAG,GAAG,KAAK,CAAC;EAC3B,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;EACxC,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;EAC7B,KAAK;EACL;EACA,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE;EACxB,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL;EACA,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EAC1B,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC3C,KAAK;EACL;EACA,IAAI,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE;EACjE,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC;EACD,SAAS,WAAW,CAAC,KAAK,EAAE;EAC5B,IAAI,OAAO,SAAS,CAAC,IAAI,CAACA,OAAK,CAAC,KAAK,CAAC,CAAC,CAAC;EACxC,CAAC;EACD,SAAS,IAAI,CAAC,KAAK,EAAE;EACrB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EACpD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACxB,QAAQ,QAAQ,IAAIJ,IAAE,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;EACpD,KAAK;EACL,IAAI,OAAO,IAAIA,IAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACxC,CAAC;EACD,SAASG,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;EAC7C,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;EAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;EACvB,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7B,KAAK;EACL,IAAI,OAAOL,QAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;EACzE,CAAC;EACD;EACO,SAAS,WAAW,CAAC,KAAK,EAAE;EACnC,IAAI,OAAO,CAAC,IAAIE,IAAE,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;EAC5C;;ECvSA,MAAMF,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EAEnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;EAC7B,MAAMQ,MAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;EACtD,IAAI,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;EAC1D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;EAC7B,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EAC7B,KAAK;EACL,IAAI,OAAOP,QAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;EAC3E,CAAC;EACD;EACA,IAAI,KAAK,GAAG,GAAG,CAAC;EAChB,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;EAC3B,IAAI,KAAK,IAAI,KAAK,CAAC;EACnB,CAAC;EACD;EACA,SAAS,aAAa,CAAC,QAAQ,EAAE;EACjC,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,EAAE;EACxC,QAAQ,IAAI;EACZ,YAAY,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;EAC3D,SAAS;EACT,QAAQ,OAAO,CAAC,EAAE,GAAG;EACrB,KAAK;EACL,IAAI,IAAI,QAAQ,QAAQ,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE;EAC/F,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;EACpD,KAAK;EACL,IAAI,OAAOA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EACnF,CAAC;EACM,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE;EAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;EACrB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC/C;EACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAClC,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAACO,MAAI,CAAC,CAAC;EACpC,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;EACpD,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACpD,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;EAClC,KAAK;EACL;EACA,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;EACzD,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;EACnD,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;EACjC,QAAQ,KAAK,GAAG,KAAK,CAAC;EACtB,KAAK;EACL,SAAS;EACT,QAAQ,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,CAAC;EACvC,KAAK;EACL,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;EAC5B,KAAK;EACL,IAAI,OAAO,KAAK,CAAC;EACjB,CAAC;EACM,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;EAC5C,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC1B,QAAQ,QAAQ,GAAG,CAAC,CAAC;EACrB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;EAC/C,IAAI,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;EACpE,QAAQP,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC3E,KAAK;EACL;EACA,IAAI,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;EACrD,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;EACvB,QAAQA,QAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACnE,KAAK;EACL;EACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EAC1B,QAAQA,QAAM,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,KAAK,EAAE;EAChB,QAAQ,KAAK,GAAG,GAAG,CAAC;EACpB,KAAK;EACL,IAAI,IAAI,CAAC,QAAQ,EAAE;EACnB,QAAQ,QAAQ,GAAG,GAAG,CAAC;EACvB,KAAK;EACL;EACA,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;EAClD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC9D,KAAK;EACL;EACA,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACjD,QAAQ,UAAU,CAAC,uCAAuC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;EACvF,KAAK;EACL;EACA,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;EACzB,QAAQ,QAAQ,GAAG,GAAG,CAAC;EACvB,KAAK;EACL;EACA,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;EACpD,QAAQ,QAAQ,IAAI,GAAG,CAAC;EACxB,KAAK;EACL,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC7C,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACnD,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;EAC9D,IAAI,IAAI,QAAQ,EAAE;EAClB,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;EACnC,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;EACM,MAAM,WAAW,CAAC;EACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;EAC3D,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;EACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC/H,gBAAgB,SAAS,EAAE,iBAAiB;EAC5C,aAAa,CAAC,CAAC;EACf,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,GAAG,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC3F,QAAQ,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;EACnD,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,KAAK,YAAY,WAAW,EAAE;EAC1C,YAAY,OAAO,KAAK,CAAC;EACzB,SAAS;EACT,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,KAAK,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;EACxC,SAAS;EACT,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;EAC1B,QAAQ,IAAI,KAAK,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;EAC1B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,IAAI,KAAK,KAAK,OAAO,EAAE,CAEtB;EACb,iBAAiB,IAAI,KAAK,KAAK,QAAQ,EAAE;EACzC,gBAAgB,MAAM,GAAG,KAAK,CAAC;EAC/B,aAAa;EACb,iBAAiB;EACjB,gBAAgB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;EAC1E,gBAAgB,IAAI,CAAC,KAAK,EAAE;EAC5B,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EACvF,iBAAiB;EACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;EAC5C,gBAAgB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3C,gBAAgB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9C,aAAa;EACb,SAAS;EACT,aAAa,IAAI,KAAK,EAAE;EACxB,YAAY,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK;EACvD,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;EACxC,oBAAoB,OAAO,YAAY,CAAC;EACxC,iBAAiB;EACjB,gBAAgB,IAAI,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;EAClD,oBAAoBA,QAAM,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EAClI,iBAAiB;EACjB,gBAAgB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;EAClC,aAAa,CAAC;EACd,YAAY,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;EACxD,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;EACpD,YAAY,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;EAC7D,SAAS;EACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;EACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;EAC9G,SAAS;EACT,QAAQ,IAAI,QAAQ,GAAG,EAAE,EAAE;EAC3B,YAAYA,QAAM,CAAC,kBAAkB,CAAC,2CAA2C,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;EAChH,SAAS;EACT,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;EAC3E,KAAK;EACL,CAAC;EACM,MAAM,WAAW,CAAC;EACzB,IAAI,WAAW,CAAC,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;EACtD,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;EACpD,YAAYA,QAAM,CAAC,UAAU,CAAC,0DAA0D,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;EAC/H,gBAAgB,SAAS,EAAE,iBAAiB;EAC5C,aAAa,CAAC,CAAC;EACf,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;EACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;EAC5B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;EACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC5B,KAAK;EACL,IAAI,YAAY,CAAC,KAAK,EAAE;EACxB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;EACpD,YAAYA,QAAM,CAAC,kBAAkB,CAAC,+CAA+C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACvG,SAAS;EACT,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAClF,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAClF,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/G,KAAK;EACL,IAAI,SAAS,CAAC,KAAK,EAAE;EACrB,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;EACjC,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAClE,QAAQ,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC/G,KAAK;EACL,IAAI,KAAK,GAAG;EACZ,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EACtD,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;EAC9C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EACnE,SAAS;EACT,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL,IAAI,OAAO,GAAG;EACd,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC7D,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;EACtD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW,EAAE;EAC/C,YAAY,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;EACnE,SAAS;EACT,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK;EACL;EACA,IAAI,KAAK,CAAC,QAAQ,EAAE;EACpB,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,SAAS;EACT;EACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjD,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC,EAAE;EAC7D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;EACrF,SAAS;EACT,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,QAAQ,EAAE;EACzC,YAAY,OAAO,IAAI,CAAC;EACxB,SAAS;EACT,QAAQ,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACzF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EAChD,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;EAChF,KAAK;EACL,IAAI,MAAM,GAAG;EACb,QAAQ,QAAQ,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;EAC9D,KAAK;EACL,IAAI,UAAU,GAAG;EACjB,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;EACxC,KAAK;EACL,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;EACtC,IAAI,WAAW,CAAC,KAAK,EAAE;EACvB,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;EAC3B,YAAY,OAAO,IAAI,CAAC,IAAI,CAAC;EAC7B,SAAS;EACT,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;EACvB,YAAYA,QAAM,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAC5E,SAAS;EACT,QAAQ,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EACtG,QAAQ,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,aAAa,GAAG,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;EAC3D,IAAI,QAAQ,CAAC,MAAM,EAAE;EACrB,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;EAC3D,KAAK;EACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;EAC9C;EACA,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;EAC7E,YAAY,MAAM,GAAG,QAAQ,CAAC;EAC9B,YAAY,QAAQ,GAAG,IAAI,CAAC;EAC5B,SAAS;EACT,QAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;EAC9B,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,SAAS;EACT,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;EAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;EAC7B,SAAS;EACT,QAAQ,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;EAC9F,KAAK;EACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE;EACrC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;EAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;EAC7B,SAAS;EACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EAChE,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAACO,MAAI,CAAC,EAAE;EACrD,YAAY,UAAU,CAAC,mCAAmC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACxF,SAAS;EACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;EACvB,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;EAChC,YAAY,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EAClE,SAAS;EACT,aAAa;EACb,YAAY,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACxC,YAAY,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EACzD,SAAS;EACT,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;EACpC,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE;EAC5B,YAAY,MAAM,GAAG,OAAO,CAAC;EAC7B,SAAS;EACT,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;EAC5D,YAAY,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;EACxC,SAAS;EACT,QAAQ,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC5C,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE;EAChC,YAAY,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;EAC1D,SAAS;EACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;EACnG,QAAQ,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;EACnE,QAAQ,OAAO,IAAI,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;EAC7E,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;EAC/B,QAAQ,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;EACzC,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EACzD,SAAS;EACT,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;EAC5B,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EACxD,SAAS;EACT,QAAQ,IAAI;EACZ,YAAY,OAAO,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;EAC3D,SAAS;EACT,QAAQ,OAAO,KAAK,EAAE;EACtB;EACA,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;EAC/D,gBAAgB,MAAM,KAAK,CAAC;EAC5B,aAAa;EACb,SAAS;EACT,QAAQ,OAAOP,QAAM,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACtF,KAAK;EACL,IAAI,OAAO,aAAa,CAAC,KAAK,EAAE;EAChC,QAAQ,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;EACjD,KAAK;EACL,CAAC;EACD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;ECvW7B,MAAMD,SAAO,GAAG,eAAe;;ECItC,MAAMC,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EACnC;EACO,IAAI,wBAAwB,CAAC;EACpC,CAAC,UAAU,wBAAwB,EAAE;EACrC,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;EAC7C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;EAC5C,IAAI,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;EAC5C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EAC9C,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EAC9C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC,CAAC;EAEzD,IAAI,eAAe,CAAC;EAC3B,CAAC,UAAU,eAAe,EAAE;EAC5B;EACA;EACA,IAAI,eAAe,CAAC,qBAAqB,CAAC,GAAG,8BAA8B,CAAC;EAC5E;EACA;EACA,IAAI,eAAe,CAAC,YAAY,CAAC,GAAG,sBAAsB,CAAC;EAC3D;EACA;EACA,IAAI,eAAe,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;EAClD;EACA;EACA,IAAI,eAAe,CAAC,kBAAkB,CAAC,GAAG,2BAA2B,CAAC;EACtE;EACA;EACA;EACA,IAAI,eAAe,CAAC,cAAc,CAAC,GAAG,oBAAoB,CAAC;EAC3D;EACA;EACA;EACA,IAAI,eAAe,CAAC,iBAAiB,CAAC,GAAG,kBAAkB,CAAC;EAC5D;EACA;EACA;EACA,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,yBAAyB,CAAC;EAC5D,CAAC,EAAE,eAAe,KAAK,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;EAE9C,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAChE,IAAI,OAAOC,QAAM,CAAC,kBAAkB,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EACzG,CAAC;EACD,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EACjE;EACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,UAAU,IAAI,MAAM,KAAK,eAAe,CAAC,mBAAmB,EAAE;EACjG,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;EAClB,QAAQ,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxD,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;EACxC,gBAAgB,MAAM;EACtB,aAAa;EACb,YAAY,CAAC,EAAE,CAAC;EAChB,SAAS;EACT,QAAQ,OAAO,CAAC,CAAC;EACjB,KAAK;EACL;EACA;EACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,OAAO,EAAE;EAC5C,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACzC,KAAK;EACL;EACA,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAClE;EACA,IAAI,IAAI,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;EAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EAClC,QAAQ,OAAO,CAAC,CAAC;EACjB,KAAK;EACL;EACA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACxB;EACA,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAA2B,CAAC,CAAC;EACnE,CAAC;EACD;EAC8B,MAAM,CAAC,MAAM,CAAC;EAC5C,IAAI,KAAK,EAAE,SAAS;EACpB,IAAI,MAAM,EAAE,UAAU;EACtB,IAAI,OAAO,EAAE,WAAW;EACxB,CAAC,EAAE;EAsFH;EACO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,wBAAwB,CAAC,OAAO,EAAE;EAC1E,IAAI,IAAI,IAAI,IAAI,wBAAwB,CAAC,OAAO,EAAE;EAClD,QAAQA,QAAM,CAAC,cAAc,EAAE,CAAC;EAChC,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;EAClC,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACpC,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE;EACtB,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC3B,SAAS;EACT,aAAa,IAAI,CAAC,GAAG,KAAK,EAAE;EAC5B,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;EACzC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;EAC3C,SAAS;EACT,aAAa,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE;EACzC,YAAY,CAAC,EAAE,CAAC;EAChB,YAAY,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACzC,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM,EAAE;EAC7D,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;EACxD,aAAa;EACb;EACA,YAAY,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;EACxE,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;EAC7C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;EACtD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;EACrD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;EAC9C,SAAS;EACT,aAAa;EACb,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;EAC1C,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;EAClD,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;EAC3C,SAAS;EACT,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC5B;;EC1MA,SAAS,MAAM,CAAC,IAAI,EAAE;EACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;EACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EAC5D,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD,SAAS,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;EACjC,IAAI,IAAI,CAAC,IAAI,EAAE;EACf,QAAQ,IAAI,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;EAClE,KAAK;EACL,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;EACpB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;EACtC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACpC,QAAQ,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACrC,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACpC,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;EACf,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;EACtC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EACjC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;EAChC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC3B,SAAS;EACT,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;EAClC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC3B,SAAS;EACT,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EAC7C,QAAQ,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACpC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EAChC,KAAK,CAAC,CAAC;EACP,CAAC;EAewB,gBAAgB,CAAC,87CAA87C,EAAE;EAC1+C;EACwB,qDAAqD,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;EA6C3F,WAAW,CAAC,ufAAuf,EAAE;EACrgB,WAAW,CAAC,wdAAwd,EAAE;EACte,WAAW,CAAC,w3DAAw3D,EAAE,MAAM,EAAE;EACj5D,gBAAgB,CAAC,yLAAyL;;ECxG1N,MAAMD,SAAO,GAAG,YAAY;;ECE5B,SAASnB,QAAM,CAAC,QAAQ,EAAE;EACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;EACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;EAC1B;;ECTA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;EAC5B,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;EACvB,QAAQ,KAAK,GAAG,CAAC,CAAC;EAClB,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;EACnC,IAAI,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,KAAK,EAAE;EAC3C,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE;EACzC,YAAY,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;EACjD,gBAAgB,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;EACzC,aAAa;EACb,iBAAiB;EACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACjC,aAAa;EACb,SAAS,CAAC,CAAC;EACX,KAAK,CAAC;EACN,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;EAC3B,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACD,SAAS,WAAW,CAAC,KAAK,EAAE;EAC5B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;EACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACpC,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;EACM,SAAS,iBAAiB,CAAC,KAAK,EAAE;EACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,SAAS,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EACjE;EACA,IAAI,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;EAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;EACjC,KAAK;EACL;EACA,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC;EAC1B,IAAI,GAAG,IAAI,IAAI,CAAC;EAChB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;EACvB,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;EACxB,IAAI,SAAS,QAAQ,GAAG;EACxB,QAAQ,IAAI,UAAU,IAAI,CAAC,EAAE;EAC7B;EACA;EACA,YAAY,WAAW,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;EAC5D,YAAY,UAAU,GAAG,CAAC,CAAC;EAC3B,SAAS;EACT,QAAQ,OAAO,CAAC,WAAW,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;EACjD,KAAK;EACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;EACjB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAChC,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC;EAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;EAC3B,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;EAC1B;EACA,IAAI,IAAI,QAAQ,GAAG,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC9B,QAAQ,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;EAChD,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;EACrB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;EACrB,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;EAC7E,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;EACtB,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC;EAC/B,QAAQ,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE;EAChC,YAAY,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC,CAAC;EAC1C,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;EAClC,gBAAgB,GAAG,GAAG,GAAG,CAAC;EAC1B,aAAa;EACb,iBAAiB;EACjB,gBAAgB,KAAK,GAAG,GAAG,CAAC;EAC5B,aAAa;EACb,SAAS;EACT,QAAQ,IAAI,KAAK,IAAI,CAAC;EACtB,YAAY,MAAM;EAClB,QAAQ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;EAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;EACrE,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;EACtC,YAAY,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;EAC3D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;EAChC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;EACpC,SAAS;EACT,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;EAC9B,YAAY,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;EACzF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;EAChC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;EAC7C,SAAS;EACT,QAAQ,GAAG,GAAG,CAAC,CAAC;EAChB,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC1B,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;EAClC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI;EAC5B,QAAQ,QAAQ,CAAC,GAAG,MAAM;EAC1B,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;EAClI,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;EACjG,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;EACzD,YAAY,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC;EAClC,SAAS;EACT,KAAK,CAAC,CAAC;EACP,CAAC;EACD;EACO,SAAS,YAAY,CAAC,CAAC,EAAE;EAChC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;EAChB,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1B,CAAC;EACM,SAAS,uBAAuB,CAAC,KAAK,EAAE;EAC/C,IAAI,OAAO,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,CAAC;EACD;EACO,SAAS,MAAM,CAAC,CAAC,EAAE;EAC1B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EAC1C,CAAC;EACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;EAC1B,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;EACjC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EAC/B,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;EAC9B,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EACrC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;EACnC,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACM,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;EAChD,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;EACzC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EACnB,IAAI,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EACrC,IAAI,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAClC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;EACxC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9B,SAAS;EACT,KAAK;EACL,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC9C,CAAC;EACD;EACA;EACA;EACO,SAAS,eAAe,CAAC,IAAI,EAAE;EACtC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;EACjB,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;EAClB,YAAY,MAAM;EAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;EAC3B,QAAQ,IAAI,CAAC,GAAG,CAAC;EACjB,YAAY,MAAM;EAClB,QAAQ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAClD,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,CAAC;EACM,SAAS,0BAA0B,CAAC,IAAI,EAAE;EACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;EACf,IAAI,OAAO,IAAI,EAAE;EACjB,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;EACvB,QAAQ,IAAI,CAAC,IAAI,CAAC;EAClB,YAAY,MAAM;EAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,KAAK;EACL,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;EACrC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;EACnD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChC,QAAQ,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7D,KAAK;EACL,IAAI,OAAO,CAAC,CAAC;EACb,CAAC;EACD,SAAS,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE;EACpC,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;EACxB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;EACpB,IAAI,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;EAC9C,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;EACpD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;EAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EACxC;EACA;EACA,QAAQ,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;EAC1D,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;EAC9B,YAAY,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EACvD,SAAS,CAAC,CAAC;EACX,KAAK,CAAC,CAAC,CAAC;EACR,CAAC;EACD,SAAS,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE;EACzC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;EACvB,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;EAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C,CAAC;EACM,SAAS,eAAe,CAAC,IAAI,EAAE;EACtC,IAAI,IAAI,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/D,IAAI,OAAO,IAAI,EAAE,CAAC;EAClB,IAAI,SAAS,IAAI,GAAG;EACpB,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;EAC1B,QAAQ,OAAO,IAAI,EAAE;EACrB,YAAY,IAAI,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACvD,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;EAChC,gBAAgB,MAAM;EACtB,YAAY,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;EAChE,SAAS;EACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACzD,QAAQ,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;EAC1B,QAAQ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC;EAC7B,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;EAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;EAChC,QAAQ,IAAI,KAAK,CAAC,CAAC;EACnB,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;EAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;EAC9B,QAAQ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;EACtD,KAAK;EACL;;EC7PA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGO,SAAS,OAAO,GAAG;EAC1B,IAAI,OAAO,uBAAuB,CAACA,QAAM,CAAC,k6cAAk6c,CAAC,CAAC,CAAC;EAC/8c;;EChCA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA,MAAM4B,GAAC,GAAG,OAAO,EAAE,CAAC;EAEpB;EACc,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;EAC5B,IAAI,GAAG,CAAC,iBAAiB,CAACA,GAAC,CAAC,EAAE;EAC/B,eAAe,CAACA,GAAC,EAAE;EACf,eAAe,CAACA,GAAC;;EC/BrB,IAAI,MAAM,CAACT,SAAO,EAAE;EAEnC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;ECLN,MAAM,aAAa,GAAG,gCAAgC,CAAC;EACvD,SAASU,aAAW,CAAC,OAAO,EAAE;EACrC,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;EACvC,QAAQ,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;EACvC,KAAK;EACL,IAAI,OAAO,SAAS,CAACR,QAAM,CAAC;EAC5B,QAAQ,WAAW,CAAC,aAAa,CAAC;EAClC,QAAQ,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EAC3C,QAAQ,OAAO;EACf,KAAK,CAAC,CAAC,CAAC;EACR;;ECbO,MAAMF,SAAO,GAAG,WAAW;;ECKnB,IAAI,MAAM,CAACA,SAAO;;ECL1B,MAAMA,SAAO,GAAG,eAAe;;ECOtC,MAAMC,QAAM,GAAG,IAAI,MAAM,CAACD,SAAO,CAAC,CAAC;EACnC,SAAS,kBAAkB,CAAC,OAAO,EAAE;EACrC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;EACnC,QAAQC,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;EACL,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACpC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EACjC,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;EACjD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;EACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;EACxC,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,SAAS;EACT,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;EAC1C,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;EACtD,SAAS;EACT,KAAK;EACL,IAAI,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACjC,CAAC;EACD;EACA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;EAC1C,SAAS,KAAK,CAAC,CAAC,EAAE;EAClB,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;EACpB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC7B,KAAK;EACL,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;EACnC,CAAC;EACD;EACA;EACA,MAAM,UAAU,GAAG,EAAE,CAAC;EACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;EACtC,CAAC;EACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;EAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC;EACD;EACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;EACvD,SAAS,YAAY,CAAC,OAAO,EAAE;EAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;EACpC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;EACpE,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACpF;EACA,IAAI,OAAO,QAAQ,CAAC,MAAM,IAAI,UAAU,EAAE;EAC1C,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;EACtD,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EAC/E,KAAK;EACL,IAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;EAC9D,IAAI,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;EAChC,QAAQ,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;EAClC,KAAK;EACL,IAAI,OAAO,QAAQ,CAAC;EACpB,CAAC;EAEM,SAAS,UAAU,CAAC,OAAO,EAAE;EACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC;EACtB,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;EACvC,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;EACL,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;EACjD;EACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;EAC9C,YAAY,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;EACrC,SAAS;EACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;EAC7C;EACA,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,MAAM,KAAK,OAAO,EAAE;EAClF,YAAYA,QAAM,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EAClF,SAAS;EACT;EACA,KAAK;EACL,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE;EAC9D;EACA,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE;EAC/D,YAAYA,QAAM,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EAC/E,SAAS;EACT,QAAQ,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EACnD,QAAQ,OAAO,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;EACnC,YAAY,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;EAClC,SAAS;EACT,QAAQ,MAAM,GAAG,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;EACnD,KAAK;EACL,SAAS;EACT,QAAQA,QAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;EACzE,KAAK;EACL,IAAI,OAAO,MAAM,CAAC;EAClB;;EChGO,MAAMD,SAAO,GAAG,kBAAkB;;ECCzB,CAAC7B,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;EACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;EAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,EAAE;EAGa,IAAI,MAAM,CAAC6B,SAAO,EAAE;EAC5B,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;EACpD,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;EACxC,QAAQ,UAAU,EAAE,IAAI;EACxB,QAAQ,KAAK,EAAE,KAAK;EACpB,QAAQ,QAAQ,EAAE,KAAK;EACvB,KAAK,CAAC,CAAC;EACP;;ECnBgB,CAAC7B,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;EACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;EAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;EAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;EACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;EACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EAC9E,KAAK,CAAC,CAAC;EACP,EAAE;EAQa,IAAI,MAAM,CAAC6B,SAAO,EAAE;EAEnC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;EACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;EACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACX,SAAS,CAAC,IAAI,CAAC,oEAAoE,EAAE;EASxF,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;EACjC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;;;;;;MCjClDW,oBAAc,GAAGC,QAAM,CAAC;AACxB;EACA,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE;EAC1B,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;EAC/C,CAAC;AACD;AACAA,UAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;EAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;EACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EACpE,CAAC;;;;ECVD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;EACzC;EACA,EAAEC,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;EACtD,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;EAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;EAC1D,QAAQ,WAAW,EAAE;EACrB,UAAU,KAAK,EAAE,IAAI;EACrB,UAAU,UAAU,EAAE,KAAK;EAC3B,UAAU,QAAQ,EAAE,IAAI;EACxB,UAAU,YAAY,EAAE,IAAI;EAC5B,SAAS;EACT,OAAO,EAAC;EACR,KAAK;EACL,GAAG,CAAC;EACJ,CAAC,MAAM;EACP;EACA,EAAEA,kBAAA,CAAA,OAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;EACtD,IAAI,IAAI,SAAS,EAAE;EACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;EAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;EACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;EAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;EACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;EACvC,KAAK;EACL,IAAG;EACH;;ECxBA,IAAID,QAAM,GAAGtC,oBAA8B,CAAC;EAC5C,IAAIwC,UAAQ,GAAGvC,0BAAmB,CAAC;AACnC;AACgBwC,SAAA,CAAA,QAAA,GAAGD,WAAS;AAC5B;EACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;EACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;EAC/C,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;EACpC,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;EACrD,CAAC;AACD;EACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;EAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;EACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;EACvB,EAAE,IAAI,CAAC,GAAG;EACV,IAAI,OAAO,EAAE,CAAC;EACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;EACd;EACA;EACA;EACA;EACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;EAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;EACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;EAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;EACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;EACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;EAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;EAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;EACpC,SAAS,MAAM;EACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;EAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;EACpC,SAAS;EACT,OAAO;EACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;EAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;EAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;EAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;EACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACpD,KAAK;EACL,GAAG,MAAM;EACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;EACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAC1B,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACcC,SAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;EACA,SAAS,KAAK,CAAC,GAAG,EAAE;EACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;EACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACtC,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,KAAK,CAAC,CAAC,EAAE;EAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;EACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;EAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;EACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;EAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;EACnB,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;EAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;EAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACjC,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACcA,SAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;EACA,SAAS,KAAK,CAAC,IAAI,EAAE;EACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;EACtB;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,KAAK,CAAC,IAAI,EAAE;EACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;EACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;EACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;EACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;EACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;EAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;EAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;EAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;EAC5B;EACA,IAAI,OAAO,IAAI,CAAC;EAChB,CAAC;AACYA,SAAA,CAAA,KAAA,GAAG,MAAM;AACtB;EACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;EACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;EACxB,EAAEH,QAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;EAC1D,IAAI,IAAI,CAAC,CAAC;EACV,IAAI,IAAI,MAAM,KAAK,KAAK;EACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/E;EACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;EACrB,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACaG,SAAA,CAAA,MAAA,GAAG,OAAO;AACxB;EACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;EAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;EACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;EAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;EACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;EACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;EAC5B,KAAK,MAAM;EACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;EACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;EACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;EACxB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACcA,SAAA,CAAA,OAAA,GAAG,QAAQ;AAC1B;EACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACrC,CAAC;AACaD,SAAA,CAAA,MAAA,GAAGC,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;EACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EACrC,CAAC;AACaF,SAAA,CAAA,MAAA,GAAGE,SAAO;AACxB;EACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE;EACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACvB,CAAC;AACYH,SAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;EACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EAC3B,CAAC;AACcJ,SAAA,CAAA,OAAA,GAAGI,UAAQ;AAC1B;EACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EAC/B,CAAC;AACcL,SAAA,CAAA,OAAA,GAAGK,UAAQ;AAC1B;EACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;EACnC,CAAC;AACcN,SAAA,CAAA,OAAA,GAAGM,UAAQ;AAC1B;EACA,SAASC,OAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;EACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;EACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;EACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACpB,CAAC;AACYP,SAAA,CAAA,KAAA,GAAGO,QAAM;AACtB;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;EACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACeR,SAAA,CAAA,QAAA,GAAGQ,WAAS;AAC5B;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACeT,SAAA,CAAA,QAAA,GAAGS,WAAS;AAC5B;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;EACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;EACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBV,SAAA,CAAA,UAAA,GAAGU,aAAW;AAChC;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBX,SAAA,CAAA,UAAA,GAAGW,aAAW;AAChC;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;EACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;EAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;EACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;EACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;EAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBZ,SAAA,CAAA,UAAA,GAAGY,aAAW;AAChC;EACA,SAASC,YAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;EACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;EAClB,CAAC;AACiBb,SAAA,CAAA,UAAA,GAAGa,aAAW;AAChC;EACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EACjB,CAAC;AACgBd,SAAA,CAAA,SAAA,GAAGc,YAAU;AAC9B;EACA,SAASC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EACjB,CAAC;AACgBf,SAAA,CAAA,SAAA,GAAGe,YAAU;AAC9B;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;EACpB,CAAC;AACehB,SAAA,CAAA,QAAA,GAAGgB,WAAS;AAC5B;EACA,SAASC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;EAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;EACjB,CAAC;AACDjB,SAAA,CAAA,QAAgB,GAAGiB;;;;ECnRnB,IAAIjB,OAAK,GAAGzC,OAAkB,CAAC;EAC/B,IAAIsC,QAAM,GAAGrC,oBAA8B,CAAC;AAC5C;EACA,SAAS0D,WAAS,GAAG;EACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;EAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;EAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;EACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;EAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;EACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;EACtC,CAAC;AACgBC,UAAA,CAAA,SAAA,GAAGD,YAAU;AAC9B;AACAA,aAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;EACvD;EACA,EAAE,GAAG,GAAGlB,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;EACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;EACvB;EACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;EACA;EACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;EAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;EACA;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;EACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;EACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;EACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;EACA,IAAI,GAAG,GAAGA,OAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;EACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;AACAkB,aAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;EAC3B,EAAErB,QAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;EACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;EAC3B,CAAC,CAAC;AACF;AACAqB,aAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;EAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;EAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;EAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;EACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;EAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;EACA;EACA,EAAE,GAAG,KAAK,CAAC,CAAC;EACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;EAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;EAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;EACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;EAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,GAAG,MAAM;EACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;EAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;EACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;EACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EACnB,GAAG;AACH;EACA,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;;;;;;ECzFD,IAAIlB,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI,MAAM,GAAGyC,OAAK,CAAC,MAAM,CAAC;AAC1B;EACA,SAASoB,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;EACb,IAAI,OAAOC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;EACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,KAAK,CAAC;EACb,IAAI,OAAOC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC1B,CAAC;AACWH,UAAA,CAAA,IAAA,GAAGC,OAAK;AACpB;EACA,SAASC,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EAC9B,CAAC;AACWF,UAAA,CAAA,IAAA,GAAGE,OAAK;AACpB;EACA,SAASC,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EACrC,CAAC;AACYH,UAAA,CAAA,KAAA,GAAGG,QAAM;AACtB;EACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACnB,CAAC;AACUH,UAAA,CAAA,GAAA,GAAG,IAAI;AAClB;EACA,SAASI,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,CAAC;AACaJ,UAAA,CAAA,MAAA,GAAGI,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACtD,CAAC;AACaL,UAAA,CAAA,MAAA,GAAGK,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;EAClD,CAAC;AACaN,UAAA,CAAA,MAAA,GAAGM,SAAO;AACxB;EACA,SAASC,QAAM,CAAC,CAAC,EAAE;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;EACpD,CAAC;AACDP,UAAA,CAAA,MAAc,GAAGO;;EC9CjB,IAAI1B,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI4D,QAAM,GAAG3D,QAAoB,CAAC;EAClC,IAAImE,WAAS,GAAGlE,QAAmB,CAAC;AACpC;EACA,IAAIyC,QAAM,GAAGF,OAAK,CAAC,MAAM,CAAC;EAC1B,IAAIG,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;EACxB,IAAIM,SAAO,GAAGN,OAAK,CAAC,OAAO,CAAC;EAC5B,IAAI,IAAI,GAAG2B,WAAS,CAAC,IAAI,CAAC;EAC1B,IAAIT,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;EACA,IAAI,MAAM,GAAG;EACb,EAAE,UAAU,EAAE,UAAU;EACxB,EAAE,UAAU,EAAE,UAAU;EACxB,CAAC,CAAC;AACF;EACA,SAAS,IAAI,GAAG;EAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;EAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;EACA,EAAED,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;EACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;EAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;EACzB,CAAC;AACD;AACAlB,SAAK,CAAC,QAAQ,CAAC,IAAI,EAAEkB,WAAS,CAAC,CAAC;MAChC,EAAc,GAAG,IAAI,CAAC;AACtB;EACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;EACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;EACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;EACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;EACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;EACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;EACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGhB,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;EACvB,IAAI,IAAI,CAAC,GAAGI,SAAO,CAACJ,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACtB,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;EACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;EACnB,IAAI,OAAOH,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC;EACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC,CAAC;;ECvED,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI4D,QAAM,GAAG3D,QAAoB,CAAC;EAClC,IAAI,SAAS,GAAGC,QAAmB,CAAC;EACpC,IAAIoC,QAAM,GAAGlC,oBAA8B,CAAC;AAC5C;EACA,IAAIwC,OAAK,GAAGH,OAAK,CAAC,KAAK,CAAC;EACxB,IAAIK,SAAO,GAAGL,OAAK,CAAC,OAAO,CAAC;EAC5B,IAAI,OAAO,GAAGA,OAAK,CAAC,OAAO,CAAC;EAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;EAC1B,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;EAC5B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;EAC9B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAC9B;EACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;EACA,IAAI,QAAQ,GAAG;EACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,CAAC,CAAC;AACF;EACA,SAASS,QAAM,GAAG;EAClB,EAAE,IAAI,EAAE,IAAI,YAAYA,QAAM,CAAC;EAC/B,IAAI,OAAO,IAAIA,QAAM,EAAE,CAAC;AACxB;EACA,EAAEV,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACvB,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,GAAG,CAAC;EACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;EACzB,CAAC;AACDlB,SAAK,CAAC,QAAQ,CAAC4B,QAAM,EAAEV,WAAS,CAAC,CAAC;MAClC,IAAc,GAAGU,QAAM,CAAC;AACxB;AACAA,UAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvBA,UAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACrBA,UAAM,CAAC,YAAY,GAAG,GAAG,CAAC;AAC1BA,UAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;AACAA,UAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;EACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;EAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;EAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;EAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGvB,SAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;EACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;EACA,EAAER,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;EACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACjC,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACnE,IAAI,IAAI,EAAE,GAAGM,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAGA,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACtB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClC,CAAC,CAAC;AACF;AACAyB,UAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAChD,EAAE,IAAI,GAAG,KAAK,KAAK;EACnB,IAAI,OAAO5B,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC;EACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACxC,CAAC;;ECtGD,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI,MAAM,GAAGC,IAAgB,CAAC;AAC9B;EACA,SAAS,MAAM,GAAG;EAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;EAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;EACA,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpB,EAAE,IAAI,CAAC,CAAC,GAAG;EACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;EACrD,CAAC;AACDwC,SAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;MAC/B,IAAc,GAAG,MAAM,CAAC;AACxB;EACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;EACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;EACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;EAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;EACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;EAChD;EACA,EAAE,IAAI,GAAG,KAAK,KAAK;EACnB,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACpD;EACA,IAAI,OAAOA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EACpD,CAAC;;EC1BD,IAAIA,OAAK,GAAGzC,OAAmB,CAAC;EAChC,IAAI4D,QAAM,GAAG3D,QAAoB,CAAC;EAClC,IAAIqC,QAAM,GAAGpC,oBAA8B,CAAC;AAC5C;EACA,IAAI,SAAS,GAAGuC,OAAK,CAAC,SAAS,CAAC;EAChC,IAAI,SAAS,GAAGA,OAAK,CAAC,SAAS,CAAC;EAChC,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,KAAK,GAAGA,OAAK,CAAC,KAAK,CAAC;EACxB,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,QAAQ,GAAGA,OAAK,CAAC,QAAQ,CAAC;EAC9B,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;EAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;EAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;EAClC,IAAI,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC;AAClC;EACA,IAAIkB,WAAS,GAAGC,QAAM,CAAC,SAAS,CAAC;AACjC;EACA,IAAI,QAAQ,GAAG;EACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAChD,EAAE,UA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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,EAAE,GAAG;EACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACtD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtD,CAAC,CAAC;AACF;EACA,IAAI,CAAC,GAAG;EACR,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EACxD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACxD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,E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IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACxE,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC1E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;EAC3E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,IAA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EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,G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,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACvD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OAClD,EAAE,IAAI,SAAS,CAAC;EACpB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,G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G,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACxD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;OACnD,GAAG,IAAI,SAAS,CAAC;EACrB;OACI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;OACzB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAA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AAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACtC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7B,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EACxC,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAC1C,KAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAA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SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,gEAAgE;EACxE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,iEAAiE;EACzE,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,iEAAiE;UAClE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,kEAAkE;EAC1E,SAAQ,kEAAkE;UACnE;SACD;EACN,SAAQ,k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I,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;EAClD,KAAI,UA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AAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACtd,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACb,KAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;EACjB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;EACd,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAClB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;EACnB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;EACpB;EACA;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;OACpB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACxB,KAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/B;OACI,CAAC,GAAG,CAAC,CAAC;EACV,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACvB,KAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;OACnB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAC9B,KAAI,EAAE,GA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CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..35ee8fd15751892fd1c57301faa3bf47477c94d7 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/tsconfig.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/events.d.ts","../../../node_modules/@walletconnect/events/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/types/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/heartbeat.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/constants/index.d.ts","../../../node_modules/@walletconnect/heartbeat/dist/types/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/types.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/utils.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/shared/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/node-js/index.d.ts","../../../node_modules/@walletconnect/keyvaluestorage/dist/types/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/misc.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/provider.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/validator.d.ts","../../../node_modules/@walletconnect/jsonrpc-types/dist/types/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../../node_modules/@walletconnect/logger/dist/types/constants.d.ts","../../../node_modules/@walletconnect/logger/dist/types/linkedList.d.ts","../../../node_modules/@walletconnect/logger/dist/types/clientChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/serverChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/baseChunkLogger.d.ts","../../../node_modules/@walletconnect/logger/dist/types/utils.d.ts","../../../node_modules/@walletconnect/logger/dist/types/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/keychain.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/crypto.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/messages.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/publisher.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/subscriber.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/relayer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/history.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/expirer.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/store.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/pairing.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/verify.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/echo.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/events.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/core.d.ts","../../../node_modules/@walletconnect/types/dist/types/core/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/proposal.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/auth.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/session.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/jsonrpc.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/pendingRequest.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/engine.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/client.d.ts","../../../node_modules/@walletconnect/types/dist/types/sign-client/index.d.ts","../../../node_modules/@walletconnect/types/dist/types/index.d.ts","../../../node_modules/detect-browser/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/delay.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/convert.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/utils/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/types/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/watch.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/misc.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/time.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/constants/index.d.ts","../../../node_modules/@walletconnect/time/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-getters/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/window-metadata/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/error.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/crypto.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/environment/dist/cjs/index.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/env.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/format.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/routing.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/url.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/validators.d.ts","../../../node_modules/@walletconnect/jsonrpc-utils/dist/cjs/index.d.ts","../../../node_modules/query-string/index.d.ts","../src/misc.ts","../../../node_modules/@ethersproject/hash/lib/id.d.ts","../../../node_modules/@ethersproject/hash/lib/namehash.d.ts","../../../node_modules/@ethersproject/bytes/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/message.d.ts","../../../node_modules/@ethersproject/bignumber/lib/bignumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/fixednumber.d.ts","../../../node_modules/@ethersproject/bignumber/lib/index.d.ts","../../../node_modules/@ethersproject/networks/lib/types.d.ts","../../../node_modules/@ethersproject/networks/lib/index.d.ts","../../../node_modules/@ethersproject/properties/lib/index.d.ts","../../../node_modules/@ethersproject/transactions/lib/index.d.ts","../../../node_modules/@ethersproject/web/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-provider/lib/index.d.ts","../../../node_modules/@ethersproject/abstract-signer/lib/index.d.ts","../../../node_modules/@ethersproject/hash/lib/typed-data.d.ts","../../../node_modules/@ethersproject/hash/lib/index.d.ts","../src/signatures.ts","../src/cacao.ts","../src/caip.ts","../../../node_modules/@stablelib/aead/lib/aead.d.ts","../../../node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.d.ts","../../../node_modules/@stablelib/hash/lib/hash.d.ts","../../../node_modules/@stablelib/hkdf/lib/hkdf.d.ts","../../../node_modules/@stablelib/random/lib/source/index.d.ts","../../../node_modules/@stablelib/random/lib/source/system.d.ts","../../../node_modules/@stablelib/random/lib/random.d.ts","../../../node_modules/@stablelib/sha256/lib/sha256.d.ts","../../../node_modules/@stablelib/x25519/lib/x25519.d.ts","../node_modules/uint8arrays/types/src/compare.d.ts","../node_modules/uint8arrays/types/src/concat.d.ts","../node_modules/uint8arrays/types/src/equals.d.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/uint8arrays/types/src/util/bases.d.ts","../node_modules/uint8arrays/types/src/from-string.d.ts","../node_modules/uint8arrays/types/src/to-string.d.ts","../node_modules/uint8arrays/types/src/xor.d.ts","../node_modules/uint8arrays/types/src/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@stablelib/ed25519/lib/ed25519.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/api.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/types.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/constants.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/utils.d.ts","../../../node_modules/@walletconnect/relay-auth/dist/cjs/index.d.ts","../src/crypto.ts","../src/errors.ts","../../../node_modules/@walletconnect/relay-api/dist/types/types.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/parsers.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/jsonrpc.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/validators.d.ts","../../../node_modules/@walletconnect/relay-api/dist/types/index.d.ts","../src/relay.ts","../src/uri.ts","../src/namespaces.ts","../src/validators.ts","../src/network.ts","../src/memoryStore.ts","../src/index.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/chai-subset/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/lodash.isequal/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/resolve/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/@types/trusted-types/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"002d6d5f044365b3fbfba0ba9be3bb57cac09b81547c8df4b0795755d2081d90","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"bae4ea23beb8397755b935cb84d3cdc6cdb0b1b4a329b90de9fc6c8774d71994","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","c57870f6664fd657ec2cf096bbb043b9556b0228ec0c12dd54193361ca563ea1","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","acfbb5aaef964e1d441f961a1846197f03241dba3c63b1e4d1903684888ef465","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"9499ba4dcd1ee0596d8c98d01341bc874840c5291156513bda667fecad54d5be","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","cb92bc2e42b261e4299025756f1beb826b3d9666a3f0d46f8a7254ca512f57e4","e795a96de48dd2fbf83b1e29ecfae8e1dd428b99aa3508962c98679862e129a0",{"version":"59104b2e80c588b813d03d3a45f57117ca4601ae3fc216c5ffbcbafc4effc1c5","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","556bf5c36deb62cffa1bf697c1789fe008ec82db0273025001db66732714e9d9","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","653968fc1b35c5eb3d273d36fac1c1dc66f9537edf28f33485b8776bd956e23d",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2d526e6f21d8cc66ac11ada32874e95ae88d870c6c9d3d9d4e03b1d1f9ad7b8e","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","d2ec52f565f0570e90b659811347bd689f8c6039b11eaaccd0f243759d46da6e","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a12806a1bde5e9f137bb79728d87a4ceaedf04e95efc9967d3288a3c252d9a7b","d14570d22f887cabca718688bae3927448a81eb1236eb4c172a8d107fbcf345a","e810cf9afcb9399bdd904986e82a68560ae6d8b797c241f8b124f8e3e4a10082","de99a0d33f351eae6b79104bce22f1b6ab939e93b1cf79784a08691894c25dc4","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","4e33f3865f0774df5c73a8a82015d1d81ab5014cb24265666c5e522ea4bce0e1","33c509291c65b0b1a32c0be34e5e2fe3dadfce23413b8ac1e3da15cab1217b73","592200d0fda21eed2f9aacf65cb7ec1b21ea093202ac84ef725e3098b07310a4","41a70f8d09d0d37307e53b582b839dde158543926d246d5a021b28449d5d1cc2","c0a8732b08567bd92624b09f5bb98a08af642b96df881eeda39912df4f511975","c349cd698e0b7154d4550183a76350edaee36b7cde9b3e5aa60e2f1ee7fdb425","09f8b50c8da72c66a720cf1866e07302e944c0140abe7c8349bcfbe70726ec85","15eb95d253d5c1ba00097e9ca52b307b55dbd633397f83c198037877d0afd849","ed0cdc2d4ad21f32c2c1b0e012523683983be598a402821b26112acbf173fa0a","5df7eff2735bdd6c382b1647a84d7cec56af468d72fc32c7c9e143bd1407504b","4b627d5cf853d831a19b7dfcf2c28cdbf65730c38d8ac1d1bb87ebebc8ffb359","32ca4b9524e5720c7b1a700f16a1c9bd812316cace01d86d4733e83f9fb15885","7a35c48e1b4c1c6ca6a63610f76a7321c0480dae108430307694c2ca18de7be0","2d87c7263363c8fd82e91e10c56396ed5d144967fdadb0f4d92ffc73841a9e56","679d7df22bf42d8761ef3f8acdac6d305384fa11df7d222de32c939405abda22","172f31b538f6e3f70c2d001d665d5a46c4b043f707ba822b4d906d59bd9c229d","7af025cf1b7afde27e5deb448d9517a5f1ba47a02523b7ab93501a218695b5c6","e8c5e97646fbd53f30bfc0a680510a9edaec0fc1fcccba2c8732b59e9a81f049","9386858a8741582435bec3a815e9fd42902d65f0f2b1b51b831d842a14391a24","74af40d49190c96cb4cdd86bfc1dddca9c9a240033cd24c8fcdef9df13e061b7","aa4bd634de651f7d2876052205619032749d86b2b22142ea806711cda6d0dc52","531dae7ef22ab7e15c663caef4506aba0c5f258c729f965331068590ebe97ab5","5d71a7134ac10cc6c92cf78dd9e0a48eef665c254e3f0afe7bf9ba4418861b9f","9508f941e41dfff0c366dd1a1f41a702697b91ae5fbbaa414881fcee4fb9119d","01b86d49aad113300499cf05f714c17ca971ffe25240124bd619e690f75a8b55","3d3202b1aecf61c574d412ed08cc43ac46dcb888c31de5b40d05168f6207cde8","dfbd08d79c0ed94d7563e818229b1f9ac27c6b29099431de81be9fb2334a1c42","4f815aba9db7da7a51661c55236f54bad4e01b682aef431e042b116f9d910470","200650e1ed5d5b2bee679e079619d1b6d162df822b31af327dbd61ff95689562","27b8ca719f38978c9321758b7cfd51873d377db44eac9f3f6e402752faa3f6a5","5b0594c3b261f6eb7e54bbf17588e679abc03e3693ec5076dea9f1cee0bbcf13","101602942b03c24915c706a82361b45cf66fe055f8627f7347fa6bbc0d4811e2","9c6b34ba69cd25457b0a5b27db15705ab7eba470af085e89c37d1d3d6e21c977","7e53626f08f85e10df73876c7517af4c3fc1c46bbca543d77b4682743ed2f163","620148e2b8632dae30a3ce69e8097c9332a6a3b3e172ee1fcd5fbf06750e81af","8f34f8fc1952d8e3987ccb39ccff1a4bc4eb0f04221e3d854529302d56e87226","85aac179d07d2a3d7b95a1e5b285c91a717d91bcc9e60a7e8b9de4008c15a542","52d2d16f42f024e057542940e191c49d10876c50e37a6abfcbdf365b813376fe","e3db3019dd47322ff80e20fd431c893db3a93c52fe9774bab69aa7534518cd82","f0fe1e6ca80532a63a6482b69a40c0ef7117f7148beee8e588c7f1528209dc71","82e9f199e29ff8a029aebec3a7f258ac2f2091a4b17d1ec20123eb9f2f7fa847","002edf832f43162f7cb70da12e2ec9e0054286872e317faec25ab15c4085804f","9d93daff82e921f6ddf56c6d207fdbf76b8f51566cd04d4fe8b34d1d72bad8ed","3d73320d9491b16adfd29d3177af35611cc98a09f4c632b39014bbec165862e2","517c54ef783149f46a5f55eecab11558bc1e33208d6bf6f0bbc134c13d9ab01d","49f5a1d46d63e66efe850b0f269e72bd85485c9458486c304c64c022eb741d50","1e4f096ec42477fa7881f58c52d9e6bf9fa7e71ba01f562d734c3bb6c6bee24d","87ed59b6a8df8efc3f0eaa35c8da0bf788f5510a128d3f62936f6af57edc7e41","15cb254c8108860af77bbc6458f764c66d081ac500e397f3cb8acb9d2b158402","1fbc0aa2bf8e019b2aae8567022e7b55f59b144714d6d1aa6c96b8acf15151a8","10fa6a67f237e9d803110d9f7b29b5edded4adb47809ea3d4355a6d3b644f978","24766e27ffabe6d258cfc54643f841782672a0e63e1d912ba23138deaf40e401","b76f79b98bd953ee71bba656b761f4ba26034ff3f8687c7c65edfc2d9604670f","d9548e5e333b64e6da237002a469401735722ea45caf86bff02db69213e96e31","66682da81646c807fbbb0999fc6d49ad41d10a32880b5803a7dea07fa251d1b9","7902c9ca40697c65549f9a41ab8cd711eab57143ac0d6202af73c18bcd63ca4c","d6536cdf16f68971c9a7f20bc2c353e0655bc3ac6ee742ec9d6da8b48cb89aa9","beea0bd57334b5d3f296eb255a99d6bb4c081faed7b09b8c5d2d7d3666ecb26c","d15bc6928c895f44e02a86f60c0e72d6d09ba7812d5ace831dc7f6c2600317d0","f3285db89f2ab44bb19e8a4e107d8542543a64ceb5a244339a348e36a3ebc938","223c35d0032d2ce91977eb3bced9e74dfbc5ff54d17ace3f471069e8e0935dfa","3f19b01b25d8152c3f023a55b958071c39f29aecc3206d8b953ce22ed1afe2a7","cc8a7843f4b9f96ac5179ec3ee1ecd428dea0caa35c455cab1b3e7a73c740306","776084ff5d871a19ffe2992bc1f7318d0187e34e5a4a7da4eeb78bdf9501e621","612e990e85f99aa8f2329d6d4d755713a44bd5c2041b02baae19c3ed1523f1de","4a259c19075fb64b9c302da22c51feb14fb8ad0775a780fccbef6a9e6c082c63","54223032d8849dd76ec6087684f361e9973c8de9c643b6a9ace67c136b13a326","0ae96d34bca21bb9118f2a8269a625ba4eee909c5d14d475a2eef33cea431552","a38c5518309b0e8f832f6fd53641ac69eeee77b66a03864a2688438e5402d3e5","d8931c54a30eea4ecc0afec72a4c81af8ddfebbec5c424b58c30bc7d5cbacd6c","6ff08c4d0269c9df488ab989923859d733cc35ba0eb65ce146d80f0487445088","2e1cd25ab4b887717e27b7013d9b5f1ee1e21406f3bc60f6db06383839e6d35a","84b504a59014d3e72dd4113089825b496620eb0647c47d2e56eeb105319f95f2","27975250d16d95779140c1c2231e2f7b9d7764f4bb716b19880c01eeea715452",{"version":"f9f9299195f26062d0947743595024ab0cafc766357f914fe2fc541968c9e079","signature":"dd551b50359abbf84b07a1aae29f84686ff2e627d04ad6abfa384896dec211a2"},"45a910666b455daf042c0a0cfa610c20ea59a0aaf702f93d3b467a05f9a27e20","5580ff53b5f6f1ecdb68ecb61327e63112f97660912c15444c1f8a08f69c19dc","1fcb8b15db812281d69a3090d488903f9e93033004aef9d8889ca3ad0753a96f","84fb7c52fc116ddcbd1b34535e387053f2a0134d11c5e39b193f4c1328fb1fb5","bdf5a95eb0a2dd1d39805bdf51b46ba012bb9b92b2ddaae16219595bba7678a5","9f794a0e8550a03baff865a3961cc22afbd85bc4ba9672bdda036971928f85f4","66a697d1e4cdbf25cdce4644a8085a8563041fa8c7731d4d9f5e8f22e66ba72c","4f1ae3f24125216cf07c5211a3f00d2bb4782d7cc76c0681603f8249f9232ff0","d3fb92a5640f83f7844d60b35317a0f95c27e3658a749d76d218c461ad091668","8bc2cad630da1033c1fd8d7df2bffb18af0da6113bd086a8bbec04a2471a1e00","d1f8bfcd91b284657ef8187c55ace7db91a3c43e642c3f14e54364154932f7e4","f54c92bfcae54f360fe79514746efce4870e4ddabc064e95d406bba291e9f672","175fd7186fa6a70f9db9b270a04a503cae23cf01cb77e3905bac115c38424cf7","c993f7ed1b8e1023c1f2ee5b262dbc3b70b27475674e40a53a58591f9972dacc","fd3cd8bf3c90ef4694195a617a5daaac561d8be52ba33c607f170c11f3c50154","6852fc2f309e330e38694bad95bde670c384d1498bf4fbe3a751761b43279934",{"version":"fc46b90ef00ea80de64313ca101e3377e82c7de5b2b8cc82ec324ef64062dfd2","signature":"51d71dbcbf7dfc9fa475d1d2db8c744fc93cb91fb8b4e6e3724377066008e745"},{"version":"5d731342b1c0fd0c367ff68e163309ae71ca2fc8b3461861be64e68296730bf7","signature":"04130e865406d542194f0ca04c131174c7b7230b4c7b1ffe6deb723b411e5122"},{"version":"f287cf1ae78dadca66f0fff910164af2e66d7e1ee1ef4aa53e8bf9ac364d086a","signature":"ca2cd04f36686a52bf72f3a75f34f09d496abefb9410c13d609c968956d23fa8"},"91bdb91e83ad82b3a68955033c35413e11158a56448534cc11dae2734cab0d8f","fc8ed8a75b39d372ea11553e253c763a75b8447f6a5a3b0c3509b21803ce4783","6562fc4b9b470ee474add192278b9ad7d863b1096f57c7aeb26e6b15a86e51a7","19109153165b1279adbddfac3f9182ef2274cacc9dd2dbadbff7983332343348","b7b4da95464f11da1b8de59ed34f6deb740d14fcdd54065fdbbe850741ae958c","64d7747acb1d36374e9c884773b6dbede826dd9684cecad3c7fb4ce7960f90d7","47e62f697f75c990750842294e175977588557f15a9731625e7e3c882b4b1d24","ef5a427017c481641f81327b63c13c810eaf49bf770986ae959de10c12242dff","c633deeb89a5a7142bce011d097bc4d354533c6f51a5b25404355a968414f29a","90cf3b12cd05d01c42193be1cd25af2c8dbef608ae143e5eaacf73cdb99840d2","4e37a214f2cd5a350affba5580d1d7c01ca83da6393ef2c13a66d74fc7b95eac","3157fa89ebde7e5d5499da49d8ae13e523c1de12d5c1285251c17b7672887b1e","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","c6591dc2b834e9be50f97edb393c4673e9b66f5689c90d69a71c7da962a0563a","0841c3aed9354ad025302d5c7cde53916825047646e559d918b62a31500aebe7","7c515715da56f17e695e2c3611cf073d2cebfd417497652b35f9042b7235d5b2","a4942fc385f0368be5a50d7e7280c5c6ad47b082a9eaa0284042c89ce2df9e08","91072b0ddd41ce84a3c85f36cf927f2e7b1724f7ce71accf16715d99bafc113a","bc6dd50ac2fc9a7ca6488811b116bd0ddd606338db0bb97852c8fcf757e2d7f5","bc9d7f2a012412c294f4eb0fc856e063112a3666957a190542b62662391810b2","adf189301df111a1faa1bf6abd90c1323cb769e73a3757371421a47a7ad38536","7c049c1aee9019c358917750ddb137dcba8210aa70fc0f38cc74c8aa8923a500","9ec3f45588bdc21f53ff886d8ba21f7b32662dcc110addbb6209eb45779b4637","15d3978a362d47f8ed5b868a28d0f8a5dfe6337c89b2700eba2e31d5c9e85bed","5a50144562fb77383e680369d9e3a079a302a4ec0e9c688fe7b7dc927f84af08","81ee761144fa54ff76f0ded5d66430aa3d2853075c298b75421d42c513f5076b",{"version":"48b08f051eb2ec26f1849a39c89983f14f94727be08544aad9d3288dd1c8417e","signature":"993744b36c8bae23bde7b4b5f54de91ddebb944b5a4afbfcb7604b15f0d26608"},{"version":"efe026cccf176ebb4989defd182b1402ad6b432248f85efec8adfdcd1914ef7a","signature":"66fdfd3fb3a180a39b3a465a45c2682e1123505d6bda88f2cd13707806955f0e"},"890fa9b79dae2c3abe454aa7c30c41ed66509b5643d56fd2104c7f5d9febd3f4","cc703e7df0457b35086d815d6ff33cd3452317d7a8d7f152597f8dbc6459c5f9","e24b93132bafb120fa11f2454152834abfe47179a2dd96abdbbc57734ed6472b","82bd382cdf173bc58e91d1e25c7acf91ff443983e5c68978082ad5f2877f9af9","f488ac0001e44c0038e04b5134ff153e6bd666e2eba11bb884543a708be88a95",{"version":"b0cd303641a5575deb48407b2a64c83fdcaa35d4cc4965167b167f13c0564104","signature":"090ea064f7de7b504d1168af39eaf9fd59920450ab581dfd5f7458d1bf3554a0"},{"version":"a37dae9464df53f20ce5494372d098b74807208fc411ce6052001a88b11a3848","signature":"e19b4ad73442eecba082977023d1de9d6de5869d8eea5e90b77d230aa7ff9158"},{"version":"b115b8d6869fe7704e4f658b35520f7a8e20089977d6af2497c4afadc7092cbe","signature":"8738ff26cb6ed57db7a193f0d0dc9dde271aef5abc8c0d75693f230876594d43"},{"version":"429495125cb6cb7b4819c396b535e5aa057730e92ef6ab96d9f0b709f6460c2d","signature":"04eafb317a7fe2573471ce70d5955e03527d1597c120f2483aae6b5815127df9"},{"version":"6b3875e799fc477088fe196fe847e7ee1e56d535abf5ff98056e20c2ad92f939","signature":"ebb66422766f0304bd7a4d53ab79034921277fe632062c464d4227629e1f833d"},{"version":"e02e0d426e98a3c1ba7c2588d7a490afec59d602f861080ca33cfcd5c6dc0a9d","signature":"adbeb36efd0d65689eddce562811b5aaf8d46c2719be7d669e86607f56acfa74"},"45d4c0b459175dd8a78fec4c0597bbb02d7b6a708c2a1400c4575618d717da13","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562",{"version":"b9734142a4b241cfb505be4a2eb0261d211647df7c73043f817f4fdd8d96c846","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"6bb8d7433a29fbd33df8e9693f1788a273a9eb90b96c8f99c745678c7db623f1","0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","8a19491eba2108d5c333c249699f40aff05ad312c04a17504573b27d91f0aede","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"downlevelIteration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":6,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./types","removeComments":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"strictPropertyInitialization":true,"suppressImplicitAnyIndexErrors":true,"target":7},"fileIdsList":[[88,177,181,183,184,185,186],[88,177,181,184,187],[88,177],[88,177,179],[88,179,180],[88],[88,175,176,178,189],[88,188],[88,182],[88,177,181],[88,194],[88,200],[88,196],[88,198,199],[88,198],[88,95],[58,61,87,88,95,235,236,237],[88,239],[88,213],[88,242],[88,243],[58,88,95],[88,260],[88,248,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,251,252,253,254,255,256,257,258,259,260],[88,249,250,251,252,253,254,255,256,257,258,259,260],[88,248,249,250,252,253,254,255,256,257,258,259,260],[88,248,249,250,251,253,254,255,256,257,258,259,260],[88,248,249,250,251,252,254,255,256,257,258,259,260],[88,248,249,250,251,252,253,255,256,257,258,259,260],[88,248,249,250,251,252,253,254,256,257,258,259,260],[88,248,249,250,251,252,253,254,255,257,258,259,260],[88,248,249,250,251,252,253,254,255,256,258,259,260],[88,248,249,250,251,252,253,254,255,256,257,259,260],[88,248,249,250,251,252,253,254,255,256,257,258,260],[88,248,249,250,251,252,253,254,255,256,257,258,259],[43,88],[46,88],[47,52,88],[48,58,59,66,76,87,88],[48,49,58,66,88],[50,88],[51,52,59,67,88],[52,76,84,88],[53,55,58,66,88],[54,88],[55,56,88],[57,58,88],[58,88],[58,59,60,76,87,88],[58,59,60,76,79,88],[88,92],[61,66,76,87,88],[58,59,61,62,66,76,84,87,88],[61,63,76,84,87,88],[43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[58,64,88],[65,87,88],[55,58,66,76,88],[67,88],[68,88],[46,69,88],[70,86,88,92],[71,88],[72,88],[58,73,74,88],[73,75,88,90],[58,76,77,78,79,88],[76,78,88],[76,77,88],[79,88],[80,88],[58,82,83,88],[82,83,88],[52,66,76,84,88],[85,88],[66,86,88],[47,61,72,87,88],[52,88],[76,88,89],[88,90],[88,91],[47,52,58,60,69,76,87,88,90,92],[76,88,93],[61,76,88,95],[88,270],[88,273],[88,275],[88,164,165],[88,96],[88,101],[58,88,95,99],[88,99,100,102],[88,97],[88,98],[88,109,110,111,112],[88,109,110],[88,166],[88,113,162],[88,162],[88,161,162,163,167,168,169,170,171],[88,113],[88,106,107],[88,106],[88,104,105],[88,116,118],[88,116,117,122],[88,116,119,120,121],[88,223,224,225,226],[88,223],[88,113,223],[88,215],[88,217],[88,216,217,218,219],[88,155,156],[88,151,153,154,157],[88,152],[88,149,150],[88,153],[88,97,103,108,123,124,125,129,130,131,133,134,135,136],[88,113,123,124,137],[88,123],[88,123,137],[88,97,123,137],[88,97,113,123,137],[88,124,125,126,127,128,129,130,131,132,133,134,135,136,137],[58,88,95,113,123,129,132,137],[88,97,123,129],[88,97,113,123,126,127,128,137],[88,113,123,137],[88,97,113,123,129],[88,108,123,137],[88,138,146],[88,113,138,141],[58,88,95,123,134,137,138,139,140,141,143,144],[58,88,95,113,129,133,138,139,140,141,142,143,145],[88,139,140,141,142,143,144,145],[88,113,129,139,141,145,146],[88,129,132,145],[88,129,132,139,140,145],[88,206],[61,88,95],[58,88,92,114,115],[88,208],[88,203,204,205,209,210,211],[88,206,207],[42,88,147,174,191],[42,88,147],[42,88,147,195,197,200,201,202,212,214,220],[42,88],[42,88,174,191,192,193,221,222,228,229,230,231,232,233],[42,88,108,147,148,158,159,160,172,173],[42,88,147,174,231],[42,88,174],[42,88,147,227],[42,88,147,185,190],[42,88,147,173],[42,88,113,147,174,193,222,230],[147],[147,214],[108,147,172],[147,227],[113,147]],"referencedMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,147],[193,148],[221,149],[222,150],[234,151],[233,150],[174,152],[230,153],[232,154],[228,155],[191,156],[229,157],[231,158]],"exportedModulesMap":[[187,1],[188,2],[179,3],[180,4],[181,5],[177,6],[175,6],[190,7],[178,3],[176,6],[189,8],[183,9],[182,6],[184,6],[185,10],[186,6],[194,6],[195,11],[215,12],[196,6],[197,13],[200,14],[198,6],[199,15],[201,13],[202,12],[213,16],[238,17],[240,18],[239,6],[214,19],[241,6],[236,6],[242,6],[243,20],[244,21],[245,6],[246,6],[247,22],[261,23],[249,24],[250,25],[248,26],[251,27],[252,28],[253,29],[254,30],[255,31],[256,32],[257,33],[258,34],[259,35],[260,36],[262,6],[263,6],[264,6],[265,6],[43,37],[44,37],[46,38],[47,39],[48,40],[49,41],[50,42],[51,43],[52,44],[53,45],[54,46],[55,47],[56,47],[57,48],[58,49],[59,50],[60,51],[45,52],[94,6],[61,53],[62,54],[63,55],[95,56],[64,57],[65,58],[66,59],[67,60],[68,61],[69,62],[70,63],[71,64],[72,65],[73,66],[74,66],[75,67],[76,68],[78,69],[77,70],[79,71],[80,72],[81,6],[82,73],[83,74],[84,75],[85,76],[86,77],[87,78],[88,79],[89,80],[90,81],[91,82],[92,83],[93,84],[266,6],[267,16],[268,16],[237,85],[269,16],[271,86],[270,6],[272,6],[274,87],[273,6],[275,6],[276,88],[164,6],[165,6],[166,89],[96,22],[97,90],[101,6],[102,91],[100,92],[103,93],[98,94],[99,95],[113,96],[109,6],[110,22],[111,97],[112,6],[161,6],[167,98],[163,99],[168,100],[172,101],[169,6],[162,102],[170,6],[171,100],[108,103],[107,104],[106,105],[104,6],[105,6],[121,106],[119,106],[117,6],[123,107],[118,6],[120,106],[122,108],[227,109],[225,110],[224,111],[223,6],[226,111],[216,112],[218,113],[220,114],[217,6],[219,113],[157,115],[155,6],[156,6],[158,116],[153,117],[152,6],[150,6],[149,6],[151,118],[154,119],[137,120],[125,121],[135,122],[136,123],[131,124],[130,125],[138,126],[124,123],[126,123],[133,127],[127,128],[129,129],[132,130],[128,131],[134,132],[147,133],[140,134],[145,135],[144,136],[146,137],[142,138],[143,133],[139,139],[141,140],[159,6],[160,6],[148,16],[235,49],[207,141],[206,6],[114,142],[116,143],[173,6],[115,22],[42,6],[8,6],[10,6],[9,6],[2,6],[11,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[3,6],[4,6],[22,6],[19,6],[20,6],[21,6],[23,6],[24,6],[25,6],[5,6],[26,6],[27,6],[28,6],[29,6],[6,6],[30,6],[31,6],[32,6],[33,6],[7,6],[34,6],[39,6],[40,6],[35,6],[36,6],[37,6],[38,6],[1,6],[41,6],[203,6],[204,6],[205,6],[209,144],[212,145],[210,144],[208,146],[211,6],[192,159],[193,159],[221,160],[234,151],[174,161],[230,159],[228,162],[191,159],[229,159],[231,163]],"semanticDiagnosticsPerFile":[187,188,179,180,181,177,175,190,178,176,189,183,182,184,185,186,194,195,215,196,197,200,198,199,201,202,213,238,240,239,214,241,236,242,243,244,245,246,247,261,249,250,248,251,252,253,254,255,256,257,258,259,260,262,263,264,265,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,45,94,61,62,63,95,64,65,66,67,68,69,70,71,72,73,74,75,76,78,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,266,267,268,237,269,271,270,272,274,273,275,276,164,165,166,96,97,101,102,100,103,98,99,113,109,110,111,112,161,167,163,168,172,169,162,170,171,108,107,106,104,105,121,119,117,123,118,120,122,227,225,224,223,226,216,218,220,217,219,157,155,156,158,153,152,150,149,151,154,137,125,135,136,131,130,138,124,126,133,127,129,132,128,134,147,140,145,144,146,142,143,139,141,159,160,148,235,207,206,114,116,173,115,42,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,203,204,205,209,212,210,208,211,192,193,221,222,234,233,174,230,232,228,191,229,231]},"version":"4.7.4"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..ab04a5d7f3663e5540876a90e72d674d42b40975 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts -@@ -0,0 +1,54 @@ -+import { AuthTypes } from "@walletconnect/types"; -+export declare const getDidAddressSegments: (iss: string) => string[]; -+export declare const getDidChainId: (iss: string) => string | undefined; -+export declare const getNamespacedDidChainId: (iss: string) => string | undefined; -+export declare const getDidAddress: (iss: string) => string | undefined; -+export declare function validateSignedCacao(params: { -+ cacao: AuthTypes.Cacao; -+ projectId?: string; -+}): Promise; -+export declare const formatMessage: (cacao: AuthTypes.FormatMessageParams, iss: string) => string; -+export declare function buildAuthObject(requestPayload: AuthTypes.PayloadParams, signature: AuthTypes.CacaoSignature, iss: string): AuthTypes.Cacao; -+declare type PopulateAuthPayloadParams = { -+ authPayload: AuthTypes.PayloadParams; -+ chains: string[]; -+ methods: string[]; -+}; -+export declare function populateAuthPayload(params: PopulateAuthPayloadParams): AuthTypes.PayloadParams; -+export declare function getDecodedRecapFromResources(resources?: string[]): RecapType | undefined; -+export declare function recapHasResource(recap: any, resource: string): any; -+export declare function getRecapResource(recap: any, resource: string): any[]; -+export declare function getRecapAbilitiesFromResource(actions: any[]): string[][]; -+export declare function getReCapActions(abilities: any[]): any[]; -+export declare function base64Encode(input: unknown): string; -+export declare function base64Decode(encodedString: string): string; -+export declare function isValidRecap(recap: any): void; -+export declare function createRecap(resource: string, ability: string, actions: string[], limits?: {}): { -+ att: { -+ [x: string]: any; -+ }; -+}; -+declare type RecapType = { -+ att: { -+ [key: string]: Record; -+ }; -+}; -+export declare function addResourceToRecap(recap: RecapType, resource: string, actions: unknown[]): { -+ att: {}; -+}; -+export declare function assignAbilityToActions(ability: string, actions: string[], limits?: {}): any; -+export declare function encodeRecap(recap: any): string; -+export declare function decodeRecap(recap: any): RecapType; -+export declare function createEncodedRecap(resource: string, ability: string, actions: string[]): string; -+export declare function isRecap(resource: string): boolean | ""; -+export declare function mergeEncodedRecaps(recap1: string, recap2: string): string; -+export declare function mergeRecaps(recap1: RecapType, recap2: RecapType): { -+ att: {}; -+}; -+export declare function formatStatementFromRecap(statement: string | undefined, recap: RecapType): string; -+export declare function getMethodsFromRecap(recap: string): any[]; -+export declare function getChainsFromRecap(recap: string): string[]; -+export declare function buildRecapStatement(statement: string, recap: unknown): string; -+export declare function getRecapFromResources(resources?: string[]): string | undefined; -+export {}; -+//# sourceMappingURL=cacao.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a47cbed6a7b072608b9c10819eb05c4fb9a9e0c2 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/cacao.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"cacao.d.ts","sourceRoot":"","sources":["../../src/cacao.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts b/node_modules/@walletconnect/utils/dist/types/caip.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..020b018efce1c2463156e9e38bb4845a58d75732 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts -@@ -0,0 +1,24 @@ -+import { SessionTypes, ProposalTypes } from "@walletconnect/types"; -+interface ChainIdParams { -+ namespace: string; -+ reference: string; -+} -+interface AccountIdParams extends ChainIdParams { -+ address: string; -+} -+export declare function parseChainId(chain: string): ChainIdParams; -+export declare function formatChainId(params: ChainIdParams): string; -+export declare function parseAccountId(account: string): AccountIdParams; -+export declare function formatAccountId(params: AccountIdParams): string; -+export declare function getUniqueValues(array: string[], parser: (str: string) => string): string[]; -+export declare function getAddressFromAccount(account: string): string; -+export declare function getChainFromAccount(account: string): string; -+export declare function formatAccountWithChain(address: string, chain: string): string; -+export declare function getAddressesFromAccounts(accounts: string[]): string[]; -+export declare function getChainsFromAccounts(accounts: string[]): string[]; -+export declare function getAccountsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; -+export declare function getChainsFromNamespaces(namespaces: SessionTypes.Namespaces, keys?: string[]): string[]; -+export declare function getChainsFromRequiredNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, keys?: string[]): string[]; -+export declare function getChainsFromNamespace(namespace: string, namespaceProps: ProposalTypes.BaseRequiredNamespace): string[]; -+export {}; -+//# sourceMappingURL=caip.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..1de8c0941403193ef11f9ac955095552c2a32335 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/caip.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"caip.d.ts","sourceRoot":"","sources":["../../src/caip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEnE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAGzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAG3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAG/D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAG/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,CAO1F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,UAGpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,UAIlD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAIpE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAE1D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAEvD;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,+BAA+B,CAC7C,kBAAkB,EAAE,aAAa,CAAC,kBAAkB,EACpD,IAAI,GAAE,MAAM,EAAO,GAClB,MAAM,EAAE,CAQV;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,aAAa,CAAC,qBAAqB,YAIpD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dad378ddeb1330e69062e57bb0e9efc48cb7f20f ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts -@@ -0,0 +1,38 @@ -+import { CryptoTypes } from "@walletconnect/types"; -+import { ec as EC } from "elliptic"; -+export declare const BASE10 = "base10"; -+export declare const BASE16 = "base16"; -+export declare const BASE64 = "base64pad"; -+export declare const BASE64URL = "base64url"; -+export declare const UTF8 = "utf8"; -+export declare const TYPE_0 = 0; -+export declare const TYPE_1 = 1; -+export declare const TYPE_2 = 2; -+export declare type P256KeyDataType = { -+ crv: "P-256"; -+ ext: true; -+ key_ops: ["verify"]; -+ kty: string; -+ x: string; -+ y: string; -+}; -+export declare function generateKeyPair(): CryptoTypes.KeyPair; -+export declare function generateRandomBytes32(): string; -+export declare function deriveSymKey(privateKeyA: string, publicKeyB: string): string; -+export declare function hashKey(key: string): string; -+export declare function hashMessage(message: string): string; -+export declare function encodeTypeByte(type: number): Uint8Array; -+export declare function decodeTypeByte(byte: Uint8Array): number; -+export declare function encrypt(params: CryptoTypes.EncryptParams): string; -+export declare function encodeTypeTwoEnvelope(message: string, encoding?: CryptoTypes.EncodingType): string; -+export declare function decrypt(params: CryptoTypes.DecryptParams): string; -+export declare function decodeTypeTwoEnvelope(encoded: string, encoding?: CryptoTypes.EncodingType): string; -+export declare function serialize(params: CryptoTypes.EncodingParams): string; -+export declare function deserialize(params: CryptoTypes.DecodingParams): CryptoTypes.EncodingParams; -+export declare function validateDecoding(encoded: string, opts?: CryptoTypes.DecodeOptions): CryptoTypes.EncodingValidation; -+export declare function validateEncoding(opts?: CryptoTypes.EncodeOptions): CryptoTypes.EncodingValidation; -+export declare function isTypeOneEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; -+export declare function isTypeTwoEnvelope(result: CryptoTypes.EncodingValidation): result is CryptoTypes.TypeOneParams; -+export declare function getCryptoKeyFromKeyData(keyData: P256KeyDataType): EC.KeyPair; -+export declare function verifyP256Jwt(token: string, keyData: P256KeyDataType): T; -+//# sourceMappingURL=crypto.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..03a08090de1867936f207319b4d5015f1fe4cc91 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/crypto.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,MAAM,cAAc,CAAC;AAClC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,IAAI,CAAC;AAExB,oBAAY,eAAe,GAAG;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAOF,wBAAgB,eAAe,IAAI,WAAW,CAAC,OAAO,CAMrD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAG9C;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAS5E;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAejE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAMR;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAMjE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,WAAW,CAAC,YAAY,GAClC,MAAM,CAGR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,MAAM,CAiBpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAwB1F;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAC/B,WAAW,CAAC,kBAAkB,CAUhC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,kBAAkB,CAejG;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAMrC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,CAAC,kBAAkB,GACrC,MAAM,IAAI,WAAW,CAAC,aAAa,CAErC;AACD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,EAAE,CAAC,OAAO,CAU5E;AAeD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAkCvE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts b/node_modules/@walletconnect/utils/dist/types/errors.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..b77dd19f68a077bd9c0783ef9444802a6ca23402 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts -@@ -0,0 +1,135 @@ -+export declare type SdkErrorKey = keyof typeof SDK_ERRORS; -+export declare type InternalErrorKey = keyof typeof INTERNAL_ERRORS; -+export declare const SDK_ERRORS: { -+ INVALID_METHOD: { -+ message: string; -+ code: number; -+ }; -+ INVALID_EVENT: { -+ message: string; -+ code: number; -+ }; -+ INVALID_UPDATE_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ INVALID_EXTEND_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ INVALID_SESSION_SETTLE_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_METHOD: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_EVENT: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_UPDATE_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ UNAUTHORIZED_EXTEND_REQUEST: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED_CHAINS: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED_METHODS: { -+ message: string; -+ code: number; -+ }; -+ USER_REJECTED_EVENTS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_CHAINS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_METHODS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_EVENTS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_ACCOUNTS: { -+ message: string; -+ code: number; -+ }; -+ UNSUPPORTED_NAMESPACE_KEY: { -+ message: string; -+ code: number; -+ }; -+ USER_DISCONNECTED: { -+ message: string; -+ code: number; -+ }; -+ SESSION_SETTLEMENT_FAILED: { -+ message: string; -+ code: number; -+ }; -+ WC_METHOD_UNSUPPORTED: { -+ message: string; -+ code: number; -+ }; -+}; -+export declare const INTERNAL_ERRORS: { -+ NOT_INITIALIZED: { -+ message: string; -+ code: number; -+ }; -+ NO_MATCHING_KEY: { -+ message: string; -+ code: number; -+ }; -+ RESTORE_WILL_OVERRIDE: { -+ message: string; -+ code: number; -+ }; -+ RESUBSCRIBED: { -+ message: string; -+ code: number; -+ }; -+ MISSING_OR_INVALID: { -+ message: string; -+ code: number; -+ }; -+ EXPIRED: { -+ message: string; -+ code: number; -+ }; -+ UNKNOWN_TYPE: { -+ message: string; -+ code: number; -+ }; -+ MISMATCHED_TOPIC: { -+ message: string; -+ code: number; -+ }; -+ NON_CONFORMING_NAMESPACES: { -+ message: string; -+ code: number; -+ }; -+}; -+export declare function getInternalError(key: InternalErrorKey, context?: string | number): { -+ message: string; -+ code: number; -+}; -+export declare function getSdkError(key: SdkErrorKey, context?: string | number): { -+ message: string; -+ code: number; -+}; -+//# sourceMappingURL=errors.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..826749688352cccdb9fe646511dc4633d0543b0e ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/errors.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAGA,oBAAY,WAAW,GAAG,MAAM,OAAO,UAAU,CAAC;AAClD,oBAAY,gBAAgB,GAAG,MAAM,OAAO,eAAe,CAAC;AAK5D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FtB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3B,CAAC;AAKF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;;;EAMtE"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts b/node_modules/@walletconnect/utils/dist/types/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71f241ede545bf66a276874b8027cf27af296ad9 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts -@@ -0,0 +1,13 @@ -+export * from "./caip"; -+export * from "./cacao"; -+export * from "./crypto"; -+export * from "./misc"; -+export * from "./relay"; -+export * from "./uri"; -+export * from "./validators"; -+export * from "./errors"; -+export * from "./namespaces"; -+export * from "./network"; -+export * from "./memoryStore"; -+export * from "./signatures"; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/index.d.ts.map b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7d73f3c9a71413a0bfa21e447a06c805bd825d5f ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..36ee51297824debf446acb9d8e41b2accecf7388 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts -@@ -0,0 +1,6 @@ -+export declare abstract class MemoryStore { -+ static get(key: string): T | undefined; -+ static set(key: string, value: unknown): void; -+ static delete(key: string): void; -+} -+//# sourceMappingURL=memoryStore.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..0d3a3807db1e281609960d4356d347f404d4470f ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/memoryStore.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../src/memoryStore.ts"],"names":[],"mappings":"AAEA,8BAAsB,WAAW;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM;IAInC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAItC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;CAG1B"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts b/node_modules/@walletconnect/utils/dist/types/misc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..3176d31702f84596039647ec194136fc0b22cb06 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts -@@ -0,0 +1,69 @@ -+import { SignClientTypes, RelayerClientMetadata, EngineTypes, RelayerTypes } from "@walletconnect/types"; -+import { ErrorResponse } from "@walletconnect/jsonrpc-utils"; -+import { IKeyValueStorage } from "@walletconnect/keyvaluestorage"; -+export declare const REACT_NATIVE_PRODUCT = "ReactNative"; -+export declare const ENV_MAP: { -+ reactNative: string; -+ node: string; -+ browser: string; -+ unknown: string; -+}; -+export declare const EMPTY_SPACE = " "; -+export declare const COLON = ":"; -+export declare const SLASH = "/"; -+export declare const DEFAULT_DEPTH = 2; -+export declare const ONE_THOUSAND = 1000; -+export declare const SDK_TYPE = "js"; -+export declare function isNode(): boolean; -+export declare function isReactNative(): boolean; -+export declare function isBrowser(): boolean; -+export declare function getEnvironment(): string; -+export declare function getBundleId(): string | undefined; -+export declare function appendToQueryString(queryString: string, newQueryParams: any): string; -+export declare function getAppMetadata(): SignClientTypes.Metadata; -+export declare function getRelayClientMetadata(protocol: string, version: number): RelayerClientMetadata; -+export declare function getJavascriptOS(): string; -+export declare function getJavascriptID(): string; -+export declare function formatUA(protocol: string, version: number, sdkVersion: string): string; -+export declare function formatRelayRpcUrl({ protocol, version, relayUrl, sdkVersion, auth, projectId, useOnCloseEvent, bundleId, }: RelayerTypes.RpcUrlParams): string; -+export declare function getHttpUrl(url: string): string; -+export declare function assertType(obj: any, key: string, type: string): void; -+export declare function parseContextNames(context: string, depth?: number): any[]; -+export declare function formatMessageContext(context: string): string; -+export declare function hasOverlap(a: any[], b: any[]): boolean; -+export declare function getLastItems(arr: any[], depth?: number): any[]; -+export declare function mapToObj(map: Map): Record; -+export declare function objToMap(obj: Record): Map; -+export declare function mapEntries(obj: Record, cb: (x: A) => B): Record; -+export declare const enumify: (x: T) => T; -+export declare function capitalizeWord(word: string): string; -+export declare function capitalize(str: string): string; -+export declare function createDelayedPromise(expiry?: number, expireErrorMessage?: string): { -+ resolve: (value?: T) => void; -+ reject: (value?: ErrorResponse) => void; -+ done: () => Promise; -+}; -+export declare function createExpiringPromise(promise: Promise, expiry: number, expireErrorMessage?: string): Promise; -+export declare function formatExpirerTarget(type: "topic" | "id", value: string | number): string; -+export declare function formatTopicTarget(topic: string): string; -+export declare function formatIdTarget(id: number): string; -+export declare function parseExpirerTarget(target: string): { -+ id?: number | undefined; -+ topic?: string | undefined; -+}; -+export declare function calcExpiry(ttl: number, now?: number): number; -+export declare function isExpired(expiry: number): boolean; -+export declare function engineEvent(event: EngineTypes.Event, id?: number | string | undefined): string; -+export declare function mergeArrays(a?: T[], b?: T[]): T[]; -+export declare function handleDeeplinkRedirect({ id, topic, wcDeepLink, }: { -+ id: number; -+ topic: string; -+ wcDeepLink: string; -+}): Promise; -+export declare function getDeepLink(store: IKeyValueStorage, key: string): Promise; -+export declare function getCommonValuesInArrays(arr1: T[], arr2: T[]): T[]; -+export declare function getSearchParamFromURL(url: string, param: any): string | null; -+export declare function uuidv4(): string; -+//# sourceMappingURL=misc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5ef0f4f8b9d72b0c75dcc8470704dbf54e730772 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/misc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/misc.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIlE,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,eAAO,MAAM,KAAK,MAAM,CAAC;AAEzB,eAAO,MAAM,KAAK,MAAM,CAAC;AAEzB,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAI7B,wBAAgB,MAAM,IAAI,OAAO,CAMhC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,wBAAgB,WAAW,IAAI,MAAM,GAAG,SAAS,CAahD;AAID,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,MAAM,CAQpF;AAID,wBAAgB,cAAc,IAAI,eAAe,CAAC,QAAQ,CASzD;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAQ/F;AAID,wBAAgB,eAAe,WAmB9B;AAED,wBAAgB,eAAe,WAG9B;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAI7E;AAGD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,YAAY,CAAC,YAAY,UAY3B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAOrC;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAI7D;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAgB,SAEvE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAGtD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,SAAgB,GAAG,GAAG,EAAE,CAErE;AAID,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAExE;AAED,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAExE;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GACd,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAMnB;AAKD,eAAO,MAAM,OAAO;;+BAAqE,CAAC;AAI1F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,UAE1C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,UAKrC;AAGD,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,MAAM,GAAE,MAAqB,EAC7B,kBAAkB,CAAC,EAAE,MAAM;sBAeF,CAAC;qBAMF,aAAa;;EAYtC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,oBAY5B;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAYxF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;EAYhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,WAEvC;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,UAErF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC,EAAO,EAAE,CAAC,GAAE,CAAC,EAAO,GAAG,CAAC,EAAE,CAE5D;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,EAAE,EACF,KAAK,EACL,UAAU,GACX,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,iBAqCA;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,gBAYrE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAO5D;AAED,wBAAgB,MAAM,WAWrB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71ffdcebcfe16506e7d7195f20309a37095b95cc ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts -@@ -0,0 +1,22 @@ -+import { ProposalTypes, SessionTypes } from "@walletconnect/types"; -+export declare function getAccountsChains(accounts: SessionTypes.Namespace["accounts"]): string[]; -+export declare function getNamespacesChains(namespaces: SessionTypes.Namespaces): string[]; -+export declare function getNamespacesMethodsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; -+export declare function getNamespacesEventsForChainId(namespaces: SessionTypes.Namespaces, chainId: string): string[]; -+export declare function getRequiredNamespacesFromNamespaces(namespaces: SessionTypes.Namespaces, caller: string): ProposalTypes.RequiredNamespaces; -+export declare type BuildApprovedNamespacesParams = { -+ proposal: ProposalTypes.Struct; -+ supportedNamespaces: Record; -+}; -+export declare function buildApprovedNamespaces(params: BuildApprovedNamespacesParams): SessionTypes.Namespaces; -+export declare function isCaipNamespace(namespace: string): boolean; -+export declare function parseNamespaceKey(namespace: string): string; -+export declare function normalizeNamespaces(namespaces: ProposalTypes.RequiredNamespaces): ProposalTypes.RequiredNamespaces; -+export declare function getNamespacesFromAccounts(accounts: string[]): {}; -+export declare function buildNamespacesFromAuth(methods: string[], accounts: string[]): {}; -+//# sourceMappingURL=namespaces.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..d7dff41be61e83834f25426f938598a46cbd2356 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/namespaces.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/namespaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAInE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,YAQ7E;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,YAAY,CAAC,UAAU,YAOtE;AAED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,OAAO,EAAE,MAAM,YAShB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,YAAY,CAAC,UAAU,EACnC,MAAM,EAAE,MAAM,GACb,aAAa,CAAC,kBAAkB,CAalC;AAED,oBAAY,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CACzB,MAAM,EACN;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAC9E,CAAC;CACH,CAAC;AASF,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,6BAA6B,GACpC,YAAY,CAAC,UAAU,CAmGzB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,UAElD;AAoBD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,aAAa,CAAC,kBAAkB,GAC3C,aAAa,CAAC,kBAAkB,CAgBlC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAgB3D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAc5E"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts b/node_modules/@walletconnect/utils/dist/types/network.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..2b51101ec76eebaeca03c4a171d7f781f43b975c ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts -@@ -0,0 +1,8 @@ -+export declare function isOnline(): Promise; -+export declare function getBrowserOnlineStatus(): boolean; -+export declare function getReactNativeOnlineStatus(): Promise; -+export declare function getNodeOnlineStatus(): boolean; -+export declare function subscribeToNetworkChange(callbackHandler: (connected: boolean) => void): void; -+export declare function subscribeToBrowserNetworkChange(callbackHandler: (connected: boolean) => void): void; -+export declare function subscribeToReactNativeNetworkChange(callbackHandler: (connected: boolean) => void): void; -+//# sourceMappingURL=network.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/network.d.ts.map b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a882e728142d052ff8608548af8377e52f3c7ac0 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/network.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/network.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAiB3C;AAED,wBAAgB,sBAAsB,YAErC;AAED,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED,wBAAgB,mBAAmB,YAKlC;AAED,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAerF;AAED,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAK5F;AAGD,wBAAgB,mCAAmC,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAIhG"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts b/node_modules/@walletconnect/utils/dist/types/relay.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..3c2ce6681e2f566cd26619258b0f60c792ebb0a0 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts -@@ -0,0 +1,5 @@ -+import { RelayerTypes } from "@walletconnect/types"; -+export declare const RELAYER_DEFAULT_PROTOCOL = "irn"; -+export declare function getRelayProtocolName(opts?: RelayerTypes.RequestOptions): RelayerTypes.ProtocolOptions; -+export declare function getRelayProtocolApi(protocol: string): import("@walletconnect/relay-api").RelayJsonRpc.Methods; -+//# sourceMappingURL=relay.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..dd8bfc4629378861268f0c87c79b5aa0629b2d5c ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/relay.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,wBAAgB,oBAAoB,CAClC,IAAI,CAAC,EAAE,YAAY,CAAC,cAAc,GACjC,YAAY,CAAC,eAAe,CAE9B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,2DAMnD"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..654326c5bff4655eb71eabce9ea056294423a86b ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts -@@ -0,0 +1,5 @@ -+import { AuthTypes } from "@walletconnect/types"; -+export declare function verifySignature(address: string, reconstructedMessage: string, cacaoSignature: AuthTypes.CacaoSignature, chainId: string, projectId: string, baseRpcUrl?: string): Promise; -+export declare function isValidEip191Signature(address: string, message: string, signature: string): boolean; -+export declare function isValidEip1271Signature(address: string, reconstructedMessage: string, signature: string, chainId: string, projectId: string, baseRpcUrl?: string): Promise; -+//# sourceMappingURL=signatures.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8159f880bf99865282817e01e70b0fcfaff5a026 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/signatures.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../src/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,cAAc,EAAE,SAAS,CAAC,cAAc,EACxC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAGT;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,oBAsCpB"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts b/node_modules/@walletconnect/utils/dist/types/uri.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..f58153abd67f0e8345c2371f3282c6288dc8ab29 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts -@@ -0,0 +1,8 @@ -+import { EngineTypes, RelayerTypes } from "@walletconnect/types"; -+export declare function parseRelayParams(params: any, delimiter?: string): RelayerTypes.ProtocolOptions; -+export declare function parseUri(str: string): EngineTypes.UriParameters; -+export declare function parseTopic(topic: string): string; -+export declare function formatRelayParams(relay: RelayerTypes.ProtocolOptions, delimiter?: string): any; -+export declare function formatUri(params: EngineTypes.UriParameters): string; -+export declare function getLinkModeURL(universalLink: string, topic: string, encodedEnvelope: string): string; -+//# sourceMappingURL=uri.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..8063f3e6f356d4b63405f0e6648eb5ecc6fc5597 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/uri.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"uri.d.ts","sourceRoot":"","sources":["../../src/uri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,SAAM,GAAG,YAAY,CAAC,eAAe,CAW3F;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,aAAa,CA0B/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,eAAe,EAAE,SAAS,SAAM,OAUrF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAUnE;AAED,wBAAgB,cAAc,CAC5B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,MAAM,CAER"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts b/node_modules/@walletconnect/utils/dist/types/validators.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..f17fe4d5550861873cecb5ac1c28c9b62934d993 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts -@@ -0,0 +1,44 @@ -+import { SessionTypes, ProposalTypes, RelayerTypes, EngineTypes } from "@walletconnect/types"; -+import { ErrorResponse } from "@walletconnect/jsonrpc-types"; -+export declare type ErrorObject = { -+ message: string; -+ code: number; -+} | null; -+export declare function isValidArray(arr: any, itemCondition?: (item: any) => boolean): boolean; -+export declare function isValidObject(obj: any): number | false; -+export declare function isUndefined(input: any): input is undefined; -+export declare function isValidString(input: any, optional: boolean): input is string; -+export declare function isValidNumber(input: any, optional: boolean): boolean; -+export declare function isSessionCompatible(session: SessionTypes.Struct, params: EngineTypes.FindParams): boolean; -+export declare function isValidChainId(value: any): boolean; -+export declare function isValidAccountId(value: any): boolean; -+export declare function isValidUrl(value: any): boolean; -+export declare function isProposalStruct(input: any): input is ProposalTypes.Struct; -+export declare function isSessionStruct(input: any): input is SessionTypes.Struct; -+export declare function isValidController(input: any, method: string): ErrorObject; -+export declare function isValidNamespaceMethodsOrEvents(input: any): input is string; -+export declare function isValidChains(key: string, chains: any, context: string): ErrorObject; -+export declare function isValidNamespaceChains(namespaces: any, method: string, type: string): null; -+export declare function isValidAccounts(accounts: any, context: string): ErrorObject; -+export declare function isValidNamespaceAccounts(input: any, method: string): null; -+export declare function isValidActions(namespace: any, context: string): ErrorObject; -+export declare function isValidNamespaceActions(input: any, method: string): null; -+export declare function isValidRequiredNamespaces(input: any, method: string, type: string): ErrorObject; -+export declare function isValidNamespaces(input: any, method: string): ErrorObject; -+export declare function isValidRelay(input: any): input is RelayerTypes.ProtocolOptions; -+export declare function isValidRelays(input: any, optional: boolean): input is RelayerTypes.ProtocolOptions[]; -+export declare function isValidId(input: any): boolean; -+export declare function isValidParams(input: any): boolean; -+export declare function isValidErrorReason(input: any): input is ErrorResponse; -+export declare function isValidRequest(request: any): boolean; -+export declare function isValidResponse(response: any): boolean; -+export declare function isValidEvent(event: any): boolean; -+export declare function isValidNamespacesChainId(namespaces: SessionTypes.Namespaces, chainId: string): boolean; -+export declare function isValidNamespacesRequest(namespaces: SessionTypes.Namespaces, chainId: string, method: string): boolean; -+export declare function isValidNamespacesEvent(namespaces: SessionTypes.Namespaces, chainId: string, eventName: string): boolean; -+export declare function isConformingNamespaces(requiredNamespaces: ProposalTypes.RequiredNamespaces, namespaces: SessionTypes.Namespaces, context: string): ErrorObject; -+export declare function isValidRequestExpiry(expiry: number, boundaries: { -+ min: number; -+ max: number; -+}): boolean; -+//# sourceMappingURL=validators.d.ts.map -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..840230079b7372007858eec63312513a8e37bf83 ---- /dev/null -+++ b/node_modules/@walletconnect/utils/dist/types/validators.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validators.ts"],"names":[],"mappings":"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"} -\ No newline at end of file -diff --git a/node_modules/@walletconnect/utils/package.json b/node_modules/@walletconnect/utils/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..a09f22037d5042cd95e3b8d6094717780a1bbedf ---- /dev/null -+++ b/node_modules/@walletconnect/utils/package.json -@@ -0,0 +1,85 @@ -+{ -+ "name": "@walletconnect/utils", -+ "description": "Utilities for WalletConnect Protocol", -+ "version": "2.16.1", -+ "author": "WalletConnect, Inc. ", -+ "homepage": "https://github.com/walletconnect/walletconnect-monorepo/", -+ "license": "Apache-2.0", -+ "main": "dist/index.cjs.js", -+ "module": "dist/index.es.js", -+ "unpkg": "dist/index.umd.js", -+ "types": "dist/types/index.d.ts", -+ "sideEffects": false, -+ "files": [ -+ "dist" -+ ], -+ "keywords": [ -+ "wallet", -+ "walletconnect" -+ ], -+ "scripts": { -+ "clean": "rm -rf dist", -+ "build:pre": "npm run clean", -+ "build:types": "tsc", -+ "build:source": "rollup --config rollup.config.js", -+ "build": "npm run build:pre; npm run build:source; npm run build:types", -+ "test:pre": "rm -rf ./test/test.db", -+ "test:run": "vitest run --dir test", -+ "test": "npm run test:pre; npm run test:run", -+ "test:ignoreUnhandled": "npm run test:pre; npm run test:run -- --dangerouslyIgnoreUnhandledErrors", -+ "lint": "eslint -c '../../.eslintrc' --fix './src/**/*.ts'", -+ "prettier": "prettier --check '{src,test}/**/*.{js,ts,jsx,tsx}'" -+ }, -+ "dependencies": { -+ "@stablelib/chacha20poly1305": "1.0.1", -+ "@stablelib/hkdf": "1.0.1", -+ "@stablelib/random": "1.0.2", -+ "@stablelib/sha256": "1.0.1", -+ "@stablelib/x25519": "1.0.3", -+ "@walletconnect/relay-api": "1.0.11", -+ "@walletconnect/relay-auth": "1.0.4", -+ "@walletconnect/safe-json": "1.0.2", -+ "@walletconnect/time": "1.0.2", -+ "@walletconnect/types": "2.16.1", -+ "@walletconnect/window-getters": "1.0.1", -+ "@walletconnect/window-metadata": "1.0.1", -+ "detect-browser": "5.3.0", -+ "elliptic": "^6.5.7", -+ "query-string": "7.1.3", -+ "uint8arrays": "3.1.0" -+ }, -+ "devDependencies": { -+ "@types/elliptic": "^6.4.18", -+ "@types/lodash.isequal": "4.5.6" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/README.md b/node_modules/uint8arrays/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..4bc4398f9f4f87fd5a3a190fa7ff61dd7b88b080 ---- /dev/null -+++ b/node_modules/uint8arrays/README.md -@@ -0,0 +1,158 @@ -+# Uint8Arrays -+ -+Some utility functions to make dealing with `Uint8Array`s more pleasant. -+ -+- [API](#api) -+ - [alloc(size)](#allocsize) -+ - [Example](#example) -+ - [allocUnsafe(size)](#allocunsafesize) -+ - [Example](#example-1) -+ - [compare(a, b)](#comparea-b) -+ - [Example](#example-2) -+ - [concat(arrays, [length])](#concatarrays-length) -+ - [Example](#example-3) -+ - [equals(a, b)](#equalsa-b) -+ - [Example](#example-4) -+ - [fromString(string, encoding = 'utf8')](#fromstringstring-encoding--utf8) -+ - [Example](#example-5) -+ - [toString(array, encoding = 'utf8')](#tostringarray-encoding--utf8) -+ - [Example](#example-6) -+ - [xor(a, b)](#xora-b) -+ - [Example](#example-7) -+ -+## API -+ -+### alloc(size) -+ -+Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. -+ -+#### Example -+ -+```js -+import { alloc } from 'uint8arrays/alloc` -+ -+const buf = alloc(100) -+``` -+ -+### allocUnsafe(size) -+ -+Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. -+ -+On platforms that support it, memory referenced by the returned `Uint8Array` will not be initialized. -+ -+#### Example -+ -+```js -+import { allocUnsafe } from 'uint8arrays/alloc` -+ -+const buf = allocUnsafe(100) -+``` -+ -+### compare(a, b) -+ -+Compare two `Uint8Arrays` -+ -+#### Example -+ -+```js -+import { compare } from 'uint8arrays/compare' -+ -+const arrays = [ -+ Uint8Array.from([3, 4, 5]), -+ Uint8Array.from([0, 1, 2]) -+] -+ -+const sorted = arrays.sort(compare) -+ -+console.info(sorted) -+// [ -+// Uint8Array[0, 1, 2] -+// Uint8Array[3, 4, 5] -+// ] -+``` -+ -+### concat(arrays, [length]) -+ -+Concatenate one or more array-likes and return a `Uint8Array` with their contents. -+ -+If you know the length of the arrays, pass it as a second parameter, otherwise it will be calculated by traversing the list of arrays. -+ -+#### Example -+ -+```js -+import { concat } from 'uint8arrays/concat' -+ -+const arrays = [ -+ Uint8Array.from([0, 1, 2]), -+ Uint8Array.from([3, 4, 5]) -+] -+ -+const all = concat(arrays, 6) -+ -+console.info(all) -+// Uint8Array[0, 1, 2, 3, 4, 5] -+``` -+ -+### equals(a, b) -+ -+Returns true if the two arrays are the same array or if they have the same length and contents. -+ -+#### Example -+ -+```js -+import { equals } from 'uint8arrays/equals' -+ -+const a = Uint8Array.from([0, 1, 2]) -+const b = Uint8Array.from([3, 4, 5]) -+const c = Uint8Array.from([0, 1, 2]) -+ -+console.info(equals(a, b)) // false -+console.info(equals(a, c)) // true -+console.info(equals(a, a)) // true -+``` -+ -+### fromString(string, encoding = 'utf8') -+ -+Returns a new `Uint8Array` created from the passed string and interpreted as the passed encoding. -+ -+Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). -+ -+#### Example -+ -+```js -+import { fromString } from 'uint8arrays/from-string' -+ -+console.info(fromString('hello world')) // Uint8Array[104, 101 ... -+console.info(fromString('00010203aabbcc', 'base16')) // Uint8Array[0, 1 ... -+console.info(fromString('AAECA6q7zA', 'base64')) // Uint8Array[0, 1 ... -+console.info(fromString('01234', 'ascii')) // Uint8Array[48, 49 ... -+``` -+ -+### toString(array, encoding = 'utf8') -+ -+Returns a string created from the passed `Uint8Array` in the passed encoding. -+ -+Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). -+ -+#### Example -+ -+```js -+import { toString } from 'uint8arrays/to-string' -+ -+console.info(toString(Uint8Array.from([104, 101...]))) // 'hello world' -+console.info(toString(Uint8Array.from([0, 1, 2...]), 'base16')) // '00010203aabbcc' -+console.info(toString(Uint8Array.from([0, 1, 2...]), 'base64')) // 'AAECA6q7zA' -+console.info(toString(Uint8Array.from([48, 49, 50...]), 'ascii')) // '01234' -+``` -+ -+### xor(a, b) -+ -+Returns a `Uint8Array` containing `a` and `b` xored together. -+ -+#### Example -+ -+```js -+import { xor } from 'uint8arrays/xor' -+ -+console.info(xor(Uint8Array.from([1, 0]), Uint8Array.from([0, 1]))) // Uint8Array[1, 1] -+``` -diff --git a/node_modules/uint8arrays/alloc b/node_modules/uint8arrays/alloc -new file mode 100644 -index 0000000000000000000000000000000000000000..96adbd1c30cc40c637803b469fa5c6491c509843 ---- /dev/null -+++ b/node_modules/uint8arrays/alloc -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/alloc.js') -diff --git a/node_modules/uint8arrays/cjs/src/alloc.js b/node_modules/uint8arrays/cjs/src/alloc.js -new file mode 100644 -index 0000000000000000000000000000000000000000..62f337da370082d906ed5fedd6cc052601b367a3 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/alloc.js -@@ -0,0 +1,19 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function alloc(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { -+ return globalThis.Buffer.alloc(size); -+ } -+ return new Uint8Array(size); -+} -+function allocUnsafe(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { -+ return globalThis.Buffer.allocUnsafe(size); -+ } -+ return new Uint8Array(size); -+} -+ -+exports.alloc = alloc; -+exports.allocUnsafe = allocUnsafe; -diff --git a/node_modules/uint8arrays/cjs/src/compare.js b/node_modules/uint8arrays/cjs/src/compare.js -new file mode 100644 -index 0000000000000000000000000000000000000000..f76a876da6b87c8218d0efda7366189c7d7d46a4 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/compare.js -@@ -0,0 +1,23 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function compare(a, b) { -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] < b[i]) { -+ return -1; -+ } -+ if (a[i] > b[i]) { -+ return 1; -+ } -+ } -+ if (a.byteLength > b.byteLength) { -+ return 1; -+ } -+ if (a.byteLength < b.byteLength) { -+ return -1; -+ } -+ return 0; -+} -+ -+exports.compare = compare; -diff --git a/node_modules/uint8arrays/cjs/src/concat.js b/node_modules/uint8arrays/cjs/src/concat.js -new file mode 100644 -index 0000000000000000000000000000000000000000..b5f6039223c16c8432bf34b601897a0e963e1dd0 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/concat.js -@@ -0,0 +1,20 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var alloc = require('./alloc.js'); -+ -+function concat(arrays, length) { -+ if (!length) { -+ length = arrays.reduce((acc, curr) => acc + curr.length, 0); -+ } -+ const output = alloc.allocUnsafe(length); -+ let offset = 0; -+ for (const arr of arrays) { -+ output.set(arr, offset); -+ offset += arr.length; -+ } -+ return output; -+} -+ -+exports.concat = concat; -diff --git a/node_modules/uint8arrays/cjs/src/equals.js b/node_modules/uint8arrays/cjs/src/equals.js -new file mode 100644 -index 0000000000000000000000000000000000000000..073c46ba1f52e921f55f98d82106a67d542a4321 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/equals.js -@@ -0,0 +1,20 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function equals(a, b) { -+ if (a === b) { -+ return true; -+ } -+ if (a.byteLength !== b.byteLength) { -+ return false; -+ } -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] !== b[i]) { -+ return false; -+ } -+ } -+ return true; -+} -+ -+exports.equals = equals; -diff --git a/node_modules/uint8arrays/cjs/src/from-string.js b/node_modules/uint8arrays/cjs/src/from-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..d4899669d3d3a69ae33b1d6a5de6ed4facab9702 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/from-string.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var bases = require('./util/bases.js'); -+ -+function fromString(string, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(string, 'utf8'); -+ } -+ return base.decoder.decode(`${ base.prefix }${ string }`); -+} -+ -+exports.fromString = fromString; -diff --git a/node_modules/uint8arrays/cjs/src/index.js b/node_modules/uint8arrays/cjs/src/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e04d18c1e8b50930f11469e29d36e3624800ee3e ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/index.js -@@ -0,0 +1,19 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var compare = require('./compare.js'); -+var concat = require('./concat.js'); -+var equals = require('./equals.js'); -+var fromString = require('./from-string.js'); -+var toString = require('./to-string.js'); -+var xor = require('./xor.js'); -+ -+ -+ -+exports.compare = compare.compare; -+exports.concat = concat.concat; -+exports.equals = equals.equals; -+exports.fromString = fromString.fromString; -+exports.toString = toString.toString; -+exports.xor = xor.xor; -diff --git a/node_modules/uint8arrays/cjs/src/to-string.js b/node_modules/uint8arrays/cjs/src/to-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..60041ca99380e4e96896d2e3d314bfedf291abd4 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/to-string.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var bases = require('./util/bases.js'); -+ -+function toString(array, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); -+ } -+ return base.encoder.encode(array).substring(1); -+} -+ -+exports.toString = toString; -diff --git a/node_modules/uint8arrays/cjs/src/util/bases.js b/node_modules/uint8arrays/cjs/src/util/bases.js -new file mode 100644 -index 0000000000000000000000000000000000000000..889ba8ca4f4590ad982343e2e557a86345dbba6e ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/util/bases.js -@@ -0,0 +1,49 @@ -+'use strict'; -+ -+var basics = require('multiformats/basics'); -+var alloc = require('../alloc.js'); -+ -+function createCodec(name, prefix, encode, decode) { -+ return { -+ name, -+ prefix, -+ encoder: { -+ name, -+ prefix, -+ encode -+ }, -+ decoder: { decode } -+ }; -+} -+const string = createCodec('utf8', 'u', buf => { -+ const decoder = new TextDecoder('utf8'); -+ return 'u' + decoder.decode(buf); -+}, str => { -+ const encoder = new TextEncoder(); -+ return encoder.encode(str.substring(1)); -+}); -+const ascii = createCodec('ascii', 'a', buf => { -+ let string = 'a'; -+ for (let i = 0; i < buf.length; i++) { -+ string += String.fromCharCode(buf[i]); -+ } -+ return string; -+}, str => { -+ str = str.substring(1); -+ const buf = alloc.allocUnsafe(str.length); -+ for (let i = 0; i < str.length; i++) { -+ buf[i] = str.charCodeAt(i); -+ } -+ return buf; -+}); -+const BASES = { -+ utf8: string, -+ 'utf-8': string, -+ hex: basics.bases.base16, -+ latin1: ascii, -+ ascii: ascii, -+ binary: ascii, -+ ...basics.bases -+}; -+ -+module.exports = BASES; -diff --git a/node_modules/uint8arrays/cjs/src/xor.js b/node_modules/uint8arrays/cjs/src/xor.js -new file mode 100644 -index 0000000000000000000000000000000000000000..3b7f04d6ad8ca2ac0c75d9527f8abf75c3a32d2b ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/xor.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var alloc = require('./alloc.js'); -+ -+function xor(a, b) { -+ if (a.length !== b.length) { -+ throw new Error('Inputs should have the same length'); -+ } -+ const result = alloc.allocUnsafe(a.length); -+ for (let i = 0; i < a.length; i++) { -+ result[i] = a[i] ^ b[i]; -+ } -+ return result; -+} -+ -+exports.xor = xor; -diff --git a/node_modules/uint8arrays/compare b/node_modules/uint8arrays/compare -new file mode 100644 -index 0000000000000000000000000000000000000000..e5012fd8b14ddd8ae03b8cf34b0803cbb153f54d ---- /dev/null -+++ b/node_modules/uint8arrays/compare -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/compare.js') -diff --git a/node_modules/uint8arrays/concat b/node_modules/uint8arrays/concat -new file mode 100644 -index 0000000000000000000000000000000000000000..77d4c7ff6075cef2ccf07978629ebe9c0b5676c1 ---- /dev/null -+++ b/node_modules/uint8arrays/concat -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/concat.js') -diff --git a/node_modules/uint8arrays/equals b/node_modules/uint8arrays/equals -new file mode 100644 -index 0000000000000000000000000000000000000000..fb9b155afd3f89970606e5bce212653a9edda8a5 ---- /dev/null -+++ b/node_modules/uint8arrays/equals -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/equals.js') -diff --git a/node_modules/uint8arrays/esm/package.json b/node_modules/uint8arrays/esm/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..b0f779bef674eb02c1185e55c0ffd20179a078f9 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/package.json -@@ -0,0 +1,33 @@ -+{ -+ "type": "module", -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/esm/src/alloc.js b/node_modules/uint8arrays/esm/src/alloc.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e9326afa4af656b8f97576f79177e94ab9d12372 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/alloc.js -@@ -0,0 +1,12 @@ -+export function alloc(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { -+ return globalThis.Buffer.alloc(size); -+ } -+ return new Uint8Array(size); -+} -+export function allocUnsafe(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { -+ return globalThis.Buffer.allocUnsafe(size); -+ } -+ return new Uint8Array(size); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/compare.js b/node_modules/uint8arrays/esm/src/compare.js -new file mode 100644 -index 0000000000000000000000000000000000000000..251ba99326ef616a7259ae690a195c55eb69e3c4 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/compare.js -@@ -0,0 +1,17 @@ -+export function compare(a, b) { -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] < b[i]) { -+ return -1; -+ } -+ if (a[i] > b[i]) { -+ return 1; -+ } -+ } -+ if (a.byteLength > b.byteLength) { -+ return 1; -+ } -+ if (a.byteLength < b.byteLength) { -+ return -1; -+ } -+ return 0; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/concat.js b/node_modules/uint8arrays/esm/src/concat.js -new file mode 100644 -index 0000000000000000000000000000000000000000..1becaa52d193e7c41af30fcfb6de675dd5520730 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/concat.js -@@ -0,0 +1,13 @@ -+import { allocUnsafe } from './alloc.js'; -+export function concat(arrays, length) { -+ if (!length) { -+ length = arrays.reduce((acc, curr) => acc + curr.length, 0); -+ } -+ const output = allocUnsafe(length); -+ let offset = 0; -+ for (const arr of arrays) { -+ output.set(arr, offset); -+ offset += arr.length; -+ } -+ return output; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/equals.js b/node_modules/uint8arrays/esm/src/equals.js -new file mode 100644 -index 0000000000000000000000000000000000000000..fbedbe071a446722515778a030724b4d2ab87030 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/equals.js -@@ -0,0 +1,14 @@ -+export function equals(a, b) { -+ if (a === b) { -+ return true; -+ } -+ if (a.byteLength !== b.byteLength) { -+ return false; -+ } -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] !== b[i]) { -+ return false; -+ } -+ } -+ return true; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/from-string.js b/node_modules/uint8arrays/esm/src/from-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..0a98afd2708b0f7f182f92f4b98244655b6c85cb ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/from-string.js -@@ -0,0 +1,11 @@ -+import bases from './util/bases.js'; -+export function fromString(string, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(string, 'utf8'); -+ } -+ return base.decoder.decode(`${ base.prefix }${ string }`); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/index.js b/node_modules/uint8arrays/esm/src/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..2ec817cb7bfaa10be4baf9dfdeae279230041130 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/index.js -@@ -0,0 +1,14 @@ -+import { compare } from './compare.js'; -+import { concat } from './concat.js'; -+import { equals } from './equals.js'; -+import { fromString } from './from-string.js'; -+import { toString } from './to-string.js'; -+import { xor } from './xor.js'; -+export { -+ compare, -+ concat, -+ equals, -+ fromString, -+ toString, -+ xor -+}; -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/to-string.js b/node_modules/uint8arrays/esm/src/to-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..f1fdd01972c3f7ba0abf5d4b5f3539fd60a25ef4 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/to-string.js -@@ -0,0 +1,11 @@ -+import bases from './util/bases.js'; -+export function toString(array, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); -+ } -+ return base.encoder.encode(array).substring(1); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/util/bases.js b/node_modules/uint8arrays/esm/src/util/bases.js -new file mode 100644 -index 0000000000000000000000000000000000000000..ec42186bf5433036f1c4485bed9cf67c4ff66595 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/util/bases.js -@@ -0,0 +1,45 @@ -+import { bases } from 'multiformats/basics'; -+import { allocUnsafe } from '../alloc.js'; -+function createCodec(name, prefix, encode, decode) { -+ return { -+ name, -+ prefix, -+ encoder: { -+ name, -+ prefix, -+ encode -+ }, -+ decoder: { decode } -+ }; -+} -+const string = createCodec('utf8', 'u', buf => { -+ const decoder = new TextDecoder('utf8'); -+ return 'u' + decoder.decode(buf); -+}, str => { -+ const encoder = new TextEncoder(); -+ return encoder.encode(str.substring(1)); -+}); -+const ascii = createCodec('ascii', 'a', buf => { -+ let string = 'a'; -+ for (let i = 0; i < buf.length; i++) { -+ string += String.fromCharCode(buf[i]); -+ } -+ return string; -+}, str => { -+ str = str.substring(1); -+ const buf = allocUnsafe(str.length); -+ for (let i = 0; i < str.length; i++) { -+ buf[i] = str.charCodeAt(i); -+ } -+ return buf; -+}); -+const BASES = { -+ utf8: string, -+ 'utf-8': string, -+ hex: bases.base16, -+ latin1: ascii, -+ ascii: ascii, -+ binary: ascii, -+ ...bases -+}; -+export default BASES; -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/xor.js b/node_modules/uint8arrays/esm/src/xor.js -new file mode 100644 -index 0000000000000000000000000000000000000000..d569ed64b70fb1627a6d8f82b4662f7538f6e694 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/xor.js -@@ -0,0 +1,11 @@ -+import { allocUnsafe } from './alloc.js'; -+export function xor(a, b) { -+ if (a.length !== b.length) { -+ throw new Error('Inputs should have the same length'); -+ } -+ const result = allocUnsafe(a.length); -+ for (let i = 0; i < a.length; i++) { -+ result[i] = a[i] ^ b[i]; -+ } -+ return result; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/from-string b/node_modules/uint8arrays/from-string -new file mode 100644 -index 0000000000000000000000000000000000000000..2cc705ce49836283622c3f82290e910712107007 ---- /dev/null -+++ b/node_modules/uint8arrays/from-string -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/from-string.js') -diff --git a/node_modules/uint8arrays/index.js b/node_modules/uint8arrays/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..580d8d99288b7b972da6c5c480503710e62d4b15 ---- /dev/null -+++ b/node_modules/uint8arrays/index.js -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/index.js') -diff --git a/node_modules/uint8arrays/index.min.js b/node_modules/uint8arrays/index.min.js -new file mode 100644 -index 0000000000000000000000000000000000000000..bcf42aca46b3ca48a137a3a93fe37cd8b17d6eb9 ---- /dev/null -+++ b/node_modules/uint8arrays/index.min.js -@@ -0,0 +1,17 @@ -+(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Uint8arrays = factory()}(typeof self !== 'undefined' ? self : this, function () { -+var Uint8arrays=(()=>{var ue=Object.defineProperty;var $e=r=>ue(r,"__esModule",{value:!0});var h=(r,e)=>{$e(r);for(var t in e)ue(r,t,{get:e[t],enumerable:!0})};var Yt={};h(Yt,{compare:()=>De,concat:()=>ie,equals:()=>ae,fromString:()=>Me,toString:()=>Ve,xor:()=>Pe});function De(r,e){for(let t=0;te[t])return 1}return r.byteLength>e.byteLength?1:r.byteLengths+n.length,0));let t=U(e),o=0;for(let s of r)t.set(s,o),o+=s.length;return t}function ae(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;tKe});function qe(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o>>0,l=new Uint8Array(E);b!==C;){for(var g=u[b],v=0,m=E-1;(g!==0||v>>0,l[m]=g%a>>>0,g=g/a>>>0;if(g!==0)throw new Error("Non-zero carry");j=v,b++}for(var x=E-j;x!==E&&l[x]===0;)x++;for(var k=f.repeat(d);x>>0,E=new Uint8Array(C);u[d];){var l=t[u.charCodeAt(d)];if(l===255)return;for(var g=0,v=C-1;(l!==0||g>>0,E[v]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");b=g,d++}if(u[d]!==" "){for(var m=C-b;m!==C&&E[m]===0;)m++;for(var x=new Uint8Array(j+(C-m)),k=j;m!==C;)x[k++]=E[m++];return x}}}function ke(u){var d=P(u);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:S,decodeUnsafe:P,decode:ke}}var Re=qe,Je=Re,ce=Je;var ur=new Uint8Array(0);var fe=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var de=r=>new TextEncoder().encode(r),he=r=>new TextDecoder().decode(r);var le=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},be=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ce(this,e)}},me=class{constructor(e){this.decoders=e}or(e){return Ce(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ce=(r,e)=>new me({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Ee=class{constructor(e,t,o,s){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=s,this.encoder=new le(e,t,o),this.decoder=new be(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new Ee(r,e,t,o),A=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:s}=ce(t,e);return T({prefix:r,name:e,encode:o,decode:n=>y(s(n))})},Xe=(r,e,t,o)=>{let s={};for(let p=0;p=8&&(a-=8,D[B++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return D},Ge=(r,e,t)=>{let o=e[e.length-1]==="=",s=(1<t;)D-=t,n+=e[s&a>>D];if(D&&(n+=e[s&a<T({prefix:e,name:r,encode(s){return Ge(s,o,t)},decode(s){return Xe(s,o,t,r)}});var Ke=T({prefix:"\0",name:"identity",encode:r=>he(r),decode:r=>de(r)});var X={};h(X,{base2:()=>Qe});var Qe=i({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var G={};h(G,{base8:()=>He});var He=i({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var K={};h(K,{base10:()=>We});var We=A({prefix:"9",name:"base10",alphabet:"0123456789"});var Q={};h(Q,{base16:()=>Ze,base16upper:()=>Ye});var Ze=i({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ye=i({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var H={};h(H,{base32:()=>z,base32hex:()=>rt,base32hexpad:()=>st,base32hexpadupper:()=>nt,base32hexupper:()=>ot,base32pad:()=>et,base32padupper:()=>tt,base32upper:()=>_e,base32z:()=>ut});var z=i({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_e=i({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),et=i({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tt=i({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rt=i({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ot=i({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),st=i({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nt=i({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ut=i({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var W={};h(W,{base36:()=>Dt,base36upper:()=>it});var Dt=A({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),it=A({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z={};h(Z,{base58btc:()=>w,base58flickr:()=>at});var w=A({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),at=A({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Y={};h(Y,{base64:()=>ct,base64pad:()=>ft,base64url:()=>dt,base64urlpad:()=>ht});var ct=i({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ft=i({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),dt=i({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ht=i({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var _={};h(_,{base256emoji:()=>Ct});var ge=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),pt=ge.reduce((r,e,t)=>(r[t]=e,r),[]),lt=ge.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function bt(r){return r.reduce((e,t)=>(e+=pt[t],e),"")}function mt(r){let e=[];for(let t of r){let o=lt[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Ct=T({prefix:"\u{1F680}",name:"base256emoji",encode:bt,decode:mt});var re={};h(re,{sha256:()=>Mt,sha512:()=>Vt});var Et=xe,we=128,gt=127,wt=~gt,xt=Math.pow(2,31);function xe(r,e,t){e=e||[],t=t||0;for(var o=t;r>=xt;)e[t++]=r&255|we,r/=128;for(;r&wt;)e[t++]=r&255|we,r>>>=7;return e[t]=r|0,xe.bytes=t-o+1,e}var yt=ee,vt=128,ye=127;function ee(r,e){var t=0,e=e||0,o=0,s=e,n,D=r.length;do{if(s>=D)throw ee.bytes=0,new RangeError("Could not decode varint");n=r[s++],t+=o<28?(n&ye)<=vt);return ee.bytes=s-e,t}var At=Math.pow(2,7),jt=Math.pow(2,14),Ft=Math.pow(2,21),Bt=Math.pow(2,28),St=Math.pow(2,35),Ut=Math.pow(2,42),Tt=Math.pow(2,49),zt=Math.pow(2,56),It=Math.pow(2,63),Lt=function(r){return r[N.decode(r),N.decode.bytes],I=(r,e,t=0)=>(N.encode(r,e,t),e),L=r=>N.encodingLength(r);var F=(r,e)=>{let t=e.byteLength,o=L(r),s=o+L(t),n=new Uint8Array(s+t);return I(r,n,0),I(t,n,o),n.set(e,s),new M(r,t,e,n)},Ae=r=>{let e=y(r),[t,o]=O(e),[s,n]=O(e.subarray(o)),D=e.subarray(o+n);if(D.byteLength!==s)throw new Error("Incorrect length");return new M(t,s,D,e)},je=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&fe(r.bytes,e.bytes),M=class{constructor(e,t,o,s){this.code=e,this.size=t,this.digest=o,this.bytes=s}};var te=({name:r,code:e,encode:t})=>new Be(r,e,t),Be=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?F(this.code,t):t.then(o=>F(this.code,o))}else throw Error("Unknown type, must be binary type")}};var Ue=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Mt=te({name:"sha2-256",code:18,encode:Ue("SHA-256")}),Vt=te({name:"sha2-512",code:19,encode:Ue("SHA-512")});var oe={};h(oe,{identity:()=>$t});var Te=0,Pt="identity",ze=y,kt=r=>F(Te,ze(r)),$t={code:Te,name:Pt,encode:ze,digest:kt};var Ur=new TextEncoder,Tr=new TextDecoder;var c=class{constructor(e,t,o,s){this.code=t,this.version=e,this.multihash=o,this.bytes=s,this.byteOffset=s.byteOffset,this.byteLength=s.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:q,byteLength:q,code:$,version:$,multihash:$,bytes:$,_baseCache:q,asCID:q})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==V)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kt)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return c.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=F(e,t);return c.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&je(this.multihash,e.multihash)}toString(e){let{bytes:t,version:o,_baseCache:s}=this;switch(o){case 0:return Xt(t,s,e||w.encoder);default:return Gt(t,s,e||z.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return Ht(/^0\.0/,Wt),!!(e&&(e[Le]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof c)return e;if(e!=null&&e.asCID===e){let{version:t,code:o,multihash:s,bytes:n}=e;return new c(t,o,s,n||Ie(t,o,s.bytes))}else if(e!=null&&e[Le]===!0){let{version:t,multihash:o,code:s}=e,n=Ae(o);return c.create(t,s,n)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==V)throw new Error(`Version 0 CID must use dag-pb (code: ${V}) block encoding`);return new c(e,t,o,o.bytes)}case 1:{let s=Ie(e,t,o.bytes);return new c(e,t,o,s)}default:throw new Error("Invalid version")}}static createV0(e){return c.create(0,V,e)}static createV1(e,t){return c.create(1,e,t)}static decode(e){let[t,o]=c.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=c.inspectBytes(e),o=t.size-t.multihashSize,s=y(e.subarray(o,o+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let n=s.subarray(t.multihashSize-t.digestSize),D=new M(t.multihashCode,t.digestSize,n,s);return[t.version===0?c.createV0(D):c.createV1(t.codec,D),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[S,P]=O(e.subarray(t));return t+=P,S},s=o(),n=V;if(s===18?(s=0,t=0):s===1&&(n=o()),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let D=t,a=o(),f=o(),B=t+f,p=B-D;return{version:s,codec:n,multihashCode:a,digestSize:f,multihashSize:p,size:B}}static parse(e,t){let[o,s]=Jt(e,t),n=c.decode(s);return n._baseCache.set(o,e),n}},Jt=(r,e)=>{switch(r[0]){case"Q":{let t=e||w;return[w.prefix,t.decode(`${w.prefix}${r}`)]}case w.prefix:{let t=e||w;return[w.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Xt=(r,e,t)=>{let{prefix:o}=t;if(o!==w.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(o);if(s==null){let n=t.encode(r).slice(1);return e.set(o,n),n}else return s},Gt=(r,e,t)=>{let{prefix:o}=t,s=e.get(o);if(s==null){let n=t.encode(r);return e.set(o,n),n}else return s},V=112,Kt=18,Ie=(r,e,t)=>{let o=L(r),s=o+L(e),n=new Uint8Array(s+t.byteLength);return I(r,n,0),I(e,n,o),n.set(t,s),n},Le=Symbol.for("@ipld/js-cid/CID"),$={writable:!1,configurable:!1,enumerable:!0},q={writable:!1,enumerable:!1,configurable:!1},Qt="0.0.0-dev",Ht=(r,e)=>{if(r.test(Qt))console.warn(e);else throw new Error(e)},Wt=`CID.isCID(v) is deprecated and will be removed in the next major release. -+Following code pattern: -+ -+if (CID.isCID(value)) { -+ doSomethingWithCID(value) -+} -+ -+Is replaced with: -+ -+const cid = CID.asCID(value) -+if (cid) { -+ // Make sure to use cid instead of value -+ doSomethingWithCID(cid) -+} -+`;var se={...J,...X,...G,...K,...Q,...H,...W,...Z,...Y,..._},$r={...re,...oe};function Ne(r,e,t,o){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:o}}}var Oe=Ne("utf8","u",r=>{let e=new TextDecoder("utf8");return"u"+e.decode(r)},r=>new TextEncoder().encode(r.substring(1))),ne=Ne("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);let e=U(r.length);for(let t=0;t", -+ "homepage": "https://github.com/achingbrain/uint8arrays", -+ "bugs": "https://github.com/achingbrain/uint8arrays/issues", -+ "types": "types/src/index.d.ts", -+ "repository": { -+ "type": "git", -+ "url": "https://github.com/achingbrain/uint8arrays.git" -+ }, -+ "scripts": { -+ "test": "aegir test", -+ "lint": "aegir ts -p check && aegir lint", -+ "release": "aegir release", -+ "release-minor": "aegir release --type minor", -+ "release-major": "aegir release --type major", -+ "build": "aegir build" -+ }, -+ "license": "MIT", -+ "dependencies": { -+ "multiformats": "^9.4.2" -+ }, -+ "devDependencies": { -+ "@types/benchmark": "^2.1.1", -+ "aegir": "^35.0.0", -+ "benchmark": "^2.1.4", -+ "util": "^0.12.4" -+ }, -+ "eslintConfig": { -+ "extends": "ipfs", -+ "parserOptions": { -+ "sourceType": "module" -+ }, -+ "ignorePatterns": [ -+ "!.aegir.js" -+ ] -+ }, -+ "typesVersions": { -+ "*": { -+ "*": [ -+ "types/src", -+ "types/src/*" -+ ] -+ } -+ }, -+ "exports": { -+ ".": { -+ "browser": "./esm/src/index.js", -+ "require": "./cjs/src/index.js", -+ "import": "./esm/src/index.js" -+ }, -+ "./alloc": { -+ "browser": "./esm/src/alloc.js", -+ "require": "./cjs/src/alloc.js", -+ "import": "./esm/src/alloc.js" -+ }, -+ "./compare": { -+ "browser": "./esm/src/compare.js", -+ "require": "./cjs/src/compare.js", -+ "import": "./esm/src/compare.js" -+ }, -+ "./concat": { -+ "browser": "./esm/src/concat.js", -+ "require": "./cjs/src/concat.js", -+ "import": "./esm/src/concat.js" -+ }, -+ "./equals": { -+ "browser": "./esm/src/equals.js", -+ "require": "./cjs/src/equals.js", -+ "import": "./esm/src/equals.js" -+ }, -+ "./from-string": { -+ "browser": "./esm/src/from-string.js", -+ "require": "./cjs/src/from-string.js", -+ "import": "./esm/src/from-string.js" -+ }, -+ "./to-string": { -+ "browser": "./esm/src/to-string.js", -+ "require": "./cjs/src/to-string.js", -+ "import": "./esm/src/to-string.js" -+ }, -+ "./xor": { -+ "browser": "./esm/src/xor.js", -+ "require": "./cjs/src/xor.js", -+ "import": "./esm/src/xor.js" -+ } -+ }, -+ "contributors": [ -+ "achingbrain ", -+ "Irakli Gozalishvili ", -+ "Cayman ", -+ "Hugo Dias ", -+ "Mircea Nistor ", -+ "Rafael Ramalho ", -+ "Vasco Santos " -+ ], -+ "browser": { -+ ".": "./cjs/src/index.js", -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify", -+ "./alloc.js": "./cjs/src/alloc.js", -+ "./compare.js": "./cjs/src/compare.js", -+ "./concat.js": "./cjs/src/concat.js", -+ "./equals.js": "./cjs/src/equals.js", -+ "./from-string.js": "./cjs/src/from-string.js", -+ "./to-string.js": "./cjs/src/to-string.js", -+ "./xor.js": "./cjs/src/xor.js" -+ }, -+ "react-native": { -+ ".": "./cjs/src/index.js", -+ "./alloc": "./cjs/src/alloc.js", -+ "./compare": "./cjs/src/compare.js", -+ "./concat": "./cjs/src/concat.js", -+ "./equals": "./cjs/src/equals.js", -+ "./from-string": "./cjs/src/from-string.js", -+ "./to-string": "./cjs/src/to-string.js", -+ "./xor": "./cjs/src/xor.js", -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/to-string b/node_modules/uint8arrays/to-string -new file mode 100644 -index 0000000000000000000000000000000000000000..2708e31dca8063775318af642874a080d638e1fe ---- /dev/null -+++ b/node_modules/uint8arrays/to-string -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/to-string.js') -diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts b/node_modules/uint8arrays/types/src/alloc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71086104a021fa42346cd5d46a72b6da8bb79f1e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/alloc.d.ts -@@ -0,0 +1,18 @@ -+/** -+ * Returns a `Uint8Array` of the requested size. Referenced memory will -+ * be initialized to 0. -+ * -+ * @param {number} [size] -+ * @returns {Uint8Array} -+ */ -+export function alloc(size?: number | undefined): Uint8Array; -+/** -+ * Where possible returns a Uint8Array of the requested size that references -+ * uninitialized memory. Only use if you are certain you will immediately -+ * overwrite every value in the returned `Uint8Array`. -+ * -+ * @param {number} [size] -+ * @returns {Uint8Array} -+ */ -+export function allocUnsafe(size?: number | undefined): Uint8Array; -+//# sourceMappingURL=alloc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts.map b/node_modules/uint8arrays/types/src/alloc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ded98e850419b7387b1b5248b08666f357f0b060 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/alloc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"alloc.d.ts","sourceRoot":"","sources":["../../src/alloc.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kDAFa,UAAU,CAQtB;AAED;;;;;;;GAOG;AACH,wDAFa,UAAU,CAQtB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/compare.d.ts b/node_modules/uint8arrays/types/src/compare.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dd23039272fd0eb5375622e34c718fa3cb1eec04 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/compare.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Can be used with Array.sort to sort and array with Uint8Array entries -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function compare(a: Uint8Array, b: Uint8Array): 0 | 1 | -1; -+//# sourceMappingURL=compare.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/compare.d.ts.map b/node_modules/uint8arrays/types/src/compare.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..e8238ebc28b6d4ebe38f6535d6180e5a99f76194 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/compare.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2BAHW,UAAU,KACV,UAAU,cAsBpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/concat.d.ts b/node_modules/uint8arrays/types/src/concat.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..960ca199e3a7586f586c8766e60aaa542916a851 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/concat.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns a new Uint8Array created by concatenating the passed ArrayLikes -+ * -+ * @param {Array>} arrays -+ * @param {number} [length] -+ */ -+export function concat(arrays: Array>, length?: number | undefined): Uint8Array; -+//# sourceMappingURL=concat.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/concat.d.ts.map b/node_modules/uint8arrays/types/src/concat.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a74679fba41402c50244f031fef3465a11cb81b7 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/concat.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../src/concat.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAHW,MAAM,UAAU,MAAM,CAAC,CAAC,2CAiBlC"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/equals.d.ts b/node_modules/uint8arrays/types/src/equals.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..4c4df17c62640f71f638699722bf9cd68e65cc3e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/equals.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns true if the two passed Uint8Arrays have the same content -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function equals(a: Uint8Array, b: Uint8Array): boolean; -+//# sourceMappingURL=equals.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/equals.d.ts.map b/node_modules/uint8arrays/types/src/equals.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..f4b4fb784dcfa264e6f45b5fbcd779ab77b2e5c5 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/equals.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/equals.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAHW,UAAU,KACV,UAAU,WAkBpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts b/node_modules/uint8arrays/types/src/from-string.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a48d58229830ecc2f00b630e265d71e99d4055 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/from-string.d.ts -@@ -0,0 +1,17 @@ -+/** -+ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings -+ */ -+/** -+ * Create a `Uint8Array` from the passed string -+ * -+ * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module. -+ * -+ * Also `ascii` which is similar to node's 'binary' encoding. -+ * -+ * @param {string} string -+ * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc -+ * @returns {Uint8Array} -+ */ -+export function fromString(string: string, encoding?: import("./util/bases.js").SupportedEncodings | undefined): Uint8Array; -+export type SupportedEncodings = import('./util/bases').SupportedEncodings; -+//# sourceMappingURL=from-string.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts.map b/node_modules/uint8arrays/types/src/from-string.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5f31eb6c8816c3da59a6ebf016cfca7f0f55fa5e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/from-string.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"from-string.d.ts","sourceRoot":"","sources":["../../src/from-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,mCAJW,MAAM,wEAEJ,UAAU,CAetB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/index.d.ts b/node_modules/uint8arrays/types/src/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..7a4a255ddc3b1c194a7907ed2ae972b28fdcecc4 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/index.d.ts -@@ -0,0 +1,8 @@ -+import { compare } from "./compare.js"; -+import { concat } from "./concat.js"; -+import { equals } from "./equals.js"; -+import { fromString } from "./from-string.js"; -+import { toString } from "./to-string.js"; -+import { xor } from "./xor.js"; -+export { compare, concat, equals, fromString, toString, xor }; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/index.d.ts.map b/node_modules/uint8arrays/types/src/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..4b136e26cf4d54488bfbbaf749a89197c074cd91 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":""} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts b/node_modules/uint8arrays/types/src/to-string.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..bf72c50427b41a8c4be85347e966feb710e18aa0 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/to-string.d.ts -@@ -0,0 +1,17 @@ -+/** -+ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings -+ */ -+/** -+ * Turns a `Uint8Array` into a string. -+ * -+ * Supports `utf8`, `utf-8` and any encoding supported by the multibase module. -+ * -+ * Also `ascii` which is similar to node's 'binary' encoding. -+ * -+ * @param {Uint8Array} array - The array to turn into a string -+ * @param {SupportedEncodings} [encoding=utf8] - The encoding to use -+ * @returns {string} -+ */ -+export function toString(array: Uint8Array, encoding?: import("./util/bases.js").SupportedEncodings | undefined): string; -+export type SupportedEncodings = import('./util/bases').SupportedEncodings; -+//# sourceMappingURL=to-string.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts.map b/node_modules/uint8arrays/types/src/to-string.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7290dc82e7b1c782b76b2ff96b2ccd49612db22d ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/to-string.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"to-string.d.ts","sourceRoot":"","sources":["../../src/to-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,gCAJW,UAAU,wEAER,MAAM,CAelB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..7b01d6f35e3821e5d695535d345d3684453d439f ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts -@@ -0,0 +1,10 @@ -+/** -+ * Create a Uint8Array of the specified length - uses -+ * the more performant `Buffer.allocUnsafe` if it is -+ * available or `new Uint8Array` if it is not. -+ * -+ * @param {number} length -+ * @returns {Uint8Array} -+ */ -+export function allocUnsafe(length: number): Uint8Array; -+//# sourceMappingURL=alloc-unsafe.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..78b2cfb583f5830da40a1286bd1dac3b5b977ada ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"alloc-unsafe.d.ts","sourceRoot":"","sources":["../../../src/util/alloc-unsafe.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAHW,MAAM,GACJ,UAAU,CAQtB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts b/node_modules/uint8arrays/types/src/util/bases.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c0dae33bc527a38464924c863af85fbc77667e93 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/bases.d.ts -@@ -0,0 +1,36 @@ -+export default BASES; -+export type MultibaseCodec = import('multiformats/bases/interface').MultibaseCodec; -+export type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof { -+ base256emoji: import("multiformats/bases/base").Codec<"base256emoji", "🚀">; -+ base64: import("multiformats/bases/base").Codec<"base64", "m">; -+ base64pad: import("multiformats/bases/base").Codec<"base64pad", "M">; -+ base64url: import("multiformats/bases/base").Codec<"base64url", "u">; -+ base64urlpad: import("multiformats/bases/base").Codec<"base64urlpad", "U">; -+ base58btc: import("multiformats/bases/base").Codec<"base58btc", "z">; -+ base58flickr: import("multiformats/bases/base").Codec<"base58flickr", "Z">; -+ base36: import("multiformats/bases/base").Codec<"base36", "k">; -+ base36upper: import("multiformats/bases/base").Codec<"base36upper", "K">; -+ base32: import("multiformats/bases/base").Codec<"base32", "b">; -+ base32upper: import("multiformats/bases/base").Codec<"base32upper", "B">; -+ base32pad: import("multiformats/bases/base").Codec<"base32pad", "c">; -+ base32padupper: import("multiformats/bases/base").Codec<"base32padupper", "C">; -+ base32hex: import("multiformats/bases/base").Codec<"base32hex", "v">; -+ base32hexupper: import("multiformats/bases/base").Codec<"base32hexupper", "V">; -+ base32hexpad: import("multiformats/bases/base").Codec<"base32hexpad", "t">; -+ base32hexpadupper: import("multiformats/bases/base").Codec<"base32hexpadupper", "T">; -+ base32z: import("multiformats/bases/base").Codec<"base32z", "h">; -+ base16: import("multiformats/bases/base").Codec<"base16", "f">; -+ base16upper: import("multiformats/bases/base").Codec<"base16upper", "F">; -+ base10: import("multiformats/bases/base").Codec<"base10", "9">; -+ base8: import("multiformats/bases/base").Codec<"base8", "7">; -+ base2: import("multiformats/bases/base").Codec<"base2", "0">; -+ identity: import("multiformats/bases/base").Codec<"identity", "\0">; -+}; -+/** -+ * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings -+ */ -+/** -+ * @type {Record} -+ */ -+declare const BASES: Record>; -+//# sourceMappingURL=bases.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts.map b/node_modules/uint8arrays/types/src/util/bases.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..6956f5335bf63870aa45350f2af1d66b881b6a09 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/bases.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../../src/util/bases.js"],"names":[],"mappings":";6BAIa,OAAO,8BAA8B,EAAE,cAAc,CAAC,GAAG,CAAC;iCAoD1D,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAAW;AADnF;;GAEG;AAEH;;GAEG;AACH,qBAFU,OAAO,kBAAkB,6DAAiB,CAWnD"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/xor.d.ts b/node_modules/uint8arrays/types/src/xor.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..deef5bb965a9e26283eab13a5cc6053bc59ef9ba ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/xor.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns the xor distance between two arrays -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function xor(a: Uint8Array, b: Uint8Array): Uint8Array; -+//# sourceMappingURL=xor.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/xor.d.ts.map b/node_modules/uint8arrays/types/src/xor.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..31db299b05a25b8439726a3e2fed3db618adad83 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/xor.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../src/xor.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,uBAHW,UAAU,KACV,UAAU,cAcpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..94b8c183d597efe32717777259261e28fc9c7853 ---- /dev/null -+++ b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/chai-parentheses/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/chai-bytes/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/aegir/dist/utils/chai.d.ts","../test/alloc.spec.js","../test/compare.spec.js","../test/concat.spec.js","../test/equals.spec.js","../test/from-string.spec.js","../test/to-string.spec.js","../test/xor.spec.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts","../src/concat.ts","../src/util/alloc-unsafe.js","../src/xor.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"c1f79c6d85cd84518fd7349588b3c61bdc189f58e3866f925cbf4631c81e31f9","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},{"version":"c6950fb69844190789c747a2ee2d49f34bd84273d692176d2c54d18d95fa3387","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},"33f12bdfbbb9a552db999b771a6e831fd0c94b321f958a1473def67b2b3e473f",{"version":"51a9c988758740ae2c6c44a76ef2438803df230b415b497293dfa5990508ab5a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b7210f350109bf3192235ed6e6ec55a0f5a19a4616daf84dc4196c052fa7cd18",{"version":"2cd140717148f456597ad7cd68b231e7ca6e5e92c60885b269e59880dae6019f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9368bbbf2a1dd5e9293b1a9ef06b4d0f02cbb18d5bde3b7f8fb134d7f0be4a93",{"version":"731062ffe7b99522b302e5615932f0956d50bcf2439cd6e38dc80af51982c1d7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"860a70e5ee208c81bfacb0bb46148ca0ff1566c65d29ccd8cd0d33963ad8bd40","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"58eb84f5c5f506c9dddeb6912d862fe15a523790d2aaf16dbb11d8dd203a79ca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[127],[63,127],[84,127],[87,127],[88,93,127],[89,99,100,107,116,126,127],[89,90,99,107,127],[91,127],[92,93,100,108,127],[93,116,123,127],[94,96,99,107,127],[95,127],[96,97,127],[98,99,127],[99,127],[99,100,101,116,126,127],[99,100,101,116,127],[102,107,116,126,127],[99,100,102,103,107,116,123,126,127],[102,104,116,123,126,127],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[99,105,127],[106,126,127],[96,99,107,116,127],[108,127],[109,127],[87,110,127],[111,125,127,131],[112,127],[113,127],[99,114,127],[114,115,127,129],[99,116,117,118,127],[116,118,127],[116,117,127],[119,127],[120,127],[99,121,122,127],[121,122,127],[93,107,123,127],[124,127],[107,125,127],[88,102,113,126,127],[93,127],[116,127,128],[127,129],[127,130],[88,93,99,101,110,116,126,127,129,131],[116,127,132],[127,138],[127,140],[99,116,127,134],[63,64,65,66,67,68,127],[63,64,127],[45,127],[52,54,55,56,127],[45,46,127],[53,127],[46,127],[46,48,127],[47,48,49,50,51,127],[41,127],[58,127],[42,43,44,59,60,61,127],[41,45,57,127],[41,69,127],[42,69,127],[43,69,127],[44,69,127],[58,59,60,69,127],[60,69,127],[61,69,127],[58],[45,56]],"referencedMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,62],[44,1],[59,63],[62,64],[60,63],[58,65],[61,62],[70,66],[71,67],[72,68],[73,69],[74,70],[75,71],[76,72]],"exportedModulesMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,73],[60,73],[58,74],[71,67],[73,69]],"semanticDiagnosticsPerFile":[77,64,68,66,63,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,86,133,102,103,104,134,105,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,139,138,140,141,142,69,67,65,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61,70,71,72,73,74,75,76],"affectedFilesPendingEmit":[[77,1],[64,1],[68,1],[66,1],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[86,1],[133,1],[102,1],[103,1],[104,1],[134,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[115,1],[116,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[132,1],[135,1],[136,1],[137,1],[139,1],[138,1],[140,1],[141,1],[142,1],[69,1],[67,1],[65,1],[56,1],[45,1],[57,1],[51,1],[47,1],[53,1],[55,1],[54,1],[48,1],[49,1],[46,1],[52,1],[50,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[41,1],[42,1],[43,1],[143,1],[44,1],[59,1],[62,1],[60,1],[144,1],[58,1],[61,1],[145,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1]]},"version":"4.3.5"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..140901c820b9d415726b42863170d121b6b1c25e ---- /dev/null -+++ b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e",{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[117],[64,117],[74,117],[77,117],[78,83,117],[79,89,90,97,106,116,117],[79,80,89,97,117],[81,117],[82,83,90,98,117],[83,106,113,117],[84,86,89,97,117],[85,117],[86,87,117],[88,89,117],[89,117],[89,90,91,106,116,117],[89,90,91,106,117],[92,97,106,116,117],[89,90,92,93,97,106,113,116,117],[92,94,106,113,116,117],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],[89,95,117],[96,116,117],[86,89,97,106,117],[98,117],[99,117],[77,100,117],[101,115,117,121],[102,117],[103,117],[89,104,117],[104,105,117,119],[89,106,107,108,117],[106,108,117],[106,107,117],[109,117],[110,117],[89,111,112,117],[111,112,117],[83,97,113,117],[114,117],[97,115,117],[78,92,103,116,117],[83,117],[106,117,118],[117,119],[117,120],[78,83,89,91,100,106,116,117,119,121],[106,117,122],[117,128],[117,130],[89,106,117,124],[45,117],[52,54,55,56,117],[45,46,117],[53,117],[46,117],[46,48,117],[47,48,49,50,51,117],[41,117],[58,117],[42,43,44,59,60,61,117],[41,45,57,117],[58],[45,56]],"referencedMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,60],[44,1],[59,61],[62,62],[60,61],[58,63],[61,60]],"exportedModulesMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,64],[60,64],[58,65]],"semanticDiagnosticsPerFile":[63,65,66,67,64,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,123,92,93,94,124,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,125,126,127,129,128,130,131,132,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61]},"version":"4.3.5"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/xor b/node_modules/uint8arrays/xor -new file mode 100644 -index 0000000000000000000000000000000000000000..53e53af9d8ad1a2b2a539e12c490e290d815d919 ---- /dev/null -+++ b/node_modules/uint8arrays/xor -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/xor.js') -diff --git a/package.json b/package.json -index e203182cf9b033d8553f0c52f1f9f73c4c7badc6..cdf6d136d1b078516ff2d1eccbe9879fc7b6bcb1 100644 ---- a/package.json -+++ b/package.json -@@ -53,5 +53,35 @@ - "@walletconnect/jsonrpc-provider": "1.0.14", - "@walletconnect/jsonrpc-ws-connection": "1.0.14", - "@walletconnect/relay-api": "1.0.11" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" - } - } diff --git a/.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch b/.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch deleted file mode 100644 index 64316244c9..0000000000 --- a/.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch +++ /dev/null @@ -1,9375 +0,0 @@ -diff --git a/dist/index.cjs.js b/dist/index.cjs.js -index 1a1a79f1e7d7347b2891f2035abf0e164e35c75d..82054f6b8644e459d956d792bb31914d2ba544b3 100644 ---- a/dist/index.cjs.js -+++ b/dist/index.cjs.js -@@ -1,10 +1,32 @@ --"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Zt=require("detect-browser"),U=require("@walletconnect/time"),P=require("@walletconnect/window-getters"),Xt=require("@walletconnect/window-metadata"),en=require("query-string"),Te=require("@ethersproject/hash"),tn=require("@ethersproject/transactions"),Ae=require("@stablelib/chacha20poly1305"),nn=require("@stablelib/hkdf"),B=require("@stablelib/random"),H=require("@stablelib/sha256"),rn=require("@stablelib/x25519"),p=require("uint8arrays"),on=require("elliptic"),sn=require("@walletconnect/relay-auth"),an=require("@walletconnect/relay-api");function Ie(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if(n!=="default"){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,Object.freeze(t)}var J=Ie(en),Pe=Ie(rn);const W=":";function ne(e){const[t,n]=e.split(W);return{namespace:t,reference:n}}function Ce(e){const{namespace:t,reference:n}=e;return[t,n].join(W)}function re(e){const[t,n,r]=e.split(W);return{namespace:t,reference:n,address:r}}function $e(e){const{namespace:t,reference:n,address:r}=e;return[t,n,r].join(W)}function oe(e,t){const n=[];return e.forEach(r=>{const o=t(r);n.includes(o)||n.push(o)}),n}function je(e){const{address:t}=re(e);return t}function _e(e){const{namespace:t,reference:n}=re(e);return Ce({namespace:t,reference:n})}function cn(e,t){const{namespace:n,reference:r}=ne(t);return $e({namespace:n,reference:r,address:e})}function un(e){return oe(e,je)}function Ue(e){return oe(e,_e)}function ln(e,t=[]){const n=[];return Object.keys(e).forEach(r=>{if(t.length&&!t.includes(r))return;const o=e[r];n.push(...o.accounts)}),n}function dn(e,t=[]){const n=[];return Object.keys(e).forEach(r=>{if(t.length&&!t.includes(r))return;const o=e[r];n.push(...Ue(o.accounts))}),n}function pn(e,t=[]){const n=[];return Object.keys(e).forEach(r=>{if(t.length&&!t.includes(r))return;const o=e[r];n.push(...z(r,o))}),n}function z(e,t){return e.includes(":")?[e]:t.chains||[]}var fn=Object.defineProperty,De=Object.getOwnPropertySymbols,mn=Object.prototype.hasOwnProperty,gn=Object.prototype.propertyIsEnumerable,Ve=(e,t,n)=>t in e?fn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ke=(e,t)=>{for(var n in t||(t={}))mn.call(t,n)&&Ve(e,n,t[n]);if(De)for(var n of De(t))gn.call(t,n)&&Ve(e,n,t[n]);return e};const xe="ReactNative",y={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},Y=" ",hn=":",Me="/",se=2,yn=1e3,Fe="js";function ie(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function D(){return!P.getDocument()&&!!P.getNavigator()&&navigator.product===xe}function M(){return!ie()&&!!P.getNavigator()&&!!P.getDocument()}function C(){return D()?y.reactNative:ie()?y.node:M()?y.browser:y.unknown}function vn(){var e;try{return D()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(e=global.Application)==null?void 0:e.applicationId:void 0}catch{return}}function Le(e,t){let n=J.parse(e);return n=ke(ke({},n),t),e=J.stringify(n),e}function En(){return Xt.getWindowMetadata()||{name:"",description:"",url:"",icons:[""]}}function bn(e,t){var n;const r=C(),o={protocol:e,version:t,env:r};return r==="browser"&&(o.host=((n=P.getLocation())==null?void 0:n.host)||"unknown"),o}function Ke(){if(C()===y.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:n,Version:r}=global.Platform;return[n,r].join("-")}const e=Zt.detect();if(e===null)return"unknown";const t=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[t,e.name,e.version].join("-"):[t,e.version].join("-")}function qe(){var e;const t=C();return t===y.browser?[t,((e=P.getLocation())==null?void 0:e.host)||"unknown"].join(":"):t}function Be(e,t,n){const r=Ke(),o=qe();return[[e,t].join("-"),[Fe,n].join("-"),r,o].join("/")}function Nn({protocol:e,version:t,relayUrl:n,sdkVersion:r,auth:o,projectId:s,useOnCloseEvent:i,bundleId:u}){const l=n.split("?"),a=Be(e,t,r),d={auth:o,ua:a,projectId:s,useOnCloseEvent:i||void 0,origin:u||void 0},c=Le(l[1]||"",d);return l[0]+"?"+c}function On(e){let t=(e.match(/^[^:]+(?=:\/\/)/gi)||[])[0];const n=typeof t<"u"?e.split("://")[1]:e;return t=t==="wss"?"https":"http",[t,n].join("://")}function Sn(e,t,n){if(!e[t]||typeof e[t]!==n)throw new Error(`Missing or invalid "${t}" param`)}function He(e,t=se){return Je(e.split(Me),t)}function wn(e){return He(e).join(Y)}function w(e,t){return e.filter(n=>t.includes(n)).length===e.length}function Je(e,t=se){return e.slice(Math.max(e.length-t,0))}function Rn(e){return Object.fromEntries(e.entries())}function Tn(e){return new Map(Object.entries(e))}function An(e,t){const n={};return Object.keys(e).forEach(r=>{n[r]=t(e[r])}),n}const In=e=>e;function We(e){return e.trim().replace(/^\w/,t=>t.toUpperCase())}function Pn(e){return e.split(Y).map(t=>We(t)).join(Y)}function Cn(e=U.FIVE_MINUTES,t){const n=U.toMiliseconds(e||U.FIVE_MINUTES);let r,o,s;return{resolve:i=>{s&&r&&(clearTimeout(s),r(i))},reject:i=>{s&&o&&(clearTimeout(s),o(i))},done:()=>new Promise((i,u)=>{s=setTimeout(()=>{u(new Error(t))},n),r=i,o=u})}}function $n(e,t,n){return new Promise(async(r,o)=>{const s=setTimeout(()=>o(new Error(n)),t);try{const i=await e;r(i)}catch(i){o(i)}clearTimeout(s)})}function ae(e,t){if(typeof t=="string"&&t.startsWith(`${e}:`))return t;if(e.toLowerCase()==="topic"){if(typeof t!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${t}`}else if(e.toLowerCase()==="id"){if(typeof t!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${t}`}throw new Error(`Unknown expirer target type: ${e}`)}function jn(e){return ae("topic",e)}function _n(e){return ae("id",e)}function Un(e){const[t,n]=e.split(":"),r={id:void 0,topic:void 0};if(t==="topic"&&typeof n=="string")r.topic=n;else if(t==="id"&&Number.isInteger(Number(n)))r.id=Number(n);else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`);return r}function Dn(e,t){return U.fromMiliseconds((t||Date.now())+U.toMiliseconds(e))}function Vn(e){return Date.now()>=U.toMiliseconds(e)}function kn(e,t){return`${e}${t?`:${t}`:""}`}function O(e=[],t=[]){return[...new Set([...e,...t])]}async function xn({id:e,topic:t,wcDeepLink:n}){var r;try{if(!n)return;const o=typeof n=="string"?JSON.parse(n):n,s=o?.href;if(typeof s!="string")return;const i=ze(s,e,t),u=C();if(u===y.browser){if(!((r=P.getDocument())!=null&&r.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}i.startsWith("https://")||i.startsWith("http://")?window.open(i,"_blank","noreferrer noopener"):window.open(i,Ye()?"_blank":"_self","noreferrer noopener")}else u===y.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(i)}catch(o){console.error(o)}}function ze(e,t,n){const r=`requestId=${t}&sessionTopic=${n}`;e.endsWith("/")&&(e=e.slice(0,-1));let o=`${e}`;if(e.startsWith("https://t.me")){const s=e.includes("?")?"&startapp=":"?startapp=";o=`${o}${s}${Ge(r,!0)}`}else o=`${o}/wc?${r}`;return o}async function Mn(e,t){let n="";try{if(M()&&(n=localStorage.getItem(t),n))return n;n=await e.getItem(t)}catch(r){console.error(r)}return n}function ce(e,t){return e.filter(n=>t.includes(n))}function Fn(e,t){if(!e.includes(t))return null;const n=e.split(/([&,?,=])/),r=n.indexOf(t);return n[r+2]}function Ln(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,e=>{const t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}function Kn(){return typeof process<"u"&&process.env.IS_VITEST==="true"}function Ye(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}function Ge(e,t=!1){const n=Buffer.from(e).toString("base64");return t?n.replace(/[=]/g,""):n}function ue(e){return Buffer.from(e,"base64").toString("utf-8")}const qn="https://rpc.walletconnect.org/v1";async function Qe(e,t,n,r,o,s){switch(n.t){case"eip191":return Ze(e,t,n.s);case"eip1271":return await Xe(e,t,n.s,r,o,s);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`)}}function Ze(e,t,n){return tn.recoverAddress(Te.hashMessage(t),n).toLowerCase()===e.toLowerCase()}async function Xe(e,t,n,r,o,s){const i=ne(r);if(!i.namespace||!i.reference)throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`);try{const u="0x1626ba7e",l="0000000000000000000000000000000000000000000000000000000000000040",a="0000000000000000000000000000000000000000000000000000000000000041",d=n.substring(2),c=Te.hashMessage(t).substring(2),f=u+c+l+a+d,h=await fetch(`${s||qn}/?chainId=${r}&projectId=${o}`,{method:"POST",body:JSON.stringify({id:Bn(),jsonrpc:"2.0",method:"eth_call",params:[{to:e,data:f},"latest"]})}),{result:m}=await h.json();return m?m.slice(0,u.length).toLowerCase()===u.toLowerCase():!1}catch(u){return console.error("isValidEip1271Signature: ",u),!1}}function Bn(){return Date.now()+Math.floor(Math.random()*1e3)}var Hn=Object.defineProperty,Jn=Object.defineProperties,Wn=Object.getOwnPropertyDescriptors,et=Object.getOwnPropertySymbols,zn=Object.prototype.hasOwnProperty,Yn=Object.prototype.propertyIsEnumerable,tt=(e,t,n)=>t in e?Hn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,le=(e,t)=>{for(var n in t||(t={}))zn.call(t,n)&&tt(e,n,t[n]);if(et)for(var n of et(t))Yn.call(t,n)&&tt(e,n,t[n]);return e},nt=(e,t)=>Jn(e,Wn(t));const Gn="did:pkh:",G=e=>e?.split(":"),rt=e=>{const t=e&&G(e);if(t)return e.includes(Gn)?t[3]:t[1]},ot=e=>{const t=e&&G(e);if(t)return t[2]+":"+t[3]},de=e=>{const t=e&&G(e);if(t)return t.pop()};async function Qn(e){const{cacao:t,projectId:n}=e,{s:r,p:o}=t,s=st(o,o.iss),i=de(o.iss);return await Qe(i,s,r,ot(o.iss),n)}const st=(e,t)=>{const n=`${e.domain} wants you to sign in with your Ethereum account:`,r=de(t);if(!e.aud&&!e.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let o=e.statement||void 0;const s=`URI: ${e.aud||e.uri}`,i=`Version: ${e.version}`,u=`Chain ID: ${rt(t)}`,l=`Nonce: ${e.nonce}`,a=`Issued At: ${e.iat}`,d=e.exp?`Expiration Time: ${e.exp}`:void 0,c=e.nbf?`Not Before: ${e.nbf}`:void 0,f=e.requestId?`Request ID: ${e.requestId}`:void 0,h=e.resources?`Resources:${e.resources.map(g=>` --- ${g}`).join("")}`:void 0,m=Z(e.resources);if(m){const g=R(m);o=me(o,g)}return[n,r,"",o,"",s,i,u,l,a,d,c,f,h].filter(g=>g!=null).join(` --`)};function Zn(e,t,n){return n.includes("did:pkh:")||(n=`did:pkh:${n}`),{h:{t:"caip122"},p:{iss:n,domain:e.domain,aud:e.aud,version:e.version,nonce:e.nonce,iat:e.iat,statement:e.statement,requestId:e.requestId,resources:e.resources,nbf:e.nbf,exp:e.exp},s:t}}function Xn(e){var t;const{authPayload:n,chains:r,methods:o}=e,s=n.statement||"";if(!(r!=null&&r.length))return n;const i=n.chains,u=ce(i,r);if(!(u!=null&&u.length))throw new Error("No supported chains");const l=it(n.resources);if(!l)return n;N(l);const a=at(l,"eip155");let d=n?.resources||[];if(a!=null&&a.length){const c=ct(a),f=ce(c,o);if(!(f!=null&&f.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`);const h=pe("request",f,{chains:u}),m=pt(l,"eip155",h);d=((t=n?.resources)==null?void 0:t.slice(0,-1))||[],d.push(Q(m))}return nt(le({},n),{statement:mt(s,Z(d)),chains:u,resources:n!=null&&n.resources||d.length>0?d:void 0})}function it(e){const t=Z(e);if(t&&fe(t))return R(t)}function er(e,t){var n;return(n=e?.att)==null?void 0:n.hasOwnProperty(t)}function at(e,t){var n,r;return(n=e?.att)!=null&&n[t]?Object.keys((r=e?.att)==null?void 0:r[t]):[]}function tr(e){return e?.map(t=>Object.keys(t))||[]}function ct(e){return e?.map(t=>{var n;return(n=t.split("/"))==null?void 0:n[1]})||[]}function ut(e){return Buffer.from(JSON.stringify(e)).toString("base64")}function lt(e){return JSON.parse(Buffer.from(e,"base64").toString("utf-8"))}function N(e){if(!e)throw new Error("No recap provided, value is undefined");if(!e.att)throw new Error("No `att` property found");const t=Object.keys(e.att);if(!(t!=null&&t.length))throw new Error("No resources found in `att` property");t.forEach(n=>{const r=e.att[n];if(Array.isArray(r))throw new Error(`Resource must be an object: ${n}`);if(typeof r!="object")throw new Error(`Resource must be an object: ${n}`);if(!Object.keys(r).length)throw new Error(`Resource object is empty: ${n}`);Object.keys(r).forEach(o=>{const s=r[o];if(!Array.isArray(s))throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`);if(!s.length)throw new Error(`Value of ${o} is empty array, must be an array with objects`);s.forEach(i=>{if(typeof i!="object")throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`)})})})}function dt(e,t,n,r={}){return n?.sort((o,s)=>o.localeCompare(s)),{att:{[e]:pe(t,n,r)}}}function pt(e,t,n){var r;return e.att[t]=le({},n),((r=Object.keys(e.att))==null?void 0:r.sort((o,s)=>o.localeCompare(s))).reduce((o,s)=>(o.att[s]=e.att[s],o),{att:{}})}function pe(e,t,n={}){t=t?.sort((o,s)=>o.localeCompare(s));const r=t.map(o=>({[`${e}/${o}`]:[n]}));return Object.assign({},...r)}function Q(e){return N(e),`urn:recap:${ut(e).replace(/=/g,"")}`}function R(e){const t=lt(e.replace("urn:recap:",""));return N(t),t}function nr(e,t,n){const r=dt(e,t,n);return Q(r)}function fe(e){return e&&e.includes("urn:recap:")}function rr(e,t){const n=R(e),r=R(t),o=ft(n,r);return Q(o)}function ft(e,t){N(e),N(t);const n=Object.keys(e.att).concat(Object.keys(t.att)).sort((o,s)=>o.localeCompare(s)),r={att:{}};return n.forEach(o=>{var s,i;Object.keys(((s=e.att)==null?void 0:s[o])||{}).concat(Object.keys(((i=t.att)==null?void 0:i[o])||{})).sort((u,l)=>u.localeCompare(l)).forEach(u=>{var l,a;r.att[o]=nt(le({},r.att[o]),{[u]:((l=e.att[o])==null?void 0:l[u])||((a=t.att[o])==null?void 0:a[u])})})}),r}function me(e="",t){N(t);const n="I further authorize the stated URI to perform the following actions on my behalf: ";if(e.includes(n))return e;const r=[];let o=0;Object.keys(t.att).forEach(u=>{const l=Object.keys(t.att[u]).map(c=>({ability:c.split("/")[0],action:c.split("/")[1]}));l.sort((c,f)=>c.action.localeCompare(f.action));const a={};l.forEach(c=>{a[c.ability]||(a[c.ability]=[]),a[c.ability].push(c.action)});const d=Object.keys(a).map(c=>(o++,`(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`));r.push(d.join(", ").replace(".,","."))});const s=r.join(" "),i=`${n}${s}`;return`${e?e+" ":""}${i}`}function or(e){var t;const n=R(e);N(n);const r=(t=n.att)==null?void 0:t.eip155;return r?Object.keys(r).map(o=>o.split("/")[1]):[]}function sr(e){const t=R(e);N(t);const n=[];return Object.values(t.att).forEach(r=>{Object.values(r).forEach(o=>{var s;(s=o?.[0])!=null&&s.chains&&n.push(o[0].chains)})}),[...new Set(n.flat())]}function mt(e,t){if(!t)return e;const n=R(t);return N(n),me(e,n)}function Z(e){if(!e)return;const t=e?.[e.length-1];return fe(t)?t:void 0}const ge="base10",v="base16",he="base64pad",ir="base64url",V="utf8",ye=0,k=1,F=2,ar=0,gt=1,L=12,ve=32;function cr(){const e=Pe.generateKeyPair();return{privateKey:p.toString(e.secretKey,v),publicKey:p.toString(e.publicKey,v)}}function ur(){const e=B.randomBytes(ve);return p.toString(e,v)}function lr(e,t){const n=Pe.sharedKey(p.fromString(e,v),p.fromString(t,v),!0),r=new nn.HKDF(H.SHA256,n).expand(ve);return p.toString(r,v)}function dr(e){const t=H.hash(p.fromString(e,v));return p.toString(t,v)}function pr(e){const t=H.hash(p.fromString(e,V));return p.toString(t,v)}function Ee(e){return p.fromString(`${e}`,ge)}function $(e){return Number(p.toString(e,ge))}function fr(e){const t=Ee(typeof e.type<"u"?e.type:ye);if($(t)===k&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const n=typeof e.senderPublicKey<"u"?p.fromString(e.senderPublicKey,v):void 0,r=typeof e.iv<"u"?p.fromString(e.iv,v):B.randomBytes(L),o=new Ae.ChaCha20Poly1305(p.fromString(e.symKey,v)).seal(r,p.fromString(e.message,V));return be({type:t,sealed:o,iv:r,senderPublicKey:n,encoding:e.encoding})}function mr(e,t){const n=Ee(F),r=B.randomBytes(L),o=p.fromString(e,V);return be({type:n,sealed:o,iv:r,encoding:t})}function gr(e){const t=new Ae.ChaCha20Poly1305(p.fromString(e.symKey,v)),{sealed:n,iv:r}=X({encoded:e.encoded,encoding:e?.encoding}),o=t.open(r,n);if(o===null)throw new Error("Failed to decrypt");return p.toString(o,V)}function hr(e,t){const{sealed:n}=X({encoded:e,encoding:t});return p.toString(n,V)}function be(e){const{encoding:t=he}=e;if($(e.type)===F)return p.toString(p.concat([e.type,e.sealed]),t);if($(e.type)===k){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return p.toString(p.concat([e.type,e.senderPublicKey,e.iv,e.sealed]),t)}return p.toString(p.concat([e.type,e.iv,e.sealed]),t)}function X(e){const{encoded:t,encoding:n=he}=e,r=p.fromString(t,n),o=r.slice(ar,gt),s=gt;if($(o)===k){const a=s+ve,d=a+L,c=r.slice(s,a),f=r.slice(a,d),h=r.slice(d);return{type:o,sealed:h,iv:f,senderPublicKey:c}}if($(o)===F){const a=r.slice(s),d=B.randomBytes(L);return{type:o,sealed:a,iv:d}}const i=s+L,u=r.slice(s,i),l=r.slice(i);return{type:o,sealed:l,iv:u}}function yr(e,t){const n=X({encoded:e,encoding:t?.encoding});return ht({type:$(n.type),senderPublicKey:typeof n.senderPublicKey<"u"?p.toString(n.senderPublicKey,v):void 0,receiverPublicKey:t?.receiverPublicKey})}function ht(e){const t=e?.type||ye;if(t===k){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:t,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function vr(e){return e.type===k&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}function Er(e){return e.type===F}function yt(e){return new on.ec("p256").keyFromPublic({x:Buffer.from(e.x,"base64").toString("hex"),y:Buffer.from(e.y,"base64").toString("hex")},"hex")}function br(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");const n=t.length%4;return n>0&&(t+="=".repeat(4-n)),t}function Nr(e){return Buffer.from(br(e),"base64")}function Or(e,t){const[n,r,o]=e.split("."),s=Nr(o);if(s.length!==64)throw new Error("Invalid signature length");const i=s.slice(0,32).toString("hex"),u=s.slice(32,64).toString("hex"),l=`${n}.${r}`,a=new H.SHA256().update(Buffer.from(l)).digest(),d=yt(t),c=Buffer.from(a).toString("hex");if(!d.verify(c,{r:i,s:u}))throw new Error("Invalid signature");return sn.decodeJWT(e).payload}const vt="irn";function Sr(e){return e?.relay||{protocol:vt}}function wr(e){const t=an.RELAY_JSONRPC[e];if(typeof t>"u")throw new Error(`Relay Protocol not supported: ${e}`);return t}var Rr=Object.defineProperty,Tr=Object.defineProperties,Ar=Object.getOwnPropertyDescriptors,Et=Object.getOwnPropertySymbols,Ir=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable,bt=(e,t,n)=>t in e?Rr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Nt=(e,t)=>{for(var n in t||(t={}))Ir.call(t,n)&&bt(e,n,t[n]);if(Et)for(var n of Et(t))Pr.call(t,n)&&bt(e,n,t[n]);return e},Cr=(e,t)=>Tr(e,Ar(t));function Ot(e,t="-"){const n={},r="relay"+t;return Object.keys(e).forEach(o=>{if(o.startsWith(r)){const s=o.replace(r,""),i=e[o];n[s]=i}}),n}function $r(e){if(!e.includes("wc:")){const l=ue(e);l!=null&&l.includes("wc:")&&(e=l)}e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const t=e.indexOf(":"),n=e.indexOf("?")!==-1?e.indexOf("?"):void 0,r=e.substring(0,t),o=e.substring(t+1,n).split("@"),s=typeof n<"u"?e.substring(n):"",i=J.parse(s),u=typeof i.methods=="string"?i.methods.split(","):void 0;return{protocol:r,topic:St(o[0]),version:parseInt(o[1],10),symKey:i.symKey,relay:Ot(i),methods:u,expiryTimestamp:i.expiryTimestamp?parseInt(i.expiryTimestamp,10):void 0}}function St(e){return e.startsWith("//")?e.substring(2):e}function wt(e,t="-"){const n="relay",r={};return Object.keys(e).forEach(o=>{const s=n+t+o;e[o]&&(r[s]=e[o])}),r}function jr(e){return`${e.protocol}:${e.topic}@${e.version}?`+J.stringify(Nt(Cr(Nt({symKey:e.symKey},wt(e.relay)),{expiryTimestamp:e.expiryTimestamp}),e.methods?{methods:e.methods.join(",")}:{}))}function _r(e,t,n){return`${e}?wc_ev=${n}&topic=${t}`}var Ur=Object.defineProperty,Dr=Object.defineProperties,Vr=Object.getOwnPropertyDescriptors,Rt=Object.getOwnPropertySymbols,kr=Object.prototype.hasOwnProperty,xr=Object.prototype.propertyIsEnumerable,Tt=(e,t,n)=>t in e?Ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mr=(e,t)=>{for(var n in t||(t={}))kr.call(t,n)&&Tt(e,n,t[n]);if(Rt)for(var n of Rt(t))xr.call(t,n)&&Tt(e,n,t[n]);return e},Fr=(e,t)=>Dr(e,Vr(t));function j(e){const t=[];return e.forEach(n=>{const[r,o]=n.split(":");t.push(`${r}:${o}`)}),t}function At(e){const t=[];return Object.values(e).forEach(n=>{t.push(...j(n.accounts))}),t}function It(e,t){const n=[];return Object.values(e).forEach(r=>{j(r.accounts).includes(t)&&n.push(...r.methods)}),n}function Pt(e,t){const n=[];return Object.values(e).forEach(r=>{j(r.accounts).includes(t)&&n.push(...r.events)}),n}function Lr(e,t){const n=Ft(e,t);if(n)throw new Error(n.message);const r={};for(const[o,s]of Object.entries(e))r[o]={methods:s.methods,events:s.events,chains:s.accounts.map(i=>`${i.split(":")[0]}:${i.split(":")[1]}`)};return r}function Kr(e){const{proposal:{requiredNamespaces:t,optionalNamespaces:n={}},supportedNamespaces:r}=e,o=Oe(t),s=Oe(n),i={};Object.keys(r).forEach(a=>{const d=r[a].chains,c=r[a].methods,f=r[a].events,h=r[a].accounts;d.forEach(m=>{if(!h.some(g=>g.includes(m)))throw new Error(`No accounts provided for chain ${m} in namespace ${a}`)}),i[a]={chains:d,methods:c,events:f,accounts:h}});const u=Kt(t,i,"approve()");if(u)throw new Error(u.message);const l={};return!Object.keys(t).length&&!Object.keys(n).length?i:(Object.keys(o).forEach(a=>{const d=r[a].chains.filter(m=>{var g,b;return(b=(g=o[a])==null?void 0:g.chains)==null?void 0:b.includes(m)}),c=r[a].methods.filter(m=>{var g,b;return(b=(g=o[a])==null?void 0:g.methods)==null?void 0:b.includes(m)}),f=r[a].events.filter(m=>{var g,b;return(b=(g=o[a])==null?void 0:g.events)==null?void 0:b.includes(m)}),h=d.map(m=>r[a].accounts.filter(g=>g.includes(`${m}:`))).flat();l[a]={chains:d,methods:c,events:f,accounts:h}}),Object.keys(s).forEach(a=>{var d,c,f,h,m,g;if(!r[a])return;const b=(c=(d=s[a])==null?void 0:d.chains)==null?void 0:c.filter(A=>r[a].chains.includes(A)),Yt=r[a].methods.filter(A=>{var I,x;return(x=(I=s[a])==null?void 0:I.methods)==null?void 0:x.includes(A)}),Gt=r[a].events.filter(A=>{var I,x;return(x=(I=s[a])==null?void 0:I.events)==null?void 0:x.includes(A)}),Qt=b?.map(A=>r[a].accounts.filter(I=>I.includes(`${A}:`))).flat();l[a]={chains:O((f=l[a])==null?void 0:f.chains,b),methods:O((h=l[a])==null?void 0:h.methods,Yt),events:O((m=l[a])==null?void 0:m.events,Gt),accounts:O((g=l[a])==null?void 0:g.accounts,Qt)}}),l)}function Ne(e){return e.includes(":")}function Ct(e){return Ne(e)?e.split(":")[0]:e}function Oe(e){var t,n,r;const o={};if(!ee(e))return o;for(const[s,i]of Object.entries(e)){const u=Ne(s)?[s]:i.chains,l=i.methods||[],a=i.events||[],d=Ct(s);o[d]=Fr(Mr({},o[d]),{chains:O(u,(t=o[d])==null?void 0:t.chains),methods:O(l,(n=o[d])==null?void 0:n.methods),events:O(a,(r=o[d])==null?void 0:r.events)})}return o}function $t(e){const t={};return e?.forEach(n=>{const[r,o]=n.split(":");t[r]||(t[r]={accounts:[],chains:[],events:[]}),t[r].accounts.push(n),t[r].chains.push(`${r}:${o}`)}),t}function qr(e,t){t=t.map(r=>r.replace("did:pkh:",""));const n=$t(t);for(const[r,o]of Object.entries(n))o.methods?o.methods=O(o.methods,e):o.methods=e,o.events=["chainChanged","accountsChanged"];return n}const jt={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},_t={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function S(e,t){const{message:n,code:r}=_t[e];return{message:t?`${n} ${t}`:n,code:r}}function _(e,t){const{message:n,code:r}=jt[e];return{message:t?`${n} ${t}`:n,code:r}}function K(e,t){return Array.isArray(e)?typeof t<"u"&&e.length?e.every(t):!0:!1}function ee(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function T(e){return typeof e>"u"}function E(e,t){return t&&T(e)?!0:typeof e=="string"&&!!e.trim().length}function te(e,t){return t&&T(e)?!0:typeof e=="number"&&!isNaN(e)}function Br(e,t){const{requiredNamespaces:n}=t,r=Object.keys(e.namespaces),o=Object.keys(n);let s=!0;return w(o,r)?(r.forEach(i=>{const{accounts:u,methods:l,events:a}=e.namespaces[i],d=j(u),c=n[i];(!w(z(i,c),d)||!w(c.methods,l)||!w(c.events,a))&&(s=!1)}),s):!1}function q(e){return E(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function Ut(e){if(E(e,!1)&&e.includes(":")){const t=e.split(":");if(t.length===3){const n=t[0]+":"+t[1];return!!t[2]&&q(n)}}return!1}function Hr(e){function t(n){try{return typeof new URL(n)<"u"}catch{return!1}}try{if(E(e,!1)){if(t(e))return!0;const n=ue(e);return t(n)}}catch{}return!1}function Jr(e){var t;return(t=e?.proposer)==null?void 0:t.publicKey}function Wr(e){return e?.topic}function zr(e,t){let n=null;return E(e?.publicKey,!1)||(n=S("MISSING_OR_INVALID",`${t} controller public key should be a string`)),n}function Se(e){let t=!0;return K(e)?e.length&&(t=e.every(n=>E(n,!1))):t=!1,t}function Dt(e,t,n){let r=null;return K(t)&&t.length?t.forEach(o=>{r||q(o)||(r=_("UNSUPPORTED_CHAINS",`${n}, chain ${o} should be a string and conform to "namespace:chainId" format`))}):q(e)||(r=_("UNSUPPORTED_CHAINS",`${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),r}function Vt(e,t,n){let r=null;return Object.entries(e).forEach(([o,s])=>{if(r)return;const i=Dt(o,z(o,s),`${t} ${n}`);i&&(r=i)}),r}function kt(e,t){let n=null;return K(e)?e.forEach(r=>{n||Ut(r)||(n=_("UNSUPPORTED_ACCOUNTS",`${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`))}):n=_("UNSUPPORTED_ACCOUNTS",`${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),n}function xt(e,t){let n=null;return Object.values(e).forEach(r=>{if(n)return;const o=kt(r?.accounts,`${t} namespace`);o&&(n=o)}),n}function Mt(e,t){let n=null;return Se(e?.methods)?Se(e?.events)||(n=_("UNSUPPORTED_EVENTS",`${t}, events should be an array of strings or empty array for no events`)):n=_("UNSUPPORTED_METHODS",`${t}, methods should be an array of strings or empty array for no methods`),n}function we(e,t){let n=null;return Object.values(e).forEach(r=>{if(n)return;const o=Mt(r,`${t}, namespace`);o&&(n=o)}),n}function Yr(e,t,n){let r=null;if(e&&ee(e)){const o=we(e,t);o&&(r=o);const s=Vt(e,t,n);s&&(r=s)}else r=S("MISSING_OR_INVALID",`${t}, ${n} should be an object with data`);return r}function Ft(e,t){let n=null;if(e&&ee(e)){const r=we(e,t);r&&(n=r);const o=xt(e,t);o&&(n=o)}else n=S("MISSING_OR_INVALID",`${t}, namespaces should be an object with data`);return n}function Lt(e){return E(e.protocol,!0)}function Gr(e,t){let n=!1;return t&&!e?n=!0:e&&K(e)&&e.length&&e.forEach(r=>{n=Lt(r)}),n}function Qr(e){return typeof e=="number"}function Zr(e){return typeof e<"u"&&typeof e!==null}function Xr(e){return!(!e||typeof e!="object"||!e.code||!te(e.code,!1)||!e.message||!E(e.message,!1))}function eo(e){return!(T(e)||!E(e.method,!1))}function to(e){return!(T(e)||T(e.result)&&T(e.error)||!te(e.id,!1)||!E(e.jsonrpc,!1))}function no(e){return!(T(e)||!E(e.name,!1))}function ro(e,t){return!(!q(t)||!At(e).includes(t))}function oo(e,t,n){return E(n,!1)?It(e,t).includes(n):!1}function so(e,t,n){return E(n,!1)?Pt(e,t).includes(n):!1}function Kt(e,t,n){let r=null;const o=io(e),s=ao(t),i=Object.keys(o),u=Object.keys(s),l=qt(Object.keys(e)),a=qt(Object.keys(t)),d=l.filter(c=>!a.includes(c));return d.length&&(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces keys don't satisfy requiredNamespaces. -+ -+function uniq(arr) { -+ const seen = Object.create(null); -+ const out = []; -+ for (let i = 0, len = arr.length; i < len; i++) { -+ const val = arr[i]; -+ // key must be string — handles numbers, strings, booleans fine -+ const key = typeof val + val; -+ if (seen[key] === undefined) { -+ seen[key] = true; -+ out.push(val); -+ } -+ } -+ return out; -+} -+ -+"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var Zt = require("detect-browser"), U = require("@walletconnect/time"), P = require("@walletconnect/window-getters"), Xt = require("@walletconnect/window-metadata"), en = require("query-string"), Te = require("@ethersproject/hash"), tn = require("@ethersproject/transactions"), Ae = require("@stablelib/chacha20poly1305"), nn = require("@stablelib/hkdf"), B = require("@stablelib/random"), H = require("@stablelib/sha256"), rn = require("@stablelib/x25519"), p = require("uint8arrays"), on = require("elliptic"), sn = require("@walletconnect/relay-auth"), an = require("@walletconnect/relay-api"); function Ie(e) { if (e && e.__esModule) return e; var t = Object.create(null); return e && Object.keys(e).forEach(function (n) { if (n !== "default") { var r = Object.getOwnPropertyDescriptor(e, n); Object.defineProperty(t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] } }) } }), t.default = e, Object.freeze(t) } var J = Ie(en), Pe = Ie(rn); const W = ":"; function ne(e) { const [t, n] = e.split(W); return { namespace: t, reference: n } } function Ce(e) { const { namespace: t, reference: n } = e; return [t, n].join(W) } function re(e) { const [t, n, r] = e.split(W); return { namespace: t, reference: n, address: r } } function $e(e) { const { namespace: t, reference: n, address: r } = e; return [t, n, r].join(W) } function oe(e, t) { const n = []; return e.forEach(r => { const o = t(r); n.includes(o) || n.push(o) }), n } function je(e) { const { address: t } = re(e); return t } function _e(e) { const { namespace: t, reference: n } = re(e); return Ce({ namespace: t, reference: n }) } function cn(e, t) { const { namespace: n, reference: r } = ne(t); return $e({ namespace: n, reference: r, address: e }) } function un(e) { return oe(e, je) } function Ue(e) { return oe(e, _e) } function ln(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...o.accounts) }), n } function dn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...Ue(o.accounts)) }), n } function pn(e, t = []) { const n = []; return Object.keys(e).forEach(r => { if (t.length && !t.includes(r)) return; const o = e[r]; n.push(...z(r, o)) }), n } function z(e, t) { return e.includes(":") ? [e] : t.chains || [] } var fn = Object.defineProperty, De = Object.getOwnPropertySymbols, mn = Object.prototype.hasOwnProperty, gn = Object.prototype.propertyIsEnumerable, Ve = (e, t, n) => t in e ? fn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, ke = (e, t) => { for (var n in t || (t = {})) mn.call(t, n) && Ve(e, n, t[n]); if (De) for (var n of De(t)) gn.call(t, n) && Ve(e, n, t[n]); return e }; const xe = "ReactNative", y = { reactNative: "react-native", node: "node", browser: "browser", unknown: "unknown" }, Y = " ", hn = ":", Me = "/", se = 2, yn = 1e3, Fe = "js"; function ie() { return typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u" } function D() { return !P.getDocument() && !!P.getNavigator() && navigator.product === xe } function M() { return !ie() && !!P.getNavigator() && !!P.getDocument() } function C() { return D() ? y.reactNative : ie() ? y.node : M() ? y.browser : y.unknown } function vn() { var e; try { return D() && typeof global < "u" && typeof (global == null ? void 0 : global.Application) < "u" ? (e = global.Application) == null ? void 0 : e.applicationId : void 0 } catch { return } } function Le(e, t) { let n = J.parse(e); return n = ke(ke({}, n), t), e = J.stringify(n), e } function En() { return Xt.getWindowMetadata() || { name: "", description: "", url: "", icons: [""] } } function bn(e, t) { var n; const r = C(), o = { protocol: e, version: t, env: r }; return r === "browser" && (o.host = ((n = P.getLocation()) == null ? void 0 : n.host) || "unknown"), o } function Ke() { if (C() === y.reactNative && typeof global < "u" && typeof (global == null ? void 0 : global.Platform) < "u") { const { OS: n, Version: r } = global.Platform; return [n, r].join("-") } const e = Zt.detect(); if (e === null) return "unknown"; const t = e.os ? e.os.replace(" ", "").toLowerCase() : "unknown"; return e.type === "browser" ? [t, e.name, e.version].join("-") : [t, e.version].join("-") } function qe() { var e; const t = C(); return t === y.browser ? [t, ((e = P.getLocation()) == null ? void 0 : e.host) || "unknown"].join(":") : t } function Be(e, t, n) { const r = Ke(), o = qe(); return [[e, t].join("-"), [Fe, n].join("-"), r, o].join("/") } function Nn({ protocol: e, version: t, relayUrl: n, sdkVersion: r, auth: o, projectId: s, useOnCloseEvent: i, bundleId: u }) { const l = n.split("?"), a = Be(e, t, r), d = { auth: o, ua: a, projectId: s, useOnCloseEvent: i || void 0, origin: u || void 0 }, c = Le(l[1] || "", d); return l[0] + "?" + c } function On(e) { let t = (e.match(/^[^:]+(?=:\/\/)/gi) || [])[0]; const n = typeof t < "u" ? e.split("://")[1] : e; return t = t === "wss" ? "https" : "http", [t, n].join("://") } function Sn(e, t, n) { if (!e[t] || typeof e[t] !== n) throw new Error(`Missing or invalid "${t}" param`) } function He(e, t = se) { return Je(e.split(Me), t) } function wn(e) { return He(e).join(Y) } function w(e, t) { return e.filter(n => t.includes(n)).length === e.length } function Je(e, t = se) { return e.slice(Math.max(e.length - t, 0)) } function Rn(e) { return Object.fromEntries(e.entries()) } function Tn(e) { return new Map(Object.entries(e)) } function An(e, t) { const n = {}; return Object.keys(e).forEach(r => { n[r] = t(e[r]) }), n } const In = e => e; function We(e) { return e.trim().replace(/^\w/, t => t.toUpperCase()) } function Pn(e) { return e.split(Y).map(t => We(t)).join(Y) } function Cn(e = U.FIVE_MINUTES, t) { const n = U.toMiliseconds(e || U.FIVE_MINUTES); let r, o, s; return { resolve: i => { s && r && (clearTimeout(s), r(i)) }, reject: i => { s && o && (clearTimeout(s), o(i)) }, done: () => new Promise((i, u) => { s = setTimeout(() => { u(new Error(t)) }, n), r = i, o = u }) } } function $n(e, t, n) { return new Promise(async (r, o) => { const s = setTimeout(() => o(new Error(n)), t); try { const i = await e; r(i) } catch (i) { o(i) } clearTimeout(s) }) } function ae(e, t) { if (typeof t == "string" && t.startsWith(`${e}:`)) return t; if (e.toLowerCase() === "topic") { if (typeof t != "string") throw new Error('Value must be "string" for expirer target type: topic'); return `topic:${t}` } else if (e.toLowerCase() === "id") { if (typeof t != "number") throw new Error('Value must be "number" for expirer target type: id'); return `id:${t}` } throw new Error(`Unknown expirer target type: ${e}`) } function jn(e) { return ae("topic", e) } function _n(e) { return ae("id", e) } function Un(e) { const [t, n] = e.split(":"), r = { id: void 0, topic: void 0 }; if (t === "topic" && typeof n == "string") r.topic = n; else if (t === "id" && Number.isInteger(Number(n))) r.id = Number(n); else throw new Error(`Invalid target, expected id:number or topic:string, got ${t}:${n}`); return r } function Dn(e, t) { return U.fromMiliseconds((t || Date.now()) + U.toMiliseconds(e)) } function Vn(e) { return Date.now() >= U.toMiliseconds(e) } function kn(e, t) { return `${e}${t ? `:${t}` : ""}` } function O(e = [], t = []) { return [...uniq([...e, ...t])] } async function xn({ id: e, topic: t, wcDeepLink: n }) { var r; try { if (!n) return; const o = typeof n == "string" ? JSON.parse(n) : n, s = o?.href; if (typeof s != "string") return; const i = ze(s, e, t), u = C(); if (u === y.browser) { if (!((r = P.getDocument()) != null && r.hasFocus())) { console.warn("Document does not have focus, skipping deeplink."); return } i.startsWith("https://") || i.startsWith("http://") ? window.open(i, "_blank", "noreferrer noopener") : window.open(i, Ye() ? "_blank" : "_self", "noreferrer noopener") } else u === y.reactNative && typeof (global == null ? void 0 : global.Linking) < "u" && await global.Linking.openURL(i) } catch (o) { console.error(o) } } function ze(e, t, n) { const r = `requestId=${t}&sessionTopic=${n}`; e.endsWith("/") && (e = e.slice(0, -1)); let o = `${e}`; if (e.startsWith("https://t.me")) { const s = e.includes("?") ? "&startapp=" : "?startapp="; o = `${o}${s}${Ge(r, !0)}` } else o = `${o}/wc?${r}`; return o } async function Mn(e, t) { let n = ""; try { if (M() && (n = localStorage.getItem(t), n)) return n; n = await e.getItem(t) } catch (r) { console.error(r) } return n } function ce(e, t) { return e.filter(n => t.includes(n)) } function Fn(e, t) { if (!e.includes(t)) return null; const n = e.split(/([&,?,=])/), r = n.indexOf(t); return n[r + 2] } function Ln() { return typeof crypto < "u" && crypto != null && crypto.randomUUID ? crypto.randomUUID() : "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu, e => { const t = Math.random() * 16 | 0; return (e === "x" ? t : t & 3 | 8).toString(16) }) } function Kn() { return typeof process < "u" && process.env.IS_VITEST === "true" } function Ye() { return typeof window < "u" && (!!window.TelegramWebviewProxy || !!window.Telegram || !!window.TelegramWebviewProxyProto) } function Ge(e, t = !1) { const n = Buffer.from(e).toString("base64"); return t ? n.replace(/[=]/g, "") : n } function ue(e) { return Buffer.from(e, "base64").toString("utf-8") } const qn = "https://rpc.walletconnect.org/v1"; async function Qe(e, t, n, r, o, s) { switch (n.t) { case "eip191": return Ze(e, t, n.s); case "eip1271": return await Xe(e, t, n.s, r, o, s); default: throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`) } } function Ze(e, t, n) { return tn.recoverAddress(Te.hashMessage(t), n).toLowerCase() === e.toLowerCase() } async function Xe(e, t, n, r, o, s) { const i = ne(r); if (!i.namespace || !i.reference) throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`); try { const u = "0x1626ba7e", l = "0000000000000000000000000000000000000000000000000000000000000040", a = "0000000000000000000000000000000000000000000000000000000000000041", d = n.substring(2), c = Te.hashMessage(t).substring(2), f = u + c + l + a + d, h = await fetch(`${s || qn}/?chainId=${r}&projectId=${o}`, { method: "POST", body: JSON.stringify({ id: Bn(), jsonrpc: "2.0", method: "eth_call", params: [{ to: e, data: f }, "latest"] }) }), { result: m } = await h.json(); return m ? m.slice(0, u.length).toLowerCase() === u.toLowerCase() : !1 } catch (u) { return console.error("isValidEip1271Signature: ", u), !1 } } function Bn() { return Date.now() + Math.floor(Math.random() * 1e3) } var Hn = Object.defineProperty, Jn = Object.defineProperties, Wn = Object.getOwnPropertyDescriptors, et = Object.getOwnPropertySymbols, zn = Object.prototype.hasOwnProperty, Yn = Object.prototype.propertyIsEnumerable, tt = (e, t, n) => t in e ? Hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, le = (e, t) => { for (var n in t || (t = {})) zn.call(t, n) && tt(e, n, t[n]); if (et) for (var n of et(t)) Yn.call(t, n) && tt(e, n, t[n]); return e }, nt = (e, t) => Jn(e, Wn(t)); const Gn = "did:pkh:", G = e => e?.split(":"), rt = e => { const t = e && G(e); if (t) return e.includes(Gn) ? t[3] : t[1] }, ot = e => { const t = e && G(e); if (t) return t[2] + ":" + t[3] }, de = e => { const t = e && G(e); if (t) return t.pop() }; async function Qn(e) { const { cacao: t, projectId: n } = e, { s: r, p: o } = t, s = st(o, o.iss), i = de(o.iss); return await Qe(i, s, r, ot(o.iss), n) } const st = (e, t) => { -+ const n = `${e.domain} wants you to sign in with your Ethereum account:`, r = de(t); if (!e.aud && !e.uri) throw new Error("Either `aud` or `uri` is required to construct the message"); let o = e.statement || void 0; const s = `URI: ${e.aud || e.uri}`, i = `Version: ${e.version}`, u = `Chain ID: ${rt(t)}`, l = `Nonce: ${e.nonce}`, a = `Issued At: ${e.iat}`, d = e.exp ? `Expiration Time: ${e.exp}` : void 0, c = e.nbf ? `Not Before: ${e.nbf}` : void 0, f = e.requestId ? `Request ID: ${e.requestId}` : void 0, h = e.resources ? `Resources:${e.resources.map(g => ` -+- ${g}`).join("")}` : void 0, m = Z(e.resources); if (m) { const g = R(m); o = me(o, g) } return [n, r, "", o, "", s, i, u, l, a, d, c, f, h].filter(g => g != null).join(` -+`) -+}; function Zn(e, t, n) { return n.includes("did:pkh:") || (n = `did:pkh:${n}`), { h: { t: "caip122" }, p: { iss: n, domain: e.domain, aud: e.aud, version: e.version, nonce: e.nonce, iat: e.iat, statement: e.statement, requestId: e.requestId, resources: e.resources, nbf: e.nbf, exp: e.exp }, s: t } } function Xn(e) { var t; const { authPayload: n, chains: r, methods: o } = e, s = n.statement || ""; if (!(r != null && r.length)) return n; const i = n.chains, u = ce(i, r); if (!(u != null && u.length)) throw new Error("No supported chains"); const l = it(n.resources); if (!l) return n; N(l); const a = at(l, "eip155"); let d = n?.resources || []; if (a != null && a.length) { const c = ct(a), f = ce(c, o); if (!(f != null && f.length)) throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(c)}, supported: ${JSON.stringify(o)}`); const h = pe("request", f, { chains: u }), m = pt(l, "eip155", h); d = ((t = n?.resources) == null ? void 0 : t.slice(0, -1)) || [], d.push(Q(m)) } return nt(le({}, n), { statement: mt(s, Z(d)), chains: u, resources: n != null && n.resources || d.length > 0 ? d : void 0 }) } function it(e) { const t = Z(e); if (t && fe(t)) return R(t) } function er(e, t) { var n; return (n = e?.att) == null ? void 0 : n.hasOwnProperty(t) } function at(e, t) { var n, r; return (n = e?.att) != null && n[t] ? Object.keys((r = e?.att) == null ? void 0 : r[t]) : [] } function tr(e) { return e?.map(t => Object.keys(t)) || [] } function ct(e) { return e?.map(t => { var n; return (n = t.split("/")) == null ? void 0 : n[1] }) || [] } function ut(e) { return Buffer.from(JSON.stringify(e)).toString("base64") } function lt(e) { return JSON.parse(Buffer.from(e, "base64").toString("utf-8")) } function N(e) { if (!e) throw new Error("No recap provided, value is undefined"); if (!e.att) throw new Error("No `att` property found"); const t = Object.keys(e.att); if (!(t != null && t.length)) throw new Error("No resources found in `att` property"); t.forEach(n => { const r = e.att[n]; if (Array.isArray(r)) throw new Error(`Resource must be an object: ${n}`); if (typeof r != "object") throw new Error(`Resource must be an object: ${n}`); if (!Object.keys(r).length) throw new Error(`Resource object is empty: ${n}`); Object.keys(r).forEach(o => { const s = r[o]; if (!Array.isArray(s)) throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`); if (!s.length) throw new Error(`Value of ${o} is empty array, must be an array with objects`); s.forEach(i => { if (typeof i != "object") throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`) }) }) }) } function dt(e, t, n, r = {}) { return n?.sort((o, s) => o.localeCompare(s)), { att: { [e]: pe(t, n, r) } } } function pt(e, t, n) { var r; return e.att[t] = le({}, n), ((r = Object.keys(e.att)) == null ? void 0 : r.sort((o, s) => o.localeCompare(s))).reduce((o, s) => (o.att[s] = e.att[s], o), { att: {} }) } function pe(e, t, n = {}) { t = t?.sort((o, s) => o.localeCompare(s)); const r = t.map(o => ({ [`${e}/${o}`]: [n] })); return Object.assign({}, ...r) } function Q(e) { return N(e), `urn:recap:${ut(e).replace(/=/g, "")}` } function R(e) { const t = lt(e.replace("urn:recap:", "")); return N(t), t } function nr(e, t, n) { const r = dt(e, t, n); return Q(r) } function fe(e) { return e && e.includes("urn:recap:") } function rr(e, t) { const n = R(e), r = R(t), o = ft(n, r); return Q(o) } function ft(e, t) { N(e), N(t); const n = Object.keys(e.att).concat(Object.keys(t.att)).sort((o, s) => o.localeCompare(s)), r = { att: {} }; return n.forEach(o => { var s, i; Object.keys(((s = e.att) == null ? void 0 : s[o]) || {}).concat(Object.keys(((i = t.att) == null ? void 0 : i[o]) || {})).sort((u, l) => u.localeCompare(l)).forEach(u => { var l, a; r.att[o] = nt(le({}, r.att[o]), { [u]: ((l = e.att[o]) == null ? void 0 : l[u]) || ((a = t.att[o]) == null ? void 0 : a[u]) }) }) }), r } function me(e = "", t) { N(t); const n = "I further authorize the stated URI to perform the following actions on my behalf: "; if (e.includes(n)) return e; const r = []; let o = 0; Object.keys(t.att).forEach(u => { const l = Object.keys(t.att[u]).map(c => ({ ability: c.split("/")[0], action: c.split("/")[1] })); l.sort((c, f) => c.action.localeCompare(f.action)); const a = {}; l.forEach(c => { a[c.ability] || (a[c.ability] = []), a[c.ability].push(c.action) }); const d = Object.keys(a).map(c => (o++, `(${o}) '${c}': '${a[c].join("', '")}' for '${u}'.`)); r.push(d.join(", ").replace(".,", ".")) }); const s = r.join(" "), i = `${n}${s}`; return `${e ? e + " " : ""}${i}` } function or(e) { var t; const n = R(e); N(n); const r = (t = n.att) == null ? void 0 : t.eip155; return r ? Object.keys(r).map(o => o.split("/")[1]) : [] } function sr(e) { const t = R(e); N(t); const n = []; return Object.values(t.att).forEach(r => { Object.values(r).forEach(o => { var s; (s = o?.[0]) != null && s.chains && n.push(o[0].chains) }) }), [...uniq(n.flat())] } function mt(e, t) { if (!t) return e; const n = R(t); return N(n), me(e, n) } function Z(e) { if (!e) return; const t = e?.[e.length - 1]; return fe(t) ? t : void 0 } const ge = "base10", v = "base16", he = "base64pad", ir = "base64url", V = "utf8", ye = 0, k = 1, F = 2, ar = 0, gt = 1, L = 12, ve = 32; function cr() { const e = Pe.generateKeyPair(); return { privateKey: p.toString(e.secretKey, v), publicKey: p.toString(e.publicKey, v) } } function ur() { const e = B.randomBytes(ve); return p.toString(e, v) } function lr(e, t) { const n = Pe.sharedKey(p.fromString(e, v), p.fromString(t, v), !0), r = new nn.HKDF(H.SHA256, n).expand(ve); return p.toString(r, v) } function dr(e) { const t = H.hash(p.fromString(e, v)); return p.toString(t, v) } function pr(e) { const t = H.hash(p.fromString(e, V)); return p.toString(t, v) } function Ee(e) { return p.fromString(`${e}`, ge) } function $(e) { return Number(p.toString(e, ge)) } function fr(e) { const t = Ee(typeof e.type < "u" ? e.type : ye); if ($(t) === k && typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); const n = typeof e.senderPublicKey < "u" ? p.fromString(e.senderPublicKey, v) : void 0, r = typeof e.iv < "u" ? p.fromString(e.iv, v) : B.randomBytes(L), o = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)).seal(r, p.fromString(e.message, V)); return be({ type: t, sealed: o, iv: r, senderPublicKey: n, encoding: e.encoding }) } function mr(e, t) { const n = Ee(F), r = B.randomBytes(L), o = p.fromString(e, V); return be({ type: n, sealed: o, iv: r, encoding: t }) } function gr(e) { const t = new Ae.ChaCha20Poly1305(p.fromString(e.symKey, v)), { sealed: n, iv: r } = X({ encoded: e.encoded, encoding: e?.encoding }), o = t.open(r, n); if (o === null) throw new Error("Failed to decrypt"); return p.toString(o, V) } function hr(e, t) { const { sealed: n } = X({ encoded: e, encoding: t }); return p.toString(n, V) } function be(e) { const { encoding: t = he } = e; if ($(e.type) === F) return p.toString(p.concat([e.type, e.sealed]), t); if ($(e.type) === k) { if (typeof e.senderPublicKey > "u") throw new Error("Missing sender public key for type 1 envelope"); return p.toString(p.concat([e.type, e.senderPublicKey, e.iv, e.sealed]), t) } return p.toString(p.concat([e.type, e.iv, e.sealed]), t) } function X(e) { const { encoded: t, encoding: n = he } = e, r = p.fromString(t, n), o = r.slice(ar, gt), s = gt; if ($(o) === k) { const a = s + ve, d = a + L, c = r.slice(s, a), f = r.slice(a, d), h = r.slice(d); return { type: o, sealed: h, iv: f, senderPublicKey: c } } if ($(o) === F) { const a = r.slice(s), d = B.randomBytes(L); return { type: o, sealed: a, iv: d } } const i = s + L, u = r.slice(s, i), l = r.slice(i); return { type: o, sealed: l, iv: u } } function yr(e, t) { const n = X({ encoded: e, encoding: t?.encoding }); return ht({ type: $(n.type), senderPublicKey: typeof n.senderPublicKey < "u" ? p.toString(n.senderPublicKey, v) : void 0, receiverPublicKey: t?.receiverPublicKey }) } function ht(e) { const t = e?.type || ye; if (t === k) { if (typeof e?.senderPublicKey > "u") throw new Error("missing sender public key"); if (typeof e?.receiverPublicKey > "u") throw new Error("missing receiver public key") } return { type: t, senderPublicKey: e?.senderPublicKey, receiverPublicKey: e?.receiverPublicKey } } function vr(e) { return e.type === k && typeof e.senderPublicKey == "string" && typeof e.receiverPublicKey == "string" } function Er(e) { return e.type === F } function yt(e) { return new on.ec("p256").keyFromPublic({ x: Buffer.from(e.x, "base64").toString("hex"), y: Buffer.from(e.y, "base64").toString("hex") }, "hex") } function br(e) { let t = e.replace(/-/g, "+").replace(/_/g, "/"); const n = t.length % 4; return n > 0 && (t += "=".repeat(4 - n)), t } function Nr(e) { return Buffer.from(br(e), "base64") } function Or(e, t) { const [n, r, o] = e.split("."), s = Nr(o); if (s.length !== 64) throw new Error("Invalid signature length"); const i = s.slice(0, 32).toString("hex"), u = s.slice(32, 64).toString("hex"), l = `${n}.${r}`, a = new H.SHA256().update(Buffer.from(l)).digest(), d = yt(t), c = Buffer.from(a).toString("hex"); if (!d.verify(c, { r: i, s: u })) throw new Error("Invalid signature"); return sn.decodeJWT(e).payload } const vt = "irn"; function Sr(e) { return e?.relay || { protocol: vt } } function wr(e) { const t = an.RELAY_JSONRPC[e]; if (typeof t > "u") throw new Error(`Relay Protocol not supported: ${e}`); return t } var Rr = Object.defineProperty, Tr = Object.defineProperties, Ar = Object.getOwnPropertyDescriptors, Et = Object.getOwnPropertySymbols, Ir = Object.prototype.hasOwnProperty, Pr = Object.prototype.propertyIsEnumerable, bt = (e, t, n) => t in e ? Rr(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Nt = (e, t) => { for (var n in t || (t = {})) Ir.call(t, n) && bt(e, n, t[n]); if (Et) for (var n of Et(t)) Pr.call(t, n) && bt(e, n, t[n]); return e }, Cr = (e, t) => Tr(e, Ar(t)); function Ot(e, t = "-") { const n = {}, r = "relay" + t; return Object.keys(e).forEach(o => { if (o.startsWith(r)) { const s = o.replace(r, ""), i = e[o]; n[s] = i } }), n } function $r(e) { if (!e.includes("wc:")) { const l = ue(e); l != null && l.includes("wc:") && (e = l) } e = e.includes("wc://") ? e.replace("wc://", "") : e, e = e.includes("wc:") ? e.replace("wc:", "") : e; const t = e.indexOf(":"), n = e.indexOf("?") !== -1 ? e.indexOf("?") : void 0, r = e.substring(0, t), o = e.substring(t + 1, n).split("@"), s = typeof n < "u" ? e.substring(n) : "", i = J.parse(s), u = typeof i.methods == "string" ? i.methods.split(",") : void 0; return { protocol: r, topic: St(o[0]), version: parseInt(o[1], 10), symKey: i.symKey, relay: Ot(i), methods: u, expiryTimestamp: i.expiryTimestamp ? parseInt(i.expiryTimestamp, 10) : void 0 } } function St(e) { return e.startsWith("//") ? e.substring(2) : e } function wt(e, t = "-") { const n = "relay", r = {}; return Object.keys(e).forEach(o => { const s = n + t + o; e[o] && (r[s] = e[o]) }), r } function jr(e) { return `${e.protocol}:${e.topic}@${e.version}?` + J.stringify(Nt(Cr(Nt({ symKey: e.symKey }, wt(e.relay)), { expiryTimestamp: e.expiryTimestamp }), e.methods ? { methods: e.methods.join(",") } : {})) } function _r(e, t, n) { return `${e}?wc_ev=${n}&topic=${t}` } var Ur = Object.defineProperty, Dr = Object.defineProperties, Vr = Object.getOwnPropertyDescriptors, Rt = Object.getOwnPropertySymbols, kr = Object.prototype.hasOwnProperty, xr = Object.prototype.propertyIsEnumerable, Tt = (e, t, n) => t in e ? Ur(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, Mr = (e, t) => { for (var n in t || (t = {})) kr.call(t, n) && Tt(e, n, t[n]); if (Rt) for (var n of Rt(t)) xr.call(t, n) && Tt(e, n, t[n]); return e }, Fr = (e, t) => Dr(e, Vr(t)); function j(e) { const t = []; return e.forEach(n => { const [r, o] = n.split(":"); t.push(`${r}:${o}`) }), t } function At(e) { const t = []; return Object.values(e).forEach(n => { t.push(...j(n.accounts)) }), t } function It(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.methods) }), n } function Pt(e, t) { const n = []; return Object.values(e).forEach(r => { j(r.accounts).includes(t) && n.push(...r.events) }), n } function Lr(e, t) { const n = Ft(e, t); if (n) throw new Error(n.message); const r = {}; for (const [o, s] of Object.entries(e)) r[o] = { methods: s.methods, events: s.events, chains: s.accounts.map(i => `${i.split(":")[0]}:${i.split(":")[1]}`) }; return r } function Kr(e) { const { proposal: { requiredNamespaces: t, optionalNamespaces: n = {} }, supportedNamespaces: r } = e, o = Oe(t), s = Oe(n), i = {}; Object.keys(r).forEach(a => { const d = r[a].chains, c = r[a].methods, f = r[a].events, h = r[a].accounts; d.forEach(m => { if (!h.some(g => g.includes(m))) throw new Error(`No accounts provided for chain ${m} in namespace ${a}`) }), i[a] = { chains: d, methods: c, events: f, accounts: h } }); const u = Kt(t, i, "approve()"); if (u) throw new Error(u.message); const l = {}; return !Object.keys(t).length && !Object.keys(n).length ? i : (Object.keys(o).forEach(a => { const d = r[a].chains.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.chains) == null ? void 0 : b.includes(m) }), c = r[a].methods.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.methods) == null ? void 0 : b.includes(m) }), f = r[a].events.filter(m => { var g, b; return (b = (g = o[a]) == null ? void 0 : g.events) == null ? void 0 : b.includes(m) }), h = d.map(m => r[a].accounts.filter(g => g.includes(`${m}:`))).flat(); l[a] = { chains: d, methods: c, events: f, accounts: h } }), Object.keys(s).forEach(a => { var d, c, f, h, m, g; if (!r[a]) return; const b = (c = (d = s[a]) == null ? void 0 : d.chains) == null ? void 0 : c.filter(A => r[a].chains.includes(A)), Yt = r[a].methods.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.methods) == null ? void 0 : x.includes(A) }), Gt = r[a].events.filter(A => { var I, x; return (x = (I = s[a]) == null ? void 0 : I.events) == null ? void 0 : x.includes(A) }), Qt = b?.map(A => r[a].accounts.filter(I => I.includes(`${A}:`))).flat(); l[a] = { chains: O((f = l[a]) == null ? void 0 : f.chains, b), methods: O((h = l[a]) == null ? void 0 : h.methods, Yt), events: O((m = l[a]) == null ? void 0 : m.events, Gt), accounts: O((g = l[a]) == null ? void 0 : g.accounts, Qt) } }), l) } function Ne(e) { return e.includes(":") } function Ct(e) { return Ne(e) ? e.split(":")[0] : e } function Oe(e) { var t, n, r; const o = {}; if (!ee(e)) return o; for (const [s, i] of Object.entries(e)) { const u = Ne(s) ? [s] : i.chains, l = i.methods || [], a = i.events || [], d = Ct(s); o[d] = Fr(Mr({}, o[d]), { chains: O(u, (t = o[d]) == null ? void 0 : t.chains), methods: O(l, (n = o[d]) == null ? void 0 : n.methods), events: O(a, (r = o[d]) == null ? void 0 : r.events) }) } return o } function $t(e) { const t = {}; return e?.forEach(n => { const [r, o] = n.split(":"); t[r] || (t[r] = { accounts: [], chains: [], events: [] }), t[r].accounts.push(n), t[r].chains.push(`${r}:${o}`) }), t } function qr(e, t) { t = t.map(r => r.replace("did:pkh:", "")); const n = $t(t); for (const [r, o] of Object.entries(n)) o.methods ? o.methods = O(o.methods, e) : o.methods = e, o.events = ["chainChanged", "accountsChanged"]; return n } const jt = { INVALID_METHOD: { message: "Invalid method.", code: 1001 }, INVALID_EVENT: { message: "Invalid event.", code: 1002 }, INVALID_UPDATE_REQUEST: { message: "Invalid update request.", code: 1003 }, INVALID_EXTEND_REQUEST: { message: "Invalid extend request.", code: 1004 }, INVALID_SESSION_SETTLE_REQUEST: { message: "Invalid session settle request.", code: 1005 }, UNAUTHORIZED_METHOD: { message: "Unauthorized method.", code: 3001 }, UNAUTHORIZED_EVENT: { message: "Unauthorized event.", code: 3002 }, UNAUTHORIZED_UPDATE_REQUEST: { message: "Unauthorized update request.", code: 3003 }, UNAUTHORIZED_EXTEND_REQUEST: { message: "Unauthorized extend request.", code: 3004 }, USER_REJECTED: { message: "User rejected.", code: 5e3 }, USER_REJECTED_CHAINS: { message: "User rejected chains.", code: 5001 }, USER_REJECTED_METHODS: { message: "User rejected methods.", code: 5002 }, USER_REJECTED_EVENTS: { message: "User rejected events.", code: 5003 }, UNSUPPORTED_CHAINS: { message: "Unsupported chains.", code: 5100 }, UNSUPPORTED_METHODS: { message: "Unsupported methods.", code: 5101 }, UNSUPPORTED_EVENTS: { message: "Unsupported events.", code: 5102 }, UNSUPPORTED_ACCOUNTS: { message: "Unsupported accounts.", code: 5103 }, UNSUPPORTED_NAMESPACE_KEY: { message: "Unsupported namespace key.", code: 5104 }, USER_DISCONNECTED: { message: "User disconnected.", code: 6e3 }, SESSION_SETTLEMENT_FAILED: { message: "Session settlement failed.", code: 7e3 }, WC_METHOD_UNSUPPORTED: { message: "Unsupported wc_ method.", code: 10001 } }, _t = { NOT_INITIALIZED: { message: "Not initialized.", code: 1 }, NO_MATCHING_KEY: { message: "No matching key.", code: 2 }, RESTORE_WILL_OVERRIDE: { message: "Restore will override.", code: 3 }, RESUBSCRIBED: { message: "Resubscribed.", code: 4 }, MISSING_OR_INVALID: { message: "Missing or invalid.", code: 5 }, EXPIRED: { message: "Expired.", code: 6 }, UNKNOWN_TYPE: { message: "Unknown type.", code: 7 }, MISMATCHED_TOPIC: { message: "Mismatched topic.", code: 8 }, NON_CONFORMING_NAMESPACES: { message: "Non conforming namespaces.", code: 9 } }; function S(e, t) { const { message: n, code: r } = _t[e]; return { message: t ? `${n} ${t}` : n, code: r } } function _(e, t) { const { message: n, code: r } = jt[e]; return { message: t ? `${n} ${t}` : n, code: r } } function K(e, t) { return Array.isArray(e) ? typeof t < "u" && e.length ? e.every(t) : !0 : !1 } function ee(e) { return Object.getPrototypeOf(e) === Object.prototype && Object.keys(e).length } function T(e) { return typeof e > "u" } function E(e, t) { return t && T(e) ? !0 : typeof e == "string" && !!e.trim().length } function te(e, t) { return t && T(e) ? !0 : typeof e == "number" && !isNaN(e) } function Br(e, t) { const { requiredNamespaces: n } = t, r = Object.keys(e.namespaces), o = Object.keys(n); let s = !0; return w(o, r) ? (r.forEach(i => { const { accounts: u, methods: l, events: a } = e.namespaces[i], d = j(u), c = n[i]; (!w(z(i, c), d) || !w(c.methods, l) || !w(c.events, a)) && (s = !1) }), s) : !1 } function q(e) { return E(e, !1) && e.includes(":") ? e.split(":").length === 2 : !1 } function Ut(e) { if (E(e, !1) && e.includes(":")) { const t = e.split(":"); if (t.length === 3) { const n = t[0] + ":" + t[1]; return !!t[2] && q(n) } } return !1 } function Hr(e) { function t(n) { try { return typeof new URL(n) < "u" } catch { return !1 } } try { if (E(e, !1)) { if (t(e)) return !0; const n = ue(e); return t(n) } } catch { } return !1 } function Jr(e) { var t; return (t = e?.proposer) == null ? void 0 : t.publicKey } function Wr(e) { return e?.topic } function zr(e, t) { let n = null; return E(e?.publicKey, !1) || (n = S("MISSING_OR_INVALID", `${t} controller public key should be a string`)), n } function Se(e) { let t = !0; return K(e) ? e.length && (t = e.every(n => E(n, !1))) : t = !1, t } function Dt(e, t, n) { let r = null; return K(t) && t.length ? t.forEach(o => { r || q(o) || (r = _("UNSUPPORTED_CHAINS", `${n}, chain ${o} should be a string and conform to "namespace:chainId" format`)) }) : q(e) || (r = _("UNSUPPORTED_CHAINS", `${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)), r } function Vt(e, t, n) { let r = null; return Object.entries(e).forEach(([o, s]) => { if (r) return; const i = Dt(o, z(o, s), `${t} ${n}`); i && (r = i) }), r } function kt(e, t) { let n = null; return K(e) ? e.forEach(r => { n || Ut(r) || (n = _("UNSUPPORTED_ACCOUNTS", `${t}, account ${r} should be a string and conform to "namespace:chainId:address" format`)) }) : n = _("UNSUPPORTED_ACCOUNTS", `${t}, accounts should be an array of strings conforming to "namespace:chainId:address" format`), n } function xt(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = kt(r?.accounts, `${t} namespace`); o && (n = o) }), n } function Mt(e, t) { let n = null; return Se(e?.methods) ? Se(e?.events) || (n = _("UNSUPPORTED_EVENTS", `${t}, events should be an array of strings or empty array for no events`)) : n = _("UNSUPPORTED_METHODS", `${t}, methods should be an array of strings or empty array for no methods`), n } function we(e, t) { let n = null; return Object.values(e).forEach(r => { if (n) return; const o = Mt(r, `${t}, namespace`); o && (n = o) }), n } function Yr(e, t, n) { let r = null; if (e && ee(e)) { const o = we(e, t); o && (r = o); const s = Vt(e, t, n); s && (r = s) } else r = S("MISSING_OR_INVALID", `${t}, ${n} should be an object with data`); return r } function Ft(e, t) { let n = null; if (e && ee(e)) { const r = we(e, t); r && (n = r); const o = xt(e, t); o && (n = o) } else n = S("MISSING_OR_INVALID", `${t}, namespaces should be an object with data`); return n } function Lt(e) { return E(e.protocol, !0) } function Gr(e, t) { let n = !1; return t && !e ? n = !0 : e && K(e) && e.length && e.forEach(r => { n = Lt(r) }), n } function Qr(e) { return typeof e == "number" } function Zr(e) { return typeof e < "u" && typeof e !== null } function Xr(e) { return !(!e || typeof e != "object" || !e.code || !te(e.code, !1) || !e.message || !E(e.message, !1)) } function eo(e) { return !(T(e) || !E(e.method, !1)) } function to(e) { return !(T(e) || T(e.result) && T(e.error) || !te(e.id, !1) || !E(e.jsonrpc, !1)) } function no(e) { return !(T(e) || !E(e.name, !1)) } function ro(e, t) { return !(!q(t) || !At(e).includes(t)) } function oo(e, t, n) { return E(n, !1) ? It(e, t).includes(n) : !1 } function so(e, t, n) { return E(n, !1) ? Pt(e, t).includes(n) : !1 } function Kt(e, t, n) { -+ let r = null; const o = io(e), s = ao(t), i = Object.keys(o), u = Object.keys(s), l = qt(Object.keys(e)), a = qt(Object.keys(t)), d = l.filter(c => !a.includes(c)); return d.length && (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces keys don't satisfy requiredNamespaces. - Required: ${d.toString()} -- Received: ${Object.keys(t).toString()}`)),w(i,u)||(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces chains don't satisfy required namespaces. -+ Received: ${Object.keys(t).toString()}`)), w(i, u) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces chains don't satisfy required namespaces. - Required: ${i.toString()} -- Approved: ${u.toString()}`)),Object.keys(t).forEach(c=>{if(!c.includes(":")||r)return;const f=j(t[c].accounts);f.includes(c)||(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces accounts don't satisfy namespace accounts for ${c} -+ Approved: ${u.toString()}`)), Object.keys(t).forEach(c => { -+ if (!c.includes(":") || r) return; const f = j(t[c].accounts); f.includes(c) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces accounts don't satisfy namespace accounts for ${c} - Required: ${c} -- Approved: ${f.toString()}`))}),i.forEach(c=>{r||(w(o[c].methods,s[c].methods)?w(o[c].events,s[c].events)||(r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces events don't satisfy namespace events for ${c}`)):r=S("NON_CONFORMING_NAMESPACES",`${n} namespaces methods don't satisfy namespace methods for ${c}`))}),r}function io(e){const t={};return Object.keys(e).forEach(n=>{var r;n.includes(":")?t[n]=e[n]:(r=e[n].chains)==null||r.forEach(o=>{t[o]={methods:e[n].methods,events:e[n].events}})}),t}function qt(e){return[...new Set(e.map(t=>t.includes(":")?t.split(":")[0]:t))]}function ao(e){const t={};return Object.keys(e).forEach(n=>{if(n.includes(":"))t[n]=e[n];else{const r=j(e[n].accounts);r?.forEach(o=>{t[o]={accounts:e[n].accounts.filter(s=>s.includes(`${o}:`)),methods:e[n].methods,events:e[n].events}})}}),t}function co(e,t){return te(e,!1)&&e<=t.max&&e>=t.min}function uo(){const e=C();return new Promise(t=>{switch(e){case y.browser:t(Bt());break;case y.reactNative:t(Ht());break;case y.node:t(Jt());break;default:t(!0)}})}function Bt(){return M()&&navigator?.onLine}async function Ht(){if(D()&&typeof global<"u"&&global!=null&&global.NetInfo){const e=await(global==null?void 0:global.NetInfo.fetch());return e?.isConnected}return!0}function Jt(){return!0}function lo(e){switch(C()){case y.browser:Wt(e);break;case y.reactNative:zt(e);break;case y.node:break}}function Wt(e){!D()&&M()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function zt(e){D()&&typeof global<"u"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}const Re={};class po{static get(t){return Re[t]}static set(t,n){Re[t]=n}static delete(t){delete Re[t]}}exports.BASE10=ge,exports.BASE16=v,exports.BASE64=he,exports.BASE64URL=ir,exports.COLON=hn,exports.DEFAULT_DEPTH=se,exports.EMPTY_SPACE=Y,exports.ENV_MAP=y,exports.INTERNAL_ERRORS=_t,exports.MemoryStore=po,exports.ONE_THOUSAND=yn,exports.REACT_NATIVE_PRODUCT=xe,exports.RELAYER_DEFAULT_PROTOCOL=vt,exports.SDK_ERRORS=jt,exports.SDK_TYPE=Fe,exports.SLASH=Me,exports.TYPE_0=ye,exports.TYPE_1=k,exports.TYPE_2=F,exports.UTF8=V,exports.addResourceToRecap=pt,exports.appendToQueryString=Le,exports.assertType=Sn,exports.assignAbilityToActions=pe,exports.base64Decode=lt,exports.base64Encode=ut,exports.buildApprovedNamespaces=Kr,exports.buildAuthObject=Zn,exports.buildNamespacesFromAuth=qr,exports.buildRecapStatement=mt,exports.calcExpiry=Dn,exports.capitalize=Pn,exports.capitalizeWord=We,exports.createDelayedPromise=Cn,exports.createEncodedRecap=nr,exports.createExpiringPromise=$n,exports.createRecap=dt,exports.decodeRecap=R,exports.decodeTypeByte=$,exports.decodeTypeTwoEnvelope=hr,exports.decrypt=gr,exports.deriveSymKey=lr,exports.deserialize=X,exports.encodeRecap=Q,exports.encodeTypeByte=Ee,exports.encodeTypeTwoEnvelope=mr,exports.encrypt=fr,exports.engineEvent=kn,exports.enumify=In,exports.formatAccountId=$e,exports.formatAccountWithChain=cn,exports.formatChainId=Ce,exports.formatDeeplinkUrl=ze,exports.formatExpirerTarget=ae,exports.formatIdTarget=_n,exports.formatMessage=st,exports.formatMessageContext=wn,exports.formatRelayParams=wt,exports.formatRelayRpcUrl=Nn,exports.formatStatementFromRecap=me,exports.formatTopicTarget=jn,exports.formatUA=Be,exports.formatUri=jr,exports.fromBase64=ue,exports.generateKeyPair=cr,exports.generateRandomBytes32=ur,exports.getAccountsChains=j,exports.getAccountsFromNamespaces=ln,exports.getAddressFromAccount=je,exports.getAddressesFromAccounts=un,exports.getAppMetadata=En,exports.getBrowserOnlineStatus=Bt,exports.getBundleId=vn,exports.getChainFromAccount=_e,exports.getChainsFromAccounts=Ue,exports.getChainsFromNamespace=z,exports.getChainsFromNamespaces=dn,exports.getChainsFromRecap=sr,exports.getChainsFromRequiredNamespaces=pn,exports.getCommonValuesInArrays=ce,exports.getCryptoKeyFromKeyData=yt,exports.getDecodedRecapFromResources=it,exports.getDeepLink=Mn,exports.getDidAddress=de,exports.getDidAddressSegments=G,exports.getDidChainId=rt,exports.getEnvironment=C,exports.getHttpUrl=On,exports.getInternalError=S,exports.getJavascriptID=qe,exports.getJavascriptOS=Ke,exports.getLastItems=Je,exports.getLinkModeURL=_r,exports.getMethodsFromRecap=or,exports.getNamespacedDidChainId=ot,exports.getNamespacesChains=At,exports.getNamespacesEventsForChainId=Pt,exports.getNamespacesFromAccounts=$t,exports.getNamespacesMethodsForChainId=It,exports.getNodeOnlineStatus=Jt,exports.getReCapActions=ct,exports.getReactNativeOnlineStatus=Ht,exports.getRecapAbilitiesFromResource=tr,exports.getRecapFromResources=Z,exports.getRecapResource=at,exports.getRelayClientMetadata=bn,exports.getRelayProtocolApi=wr,exports.getRelayProtocolName=Sr,exports.getRequiredNamespacesFromNamespaces=Lr,exports.getSdkError=_,exports.getSearchParamFromURL=Fn,exports.getUniqueValues=oe,exports.handleDeeplinkRedirect=xn,exports.hasOverlap=w,exports.hashKey=dr,exports.hashMessage=pr,exports.isBrowser=M,exports.isCaipNamespace=Ne,exports.isConformingNamespaces=Kt,exports.isExpired=Vn,exports.isNode=ie,exports.isOnline=uo,exports.isProposalStruct=Jr,exports.isReactNative=D,exports.isRecap=fe,exports.isSessionCompatible=Br,exports.isSessionStruct=Wr,exports.isTelegram=Ye,exports.isTestRun=Kn,exports.isTypeOneEnvelope=vr,exports.isTypeTwoEnvelope=Er,exports.isUndefined=T,exports.isValidAccountId=Ut,exports.isValidAccounts=kt,exports.isValidActions=Mt,exports.isValidArray=K,exports.isValidChainId=q,exports.isValidChains=Dt,exports.isValidController=zr,exports.isValidEip1271Signature=Xe,exports.isValidEip191Signature=Ze,exports.isValidErrorReason=Xr,exports.isValidEvent=no,exports.isValidId=Qr,exports.isValidNamespaceAccounts=xt,exports.isValidNamespaceActions=we,exports.isValidNamespaceChains=Vt,exports.isValidNamespaceMethodsOrEvents=Se,exports.isValidNamespaces=Ft,exports.isValidNamespacesChainId=ro,exports.isValidNamespacesEvent=so,exports.isValidNamespacesRequest=oo,exports.isValidNumber=te,exports.isValidObject=ee,exports.isValidParams=Zr,exports.isValidRecap=N,exports.isValidRelay=Lt,exports.isValidRelays=Gr,exports.isValidRequest=eo,exports.isValidRequestExpiry=co,exports.isValidRequiredNamespaces=Yr,exports.isValidResponse=to,exports.isValidString=E,exports.isValidUrl=Hr,exports.mapEntries=An,exports.mapToObj=Rn,exports.mergeArrays=O,exports.mergeEncodedRecaps=rr,exports.mergeRecaps=ft,exports.normalizeNamespaces=Oe,exports.objToMap=Tn,exports.parseAccountId=re,exports.parseChainId=ne,exports.parseContextNames=He,exports.parseExpirerTarget=Un,exports.parseNamespaceKey=Ct,exports.parseRelayParams=Ot,exports.parseTopic=St,exports.parseUri=$r,exports.populateAuthPayload=Xn,exports.recapHasResource=er,exports.serialize=be,exports.subscribeToBrowserNetworkChange=Wt,exports.subscribeToNetworkChange=lo,exports.subscribeToReactNativeNetworkChange=zt,exports.toBase64=Ge,exports.uuidv4=Ln,exports.validateDecoding=yr,exports.validateEncoding=ht,exports.validateSignedCacao=Qn,exports.verifyP256Jwt=Or,exports.verifySignature=Qe; -+ Approved: ${f.toString()}`)) -+ }), i.forEach(c => { r || (w(o[c].methods, s[c].methods) ? w(o[c].events, s[c].events) || (r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces events don't satisfy namespace events for ${c}`)) : r = S("NON_CONFORMING_NAMESPACES", `${n} namespaces methods don't satisfy namespace methods for ${c}`)) }), r -+} function io(e) { const t = {}; return Object.keys(e).forEach(n => { var r; n.includes(":") ? t[n] = e[n] : (r = e[n].chains) == null || r.forEach(o => { t[o] = { methods: e[n].methods, events: e[n].events } }) }), t } function qt(e) { return [...uniq(e.map(t => t.includes(":") ? t.split(":")[0] : t))] } function ao(e) { const t = {}; return Object.keys(e).forEach(n => { if (n.includes(":")) t[n] = e[n]; else { const r = j(e[n].accounts); r?.forEach(o => { t[o] = { accounts: e[n].accounts.filter(s => s.includes(`${o}:`)), methods: e[n].methods, events: e[n].events } }) } }), t } function co(e, t) { return te(e, !1) && e <= t.max && e >= t.min } function uo() { const e = C(); return new Promise(t => { switch (e) { case y.browser: t(Bt()); break; case y.reactNative: t(Ht()); break; case y.node: t(Jt()); break; default: t(!0) } }) } function Bt() { return M() && navigator?.onLine } async function Ht() { if (D() && typeof global < "u" && global != null && global.NetInfo) { const e = await (global == null ? void 0 : global.NetInfo.fetch()); return e?.isConnected } return !0 } function Jt() { return !0 } function lo(e) { switch (C()) { case y.browser: Wt(e); break; case y.reactNative: zt(e); break; case y.node: break } } function Wt(e) { !D() && M() && (window.addEventListener("online", () => e(!0)), window.addEventListener("offline", () => e(!1))) } function zt(e) { D() && typeof global < "u" && global != null && global.NetInfo && global?.NetInfo.addEventListener(t => e(t?.isConnected)) } const Re = {}; class po { static get(t) { return Re[t] } static set(t, n) { Re[t] = n } static delete(t) { delete Re[t] } } exports.BASE10 = ge, exports.BASE16 = v, exports.BASE64 = he, exports.BASE64URL = ir, exports.COLON = hn, exports.DEFAULT_DEPTH = se, exports.EMPTY_SPACE = Y, exports.ENV_MAP = y, exports.INTERNAL_ERRORS = _t, exports.MemoryStore = po, exports.ONE_THOUSAND = yn, exports.REACT_NATIVE_PRODUCT = xe, exports.RELAYER_DEFAULT_PROTOCOL = vt, exports.SDK_ERRORS = jt, exports.SDK_TYPE = Fe, exports.SLASH = Me, exports.TYPE_0 = ye, exports.TYPE_1 = k, exports.TYPE_2 = F, exports.UTF8 = V, exports.addResourceToRecap = pt, exports.appendToQueryString = Le, exports.assertType = Sn, exports.assignAbilityToActions = pe, exports.base64Decode = lt, exports.base64Encode = ut, exports.buildApprovedNamespaces = Kr, exports.buildAuthObject = Zn, exports.buildNamespacesFromAuth = qr, exports.buildRecapStatement = mt, exports.calcExpiry = Dn, exports.capitalize = Pn, exports.capitalizeWord = We, exports.createDelayedPromise = Cn, exports.createEncodedRecap = nr, exports.createExpiringPromise = $n, exports.createRecap = dt, exports.decodeRecap = R, exports.decodeTypeByte = $, exports.decodeTypeTwoEnvelope = hr, exports.decrypt = gr, exports.deriveSymKey = lr, exports.deserialize = X, exports.encodeRecap = Q, exports.encodeTypeByte = Ee, exports.encodeTypeTwoEnvelope = mr, exports.encrypt = fr, exports.engineEvent = kn, exports.enumify = In, exports.formatAccountId = $e, exports.formatAccountWithChain = cn, exports.formatChainId = Ce, exports.formatDeeplinkUrl = ze, exports.formatExpirerTarget = ae, exports.formatIdTarget = _n, exports.formatMessage = st, exports.formatMessageContext = wn, exports.formatRelayParams = wt, exports.formatRelayRpcUrl = Nn, exports.formatStatementFromRecap = me, exports.formatTopicTarget = jn, exports.formatUA = Be, exports.formatUri = jr, exports.fromBase64 = ue, exports.generateKeyPair = cr, exports.generateRandomBytes32 = ur, exports.getAccountsChains = j, exports.getAccountsFromNamespaces = ln, exports.getAddressFromAccount = je, exports.getAddressesFromAccounts = un, exports.getAppMetadata = En, exports.getBrowserOnlineStatus = Bt, exports.getBundleId = vn, exports.getChainFromAccount = _e, exports.getChainsFromAccounts = Ue, exports.getChainsFromNamespace = z, exports.getChainsFromNamespaces = dn, exports.getChainsFromRecap = sr, exports.getChainsFromRequiredNamespaces = pn, exports.getCommonValuesInArrays = ce, exports.getCryptoKeyFromKeyData = yt, exports.getDecodedRecapFromResources = it, exports.getDeepLink = Mn, exports.getDidAddress = de, exports.getDidAddressSegments = G, exports.getDidChainId = rt, exports.getEnvironment = C, exports.getHttpUrl = On, exports.getInternalError = S, exports.getJavascriptID = qe, exports.getJavascriptOS = Ke, exports.getLastItems = Je, exports.getLinkModeURL = _r, exports.getMethodsFromRecap = or, exports.getNamespacedDidChainId = ot, exports.getNamespacesChains = At, exports.getNamespacesEventsForChainId = Pt, exports.getNamespacesFromAccounts = $t, exports.getNamespacesMethodsForChainId = It, exports.getNodeOnlineStatus = Jt, exports.getReCapActions = ct, exports.getReactNativeOnlineStatus = Ht, exports.getRecapAbilitiesFromResource = tr, exports.getRecapFromResources = Z, exports.getRecapResource = at, exports.getRelayClientMetadata = bn, exports.getRelayProtocolApi = wr, exports.getRelayProtocolName = Sr, exports.getRequiredNamespacesFromNamespaces = Lr, exports.getSdkError = _, exports.getSearchParamFromURL = Fn, exports.getUniqueValues = oe, exports.handleDeeplinkRedirect = xn, exports.hasOverlap = w, exports.hashKey = dr, exports.hashMessage = pr, exports.isBrowser = M, exports.isCaipNamespace = Ne, exports.isConformingNamespaces = Kt, exports.isExpired = Vn, exports.isNode = ie, exports.isOnline = uo, exports.isProposalStruct = Jr, exports.isReactNative = D, exports.isRecap = fe, exports.isSessionCompatible = Br, exports.isSessionStruct = Wr, exports.isTelegram = Ye, exports.isTestRun = Kn, exports.isTypeOneEnvelope = vr, exports.isTypeTwoEnvelope = Er, exports.isUndefined = T, exports.isValidAccountId = Ut, exports.isValidAccounts = kt, exports.isValidActions = Mt, exports.isValidArray = K, exports.isValidChainId = q, exports.isValidChains = Dt, exports.isValidController = zr, exports.isValidEip1271Signature = Xe, exports.isValidEip191Signature = Ze, exports.isValidErrorReason = Xr, exports.isValidEvent = no, exports.isValidId = Qr, exports.isValidNamespaceAccounts = xt, exports.isValidNamespaceActions = we, exports.isValidNamespaceChains = Vt, exports.isValidNamespaceMethodsOrEvents = Se, exports.isValidNamespaces = Ft, exports.isValidNamespacesChainId = ro, exports.isValidNamespacesEvent = so, exports.isValidNamespacesRequest = oo, exports.isValidNumber = te, exports.isValidObject = ee, exports.isValidParams = Zr, exports.isValidRecap = N, exports.isValidRelay = Lt, exports.isValidRelays = Gr, exports.isValidRequest = eo, exports.isValidRequestExpiry = co, exports.isValidRequiredNamespaces = Yr, exports.isValidResponse = to, exports.isValidString = E, exports.isValidUrl = Hr, exports.mapEntries = An, exports.mapToObj = Rn, exports.mergeArrays = O, exports.mergeEncodedRecaps = rr, exports.mergeRecaps = ft, exports.normalizeNamespaces = Oe, exports.objToMap = Tn, exports.parseAccountId = re, exports.parseChainId = ne, exports.parseContextNames = He, exports.parseExpirerTarget = Un, exports.parseNamespaceKey = Ct, exports.parseRelayParams = Ot, exports.parseTopic = St, exports.parseUri = $r, exports.populateAuthPayload = Xn, exports.recapHasResource = er, exports.serialize = be, exports.subscribeToBrowserNetworkChange = Wt, exports.subscribeToNetworkChange = lo, exports.subscribeToReactNativeNetworkChange = zt, exports.toBase64 = Ge, exports.uuidv4 = Ln, exports.validateDecoding = yr, exports.validateEncoding = ht, exports.validateSignedCacao = Qn, exports.verifyP256Jwt = Or, exports.verifySignature = Qe; - //# sourceMappingURL=index.cjs.js.map -diff --git a/node_modules/bn.js/LICENSE b/node_modules/bn.js/LICENSE -new file mode 100644 -index 0000000000000000000000000000000000000000..c328f0401e39c6ead737353c80d7356b86108e83 ---- /dev/null -+++ b/node_modules/bn.js/LICENSE -@@ -0,0 +1,19 @@ -+Copyright Fedor Indutny, 2015. -+ -+Permission is hereby granted, free of charge, to any person obtaining a copy -+of this software and associated documentation files (the "Software"), to deal -+in the Software without restriction, including without limitation the rights -+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+copies of the Software, and to permit persons to whom the Software is -+furnished to do so, subject to the following conditions: -+ -+The above copyright notice and this permission notice shall be included in all -+copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -+SOFTWARE. -diff --git a/node_modules/bn.js/README.md b/node_modules/bn.js/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..aecc3ba0fd0e27aac66909d0fb6eb714819535ed ---- /dev/null -+++ b/node_modules/bn.js/README.md -@@ -0,0 +1,200 @@ -+# bn.js -+ -+> BigNum in pure javascript -+ -+[![Build Status](https://secure.travis-ci.org/indutny/bn.js.png)](http://travis-ci.org/indutny/bn.js) -+ -+## Install -+`npm install --save bn.js` -+ -+## Usage -+ -+```js -+const BN = require('bn.js'); -+ -+var a = new BN('dead', 16); -+var b = new BN('101010', 2); -+ -+var res = a.add(b); -+console.log(res.toString(10)); // 57047 -+``` -+ -+**Note**: decimals are not supported in this library. -+ -+## Notation -+ -+### Prefixes -+ -+There are several prefixes to instructions that affect the way the work. Here -+is the list of them in the order of appearance in the function name: -+ -+* `i` - perform operation in-place, storing the result in the host object (on -+ which the method was invoked). Might be used to avoid number allocation costs -+* `u` - unsigned, ignore the sign of operands when performing operation, or -+ always return positive value. Second case applies to reduction operations -+ like `mod()`. In such cases if the result will be negative - modulo will be -+ added to the result to make it positive -+ -+### Postfixes -+ -+The only available postfix at the moment is: -+ -+* `n` - which means that the argument of the function must be a plain JavaScript -+ Number. Decimals are not supported. -+ -+### Examples -+ -+* `a.iadd(b)` - perform addition on `a` and `b`, storing the result in `a` -+* `a.umod(b)` - reduce `a` modulo `b`, returning positive value -+* `a.iushln(13)` - shift bits of `a` left by 13 -+ -+## Instructions -+ -+Prefixes/postfixes are put in parens at the of the line. `endian` - could be -+either `le` (little-endian) or `be` (big-endian). -+ -+### Utilities -+ -+* `a.clone()` - clone number -+* `a.toString(base, length)` - convert to base-string and pad with zeroes -+* `a.toNumber()` - convert to Javascript Number (limited to 53 bits) -+* `a.toJSON()` - convert to JSON compatible hex string (alias of `toString(16)`) -+* `a.toArray(endian, length)` - convert to byte `Array`, and optionally zero -+ pad to length, throwing if already exceeding -+* `a.toArrayLike(type, endian, length)` - convert to an instance of `type`, -+ which must behave like an `Array` -+* `a.toBuffer(endian, length)` - convert to Node.js Buffer (if available). For -+ compatibility with browserify and similar tools, use this instead: -+ `a.toArrayLike(Buffer, endian, length)` -+* `a.bitLength()` - get number of bits occupied -+* `a.zeroBits()` - return number of less-significant consequent zero bits -+ (example: `1010000` has 4 zero bits) -+* `a.byteLength()` - return number of bytes occupied -+* `a.isNeg()` - true if the number is negative -+* `a.isEven()` - no comments -+* `a.isOdd()` - no comments -+* `a.isZero()` - no comments -+* `a.cmp(b)` - compare numbers and return `-1` (a `<` b), `0` (a `==` b), or `1` (a `>` b) -+ depending on the comparison result (`ucmp`, `cmpn`) -+* `a.lt(b)` - `a` less than `b` (`n`) -+* `a.lte(b)` - `a` less than or equals `b` (`n`) -+* `a.gt(b)` - `a` greater than `b` (`n`) -+* `a.gte(b)` - `a` greater than or equals `b` (`n`) -+* `a.eq(b)` - `a` equals `b` (`n`) -+* `a.toTwos(width)` - convert to two's complement representation, where `width` is bit width -+* `a.fromTwos(width)` - convert from two's complement representation, where `width` is the bit width -+* `BN.isBN(object)` - returns true if the supplied `object` is a BN.js instance -+ -+### Arithmetics -+ -+* `a.neg()` - negate sign (`i`) -+* `a.abs()` - absolute value (`i`) -+* `a.add(b)` - addition (`i`, `n`, `in`) -+* `a.sub(b)` - subtraction (`i`, `n`, `in`) -+* `a.mul(b)` - multiply (`i`, `n`, `in`) -+* `a.sqr()` - square (`i`) -+* `a.pow(b)` - raise `a` to the power of `b` -+* `a.div(b)` - divide (`divn`, `idivn`) -+* `a.mod(b)` - reduct (`u`, `n`) (but no `umodn`) -+* `a.divRound(b)` - rounded division -+ -+### Bit operations -+ -+* `a.or(b)` - or (`i`, `u`, `iu`) -+* `a.and(b)` - and (`i`, `u`, `iu`, `andln`) (NOTE: `andln` is going to be replaced -+ with `andn` in future) -+* `a.xor(b)` - xor (`i`, `u`, `iu`) -+* `a.setn(b)` - set specified bit to `1` -+* `a.shln(b)` - shift left (`i`, `u`, `iu`) -+* `a.shrn(b)` - shift right (`i`, `u`, `iu`) -+* `a.testn(b)` - test if specified bit is set -+* `a.maskn(b)` - clear bits with indexes higher or equal to `b` (`i`) -+* `a.bincn(b)` - add `1 << b` to the number -+* `a.notn(w)` - not (for the width specified by `w`) (`i`) -+ -+### Reduction -+ -+* `a.gcd(b)` - GCD -+* `a.egcd(b)` - Extended GCD results (`{ a: ..., b: ..., gcd: ... }`) -+* `a.invm(b)` - inverse `a` modulo `b` -+ -+## Fast reduction -+ -+When doing lots of reductions using the same modulo, it might be beneficial to -+use some tricks: like [Montgomery multiplication][0], or using special algorithm -+for [Mersenne Prime][1]. -+ -+### Reduction context -+ -+To enable this tricks one should create a reduction context: -+ -+```js -+var red = BN.red(num); -+``` -+where `num` is just a BN instance. -+ -+Or: -+ -+```js -+var red = BN.red(primeName); -+``` -+ -+Where `primeName` is either of these [Mersenne Primes][1]: -+ -+* `'k256'` -+* `'p224'` -+* `'p192'` -+* `'p25519'` -+ -+Or: -+ -+```js -+var red = BN.mont(num); -+``` -+ -+To reduce numbers with [Montgomery trick][0]. `.mont()` is generally faster than -+`.red(num)`, but slower than `BN.red(primeName)`. -+ -+### Converting numbers -+ -+Before performing anything in reduction context - numbers should be converted -+to it. Usually, this means that one should: -+ -+* Convert inputs to reducted ones -+* Operate on them in reduction context -+* Convert outputs back from the reduction context -+ -+Here is how one may convert numbers to `red`: -+ -+```js -+var redA = a.toRed(red); -+``` -+Where `red` is a reduction context created using instructions above -+ -+Here is how to convert them back: -+ -+```js -+var a = redA.fromRed(); -+``` -+ -+### Red instructions -+ -+Most of the instructions from the very start of this readme have their -+counterparts in red context: -+ -+* `a.redAdd(b)`, `a.redIAdd(b)` -+* `a.redSub(b)`, `a.redISub(b)` -+* `a.redShl(num)` -+* `a.redMul(b)`, `a.redIMul(b)` -+* `a.redSqr()`, `a.redISqr()` -+* `a.redSqrt()` - square root modulo reduction context's prime -+* `a.redInvm()` - modular inverse of the number -+* `a.redNeg()` -+* `a.redPow(b)` - modular exponentiation -+ -+## LICENSE -+ -+This software is licensed under the MIT License. -+ -+[0]: https://en.wikipedia.org/wiki/Montgomery_modular_multiplication -+[1]: https://en.wikipedia.org/wiki/Mersenne_prime -diff --git a/node_modules/bn.js/lib/bn.js b/node_modules/bn.js/lib/bn.js -new file mode 100644 -index 0000000000000000000000000000000000000000..3a4371ea29688d216480d68af653c52b8b7beb10 ---- /dev/null -+++ b/node_modules/bn.js/lib/bn.js -@@ -0,0 +1,3446 @@ -+(function (module, exports) { -+ 'use strict'; -+ -+ // Utils -+ function assert (val, msg) { -+ if (!val) throw new Error(msg || 'Assertion failed'); -+ } -+ -+ // Could use `inherits` module, but don't want to move from single file -+ // architecture yet. -+ function inherits (ctor, superCtor) { -+ ctor.super_ = superCtor; -+ var TempCtor = function () {}; -+ TempCtor.prototype = superCtor.prototype; -+ ctor.prototype = new TempCtor(); -+ ctor.prototype.constructor = ctor; -+ } -+ -+ // BN -+ -+ function BN (number, base, endian) { -+ if (BN.isBN(number)) { -+ return number; -+ } -+ -+ this.negative = 0; -+ this.words = null; -+ this.length = 0; -+ -+ // Reduction context -+ this.red = null; -+ -+ if (number !== null) { -+ if (base === 'le' || base === 'be') { -+ endian = base; -+ base = 10; -+ } -+ -+ this._init(number || 0, base || 10, endian || 'be'); -+ } -+ } -+ if (typeof module === 'object') { -+ module.exports = BN; -+ } else { -+ exports.BN = BN; -+ } -+ -+ BN.BN = BN; -+ BN.wordSize = 26; -+ -+ var Buffer; -+ try { -+ if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') { -+ Buffer = window.Buffer; -+ } else { -+ Buffer = require('buffer').Buffer; -+ } -+ } catch (e) { -+ } -+ -+ BN.isBN = function isBN (num) { -+ if (num instanceof BN) { -+ return true; -+ } -+ -+ return num !== null && typeof num === 'object' && -+ num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); -+ }; -+ -+ BN.max = function max (left, right) { -+ if (left.cmp(right) > 0) return left; -+ return right; -+ }; -+ -+ BN.min = function min (left, right) { -+ if (left.cmp(right) < 0) return left; -+ return right; -+ }; -+ -+ BN.prototype._init = function init (number, base, endian) { -+ if (typeof number === 'number') { -+ return this._initNumber(number, base, endian); -+ } -+ -+ if (typeof number === 'object') { -+ return this._initArray(number, base, endian); -+ } -+ -+ if (base === 'hex') { -+ base = 16; -+ } -+ assert(base === (base | 0) && base >= 2 && base <= 36); -+ -+ number = number.toString().replace(/\s+/g, ''); -+ var start = 0; -+ if (number[0] === '-') { -+ start++; -+ this.negative = 1; -+ } -+ -+ if (start < number.length) { -+ if (base === 16) { -+ this._parseHex(number, start, endian); -+ } else { -+ this._parseBase(number, base, start); -+ if (endian === 'le') { -+ this._initArray(this.toArray(), base, endian); -+ } -+ } -+ } -+ }; -+ -+ BN.prototype._initNumber = function _initNumber (number, base, endian) { -+ if (number < 0) { -+ this.negative = 1; -+ number = -number; -+ } -+ if (number < 0x4000000) { -+ this.words = [ number & 0x3ffffff ]; -+ this.length = 1; -+ } else if (number < 0x10000000000000) { -+ this.words = [ -+ number & 0x3ffffff, -+ (number / 0x4000000) & 0x3ffffff -+ ]; -+ this.length = 2; -+ } else { -+ assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) -+ this.words = [ -+ number & 0x3ffffff, -+ (number / 0x4000000) & 0x3ffffff, -+ 1 -+ ]; -+ this.length = 3; -+ } -+ -+ if (endian !== 'le') return; -+ -+ // Reverse the bytes -+ this._initArray(this.toArray(), base, endian); -+ }; -+ -+ BN.prototype._initArray = function _initArray (number, base, endian) { -+ // Perhaps a Uint8Array -+ assert(typeof number.length === 'number'); -+ if (number.length <= 0) { -+ this.words = [ 0 ]; -+ this.length = 1; -+ return this; -+ } -+ -+ this.length = Math.ceil(number.length / 3); -+ this.words = new Array(this.length); -+ for (var i = 0; i < this.length; i++) { -+ this.words[i] = 0; -+ } -+ -+ var j, w; -+ var off = 0; -+ if (endian === 'be') { -+ for (i = number.length - 1, j = 0; i >= 0; i -= 3) { -+ w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); -+ this.words[j] |= (w << off) & 0x3ffffff; -+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; -+ off += 24; -+ if (off >= 26) { -+ off -= 26; -+ j++; -+ } -+ } -+ } else if (endian === 'le') { -+ for (i = 0, j = 0; i < number.length; i += 3) { -+ w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); -+ this.words[j] |= (w << off) & 0x3ffffff; -+ this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; -+ off += 24; -+ if (off >= 26) { -+ off -= 26; -+ j++; -+ } -+ } -+ } -+ return this.strip(); -+ }; -+ -+ function parseHex4Bits (string, index) { -+ var c = string.charCodeAt(index); -+ // 'A' - 'F' -+ if (c >= 65 && c <= 70) { -+ return c - 55; -+ // 'a' - 'f' -+ } else if (c >= 97 && c <= 102) { -+ return c - 87; -+ // '0' - '9' -+ } else { -+ return (c - 48) & 0xf; -+ } -+ } -+ -+ function parseHexByte (string, lowerBound, index) { -+ var r = parseHex4Bits(string, index); -+ if (index - 1 >= lowerBound) { -+ r |= parseHex4Bits(string, index - 1) << 4; -+ } -+ return r; -+ } -+ -+ BN.prototype._parseHex = function _parseHex (number, start, endian) { -+ // Create possibly bigger array to ensure that it fits the number -+ this.length = Math.ceil((number.length - start) / 6); -+ this.words = new Array(this.length); -+ for (var i = 0; i < this.length; i++) { -+ this.words[i] = 0; -+ } -+ -+ // 24-bits chunks -+ var off = 0; -+ var j = 0; -+ -+ var w; -+ if (endian === 'be') { -+ for (i = number.length - 1; i >= start; i -= 2) { -+ w = parseHexByte(number, start, i) << off; -+ this.words[j] |= w & 0x3ffffff; -+ if (off >= 18) { -+ off -= 18; -+ j += 1; -+ this.words[j] |= w >>> 26; -+ } else { -+ off += 8; -+ } -+ } -+ } else { -+ var parseLength = number.length - start; -+ for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { -+ w = parseHexByte(number, start, i) << off; -+ this.words[j] |= w & 0x3ffffff; -+ if (off >= 18) { -+ off -= 18; -+ j += 1; -+ this.words[j] |= w >>> 26; -+ } else { -+ off += 8; -+ } -+ } -+ } -+ -+ this.strip(); -+ }; -+ -+ function parseBase (str, start, end, mul) { -+ var r = 0; -+ var len = Math.min(str.length, end); -+ for (var i = start; i < len; i++) { -+ var c = str.charCodeAt(i) - 48; -+ -+ r *= mul; -+ -+ // 'a' -+ if (c >= 49) { -+ r += c - 49 + 0xa; -+ -+ // 'A' -+ } else if (c >= 17) { -+ r += c - 17 + 0xa; -+ -+ // '0' - '9' -+ } else { -+ r += c; -+ } -+ } -+ return r; -+ } -+ -+ BN.prototype._parseBase = function _parseBase (number, base, start) { -+ // Initialize as zero -+ this.words = [ 0 ]; -+ this.length = 1; -+ -+ // Find length of limb in base -+ for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { -+ limbLen++; -+ } -+ limbLen--; -+ limbPow = (limbPow / base) | 0; -+ -+ var total = number.length - start; -+ var mod = total % limbLen; -+ var end = Math.min(total, total - mod) + start; -+ -+ var word = 0; -+ for (var i = start; i < end; i += limbLen) { -+ word = parseBase(number, i, i + limbLen, base); -+ -+ this.imuln(limbPow); -+ if (this.words[0] + word < 0x4000000) { -+ this.words[0] += word; -+ } else { -+ this._iaddn(word); -+ } -+ } -+ -+ if (mod !== 0) { -+ var pow = 1; -+ word = parseBase(number, i, number.length, base); -+ -+ for (i = 0; i < mod; i++) { -+ pow *= base; -+ } -+ -+ this.imuln(pow); -+ if (this.words[0] + word < 0x4000000) { -+ this.words[0] += word; -+ } else { -+ this._iaddn(word); -+ } -+ } -+ -+ this.strip(); -+ }; -+ -+ BN.prototype.copy = function copy (dest) { -+ dest.words = new Array(this.length); -+ for (var i = 0; i < this.length; i++) { -+ dest.words[i] = this.words[i]; -+ } -+ dest.length = this.length; -+ dest.negative = this.negative; -+ dest.red = this.red; -+ }; -+ -+ BN.prototype.clone = function clone () { -+ var r = new BN(null); -+ this.copy(r); -+ return r; -+ }; -+ -+ BN.prototype._expand = function _expand (size) { -+ while (this.length < size) { -+ this.words[this.length++] = 0; -+ } -+ return this; -+ }; -+ -+ // Remove leading `0` from `this` -+ BN.prototype.strip = function strip () { -+ while (this.length > 1 && this.words[this.length - 1] === 0) { -+ this.length--; -+ } -+ return this._normSign(); -+ }; -+ -+ BN.prototype._normSign = function _normSign () { -+ // -0 = 0 -+ if (this.length === 1 && this.words[0] === 0) { -+ this.negative = 0; -+ } -+ return this; -+ }; -+ -+ BN.prototype.inspect = function inspect () { -+ return (this.red ? ''; -+ }; -+ -+ /* -+ -+ var zeros = []; -+ var groupSizes = []; -+ var groupBases = []; -+ -+ var s = ''; -+ var i = -1; -+ while (++i < BN.wordSize) { -+ zeros[i] = s; -+ s += '0'; -+ } -+ groupSizes[0] = 0; -+ groupSizes[1] = 0; -+ groupBases[0] = 0; -+ groupBases[1] = 0; -+ var base = 2 - 1; -+ while (++base < 36 + 1) { -+ var groupSize = 0; -+ var groupBase = 1; -+ while (groupBase < (1 << BN.wordSize) / base) { -+ groupBase *= base; -+ groupSize += 1; -+ } -+ groupSizes[base] = groupSize; -+ groupBases[base] = groupBase; -+ } -+ -+ */ -+ -+ var zeros = [ -+ '', -+ '0', -+ '00', -+ '000', -+ '0000', -+ '00000', -+ '000000', -+ '0000000', -+ '00000000', -+ '000000000', -+ '0000000000', -+ '00000000000', -+ '000000000000', -+ '0000000000000', -+ '00000000000000', -+ '000000000000000', -+ '0000000000000000', -+ '00000000000000000', -+ '000000000000000000', -+ '0000000000000000000', -+ '00000000000000000000', -+ '000000000000000000000', -+ '0000000000000000000000', -+ '00000000000000000000000', -+ '000000000000000000000000', -+ '0000000000000000000000000' -+ ]; -+ -+ var groupSizes = [ -+ 0, 0, -+ 25, 16, 12, 11, 10, 9, 8, -+ 8, 7, 7, 7, 7, 6, 6, -+ 6, 6, 6, 6, 6, 5, 5, -+ 5, 5, 5, 5, 5, 5, 5, -+ 5, 5, 5, 5, 5, 5, 5 -+ ]; -+ -+ var groupBases = [ -+ 0, 0, -+ 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, -+ 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, -+ 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, -+ 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, -+ 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 -+ ]; -+ -+ BN.prototype.toString = function toString (base, padding) { -+ base = base || 10; -+ padding = padding | 0 || 1; -+ -+ var out; -+ if (base === 16 || base === 'hex') { -+ out = ''; -+ var off = 0; -+ var carry = 0; -+ for (var i = 0; i < this.length; i++) { -+ var w = this.words[i]; -+ var word = (((w << off) | carry) & 0xffffff).toString(16); -+ carry = (w >>> (24 - off)) & 0xffffff; -+ if (carry !== 0 || i !== this.length - 1) { -+ out = zeros[6 - word.length] + word + out; -+ } else { -+ out = word + out; -+ } -+ off += 2; -+ if (off >= 26) { -+ off -= 26; -+ i--; -+ } -+ } -+ if (carry !== 0) { -+ out = carry.toString(16) + out; -+ } -+ while (out.length % padding !== 0) { -+ out = '0' + out; -+ } -+ if (this.negative !== 0) { -+ out = '-' + out; -+ } -+ return out; -+ } -+ -+ if (base === (base | 0) && base >= 2 && base <= 36) { -+ // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); -+ var groupSize = groupSizes[base]; -+ // var groupBase = Math.pow(base, groupSize); -+ var groupBase = groupBases[base]; -+ out = ''; -+ var c = this.clone(); -+ c.negative = 0; -+ while (!c.isZero()) { -+ var r = c.modn(groupBase).toString(base); -+ c = c.idivn(groupBase); -+ -+ if (!c.isZero()) { -+ out = zeros[groupSize - r.length] + r + out; -+ } else { -+ out = r + out; -+ } -+ } -+ if (this.isZero()) { -+ out = '0' + out; -+ } -+ while (out.length % padding !== 0) { -+ out = '0' + out; -+ } -+ if (this.negative !== 0) { -+ out = '-' + out; -+ } -+ return out; -+ } -+ -+ assert(false, 'Base should be between 2 and 36'); -+ }; -+ -+ BN.prototype.toNumber = function toNumber () { -+ var ret = this.words[0]; -+ if (this.length === 2) { -+ ret += this.words[1] * 0x4000000; -+ } else if (this.length === 3 && this.words[2] === 0x01) { -+ // NOTE: at this stage it is known that the top bit is set -+ ret += 0x10000000000000 + (this.words[1] * 0x4000000); -+ } else if (this.length > 2) { -+ assert(false, 'Number can only safely store up to 53 bits'); -+ } -+ return (this.negative !== 0) ? -ret : ret; -+ }; -+ -+ BN.prototype.toJSON = function toJSON () { -+ return this.toString(16); -+ }; -+ -+ BN.prototype.toBuffer = function toBuffer (endian, length) { -+ assert(typeof Buffer !== 'undefined'); -+ return this.toArrayLike(Buffer, endian, length); -+ }; -+ -+ BN.prototype.toArray = function toArray (endian, length) { -+ return this.toArrayLike(Array, endian, length); -+ }; -+ -+ BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { -+ var byteLength = this.byteLength(); -+ var reqLength = length || Math.max(1, byteLength); -+ assert(byteLength <= reqLength, 'byte array longer than desired length'); -+ assert(reqLength > 0, 'Requested array length <= 0'); -+ -+ this.strip(); -+ var littleEndian = endian === 'le'; -+ var res = new ArrayType(reqLength); -+ -+ var b, i; -+ var q = this.clone(); -+ if (!littleEndian) { -+ // Assume big-endian -+ for (i = 0; i < reqLength - byteLength; i++) { -+ res[i] = 0; -+ } -+ -+ for (i = 0; !q.isZero(); i++) { -+ b = q.andln(0xff); -+ q.iushrn(8); -+ -+ res[reqLength - i - 1] = b; -+ } -+ } else { -+ for (i = 0; !q.isZero(); i++) { -+ b = q.andln(0xff); -+ q.iushrn(8); -+ -+ res[i] = b; -+ } -+ -+ for (; i < reqLength; i++) { -+ res[i] = 0; -+ } -+ } -+ -+ return res; -+ }; -+ -+ if (Math.clz32) { -+ BN.prototype._countBits = function _countBits (w) { -+ return 32 - Math.clz32(w); -+ }; -+ } else { -+ BN.prototype._countBits = function _countBits (w) { -+ var t = w; -+ var r = 0; -+ if (t >= 0x1000) { -+ r += 13; -+ t >>>= 13; -+ } -+ if (t >= 0x40) { -+ r += 7; -+ t >>>= 7; -+ } -+ if (t >= 0x8) { -+ r += 4; -+ t >>>= 4; -+ } -+ if (t >= 0x02) { -+ r += 2; -+ t >>>= 2; -+ } -+ return r + t; -+ }; -+ } -+ -+ BN.prototype._zeroBits = function _zeroBits (w) { -+ // Short-cut -+ if (w === 0) return 26; -+ -+ var t = w; -+ var r = 0; -+ if ((t & 0x1fff) === 0) { -+ r += 13; -+ t >>>= 13; -+ } -+ if ((t & 0x7f) === 0) { -+ r += 7; -+ t >>>= 7; -+ } -+ if ((t & 0xf) === 0) { -+ r += 4; -+ t >>>= 4; -+ } -+ if ((t & 0x3) === 0) { -+ r += 2; -+ t >>>= 2; -+ } -+ if ((t & 0x1) === 0) { -+ r++; -+ } -+ return r; -+ }; -+ -+ // Return number of used bits in a BN -+ BN.prototype.bitLength = function bitLength () { -+ var w = this.words[this.length - 1]; -+ var hi = this._countBits(w); -+ return (this.length - 1) * 26 + hi; -+ }; -+ -+ function toBitArray (num) { -+ var w = new Array(num.bitLength()); -+ -+ for (var bit = 0; bit < w.length; bit++) { -+ var off = (bit / 26) | 0; -+ var wbit = bit % 26; -+ -+ w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; -+ } -+ -+ return w; -+ } -+ -+ // Number of trailing zero bits -+ BN.prototype.zeroBits = function zeroBits () { -+ if (this.isZero()) return 0; -+ -+ var r = 0; -+ for (var i = 0; i < this.length; i++) { -+ var b = this._zeroBits(this.words[i]); -+ r += b; -+ if (b !== 26) break; -+ } -+ return r; -+ }; -+ -+ BN.prototype.byteLength = function byteLength () { -+ return Math.ceil(this.bitLength() / 8); -+ }; -+ -+ BN.prototype.toTwos = function toTwos (width) { -+ if (this.negative !== 0) { -+ return this.abs().inotn(width).iaddn(1); -+ } -+ return this.clone(); -+ }; -+ -+ BN.prototype.fromTwos = function fromTwos (width) { -+ if (this.testn(width - 1)) { -+ return this.notn(width).iaddn(1).ineg(); -+ } -+ return this.clone(); -+ }; -+ -+ BN.prototype.isNeg = function isNeg () { -+ return this.negative !== 0; -+ }; -+ -+ // Return negative clone of `this` -+ BN.prototype.neg = function neg () { -+ return this.clone().ineg(); -+ }; -+ -+ BN.prototype.ineg = function ineg () { -+ if (!this.isZero()) { -+ this.negative ^= 1; -+ } -+ -+ return this; -+ }; -+ -+ // Or `num` with `this` in-place -+ BN.prototype.iuor = function iuor (num) { -+ while (this.length < num.length) { -+ this.words[this.length++] = 0; -+ } -+ -+ for (var i = 0; i < num.length; i++) { -+ this.words[i] = this.words[i] | num.words[i]; -+ } -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.ior = function ior (num) { -+ assert((this.negative | num.negative) === 0); -+ return this.iuor(num); -+ }; -+ -+ // Or `num` with `this` -+ BN.prototype.or = function or (num) { -+ if (this.length > num.length) return this.clone().ior(num); -+ return num.clone().ior(this); -+ }; -+ -+ BN.prototype.uor = function uor (num) { -+ if (this.length > num.length) return this.clone().iuor(num); -+ return num.clone().iuor(this); -+ }; -+ -+ // And `num` with `this` in-place -+ BN.prototype.iuand = function iuand (num) { -+ // b = min-length(num, this) -+ var b; -+ if (this.length > num.length) { -+ b = num; -+ } else { -+ b = this; -+ } -+ -+ for (var i = 0; i < b.length; i++) { -+ this.words[i] = this.words[i] & num.words[i]; -+ } -+ -+ this.length = b.length; -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.iand = function iand (num) { -+ assert((this.negative | num.negative) === 0); -+ return this.iuand(num); -+ }; -+ -+ // And `num` with `this` -+ BN.prototype.and = function and (num) { -+ if (this.length > num.length) return this.clone().iand(num); -+ return num.clone().iand(this); -+ }; -+ -+ BN.prototype.uand = function uand (num) { -+ if (this.length > num.length) return this.clone().iuand(num); -+ return num.clone().iuand(this); -+ }; -+ -+ // Xor `num` with `this` in-place -+ BN.prototype.iuxor = function iuxor (num) { -+ // a.length > b.length -+ var a; -+ var b; -+ if (this.length > num.length) { -+ a = this; -+ b = num; -+ } else { -+ a = num; -+ b = this; -+ } -+ -+ for (var i = 0; i < b.length; i++) { -+ this.words[i] = a.words[i] ^ b.words[i]; -+ } -+ -+ if (this !== a) { -+ for (; i < a.length; i++) { -+ this.words[i] = a.words[i]; -+ } -+ } -+ -+ this.length = a.length; -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.ixor = function ixor (num) { -+ assert((this.negative | num.negative) === 0); -+ return this.iuxor(num); -+ }; -+ -+ // Xor `num` with `this` -+ BN.prototype.xor = function xor (num) { -+ if (this.length > num.length) return this.clone().ixor(num); -+ return num.clone().ixor(this); -+ }; -+ -+ BN.prototype.uxor = function uxor (num) { -+ if (this.length > num.length) return this.clone().iuxor(num); -+ return num.clone().iuxor(this); -+ }; -+ -+ // Not ``this`` with ``width`` bitwidth -+ BN.prototype.inotn = function inotn (width) { -+ assert(typeof width === 'number' && width >= 0); -+ -+ var bytesNeeded = Math.ceil(width / 26) | 0; -+ var bitsLeft = width % 26; -+ -+ // Extend the buffer with leading zeroes -+ this._expand(bytesNeeded); -+ -+ if (bitsLeft > 0) { -+ bytesNeeded--; -+ } -+ -+ // Handle complete words -+ for (var i = 0; i < bytesNeeded; i++) { -+ this.words[i] = ~this.words[i] & 0x3ffffff; -+ } -+ -+ // Handle the residue -+ if (bitsLeft > 0) { -+ this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); -+ } -+ -+ // And remove leading zeroes -+ return this.strip(); -+ }; -+ -+ BN.prototype.notn = function notn (width) { -+ return this.clone().inotn(width); -+ }; -+ -+ // Set `bit` of `this` -+ BN.prototype.setn = function setn (bit, val) { -+ assert(typeof bit === 'number' && bit >= 0); -+ -+ var off = (bit / 26) | 0; -+ var wbit = bit % 26; -+ -+ this._expand(off + 1); -+ -+ if (val) { -+ this.words[off] = this.words[off] | (1 << wbit); -+ } else { -+ this.words[off] = this.words[off] & ~(1 << wbit); -+ } -+ -+ return this.strip(); -+ }; -+ -+ // Add `num` to `this` in-place -+ BN.prototype.iadd = function iadd (num) { -+ var r; -+ -+ // negative + positive -+ if (this.negative !== 0 && num.negative === 0) { -+ this.negative = 0; -+ r = this.isub(num); -+ this.negative ^= 1; -+ return this._normSign(); -+ -+ // positive + negative -+ } else if (this.negative === 0 && num.negative !== 0) { -+ num.negative = 0; -+ r = this.isub(num); -+ num.negative = 1; -+ return r._normSign(); -+ } -+ -+ // a.length > b.length -+ var a, b; -+ if (this.length > num.length) { -+ a = this; -+ b = num; -+ } else { -+ a = num; -+ b = this; -+ } -+ -+ var carry = 0; -+ for (var i = 0; i < b.length; i++) { -+ r = (a.words[i] | 0) + (b.words[i] | 0) + carry; -+ this.words[i] = r & 0x3ffffff; -+ carry = r >>> 26; -+ } -+ for (; carry !== 0 && i < a.length; i++) { -+ r = (a.words[i] | 0) + carry; -+ this.words[i] = r & 0x3ffffff; -+ carry = r >>> 26; -+ } -+ -+ this.length = a.length; -+ if (carry !== 0) { -+ this.words[this.length] = carry; -+ this.length++; -+ // Copy the rest of the words -+ } else if (a !== this) { -+ for (; i < a.length; i++) { -+ this.words[i] = a.words[i]; -+ } -+ } -+ -+ return this; -+ }; -+ -+ // Add `num` to `this` -+ BN.prototype.add = function add (num) { -+ var res; -+ if (num.negative !== 0 && this.negative === 0) { -+ num.negative = 0; -+ res = this.sub(num); -+ num.negative ^= 1; -+ return res; -+ } else if (num.negative === 0 && this.negative !== 0) { -+ this.negative = 0; -+ res = num.sub(this); -+ this.negative = 1; -+ return res; -+ } -+ -+ if (this.length > num.length) return this.clone().iadd(num); -+ -+ return num.clone().iadd(this); -+ }; -+ -+ // Subtract `num` from `this` in-place -+ BN.prototype.isub = function isub (num) { -+ // this - (-num) = this + num -+ if (num.negative !== 0) { -+ num.negative = 0; -+ var r = this.iadd(num); -+ num.negative = 1; -+ return r._normSign(); -+ -+ // -this - num = -(this + num) -+ } else if (this.negative !== 0) { -+ this.negative = 0; -+ this.iadd(num); -+ this.negative = 1; -+ return this._normSign(); -+ } -+ -+ // At this point both numbers are positive -+ var cmp = this.cmp(num); -+ -+ // Optimization - zeroify -+ if (cmp === 0) { -+ this.negative = 0; -+ this.length = 1; -+ this.words[0] = 0; -+ return this; -+ } -+ -+ // a > b -+ var a, b; -+ if (cmp > 0) { -+ a = this; -+ b = num; -+ } else { -+ a = num; -+ b = this; -+ } -+ -+ var carry = 0; -+ for (var i = 0; i < b.length; i++) { -+ r = (a.words[i] | 0) - (b.words[i] | 0) + carry; -+ carry = r >> 26; -+ this.words[i] = r & 0x3ffffff; -+ } -+ for (; carry !== 0 && i < a.length; i++) { -+ r = (a.words[i] | 0) + carry; -+ carry = r >> 26; -+ this.words[i] = r & 0x3ffffff; -+ } -+ -+ // Copy rest of the words -+ if (carry === 0 && i < a.length && a !== this) { -+ for (; i < a.length; i++) { -+ this.words[i] = a.words[i]; -+ } -+ } -+ -+ this.length = Math.max(this.length, i); -+ -+ if (a !== this) { -+ this.negative = 1; -+ } -+ -+ return this.strip(); -+ }; -+ -+ // Subtract `num` from `this` -+ BN.prototype.sub = function sub (num) { -+ return this.clone().isub(num); -+ }; -+ -+ function smallMulTo (self, num, out) { -+ out.negative = num.negative ^ self.negative; -+ var len = (self.length + num.length) | 0; -+ out.length = len; -+ len = (len - 1) | 0; -+ -+ // Peel one iteration (compiler can't do it, because of code complexity) -+ var a = self.words[0] | 0; -+ var b = num.words[0] | 0; -+ var r = a * b; -+ -+ var lo = r & 0x3ffffff; -+ var carry = (r / 0x4000000) | 0; -+ out.words[0] = lo; -+ -+ for (var k = 1; k < len; k++) { -+ // Sum all words with the same `i + j = k` and accumulate `ncarry`, -+ // note that ncarry could be >= 0x3ffffff -+ var ncarry = carry >>> 26; -+ var rword = carry & 0x3ffffff; -+ var maxJ = Math.min(k, num.length - 1); -+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { -+ var i = (k - j) | 0; -+ a = self.words[i] | 0; -+ b = num.words[j] | 0; -+ r = a * b + rword; -+ ncarry += (r / 0x4000000) | 0; -+ rword = r & 0x3ffffff; -+ } -+ out.words[k] = rword | 0; -+ carry = ncarry | 0; -+ } -+ if (carry !== 0) { -+ out.words[k] = carry | 0; -+ } else { -+ out.length--; -+ } -+ -+ return out.strip(); -+ } -+ -+ // TODO(indutny): it may be reasonable to omit it for users who don't need -+ // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit -+ // multiplication (like elliptic secp256k1). -+ var comb10MulTo = function comb10MulTo (self, num, out) { -+ var a = self.words; -+ var b = num.words; -+ var o = out.words; -+ var c = 0; -+ var lo; -+ var mid; -+ var hi; -+ var a0 = a[0] | 0; -+ var al0 = a0 & 0x1fff; -+ var ah0 = a0 >>> 13; -+ var a1 = a[1] | 0; -+ var al1 = a1 & 0x1fff; -+ var ah1 = a1 >>> 13; -+ var a2 = a[2] | 0; -+ var al2 = a2 & 0x1fff; -+ var ah2 = a2 >>> 13; -+ var a3 = a[3] | 0; -+ var al3 = a3 & 0x1fff; -+ var ah3 = a3 >>> 13; -+ var a4 = a[4] | 0; -+ var al4 = a4 & 0x1fff; -+ var ah4 = a4 >>> 13; -+ var a5 = a[5] | 0; -+ var al5 = a5 & 0x1fff; -+ var ah5 = a5 >>> 13; -+ var a6 = a[6] | 0; -+ var al6 = a6 & 0x1fff; -+ var ah6 = a6 >>> 13; -+ var a7 = a[7] | 0; -+ var al7 = a7 & 0x1fff; -+ var ah7 = a7 >>> 13; -+ var a8 = a[8] | 0; -+ var al8 = a8 & 0x1fff; -+ var ah8 = a8 >>> 13; -+ var a9 = a[9] | 0; -+ var al9 = a9 & 0x1fff; -+ var ah9 = a9 >>> 13; -+ var b0 = b[0] | 0; -+ var bl0 = b0 & 0x1fff; -+ var bh0 = b0 >>> 13; -+ var b1 = b[1] | 0; -+ var bl1 = b1 & 0x1fff; -+ var bh1 = b1 >>> 13; -+ var b2 = b[2] | 0; -+ var bl2 = b2 & 0x1fff; -+ var bh2 = b2 >>> 13; -+ var b3 = b[3] | 0; -+ var bl3 = b3 & 0x1fff; -+ var bh3 = b3 >>> 13; -+ var b4 = b[4] | 0; -+ var bl4 = b4 & 0x1fff; -+ var bh4 = b4 >>> 13; -+ var b5 = b[5] | 0; -+ var bl5 = b5 & 0x1fff; -+ var bh5 = b5 >>> 13; -+ var b6 = b[6] | 0; -+ var bl6 = b6 & 0x1fff; -+ var bh6 = b6 >>> 13; -+ var b7 = b[7] | 0; -+ var bl7 = b7 & 0x1fff; -+ var bh7 = b7 >>> 13; -+ var b8 = b[8] | 0; -+ var bl8 = b8 & 0x1fff; -+ var bh8 = b8 >>> 13; -+ var b9 = b[9] | 0; -+ var bl9 = b9 & 0x1fff; -+ var bh9 = b9 >>> 13; -+ -+ out.negative = self.negative ^ num.negative; -+ out.length = 19; -+ /* k = 0 */ -+ lo = Math.imul(al0, bl0); -+ mid = Math.imul(al0, bh0); -+ mid = (mid + Math.imul(ah0, bl0)) | 0; -+ hi = Math.imul(ah0, bh0); -+ var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; -+ w0 &= 0x3ffffff; -+ /* k = 1 */ -+ lo = Math.imul(al1, bl0); -+ mid = Math.imul(al1, bh0); -+ mid = (mid + Math.imul(ah1, bl0)) | 0; -+ hi = Math.imul(ah1, bh0); -+ lo = (lo + Math.imul(al0, bl1)) | 0; -+ mid = (mid + Math.imul(al0, bh1)) | 0; -+ mid = (mid + Math.imul(ah0, bl1)) | 0; -+ hi = (hi + Math.imul(ah0, bh1)) | 0; -+ var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; -+ w1 &= 0x3ffffff; -+ /* k = 2 */ -+ lo = Math.imul(al2, bl0); -+ mid = Math.imul(al2, bh0); -+ mid = (mid + Math.imul(ah2, bl0)) | 0; -+ hi = Math.imul(ah2, bh0); -+ lo = (lo + Math.imul(al1, bl1)) | 0; -+ mid = (mid + Math.imul(al1, bh1)) | 0; -+ mid = (mid + Math.imul(ah1, bl1)) | 0; -+ hi = (hi + Math.imul(ah1, bh1)) | 0; -+ lo = (lo + Math.imul(al0, bl2)) | 0; -+ mid = (mid + Math.imul(al0, bh2)) | 0; -+ mid = (mid + Math.imul(ah0, bl2)) | 0; -+ hi = (hi + Math.imul(ah0, bh2)) | 0; -+ var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; -+ w2 &= 0x3ffffff; -+ /* k = 3 */ -+ lo = Math.imul(al3, bl0); -+ mid = Math.imul(al3, bh0); -+ mid = (mid + Math.imul(ah3, bl0)) | 0; -+ hi = Math.imul(ah3, bh0); -+ lo = (lo + Math.imul(al2, bl1)) | 0; -+ mid = (mid + Math.imul(al2, bh1)) | 0; -+ mid = (mid + Math.imul(ah2, bl1)) | 0; -+ hi = (hi + Math.imul(ah2, bh1)) | 0; -+ lo = (lo + Math.imul(al1, bl2)) | 0; -+ mid = (mid + Math.imul(al1, bh2)) | 0; -+ mid = (mid + Math.imul(ah1, bl2)) | 0; -+ hi = (hi + Math.imul(ah1, bh2)) | 0; -+ lo = (lo + Math.imul(al0, bl3)) | 0; -+ mid = (mid + Math.imul(al0, bh3)) | 0; -+ mid = (mid + Math.imul(ah0, bl3)) | 0; -+ hi = (hi + Math.imul(ah0, bh3)) | 0; -+ var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; -+ w3 &= 0x3ffffff; -+ /* k = 4 */ -+ lo = Math.imul(al4, bl0); -+ mid = Math.imul(al4, bh0); -+ mid = (mid + Math.imul(ah4, bl0)) | 0; -+ hi = Math.imul(ah4, bh0); -+ lo = (lo + Math.imul(al3, bl1)) | 0; -+ mid = (mid + Math.imul(al3, bh1)) | 0; -+ mid = (mid + Math.imul(ah3, bl1)) | 0; -+ hi = (hi + Math.imul(ah3, bh1)) | 0; -+ lo = (lo + Math.imul(al2, bl2)) | 0; -+ mid = (mid + Math.imul(al2, bh2)) | 0; -+ mid = (mid + Math.imul(ah2, bl2)) | 0; -+ hi = (hi + Math.imul(ah2, bh2)) | 0; -+ lo = (lo + Math.imul(al1, bl3)) | 0; -+ mid = (mid + Math.imul(al1, bh3)) | 0; -+ mid = (mid + Math.imul(ah1, bl3)) | 0; -+ hi = (hi + Math.imul(ah1, bh3)) | 0; -+ lo = (lo + Math.imul(al0, bl4)) | 0; -+ mid = (mid + Math.imul(al0, bh4)) | 0; -+ mid = (mid + Math.imul(ah0, bl4)) | 0; -+ hi = (hi + Math.imul(ah0, bh4)) | 0; -+ var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; -+ w4 &= 0x3ffffff; -+ /* k = 5 */ -+ lo = Math.imul(al5, bl0); -+ mid = Math.imul(al5, bh0); -+ mid = (mid + Math.imul(ah5, bl0)) | 0; -+ hi = Math.imul(ah5, bh0); -+ lo = (lo + Math.imul(al4, bl1)) | 0; -+ mid = (mid + Math.imul(al4, bh1)) | 0; -+ mid = (mid + Math.imul(ah4, bl1)) | 0; -+ hi = (hi + Math.imul(ah4, bh1)) | 0; -+ lo = (lo + Math.imul(al3, bl2)) | 0; -+ mid = (mid + Math.imul(al3, bh2)) | 0; -+ mid = (mid + Math.imul(ah3, bl2)) | 0; -+ hi = (hi + Math.imul(ah3, bh2)) | 0; -+ lo = (lo + Math.imul(al2, bl3)) | 0; -+ mid = (mid + Math.imul(al2, bh3)) | 0; -+ mid = (mid + Math.imul(ah2, bl3)) | 0; -+ hi = (hi + Math.imul(ah2, bh3)) | 0; -+ lo = (lo + Math.imul(al1, bl4)) | 0; -+ mid = (mid + Math.imul(al1, bh4)) | 0; -+ mid = (mid + Math.imul(ah1, bl4)) | 0; -+ hi = (hi + Math.imul(ah1, bh4)) | 0; -+ lo = (lo + Math.imul(al0, bl5)) | 0; -+ mid = (mid + Math.imul(al0, bh5)) | 0; -+ mid = (mid + Math.imul(ah0, bl5)) | 0; -+ hi = (hi + Math.imul(ah0, bh5)) | 0; -+ var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; -+ w5 &= 0x3ffffff; -+ /* k = 6 */ -+ lo = Math.imul(al6, bl0); -+ mid = Math.imul(al6, bh0); -+ mid = (mid + Math.imul(ah6, bl0)) | 0; -+ hi = Math.imul(ah6, bh0); -+ lo = (lo + Math.imul(al5, bl1)) | 0; -+ mid = (mid + Math.imul(al5, bh1)) | 0; -+ mid = (mid + Math.imul(ah5, bl1)) | 0; -+ hi = (hi + Math.imul(ah5, bh1)) | 0; -+ lo = (lo + Math.imul(al4, bl2)) | 0; -+ mid = (mid + Math.imul(al4, bh2)) | 0; -+ mid = (mid + Math.imul(ah4, bl2)) | 0; -+ hi = (hi + Math.imul(ah4, bh2)) | 0; -+ lo = (lo + Math.imul(al3, bl3)) | 0; -+ mid = (mid + Math.imul(al3, bh3)) | 0; -+ mid = (mid + Math.imul(ah3, bl3)) | 0; -+ hi = (hi + Math.imul(ah3, bh3)) | 0; -+ lo = (lo + Math.imul(al2, bl4)) | 0; -+ mid = (mid + Math.imul(al2, bh4)) | 0; -+ mid = (mid + Math.imul(ah2, bl4)) | 0; -+ hi = (hi + Math.imul(ah2, bh4)) | 0; -+ lo = (lo + Math.imul(al1, bl5)) | 0; -+ mid = (mid + Math.imul(al1, bh5)) | 0; -+ mid = (mid + Math.imul(ah1, bl5)) | 0; -+ hi = (hi + Math.imul(ah1, bh5)) | 0; -+ lo = (lo + Math.imul(al0, bl6)) | 0; -+ mid = (mid + Math.imul(al0, bh6)) | 0; -+ mid = (mid + Math.imul(ah0, bl6)) | 0; -+ hi = (hi + Math.imul(ah0, bh6)) | 0; -+ var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; -+ w6 &= 0x3ffffff; -+ /* k = 7 */ -+ lo = Math.imul(al7, bl0); -+ mid = Math.imul(al7, bh0); -+ mid = (mid + Math.imul(ah7, bl0)) | 0; -+ hi = Math.imul(ah7, bh0); -+ lo = (lo + Math.imul(al6, bl1)) | 0; -+ mid = (mid + Math.imul(al6, bh1)) | 0; -+ mid = (mid + Math.imul(ah6, bl1)) | 0; -+ hi = (hi + Math.imul(ah6, bh1)) | 0; -+ lo = (lo + Math.imul(al5, bl2)) | 0; -+ mid = (mid + Math.imul(al5, bh2)) | 0; -+ mid = (mid + Math.imul(ah5, bl2)) | 0; -+ hi = (hi + Math.imul(ah5, bh2)) | 0; -+ lo = (lo + Math.imul(al4, bl3)) | 0; -+ mid = (mid + Math.imul(al4, bh3)) | 0; -+ mid = (mid + Math.imul(ah4, bl3)) | 0; -+ hi = (hi + Math.imul(ah4, bh3)) | 0; -+ lo = (lo + Math.imul(al3, bl4)) | 0; -+ mid = (mid + Math.imul(al3, bh4)) | 0; -+ mid = (mid + Math.imul(ah3, bl4)) | 0; -+ hi = (hi + Math.imul(ah3, bh4)) | 0; -+ lo = (lo + Math.imul(al2, bl5)) | 0; -+ mid = (mid + Math.imul(al2, bh5)) | 0; -+ mid = (mid + Math.imul(ah2, bl5)) | 0; -+ hi = (hi + Math.imul(ah2, bh5)) | 0; -+ lo = (lo + Math.imul(al1, bl6)) | 0; -+ mid = (mid + Math.imul(al1, bh6)) | 0; -+ mid = (mid + Math.imul(ah1, bl6)) | 0; -+ hi = (hi + Math.imul(ah1, bh6)) | 0; -+ lo = (lo + Math.imul(al0, bl7)) | 0; -+ mid = (mid + Math.imul(al0, bh7)) | 0; -+ mid = (mid + Math.imul(ah0, bl7)) | 0; -+ hi = (hi + Math.imul(ah0, bh7)) | 0; -+ var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; -+ w7 &= 0x3ffffff; -+ /* k = 8 */ -+ lo = Math.imul(al8, bl0); -+ mid = Math.imul(al8, bh0); -+ mid = (mid + Math.imul(ah8, bl0)) | 0; -+ hi = Math.imul(ah8, bh0); -+ lo = (lo + Math.imul(al7, bl1)) | 0; -+ mid = (mid + Math.imul(al7, bh1)) | 0; -+ mid = (mid + Math.imul(ah7, bl1)) | 0; -+ hi = (hi + Math.imul(ah7, bh1)) | 0; -+ lo = (lo + Math.imul(al6, bl2)) | 0; -+ mid = (mid + Math.imul(al6, bh2)) | 0; -+ mid = (mid + Math.imul(ah6, bl2)) | 0; -+ hi = (hi + Math.imul(ah6, bh2)) | 0; -+ lo = (lo + Math.imul(al5, bl3)) | 0; -+ mid = (mid + Math.imul(al5, bh3)) | 0; -+ mid = (mid + Math.imul(ah5, bl3)) | 0; -+ hi = (hi + Math.imul(ah5, bh3)) | 0; -+ lo = (lo + Math.imul(al4, bl4)) | 0; -+ mid = (mid + Math.imul(al4, bh4)) | 0; -+ mid = (mid + Math.imul(ah4, bl4)) | 0; -+ hi = (hi + Math.imul(ah4, bh4)) | 0; -+ lo = (lo + Math.imul(al3, bl5)) | 0; -+ mid = (mid + Math.imul(al3, bh5)) | 0; -+ mid = (mid + Math.imul(ah3, bl5)) | 0; -+ hi = (hi + Math.imul(ah3, bh5)) | 0; -+ lo = (lo + Math.imul(al2, bl6)) | 0; -+ mid = (mid + Math.imul(al2, bh6)) | 0; -+ mid = (mid + Math.imul(ah2, bl6)) | 0; -+ hi = (hi + Math.imul(ah2, bh6)) | 0; -+ lo = (lo + Math.imul(al1, bl7)) | 0; -+ mid = (mid + Math.imul(al1, bh7)) | 0; -+ mid = (mid + Math.imul(ah1, bl7)) | 0; -+ hi = (hi + Math.imul(ah1, bh7)) | 0; -+ lo = (lo + Math.imul(al0, bl8)) | 0; -+ mid = (mid + Math.imul(al0, bh8)) | 0; -+ mid = (mid + Math.imul(ah0, bl8)) | 0; -+ hi = (hi + Math.imul(ah0, bh8)) | 0; -+ var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; -+ w8 &= 0x3ffffff; -+ /* k = 9 */ -+ lo = Math.imul(al9, bl0); -+ mid = Math.imul(al9, bh0); -+ mid = (mid + Math.imul(ah9, bl0)) | 0; -+ hi = Math.imul(ah9, bh0); -+ lo = (lo + Math.imul(al8, bl1)) | 0; -+ mid = (mid + Math.imul(al8, bh1)) | 0; -+ mid = (mid + Math.imul(ah8, bl1)) | 0; -+ hi = (hi + Math.imul(ah8, bh1)) | 0; -+ lo = (lo + Math.imul(al7, bl2)) | 0; -+ mid = (mid + Math.imul(al7, bh2)) | 0; -+ mid = (mid + Math.imul(ah7, bl2)) | 0; -+ hi = (hi + Math.imul(ah7, bh2)) | 0; -+ lo = (lo + Math.imul(al6, bl3)) | 0; -+ mid = (mid + Math.imul(al6, bh3)) | 0; -+ mid = (mid + Math.imul(ah6, bl3)) | 0; -+ hi = (hi + Math.imul(ah6, bh3)) | 0; -+ lo = (lo + Math.imul(al5, bl4)) | 0; -+ mid = (mid + Math.imul(al5, bh4)) | 0; -+ mid = (mid + Math.imul(ah5, bl4)) | 0; -+ hi = (hi + Math.imul(ah5, bh4)) | 0; -+ lo = (lo + Math.imul(al4, bl5)) | 0; -+ mid = (mid + Math.imul(al4, bh5)) | 0; -+ mid = (mid + Math.imul(ah4, bl5)) | 0; -+ hi = (hi + Math.imul(ah4, bh5)) | 0; -+ lo = (lo + Math.imul(al3, bl6)) | 0; -+ mid = (mid + Math.imul(al3, bh6)) | 0; -+ mid = (mid + Math.imul(ah3, bl6)) | 0; -+ hi = (hi + Math.imul(ah3, bh6)) | 0; -+ lo = (lo + Math.imul(al2, bl7)) | 0; -+ mid = (mid + Math.imul(al2, bh7)) | 0; -+ mid = (mid + Math.imul(ah2, bl7)) | 0; -+ hi = (hi + Math.imul(ah2, bh7)) | 0; -+ lo = (lo + Math.imul(al1, bl8)) | 0; -+ mid = (mid + Math.imul(al1, bh8)) | 0; -+ mid = (mid + Math.imul(ah1, bl8)) | 0; -+ hi = (hi + Math.imul(ah1, bh8)) | 0; -+ lo = (lo + Math.imul(al0, bl9)) | 0; -+ mid = (mid + Math.imul(al0, bh9)) | 0; -+ mid = (mid + Math.imul(ah0, bl9)) | 0; -+ hi = (hi + Math.imul(ah0, bh9)) | 0; -+ var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; -+ w9 &= 0x3ffffff; -+ /* k = 10 */ -+ lo = Math.imul(al9, bl1); -+ mid = Math.imul(al9, bh1); -+ mid = (mid + Math.imul(ah9, bl1)) | 0; -+ hi = Math.imul(ah9, bh1); -+ lo = (lo + Math.imul(al8, bl2)) | 0; -+ mid = (mid + Math.imul(al8, bh2)) | 0; -+ mid = (mid + Math.imul(ah8, bl2)) | 0; -+ hi = (hi + Math.imul(ah8, bh2)) | 0; -+ lo = (lo + Math.imul(al7, bl3)) | 0; -+ mid = (mid + Math.imul(al7, bh3)) | 0; -+ mid = (mid + Math.imul(ah7, bl3)) | 0; -+ hi = (hi + Math.imul(ah7, bh3)) | 0; -+ lo = (lo + Math.imul(al6, bl4)) | 0; -+ mid = (mid + Math.imul(al6, bh4)) | 0; -+ mid = (mid + Math.imul(ah6, bl4)) | 0; -+ hi = (hi + Math.imul(ah6, bh4)) | 0; -+ lo = (lo + Math.imul(al5, bl5)) | 0; -+ mid = (mid + Math.imul(al5, bh5)) | 0; -+ mid = (mid + Math.imul(ah5, bl5)) | 0; -+ hi = (hi + Math.imul(ah5, bh5)) | 0; -+ lo = (lo + Math.imul(al4, bl6)) | 0; -+ mid = (mid + Math.imul(al4, bh6)) | 0; -+ mid = (mid + Math.imul(ah4, bl6)) | 0; -+ hi = (hi + Math.imul(ah4, bh6)) | 0; -+ lo = (lo + Math.imul(al3, bl7)) | 0; -+ mid = (mid + Math.imul(al3, bh7)) | 0; -+ mid = (mid + Math.imul(ah3, bl7)) | 0; -+ hi = (hi + Math.imul(ah3, bh7)) | 0; -+ lo = (lo + Math.imul(al2, bl8)) | 0; -+ mid = (mid + Math.imul(al2, bh8)) | 0; -+ mid = (mid + Math.imul(ah2, bl8)) | 0; -+ hi = (hi + Math.imul(ah2, bh8)) | 0; -+ lo = (lo + Math.imul(al1, bl9)) | 0; -+ mid = (mid + Math.imul(al1, bh9)) | 0; -+ mid = (mid + Math.imul(ah1, bl9)) | 0; -+ hi = (hi + Math.imul(ah1, bh9)) | 0; -+ var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; -+ w10 &= 0x3ffffff; -+ /* k = 11 */ -+ lo = Math.imul(al9, bl2); -+ mid = Math.imul(al9, bh2); -+ mid = (mid + Math.imul(ah9, bl2)) | 0; -+ hi = Math.imul(ah9, bh2); -+ lo = (lo + Math.imul(al8, bl3)) | 0; -+ mid = (mid + Math.imul(al8, bh3)) | 0; -+ mid = (mid + Math.imul(ah8, bl3)) | 0; -+ hi = (hi + Math.imul(ah8, bh3)) | 0; -+ lo = (lo + Math.imul(al7, bl4)) | 0; -+ mid = (mid + Math.imul(al7, bh4)) | 0; -+ mid = (mid + Math.imul(ah7, bl4)) | 0; -+ hi = (hi + Math.imul(ah7, bh4)) | 0; -+ lo = (lo + Math.imul(al6, bl5)) | 0; -+ mid = (mid + Math.imul(al6, bh5)) | 0; -+ mid = (mid + Math.imul(ah6, bl5)) | 0; -+ hi = (hi + Math.imul(ah6, bh5)) | 0; -+ lo = (lo + Math.imul(al5, bl6)) | 0; -+ mid = (mid + Math.imul(al5, bh6)) | 0; -+ mid = (mid + Math.imul(ah5, bl6)) | 0; -+ hi = (hi + Math.imul(ah5, bh6)) | 0; -+ lo = (lo + Math.imul(al4, bl7)) | 0; -+ mid = (mid + Math.imul(al4, bh7)) | 0; -+ mid = (mid + Math.imul(ah4, bl7)) | 0; -+ hi = (hi + Math.imul(ah4, bh7)) | 0; -+ lo = (lo + Math.imul(al3, bl8)) | 0; -+ mid = (mid + Math.imul(al3, bh8)) | 0; -+ mid = (mid + Math.imul(ah3, bl8)) | 0; -+ hi = (hi + Math.imul(ah3, bh8)) | 0; -+ lo = (lo + Math.imul(al2, bl9)) | 0; -+ mid = (mid + Math.imul(al2, bh9)) | 0; -+ mid = (mid + Math.imul(ah2, bl9)) | 0; -+ hi = (hi + Math.imul(ah2, bh9)) | 0; -+ var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; -+ w11 &= 0x3ffffff; -+ /* k = 12 */ -+ lo = Math.imul(al9, bl3); -+ mid = Math.imul(al9, bh3); -+ mid = (mid + Math.imul(ah9, bl3)) | 0; -+ hi = Math.imul(ah9, bh3); -+ lo = (lo + Math.imul(al8, bl4)) | 0; -+ mid = (mid + Math.imul(al8, bh4)) | 0; -+ mid = (mid + Math.imul(ah8, bl4)) | 0; -+ hi = (hi + Math.imul(ah8, bh4)) | 0; -+ lo = (lo + Math.imul(al7, bl5)) | 0; -+ mid = (mid + Math.imul(al7, bh5)) | 0; -+ mid = (mid + Math.imul(ah7, bl5)) | 0; -+ hi = (hi + Math.imul(ah7, bh5)) | 0; -+ lo = (lo + Math.imul(al6, bl6)) | 0; -+ mid = (mid + Math.imul(al6, bh6)) | 0; -+ mid = (mid + Math.imul(ah6, bl6)) | 0; -+ hi = (hi + Math.imul(ah6, bh6)) | 0; -+ lo = (lo + Math.imul(al5, bl7)) | 0; -+ mid = (mid + Math.imul(al5, bh7)) | 0; -+ mid = (mid + Math.imul(ah5, bl7)) | 0; -+ hi = (hi + Math.imul(ah5, bh7)) | 0; -+ lo = (lo + Math.imul(al4, bl8)) | 0; -+ mid = (mid + Math.imul(al4, bh8)) | 0; -+ mid = (mid + Math.imul(ah4, bl8)) | 0; -+ hi = (hi + Math.imul(ah4, bh8)) | 0; -+ lo = (lo + Math.imul(al3, bl9)) | 0; -+ mid = (mid + Math.imul(al3, bh9)) | 0; -+ mid = (mid + Math.imul(ah3, bl9)) | 0; -+ hi = (hi + Math.imul(ah3, bh9)) | 0; -+ var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; -+ w12 &= 0x3ffffff; -+ /* k = 13 */ -+ lo = Math.imul(al9, bl4); -+ mid = Math.imul(al9, bh4); -+ mid = (mid + Math.imul(ah9, bl4)) | 0; -+ hi = Math.imul(ah9, bh4); -+ lo = (lo + Math.imul(al8, bl5)) | 0; -+ mid = (mid + Math.imul(al8, bh5)) | 0; -+ mid = (mid + Math.imul(ah8, bl5)) | 0; -+ hi = (hi + Math.imul(ah8, bh5)) | 0; -+ lo = (lo + Math.imul(al7, bl6)) | 0; -+ mid = (mid + Math.imul(al7, bh6)) | 0; -+ mid = (mid + Math.imul(ah7, bl6)) | 0; -+ hi = (hi + Math.imul(ah7, bh6)) | 0; -+ lo = (lo + Math.imul(al6, bl7)) | 0; -+ mid = (mid + Math.imul(al6, bh7)) | 0; -+ mid = (mid + Math.imul(ah6, bl7)) | 0; -+ hi = (hi + Math.imul(ah6, bh7)) | 0; -+ lo = (lo + Math.imul(al5, bl8)) | 0; -+ mid = (mid + Math.imul(al5, bh8)) | 0; -+ mid = (mid + Math.imul(ah5, bl8)) | 0; -+ hi = (hi + Math.imul(ah5, bh8)) | 0; -+ lo = (lo + Math.imul(al4, bl9)) | 0; -+ mid = (mid + Math.imul(al4, bh9)) | 0; -+ mid = (mid + Math.imul(ah4, bl9)) | 0; -+ hi = (hi + Math.imul(ah4, bh9)) | 0; -+ var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; -+ w13 &= 0x3ffffff; -+ /* k = 14 */ -+ lo = Math.imul(al9, bl5); -+ mid = Math.imul(al9, bh5); -+ mid = (mid + Math.imul(ah9, bl5)) | 0; -+ hi = Math.imul(ah9, bh5); -+ lo = (lo + Math.imul(al8, bl6)) | 0; -+ mid = (mid + Math.imul(al8, bh6)) | 0; -+ mid = (mid + Math.imul(ah8, bl6)) | 0; -+ hi = (hi + Math.imul(ah8, bh6)) | 0; -+ lo = (lo + Math.imul(al7, bl7)) | 0; -+ mid = (mid + Math.imul(al7, bh7)) | 0; -+ mid = (mid + Math.imul(ah7, bl7)) | 0; -+ hi = (hi + Math.imul(ah7, bh7)) | 0; -+ lo = (lo + Math.imul(al6, bl8)) | 0; -+ mid = (mid + Math.imul(al6, bh8)) | 0; -+ mid = (mid + Math.imul(ah6, bl8)) | 0; -+ hi = (hi + Math.imul(ah6, bh8)) | 0; -+ lo = (lo + Math.imul(al5, bl9)) | 0; -+ mid = (mid + Math.imul(al5, bh9)) | 0; -+ mid = (mid + Math.imul(ah5, bl9)) | 0; -+ hi = (hi + Math.imul(ah5, bh9)) | 0; -+ var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; -+ w14 &= 0x3ffffff; -+ /* k = 15 */ -+ lo = Math.imul(al9, bl6); -+ mid = Math.imul(al9, bh6); -+ mid = (mid + Math.imul(ah9, bl6)) | 0; -+ hi = Math.imul(ah9, bh6); -+ lo = (lo + Math.imul(al8, bl7)) | 0; -+ mid = (mid + Math.imul(al8, bh7)) | 0; -+ mid = (mid + Math.imul(ah8, bl7)) | 0; -+ hi = (hi + Math.imul(ah8, bh7)) | 0; -+ lo = (lo + Math.imul(al7, bl8)) | 0; -+ mid = (mid + Math.imul(al7, bh8)) | 0; -+ mid = (mid + Math.imul(ah7, bl8)) | 0; -+ hi = (hi + Math.imul(ah7, bh8)) | 0; -+ lo = (lo + Math.imul(al6, bl9)) | 0; -+ mid = (mid + Math.imul(al6, bh9)) | 0; -+ mid = (mid + Math.imul(ah6, bl9)) | 0; -+ hi = (hi + Math.imul(ah6, bh9)) | 0; -+ var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; -+ w15 &= 0x3ffffff; -+ /* k = 16 */ -+ lo = Math.imul(al9, bl7); -+ mid = Math.imul(al9, bh7); -+ mid = (mid + Math.imul(ah9, bl7)) | 0; -+ hi = Math.imul(ah9, bh7); -+ lo = (lo + Math.imul(al8, bl8)) | 0; -+ mid = (mid + Math.imul(al8, bh8)) | 0; -+ mid = (mid + Math.imul(ah8, bl8)) | 0; -+ hi = (hi + Math.imul(ah8, bh8)) | 0; -+ lo = (lo + Math.imul(al7, bl9)) | 0; -+ mid = (mid + Math.imul(al7, bh9)) | 0; -+ mid = (mid + Math.imul(ah7, bl9)) | 0; -+ hi = (hi + Math.imul(ah7, bh9)) | 0; -+ var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; -+ w16 &= 0x3ffffff; -+ /* k = 17 */ -+ lo = Math.imul(al9, bl8); -+ mid = Math.imul(al9, bh8); -+ mid = (mid + Math.imul(ah9, bl8)) | 0; -+ hi = Math.imul(ah9, bh8); -+ lo = (lo + Math.imul(al8, bl9)) | 0; -+ mid = (mid + Math.imul(al8, bh9)) | 0; -+ mid = (mid + Math.imul(ah8, bl9)) | 0; -+ hi = (hi + Math.imul(ah8, bh9)) | 0; -+ var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; -+ w17 &= 0x3ffffff; -+ /* k = 18 */ -+ lo = Math.imul(al9, bl9); -+ mid = Math.imul(al9, bh9); -+ mid = (mid + Math.imul(ah9, bl9)) | 0; -+ hi = Math.imul(ah9, bh9); -+ var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; -+ c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; -+ w18 &= 0x3ffffff; -+ o[0] = w0; -+ o[1] = w1; -+ o[2] = w2; -+ o[3] = w3; -+ o[4] = w4; -+ o[5] = w5; -+ o[6] = w6; -+ o[7] = w7; -+ o[8] = w8; -+ o[9] = w9; -+ o[10] = w10; -+ o[11] = w11; -+ o[12] = w12; -+ o[13] = w13; -+ o[14] = w14; -+ o[15] = w15; -+ o[16] = w16; -+ o[17] = w17; -+ o[18] = w18; -+ if (c !== 0) { -+ o[19] = c; -+ out.length++; -+ } -+ return out; -+ }; -+ -+ // Polyfill comb -+ if (!Math.imul) { -+ comb10MulTo = smallMulTo; -+ } -+ -+ function bigMulTo (self, num, out) { -+ out.negative = num.negative ^ self.negative; -+ out.length = self.length + num.length; -+ -+ var carry = 0; -+ var hncarry = 0; -+ for (var k = 0; k < out.length - 1; k++) { -+ // Sum all words with the same `i + j = k` and accumulate `ncarry`, -+ // note that ncarry could be >= 0x3ffffff -+ var ncarry = hncarry; -+ hncarry = 0; -+ var rword = carry & 0x3ffffff; -+ var maxJ = Math.min(k, num.length - 1); -+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { -+ var i = k - j; -+ var a = self.words[i] | 0; -+ var b = num.words[j] | 0; -+ var r = a * b; -+ -+ var lo = r & 0x3ffffff; -+ ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; -+ lo = (lo + rword) | 0; -+ rword = lo & 0x3ffffff; -+ ncarry = (ncarry + (lo >>> 26)) | 0; -+ -+ hncarry += ncarry >>> 26; -+ ncarry &= 0x3ffffff; -+ } -+ out.words[k] = rword; -+ carry = ncarry; -+ ncarry = hncarry; -+ } -+ if (carry !== 0) { -+ out.words[k] = carry; -+ } else { -+ out.length--; -+ } -+ -+ return out.strip(); -+ } -+ -+ function jumboMulTo (self, num, out) { -+ var fftm = new FFTM(); -+ return fftm.mulp(self, num, out); -+ } -+ -+ BN.prototype.mulTo = function mulTo (num, out) { -+ var res; -+ var len = this.length + num.length; -+ if (this.length === 10 && num.length === 10) { -+ res = comb10MulTo(this, num, out); -+ } else if (len < 63) { -+ res = smallMulTo(this, num, out); -+ } else if (len < 1024) { -+ res = bigMulTo(this, num, out); -+ } else { -+ res = jumboMulTo(this, num, out); -+ } -+ -+ return res; -+ }; -+ -+ // Cooley-Tukey algorithm for FFT -+ // slightly revisited to rely on looping instead of recursion -+ -+ function FFTM (x, y) { -+ this.x = x; -+ this.y = y; -+ } -+ -+ FFTM.prototype.makeRBT = function makeRBT (N) { -+ var t = new Array(N); -+ var l = BN.prototype._countBits(N) - 1; -+ for (var i = 0; i < N; i++) { -+ t[i] = this.revBin(i, l, N); -+ } -+ -+ return t; -+ }; -+ -+ // Returns binary-reversed representation of `x` -+ FFTM.prototype.revBin = function revBin (x, l, N) { -+ if (x === 0 || x === N - 1) return x; -+ -+ var rb = 0; -+ for (var i = 0; i < l; i++) { -+ rb |= (x & 1) << (l - i - 1); -+ x >>= 1; -+ } -+ -+ return rb; -+ }; -+ -+ // Performs "tweedling" phase, therefore 'emulating' -+ // behaviour of the recursive algorithm -+ FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { -+ for (var i = 0; i < N; i++) { -+ rtws[i] = rws[rbt[i]]; -+ itws[i] = iws[rbt[i]]; -+ } -+ }; -+ -+ FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { -+ this.permute(rbt, rws, iws, rtws, itws, N); -+ -+ for (var s = 1; s < N; s <<= 1) { -+ var l = s << 1; -+ -+ var rtwdf = Math.cos(2 * Math.PI / l); -+ var itwdf = Math.sin(2 * Math.PI / l); -+ -+ for (var p = 0; p < N; p += l) { -+ var rtwdf_ = rtwdf; -+ var itwdf_ = itwdf; -+ -+ for (var j = 0; j < s; j++) { -+ var re = rtws[p + j]; -+ var ie = itws[p + j]; -+ -+ var ro = rtws[p + j + s]; -+ var io = itws[p + j + s]; -+ -+ var rx = rtwdf_ * ro - itwdf_ * io; -+ -+ io = rtwdf_ * io + itwdf_ * ro; -+ ro = rx; -+ -+ rtws[p + j] = re + ro; -+ itws[p + j] = ie + io; -+ -+ rtws[p + j + s] = re - ro; -+ itws[p + j + s] = ie - io; -+ -+ /* jshint maxdepth : false */ -+ if (j !== l) { -+ rx = rtwdf * rtwdf_ - itwdf * itwdf_; -+ -+ itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; -+ rtwdf_ = rx; -+ } -+ } -+ } -+ } -+ }; -+ -+ FFTM.prototype.guessLen13b = function guessLen13b (n, m) { -+ var N = Math.max(m, n) | 1; -+ var odd = N & 1; -+ var i = 0; -+ for (N = N / 2 | 0; N; N = N >>> 1) { -+ i++; -+ } -+ -+ return 1 << i + 1 + odd; -+ }; -+ -+ FFTM.prototype.conjugate = function conjugate (rws, iws, N) { -+ if (N <= 1) return; -+ -+ for (var i = 0; i < N / 2; i++) { -+ var t = rws[i]; -+ -+ rws[i] = rws[N - i - 1]; -+ rws[N - i - 1] = t; -+ -+ t = iws[i]; -+ -+ iws[i] = -iws[N - i - 1]; -+ iws[N - i - 1] = -t; -+ } -+ }; -+ -+ FFTM.prototype.normalize13b = function normalize13b (ws, N) { -+ var carry = 0; -+ for (var i = 0; i < N / 2; i++) { -+ var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + -+ Math.round(ws[2 * i] / N) + -+ carry; -+ -+ ws[i] = w & 0x3ffffff; -+ -+ if (w < 0x4000000) { -+ carry = 0; -+ } else { -+ carry = w / 0x4000000 | 0; -+ } -+ } -+ -+ return ws; -+ }; -+ -+ FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { -+ var carry = 0; -+ for (var i = 0; i < len; i++) { -+ carry = carry + (ws[i] | 0); -+ -+ rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; -+ rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; -+ } -+ -+ // Pad with zeroes -+ for (i = 2 * len; i < N; ++i) { -+ rws[i] = 0; -+ } -+ -+ assert(carry === 0); -+ assert((carry & ~0x1fff) === 0); -+ }; -+ -+ FFTM.prototype.stub = function stub (N) { -+ var ph = new Array(N); -+ for (var i = 0; i < N; i++) { -+ ph[i] = 0; -+ } -+ -+ return ph; -+ }; -+ -+ FFTM.prototype.mulp = function mulp (x, y, out) { -+ var N = 2 * this.guessLen13b(x.length, y.length); -+ -+ var rbt = this.makeRBT(N); -+ -+ var _ = this.stub(N); -+ -+ var rws = new Array(N); -+ var rwst = new Array(N); -+ var iwst = new Array(N); -+ -+ var nrws = new Array(N); -+ var nrwst = new Array(N); -+ var niwst = new Array(N); -+ -+ var rmws = out.words; -+ rmws.length = N; -+ -+ this.convert13b(x.words, x.length, rws, N); -+ this.convert13b(y.words, y.length, nrws, N); -+ -+ this.transform(rws, _, rwst, iwst, N, rbt); -+ this.transform(nrws, _, nrwst, niwst, N, rbt); -+ -+ for (var i = 0; i < N; i++) { -+ var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; -+ iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; -+ rwst[i] = rx; -+ } -+ -+ this.conjugate(rwst, iwst, N); -+ this.transform(rwst, iwst, rmws, _, N, rbt); -+ this.conjugate(rmws, _, N); -+ this.normalize13b(rmws, N); -+ -+ out.negative = x.negative ^ y.negative; -+ out.length = x.length + y.length; -+ return out.strip(); -+ }; -+ -+ // Multiply `this` by `num` -+ BN.prototype.mul = function mul (num) { -+ var out = new BN(null); -+ out.words = new Array(this.length + num.length); -+ return this.mulTo(num, out); -+ }; -+ -+ // Multiply employing FFT -+ BN.prototype.mulf = function mulf (num) { -+ var out = new BN(null); -+ out.words = new Array(this.length + num.length); -+ return jumboMulTo(this, num, out); -+ }; -+ -+ // In-place Multiplication -+ BN.prototype.imul = function imul (num) { -+ return this.clone().mulTo(num, this); -+ }; -+ -+ BN.prototype.imuln = function imuln (num) { -+ assert(typeof num === 'number'); -+ assert(num < 0x4000000); -+ -+ // Carry -+ var carry = 0; -+ for (var i = 0; i < this.length; i++) { -+ var w = (this.words[i] | 0) * num; -+ var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); -+ carry >>= 26; -+ carry += (w / 0x4000000) | 0; -+ // NOTE: lo is 27bit maximum -+ carry += lo >>> 26; -+ this.words[i] = lo & 0x3ffffff; -+ } -+ -+ if (carry !== 0) { -+ this.words[i] = carry; -+ this.length++; -+ } -+ -+ return this; -+ }; -+ -+ BN.prototype.muln = function muln (num) { -+ return this.clone().imuln(num); -+ }; -+ -+ // `this` * `this` -+ BN.prototype.sqr = function sqr () { -+ return this.mul(this); -+ }; -+ -+ // `this` * `this` in-place -+ BN.prototype.isqr = function isqr () { -+ return this.imul(this.clone()); -+ }; -+ -+ // Math.pow(`this`, `num`) -+ BN.prototype.pow = function pow (num) { -+ var w = toBitArray(num); -+ if (w.length === 0) return new BN(1); -+ -+ // Skip leading zeroes -+ var res = this; -+ for (var i = 0; i < w.length; i++, res = res.sqr()) { -+ if (w[i] !== 0) break; -+ } -+ -+ if (++i < w.length) { -+ for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { -+ if (w[i] === 0) continue; -+ -+ res = res.mul(q); -+ } -+ } -+ -+ return res; -+ }; -+ -+ // Shift-left in-place -+ BN.prototype.iushln = function iushln (bits) { -+ assert(typeof bits === 'number' && bits >= 0); -+ var r = bits % 26; -+ var s = (bits - r) / 26; -+ var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); -+ var i; -+ -+ if (r !== 0) { -+ var carry = 0; -+ -+ for (i = 0; i < this.length; i++) { -+ var newCarry = this.words[i] & carryMask; -+ var c = ((this.words[i] | 0) - newCarry) << r; -+ this.words[i] = c | carry; -+ carry = newCarry >>> (26 - r); -+ } -+ -+ if (carry) { -+ this.words[i] = carry; -+ this.length++; -+ } -+ } -+ -+ if (s !== 0) { -+ for (i = this.length - 1; i >= 0; i--) { -+ this.words[i + s] = this.words[i]; -+ } -+ -+ for (i = 0; i < s; i++) { -+ this.words[i] = 0; -+ } -+ -+ this.length += s; -+ } -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.ishln = function ishln (bits) { -+ // TODO(indutny): implement me -+ assert(this.negative === 0); -+ return this.iushln(bits); -+ }; -+ -+ // Shift-right in-place -+ // NOTE: `hint` is a lowest bit before trailing zeroes -+ // NOTE: if `extended` is present - it will be filled with destroyed bits -+ BN.prototype.iushrn = function iushrn (bits, hint, extended) { -+ assert(typeof bits === 'number' && bits >= 0); -+ var h; -+ if (hint) { -+ h = (hint - (hint % 26)) / 26; -+ } else { -+ h = 0; -+ } -+ -+ var r = bits % 26; -+ var s = Math.min((bits - r) / 26, this.length); -+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); -+ var maskedWords = extended; -+ -+ h -= s; -+ h = Math.max(0, h); -+ -+ // Extended mode, copy masked part -+ if (maskedWords) { -+ for (var i = 0; i < s; i++) { -+ maskedWords.words[i] = this.words[i]; -+ } -+ maskedWords.length = s; -+ } -+ -+ if (s === 0) { -+ // No-op, we should not move anything at all -+ } else if (this.length > s) { -+ this.length -= s; -+ for (i = 0; i < this.length; i++) { -+ this.words[i] = this.words[i + s]; -+ } -+ } else { -+ this.words[0] = 0; -+ this.length = 1; -+ } -+ -+ var carry = 0; -+ for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { -+ var word = this.words[i] | 0; -+ this.words[i] = (carry << (26 - r)) | (word >>> r); -+ carry = word & mask; -+ } -+ -+ // Push carried bits as a mask -+ if (maskedWords && carry !== 0) { -+ maskedWords.words[maskedWords.length++] = carry; -+ } -+ -+ if (this.length === 0) { -+ this.words[0] = 0; -+ this.length = 1; -+ } -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.ishrn = function ishrn (bits, hint, extended) { -+ // TODO(indutny): implement me -+ assert(this.negative === 0); -+ return this.iushrn(bits, hint, extended); -+ }; -+ -+ // Shift-left -+ BN.prototype.shln = function shln (bits) { -+ return this.clone().ishln(bits); -+ }; -+ -+ BN.prototype.ushln = function ushln (bits) { -+ return this.clone().iushln(bits); -+ }; -+ -+ // Shift-right -+ BN.prototype.shrn = function shrn (bits) { -+ return this.clone().ishrn(bits); -+ }; -+ -+ BN.prototype.ushrn = function ushrn (bits) { -+ return this.clone().iushrn(bits); -+ }; -+ -+ // Test if n bit is set -+ BN.prototype.testn = function testn (bit) { -+ assert(typeof bit === 'number' && bit >= 0); -+ var r = bit % 26; -+ var s = (bit - r) / 26; -+ var q = 1 << r; -+ -+ // Fast case: bit is much higher than all existing words -+ if (this.length <= s) return false; -+ -+ // Check bit and return -+ var w = this.words[s]; -+ -+ return !!(w & q); -+ }; -+ -+ // Return only lowers bits of number (in-place) -+ BN.prototype.imaskn = function imaskn (bits) { -+ assert(typeof bits === 'number' && bits >= 0); -+ var r = bits % 26; -+ var s = (bits - r) / 26; -+ -+ assert(this.negative === 0, 'imaskn works only with positive numbers'); -+ -+ if (this.length <= s) { -+ return this; -+ } -+ -+ if (r !== 0) { -+ s++; -+ } -+ this.length = Math.min(s, this.length); -+ -+ if (r !== 0) { -+ var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); -+ this.words[this.length - 1] &= mask; -+ } -+ -+ return this.strip(); -+ }; -+ -+ // Return only lowers bits of number -+ BN.prototype.maskn = function maskn (bits) { -+ return this.clone().imaskn(bits); -+ }; -+ -+ // Add plain number `num` to `this` -+ BN.prototype.iaddn = function iaddn (num) { -+ assert(typeof num === 'number'); -+ assert(num < 0x4000000); -+ if (num < 0) return this.isubn(-num); -+ -+ // Possible sign change -+ if (this.negative !== 0) { -+ if (this.length === 1 && (this.words[0] | 0) < num) { -+ this.words[0] = num - (this.words[0] | 0); -+ this.negative = 0; -+ return this; -+ } -+ -+ this.negative = 0; -+ this.isubn(num); -+ this.negative = 1; -+ return this; -+ } -+ -+ // Add without checks -+ return this._iaddn(num); -+ }; -+ -+ BN.prototype._iaddn = function _iaddn (num) { -+ this.words[0] += num; -+ -+ // Carry -+ for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { -+ this.words[i] -= 0x4000000; -+ if (i === this.length - 1) { -+ this.words[i + 1] = 1; -+ } else { -+ this.words[i + 1]++; -+ } -+ } -+ this.length = Math.max(this.length, i + 1); -+ -+ return this; -+ }; -+ -+ // Subtract plain number `num` from `this` -+ BN.prototype.isubn = function isubn (num) { -+ assert(typeof num === 'number'); -+ assert(num < 0x4000000); -+ if (num < 0) return this.iaddn(-num); -+ -+ if (this.negative !== 0) { -+ this.negative = 0; -+ this.iaddn(num); -+ this.negative = 1; -+ return this; -+ } -+ -+ this.words[0] -= num; -+ -+ if (this.length === 1 && this.words[0] < 0) { -+ this.words[0] = -this.words[0]; -+ this.negative = 1; -+ } else { -+ // Carry -+ for (var i = 0; i < this.length && this.words[i] < 0; i++) { -+ this.words[i] += 0x4000000; -+ this.words[i + 1] -= 1; -+ } -+ } -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.addn = function addn (num) { -+ return this.clone().iaddn(num); -+ }; -+ -+ BN.prototype.subn = function subn (num) { -+ return this.clone().isubn(num); -+ }; -+ -+ BN.prototype.iabs = function iabs () { -+ this.negative = 0; -+ -+ return this; -+ }; -+ -+ BN.prototype.abs = function abs () { -+ return this.clone().iabs(); -+ }; -+ -+ BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { -+ var len = num.length + shift; -+ var i; -+ -+ this._expand(len); -+ -+ var w; -+ var carry = 0; -+ for (i = 0; i < num.length; i++) { -+ w = (this.words[i + shift] | 0) + carry; -+ var right = (num.words[i] | 0) * mul; -+ w -= right & 0x3ffffff; -+ carry = (w >> 26) - ((right / 0x4000000) | 0); -+ this.words[i + shift] = w & 0x3ffffff; -+ } -+ for (; i < this.length - shift; i++) { -+ w = (this.words[i + shift] | 0) + carry; -+ carry = w >> 26; -+ this.words[i + shift] = w & 0x3ffffff; -+ } -+ -+ if (carry === 0) return this.strip(); -+ -+ // Subtraction overflow -+ assert(carry === -1); -+ carry = 0; -+ for (i = 0; i < this.length; i++) { -+ w = -(this.words[i] | 0) + carry; -+ carry = w >> 26; -+ this.words[i] = w & 0x3ffffff; -+ } -+ this.negative = 1; -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype._wordDiv = function _wordDiv (num, mode) { -+ var shift = this.length - num.length; -+ -+ var a = this.clone(); -+ var b = num; -+ -+ // Normalize -+ var bhi = b.words[b.length - 1] | 0; -+ var bhiBits = this._countBits(bhi); -+ shift = 26 - bhiBits; -+ if (shift !== 0) { -+ b = b.ushln(shift); -+ a.iushln(shift); -+ bhi = b.words[b.length - 1] | 0; -+ } -+ -+ // Initialize quotient -+ var m = a.length - b.length; -+ var q; -+ -+ if (mode !== 'mod') { -+ q = new BN(null); -+ q.length = m + 1; -+ q.words = new Array(q.length); -+ for (var i = 0; i < q.length; i++) { -+ q.words[i] = 0; -+ } -+ } -+ -+ var diff = a.clone()._ishlnsubmul(b, 1, m); -+ if (diff.negative === 0) { -+ a = diff; -+ if (q) { -+ q.words[m] = 1; -+ } -+ } -+ -+ for (var j = m - 1; j >= 0; j--) { -+ var qj = (a.words[b.length + j] | 0) * 0x4000000 + -+ (a.words[b.length + j - 1] | 0); -+ -+ // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max -+ // (0x7ffffff) -+ qj = Math.min((qj / bhi) | 0, 0x3ffffff); -+ -+ a._ishlnsubmul(b, qj, j); -+ while (a.negative !== 0) { -+ qj--; -+ a.negative = 0; -+ a._ishlnsubmul(b, 1, j); -+ if (!a.isZero()) { -+ a.negative ^= 1; -+ } -+ } -+ if (q) { -+ q.words[j] = qj; -+ } -+ } -+ if (q) { -+ q.strip(); -+ } -+ a.strip(); -+ -+ // Denormalize -+ if (mode !== 'div' && shift !== 0) { -+ a.iushrn(shift); -+ } -+ -+ return { -+ div: q || null, -+ mod: a -+ }; -+ }; -+ -+ // NOTE: 1) `mode` can be set to `mod` to request mod only, -+ // to `div` to request div only, or be absent to -+ // request both div & mod -+ // 2) `positive` is true if unsigned mod is requested -+ BN.prototype.divmod = function divmod (num, mode, positive) { -+ assert(!num.isZero()); -+ -+ if (this.isZero()) { -+ return { -+ div: new BN(0), -+ mod: new BN(0) -+ }; -+ } -+ -+ var div, mod, res; -+ if (this.negative !== 0 && num.negative === 0) { -+ res = this.neg().divmod(num, mode); -+ -+ if (mode !== 'mod') { -+ div = res.div.neg(); -+ } -+ -+ if (mode !== 'div') { -+ mod = res.mod.neg(); -+ if (positive && mod.negative !== 0) { -+ mod.iadd(num); -+ } -+ } -+ -+ return { -+ div: div, -+ mod: mod -+ }; -+ } -+ -+ if (this.negative === 0 && num.negative !== 0) { -+ res = this.divmod(num.neg(), mode); -+ -+ if (mode !== 'mod') { -+ div = res.div.neg(); -+ } -+ -+ return { -+ div: div, -+ mod: res.mod -+ }; -+ } -+ -+ if ((this.negative & num.negative) !== 0) { -+ res = this.neg().divmod(num.neg(), mode); -+ -+ if (mode !== 'div') { -+ mod = res.mod.neg(); -+ if (positive && mod.negative !== 0) { -+ mod.isub(num); -+ } -+ } -+ -+ return { -+ div: res.div, -+ mod: mod -+ }; -+ } -+ -+ // Both numbers are positive at this point -+ -+ // Strip both numbers to approximate shift value -+ if (num.length > this.length || this.cmp(num) < 0) { -+ return { -+ div: new BN(0), -+ mod: this -+ }; -+ } -+ -+ // Very short reduction -+ if (num.length === 1) { -+ if (mode === 'div') { -+ return { -+ div: this.divn(num.words[0]), -+ mod: null -+ }; -+ } -+ -+ if (mode === 'mod') { -+ return { -+ div: null, -+ mod: new BN(this.modn(num.words[0])) -+ }; -+ } -+ -+ return { -+ div: this.divn(num.words[0]), -+ mod: new BN(this.modn(num.words[0])) -+ }; -+ } -+ -+ return this._wordDiv(num, mode); -+ }; -+ -+ // Find `this` / `num` -+ BN.prototype.div = function div (num) { -+ return this.divmod(num, 'div', false).div; -+ }; -+ -+ // Find `this` % `num` -+ BN.prototype.mod = function mod (num) { -+ return this.divmod(num, 'mod', false).mod; -+ }; -+ -+ BN.prototype.umod = function umod (num) { -+ return this.divmod(num, 'mod', true).mod; -+ }; -+ -+ // Find Round(`this` / `num`) -+ BN.prototype.divRound = function divRound (num) { -+ var dm = this.divmod(num); -+ -+ // Fast case - exact division -+ if (dm.mod.isZero()) return dm.div; -+ -+ var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; -+ -+ var half = num.ushrn(1); -+ var r2 = num.andln(1); -+ var cmp = mod.cmp(half); -+ -+ // Round down -+ if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; -+ -+ // Round up -+ return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); -+ }; -+ -+ BN.prototype.modn = function modn (num) { -+ assert(num <= 0x3ffffff); -+ var p = (1 << 26) % num; -+ -+ var acc = 0; -+ for (var i = this.length - 1; i >= 0; i--) { -+ acc = (p * acc + (this.words[i] | 0)) % num; -+ } -+ -+ return acc; -+ }; -+ -+ // In-place division by number -+ BN.prototype.idivn = function idivn (num) { -+ assert(num <= 0x3ffffff); -+ -+ var carry = 0; -+ for (var i = this.length - 1; i >= 0; i--) { -+ var w = (this.words[i] | 0) + carry * 0x4000000; -+ this.words[i] = (w / num) | 0; -+ carry = w % num; -+ } -+ -+ return this.strip(); -+ }; -+ -+ BN.prototype.divn = function divn (num) { -+ return this.clone().idivn(num); -+ }; -+ -+ BN.prototype.egcd = function egcd (p) { -+ assert(p.negative === 0); -+ assert(!p.isZero()); -+ -+ var x = this; -+ var y = p.clone(); -+ -+ if (x.negative !== 0) { -+ x = x.umod(p); -+ } else { -+ x = x.clone(); -+ } -+ -+ // A * x + B * y = x -+ var A = new BN(1); -+ var B = new BN(0); -+ -+ // C * x + D * y = y -+ var C = new BN(0); -+ var D = new BN(1); -+ -+ var g = 0; -+ -+ while (x.isEven() && y.isEven()) { -+ x.iushrn(1); -+ y.iushrn(1); -+ ++g; -+ } -+ -+ var yp = y.clone(); -+ var xp = x.clone(); -+ -+ while (!x.isZero()) { -+ for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); -+ if (i > 0) { -+ x.iushrn(i); -+ while (i-- > 0) { -+ if (A.isOdd() || B.isOdd()) { -+ A.iadd(yp); -+ B.isub(xp); -+ } -+ -+ A.iushrn(1); -+ B.iushrn(1); -+ } -+ } -+ -+ for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); -+ if (j > 0) { -+ y.iushrn(j); -+ while (j-- > 0) { -+ if (C.isOdd() || D.isOdd()) { -+ C.iadd(yp); -+ D.isub(xp); -+ } -+ -+ C.iushrn(1); -+ D.iushrn(1); -+ } -+ } -+ -+ if (x.cmp(y) >= 0) { -+ x.isub(y); -+ A.isub(C); -+ B.isub(D); -+ } else { -+ y.isub(x); -+ C.isub(A); -+ D.isub(B); -+ } -+ } -+ -+ return { -+ a: C, -+ b: D, -+ gcd: y.iushln(g) -+ }; -+ }; -+ -+ // This is reduced incarnation of the binary EEA -+ // above, designated to invert members of the -+ // _prime_ fields F(p) at a maximal speed -+ BN.prototype._invmp = function _invmp (p) { -+ assert(p.negative === 0); -+ assert(!p.isZero()); -+ -+ var a = this; -+ var b = p.clone(); -+ -+ if (a.negative !== 0) { -+ a = a.umod(p); -+ } else { -+ a = a.clone(); -+ } -+ -+ var x1 = new BN(1); -+ var x2 = new BN(0); -+ -+ var delta = b.clone(); -+ -+ while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { -+ for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); -+ if (i > 0) { -+ a.iushrn(i); -+ while (i-- > 0) { -+ if (x1.isOdd()) { -+ x1.iadd(delta); -+ } -+ -+ x1.iushrn(1); -+ } -+ } -+ -+ for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); -+ if (j > 0) { -+ b.iushrn(j); -+ while (j-- > 0) { -+ if (x2.isOdd()) { -+ x2.iadd(delta); -+ } -+ -+ x2.iushrn(1); -+ } -+ } -+ -+ if (a.cmp(b) >= 0) { -+ a.isub(b); -+ x1.isub(x2); -+ } else { -+ b.isub(a); -+ x2.isub(x1); -+ } -+ } -+ -+ var res; -+ if (a.cmpn(1) === 0) { -+ res = x1; -+ } else { -+ res = x2; -+ } -+ -+ if (res.cmpn(0) < 0) { -+ res.iadd(p); -+ } -+ -+ return res; -+ }; -+ -+ BN.prototype.gcd = function gcd (num) { -+ if (this.isZero()) return num.abs(); -+ if (num.isZero()) return this.abs(); -+ -+ var a = this.clone(); -+ var b = num.clone(); -+ a.negative = 0; -+ b.negative = 0; -+ -+ // Remove common factor of two -+ for (var shift = 0; a.isEven() && b.isEven(); shift++) { -+ a.iushrn(1); -+ b.iushrn(1); -+ } -+ -+ do { -+ while (a.isEven()) { -+ a.iushrn(1); -+ } -+ while (b.isEven()) { -+ b.iushrn(1); -+ } -+ -+ var r = a.cmp(b); -+ if (r < 0) { -+ // Swap `a` and `b` to make `a` always bigger than `b` -+ var t = a; -+ a = b; -+ b = t; -+ } else if (r === 0 || b.cmpn(1) === 0) { -+ break; -+ } -+ -+ a.isub(b); -+ } while (true); -+ -+ return b.iushln(shift); -+ }; -+ -+ // Invert number in the field F(num) -+ BN.prototype.invm = function invm (num) { -+ return this.egcd(num).a.umod(num); -+ }; -+ -+ BN.prototype.isEven = function isEven () { -+ return (this.words[0] & 1) === 0; -+ }; -+ -+ BN.prototype.isOdd = function isOdd () { -+ return (this.words[0] & 1) === 1; -+ }; -+ -+ // And first word and num -+ BN.prototype.andln = function andln (num) { -+ return this.words[0] & num; -+ }; -+ -+ // Increment at the bit position in-line -+ BN.prototype.bincn = function bincn (bit) { -+ assert(typeof bit === 'number'); -+ var r = bit % 26; -+ var s = (bit - r) / 26; -+ var q = 1 << r; -+ -+ // Fast case: bit is much higher than all existing words -+ if (this.length <= s) { -+ this._expand(s + 1); -+ this.words[s] |= q; -+ return this; -+ } -+ -+ // Add bit and propagate, if needed -+ var carry = q; -+ for (var i = s; carry !== 0 && i < this.length; i++) { -+ var w = this.words[i] | 0; -+ w += carry; -+ carry = w >>> 26; -+ w &= 0x3ffffff; -+ this.words[i] = w; -+ } -+ if (carry !== 0) { -+ this.words[i] = carry; -+ this.length++; -+ } -+ return this; -+ }; -+ -+ BN.prototype.isZero = function isZero () { -+ return this.length === 1 && this.words[0] === 0; -+ }; -+ -+ BN.prototype.cmpn = function cmpn (num) { -+ var negative = num < 0; -+ -+ if (this.negative !== 0 && !negative) return -1; -+ if (this.negative === 0 && negative) return 1; -+ -+ this.strip(); -+ -+ var res; -+ if (this.length > 1) { -+ res = 1; -+ } else { -+ if (negative) { -+ num = -num; -+ } -+ -+ assert(num <= 0x3ffffff, 'Number is too big'); -+ -+ var w = this.words[0] | 0; -+ res = w === num ? 0 : w < num ? -1 : 1; -+ } -+ if (this.negative !== 0) return -res | 0; -+ return res; -+ }; -+ -+ // Compare two numbers and return: -+ // 1 - if `this` > `num` -+ // 0 - if `this` == `num` -+ // -1 - if `this` < `num` -+ BN.prototype.cmp = function cmp (num) { -+ if (this.negative !== 0 && num.negative === 0) return -1; -+ if (this.negative === 0 && num.negative !== 0) return 1; -+ -+ var res = this.ucmp(num); -+ if (this.negative !== 0) return -res | 0; -+ return res; -+ }; -+ -+ // Unsigned comparison -+ BN.prototype.ucmp = function ucmp (num) { -+ // At this point both numbers have the same sign -+ if (this.length > num.length) return 1; -+ if (this.length < num.length) return -1; -+ -+ var res = 0; -+ for (var i = this.length - 1; i >= 0; i--) { -+ var a = this.words[i] | 0; -+ var b = num.words[i] | 0; -+ -+ if (a === b) continue; -+ if (a < b) { -+ res = -1; -+ } else if (a > b) { -+ res = 1; -+ } -+ break; -+ } -+ return res; -+ }; -+ -+ BN.prototype.gtn = function gtn (num) { -+ return this.cmpn(num) === 1; -+ }; -+ -+ BN.prototype.gt = function gt (num) { -+ return this.cmp(num) === 1; -+ }; -+ -+ BN.prototype.gten = function gten (num) { -+ return this.cmpn(num) >= 0; -+ }; -+ -+ BN.prototype.gte = function gte (num) { -+ return this.cmp(num) >= 0; -+ }; -+ -+ BN.prototype.ltn = function ltn (num) { -+ return this.cmpn(num) === -1; -+ }; -+ -+ BN.prototype.lt = function lt (num) { -+ return this.cmp(num) === -1; -+ }; -+ -+ BN.prototype.lten = function lten (num) { -+ return this.cmpn(num) <= 0; -+ }; -+ -+ BN.prototype.lte = function lte (num) { -+ return this.cmp(num) <= 0; -+ }; -+ -+ BN.prototype.eqn = function eqn (num) { -+ return this.cmpn(num) === 0; -+ }; -+ -+ BN.prototype.eq = function eq (num) { -+ return this.cmp(num) === 0; -+ }; -+ -+ // -+ // A reduce context, could be using montgomery or something better, depending -+ // on the `m` itself. -+ // -+ BN.red = function red (num) { -+ return new Red(num); -+ }; -+ -+ BN.prototype.toRed = function toRed (ctx) { -+ assert(!this.red, 'Already a number in reduction context'); -+ assert(this.negative === 0, 'red works only with positives'); -+ return ctx.convertTo(this)._forceRed(ctx); -+ }; -+ -+ BN.prototype.fromRed = function fromRed () { -+ assert(this.red, 'fromRed works only with numbers in reduction context'); -+ return this.red.convertFrom(this); -+ }; -+ -+ BN.prototype._forceRed = function _forceRed (ctx) { -+ this.red = ctx; -+ return this; -+ }; -+ -+ BN.prototype.forceRed = function forceRed (ctx) { -+ assert(!this.red, 'Already a number in reduction context'); -+ return this._forceRed(ctx); -+ }; -+ -+ BN.prototype.redAdd = function redAdd (num) { -+ assert(this.red, 'redAdd works only with red numbers'); -+ return this.red.add(this, num); -+ }; -+ -+ BN.prototype.redIAdd = function redIAdd (num) { -+ assert(this.red, 'redIAdd works only with red numbers'); -+ return this.red.iadd(this, num); -+ }; -+ -+ BN.prototype.redSub = function redSub (num) { -+ assert(this.red, 'redSub works only with red numbers'); -+ return this.red.sub(this, num); -+ }; -+ -+ BN.prototype.redISub = function redISub (num) { -+ assert(this.red, 'redISub works only with red numbers'); -+ return this.red.isub(this, num); -+ }; -+ -+ BN.prototype.redShl = function redShl (num) { -+ assert(this.red, 'redShl works only with red numbers'); -+ return this.red.shl(this, num); -+ }; -+ -+ BN.prototype.redMul = function redMul (num) { -+ assert(this.red, 'redMul works only with red numbers'); -+ this.red._verify2(this, num); -+ return this.red.mul(this, num); -+ }; -+ -+ BN.prototype.redIMul = function redIMul (num) { -+ assert(this.red, 'redMul works only with red numbers'); -+ this.red._verify2(this, num); -+ return this.red.imul(this, num); -+ }; -+ -+ BN.prototype.redSqr = function redSqr () { -+ assert(this.red, 'redSqr works only with red numbers'); -+ this.red._verify1(this); -+ return this.red.sqr(this); -+ }; -+ -+ BN.prototype.redISqr = function redISqr () { -+ assert(this.red, 'redISqr works only with red numbers'); -+ this.red._verify1(this); -+ return this.red.isqr(this); -+ }; -+ -+ // Square root over p -+ BN.prototype.redSqrt = function redSqrt () { -+ assert(this.red, 'redSqrt works only with red numbers'); -+ this.red._verify1(this); -+ return this.red.sqrt(this); -+ }; -+ -+ BN.prototype.redInvm = function redInvm () { -+ assert(this.red, 'redInvm works only with red numbers'); -+ this.red._verify1(this); -+ return this.red.invm(this); -+ }; -+ -+ // Return negative clone of `this` % `red modulo` -+ BN.prototype.redNeg = function redNeg () { -+ assert(this.red, 'redNeg works only with red numbers'); -+ this.red._verify1(this); -+ return this.red.neg(this); -+ }; -+ -+ BN.prototype.redPow = function redPow (num) { -+ assert(this.red && !num.red, 'redPow(normalNum)'); -+ this.red._verify1(this); -+ return this.red.pow(this, num); -+ }; -+ -+ // Prime numbers with efficient reduction -+ var primes = { -+ k256: null, -+ p224: null, -+ p192: null, -+ p25519: null -+ }; -+ -+ // Pseudo-Mersenne prime -+ function MPrime (name, p) { -+ // P = 2 ^ N - K -+ this.name = name; -+ this.p = new BN(p, 16); -+ this.n = this.p.bitLength(); -+ this.k = new BN(1).iushln(this.n).isub(this.p); -+ -+ this.tmp = this._tmp(); -+ } -+ -+ MPrime.prototype._tmp = function _tmp () { -+ var tmp = new BN(null); -+ tmp.words = new Array(Math.ceil(this.n / 13)); -+ return tmp; -+ }; -+ -+ MPrime.prototype.ireduce = function ireduce (num) { -+ // Assumes that `num` is less than `P^2` -+ // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) -+ var r = num; -+ var rlen; -+ -+ do { -+ this.split(r, this.tmp); -+ r = this.imulK(r); -+ r = r.iadd(this.tmp); -+ rlen = r.bitLength(); -+ } while (rlen > this.n); -+ -+ var cmp = rlen < this.n ? -1 : r.ucmp(this.p); -+ if (cmp === 0) { -+ r.words[0] = 0; -+ r.length = 1; -+ } else if (cmp > 0) { -+ r.isub(this.p); -+ } else { -+ if (r.strip !== undefined) { -+ // r is BN v4 instance -+ r.strip(); -+ } else { -+ // r is BN v5 instance -+ r._strip(); -+ } -+ } -+ -+ return r; -+ }; -+ -+ MPrime.prototype.split = function split (input, out) { -+ input.iushrn(this.n, 0, out); -+ }; -+ -+ MPrime.prototype.imulK = function imulK (num) { -+ return num.imul(this.k); -+ }; -+ -+ function K256 () { -+ MPrime.call( -+ this, -+ 'k256', -+ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); -+ } -+ inherits(K256, MPrime); -+ -+ K256.prototype.split = function split (input, output) { -+ // 256 = 9 * 26 + 22 -+ var mask = 0x3fffff; -+ -+ var outLen = Math.min(input.length, 9); -+ for (var i = 0; i < outLen; i++) { -+ output.words[i] = input.words[i]; -+ } -+ output.length = outLen; -+ -+ if (input.length <= 9) { -+ input.words[0] = 0; -+ input.length = 1; -+ return; -+ } -+ -+ // Shift by 9 limbs -+ var prev = input.words[9]; -+ output.words[output.length++] = prev & mask; -+ -+ for (i = 10; i < input.length; i++) { -+ var next = input.words[i] | 0; -+ input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); -+ prev = next; -+ } -+ prev >>>= 22; -+ input.words[i - 10] = prev; -+ if (prev === 0 && input.length > 10) { -+ input.length -= 10; -+ } else { -+ input.length -= 9; -+ } -+ }; -+ -+ K256.prototype.imulK = function imulK (num) { -+ // K = 0x1000003d1 = [ 0x40, 0x3d1 ] -+ num.words[num.length] = 0; -+ num.words[num.length + 1] = 0; -+ num.length += 2; -+ -+ // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 -+ var lo = 0; -+ for (var i = 0; i < num.length; i++) { -+ var w = num.words[i] | 0; -+ lo += w * 0x3d1; -+ num.words[i] = lo & 0x3ffffff; -+ lo = w * 0x40 + ((lo / 0x4000000) | 0); -+ } -+ -+ // Fast length reduction -+ if (num.words[num.length - 1] === 0) { -+ num.length--; -+ if (num.words[num.length - 1] === 0) { -+ num.length--; -+ } -+ } -+ return num; -+ }; -+ -+ function P224 () { -+ MPrime.call( -+ this, -+ 'p224', -+ 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); -+ } -+ inherits(P224, MPrime); -+ -+ function P192 () { -+ MPrime.call( -+ this, -+ 'p192', -+ 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); -+ } -+ inherits(P192, MPrime); -+ -+ function P25519 () { -+ // 2 ^ 255 - 19 -+ MPrime.call( -+ this, -+ '25519', -+ '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); -+ } -+ inherits(P25519, MPrime); -+ -+ P25519.prototype.imulK = function imulK (num) { -+ // K = 0x13 -+ var carry = 0; -+ for (var i = 0; i < num.length; i++) { -+ var hi = (num.words[i] | 0) * 0x13 + carry; -+ var lo = hi & 0x3ffffff; -+ hi >>>= 26; -+ -+ num.words[i] = lo; -+ carry = hi; -+ } -+ if (carry !== 0) { -+ num.words[num.length++] = carry; -+ } -+ return num; -+ }; -+ -+ // Exported mostly for testing purposes, use plain name instead -+ BN._prime = function prime (name) { -+ // Cached version of prime -+ if (primes[name]) return primes[name]; -+ -+ var prime; -+ if (name === 'k256') { -+ prime = new K256(); -+ } else if (name === 'p224') { -+ prime = new P224(); -+ } else if (name === 'p192') { -+ prime = new P192(); -+ } else if (name === 'p25519') { -+ prime = new P25519(); -+ } else { -+ throw new Error('Unknown prime ' + name); -+ } -+ primes[name] = prime; -+ -+ return prime; -+ }; -+ -+ // -+ // Base reduction engine -+ // -+ function Red (m) { -+ if (typeof m === 'string') { -+ var prime = BN._prime(m); -+ this.m = prime.p; -+ this.prime = prime; -+ } else { -+ assert(m.gtn(1), 'modulus must be greater than 1'); -+ this.m = m; -+ this.prime = null; -+ } -+ } -+ -+ Red.prototype._verify1 = function _verify1 (a) { -+ assert(a.negative === 0, 'red works only with positives'); -+ assert(a.red, 'red works only with red numbers'); -+ }; -+ -+ Red.prototype._verify2 = function _verify2 (a, b) { -+ assert((a.negative | b.negative) === 0, 'red works only with positives'); -+ assert(a.red && a.red === b.red, -+ 'red works only with red numbers'); -+ }; -+ -+ Red.prototype.imod = function imod (a) { -+ if (this.prime) return this.prime.ireduce(a)._forceRed(this); -+ return a.umod(this.m)._forceRed(this); -+ }; -+ -+ Red.prototype.neg = function neg (a) { -+ if (a.isZero()) { -+ return a.clone(); -+ } -+ -+ return this.m.sub(a)._forceRed(this); -+ }; -+ -+ Red.prototype.add = function add (a, b) { -+ this._verify2(a, b); -+ -+ var res = a.add(b); -+ if (res.cmp(this.m) >= 0) { -+ res.isub(this.m); -+ } -+ return res._forceRed(this); -+ }; -+ -+ Red.prototype.iadd = function iadd (a, b) { -+ this._verify2(a, b); -+ -+ var res = a.iadd(b); -+ if (res.cmp(this.m) >= 0) { -+ res.isub(this.m); -+ } -+ return res; -+ }; -+ -+ Red.prototype.sub = function sub (a, b) { -+ this._verify2(a, b); -+ -+ var res = a.sub(b); -+ if (res.cmpn(0) < 0) { -+ res.iadd(this.m); -+ } -+ return res._forceRed(this); -+ }; -+ -+ Red.prototype.isub = function isub (a, b) { -+ this._verify2(a, b); -+ -+ var res = a.isub(b); -+ if (res.cmpn(0) < 0) { -+ res.iadd(this.m); -+ } -+ return res; -+ }; -+ -+ Red.prototype.shl = function shl (a, num) { -+ this._verify1(a); -+ return this.imod(a.ushln(num)); -+ }; -+ -+ Red.prototype.imul = function imul (a, b) { -+ this._verify2(a, b); -+ return this.imod(a.imul(b)); -+ }; -+ -+ Red.prototype.mul = function mul (a, b) { -+ this._verify2(a, b); -+ return this.imod(a.mul(b)); -+ }; -+ -+ Red.prototype.isqr = function isqr (a) { -+ return this.imul(a, a.clone()); -+ }; -+ -+ Red.prototype.sqr = function sqr (a) { -+ return this.mul(a, a); -+ }; -+ -+ Red.prototype.sqrt = function sqrt (a) { -+ if (a.isZero()) return a.clone(); -+ -+ var mod3 = this.m.andln(3); -+ assert(mod3 % 2 === 1); -+ -+ // Fast case -+ if (mod3 === 3) { -+ var pow = this.m.add(new BN(1)).iushrn(2); -+ return this.pow(a, pow); -+ } -+ -+ // Tonelli-Shanks algorithm (Totally unoptimized and slow) -+ // -+ // Find Q and S, that Q * 2 ^ S = (P - 1) -+ var q = this.m.subn(1); -+ var s = 0; -+ while (!q.isZero() && q.andln(1) === 0) { -+ s++; -+ q.iushrn(1); -+ } -+ assert(!q.isZero()); -+ -+ var one = new BN(1).toRed(this); -+ var nOne = one.redNeg(); -+ -+ // Find quadratic non-residue -+ // NOTE: Max is such because of generalized Riemann hypothesis. -+ var lpow = this.m.subn(1).iushrn(1); -+ var z = this.m.bitLength(); -+ z = new BN(2 * z * z).toRed(this); -+ -+ while (this.pow(z, lpow).cmp(nOne) !== 0) { -+ z.redIAdd(nOne); -+ } -+ -+ var c = this.pow(z, q); -+ var r = this.pow(a, q.addn(1).iushrn(1)); -+ var t = this.pow(a, q); -+ var m = s; -+ while (t.cmp(one) !== 0) { -+ var tmp = t; -+ for (var i = 0; tmp.cmp(one) !== 0; i++) { -+ tmp = tmp.redSqr(); -+ } -+ assert(i < m); -+ var b = this.pow(c, new BN(1).iushln(m - i - 1)); -+ -+ r = r.redMul(b); -+ c = b.redSqr(); -+ t = t.redMul(c); -+ m = i; -+ } -+ -+ return r; -+ }; -+ -+ Red.prototype.invm = function invm (a) { -+ var inv = a._invmp(this.m); -+ if (inv.negative !== 0) { -+ inv.negative = 0; -+ return this.imod(inv).redNeg(); -+ } else { -+ return this.imod(inv); -+ } -+ }; -+ -+ Red.prototype.pow = function pow (a, num) { -+ if (num.isZero()) return new BN(1).toRed(this); -+ if (num.cmpn(1) === 0) return a.clone(); -+ -+ var windowSize = 4; -+ var wnd = new Array(1 << windowSize); -+ wnd[0] = new BN(1).toRed(this); -+ wnd[1] = a; -+ for (var i = 2; i < wnd.length; i++) { -+ wnd[i] = this.mul(wnd[i - 1], a); -+ } -+ -+ var res = wnd[0]; -+ var current = 0; -+ var currentLen = 0; -+ var start = num.bitLength() % 26; -+ if (start === 0) { -+ start = 26; -+ } -+ -+ for (i = num.length - 1; i >= 0; i--) { -+ var word = num.words[i]; -+ for (var j = start - 1; j >= 0; j--) { -+ var bit = (word >> j) & 1; -+ if (res !== wnd[0]) { -+ res = this.sqr(res); -+ } -+ -+ if (bit === 0 && current === 0) { -+ currentLen = 0; -+ continue; -+ } -+ -+ current <<= 1; -+ current |= bit; -+ currentLen++; -+ if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; -+ -+ res = this.mul(res, wnd[current]); -+ currentLen = 0; -+ current = 0; -+ } -+ start = 26; -+ } -+ -+ return res; -+ }; -+ -+ Red.prototype.convertTo = function convertTo (num) { -+ var r = num.umod(this.m); -+ -+ return r === num ? r.clone() : r; -+ }; -+ -+ Red.prototype.convertFrom = function convertFrom (num) { -+ var res = num.clone(); -+ res.red = null; -+ return res; -+ }; -+ -+ // -+ // Montgomery method engine -+ // -+ -+ BN.mont = function mont (num) { -+ return new Mont(num); -+ }; -+ -+ function Mont (m) { -+ Red.call(this, m); -+ -+ this.shift = this.m.bitLength(); -+ if (this.shift % 26 !== 0) { -+ this.shift += 26 - (this.shift % 26); -+ } -+ -+ this.r = new BN(1).iushln(this.shift); -+ this.r2 = this.imod(this.r.sqr()); -+ this.rinv = this.r._invmp(this.m); -+ -+ this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); -+ this.minv = this.minv.umod(this.r); -+ this.minv = this.r.sub(this.minv); -+ } -+ inherits(Mont, Red); -+ -+ Mont.prototype.convertTo = function convertTo (num) { -+ return this.imod(num.ushln(this.shift)); -+ }; -+ -+ Mont.prototype.convertFrom = function convertFrom (num) { -+ var r = this.imod(num.mul(this.rinv)); -+ r.red = null; -+ return r; -+ }; -+ -+ Mont.prototype.imul = function imul (a, b) { -+ if (a.isZero() || b.isZero()) { -+ a.words[0] = 0; -+ a.length = 1; -+ return a; -+ } -+ -+ var t = a.imul(b); -+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); -+ var u = t.isub(c).iushrn(this.shift); -+ var res = u; -+ -+ if (u.cmp(this.m) >= 0) { -+ res = u.isub(this.m); -+ } else if (u.cmpn(0) < 0) { -+ res = u.iadd(this.m); -+ } -+ -+ return res._forceRed(this); -+ }; -+ -+ Mont.prototype.mul = function mul (a, b) { -+ if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); -+ -+ var t = a.mul(b); -+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); -+ var u = t.isub(c).iushrn(this.shift); -+ var res = u; -+ if (u.cmp(this.m) >= 0) { -+ res = u.isub(this.m); -+ } else if (u.cmpn(0) < 0) { -+ res = u.iadd(this.m); -+ } -+ -+ return res._forceRed(this); -+ }; -+ -+ Mont.prototype.invm = function invm (a) { -+ // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R -+ var res = this.imod(a._invmp(this.m).mul(this.r2)); -+ return res._forceRed(this); -+ }; -+})(typeof module === 'undefined' || module, this); -diff --git a/node_modules/bn.js/package.json b/node_modules/bn.js/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..d73989ac5ba39fda7f702dde644e2769a6a1d23c ---- /dev/null -+++ b/node_modules/bn.js/package.json -@@ -0,0 +1,65 @@ -+{ -+ "name": "bn.js", -+ "version": "4.12.0", -+ "description": "Big number implementation in pure javascript", -+ "main": "lib/bn.js", -+ "scripts": { -+ "lint": "semistandard", -+ "unit": "mocha --reporter=spec test/*-test.js", -+ "test": "npm run lint && npm run unit" -+ }, -+ "repository": { -+ "type": "git", -+ "url": "git@github.com:indutny/bn.js" -+ }, -+ "keywords": [ -+ "BN", -+ "BigNum", -+ "Big number", -+ "Modulo", -+ "Montgomery" -+ ], -+ "author": "Fedor Indutny ", -+ "license": "MIT", -+ "bugs": { -+ "url": "https://github.com/indutny/bn.js/issues" -+ }, -+ "homepage": "https://github.com/indutny/bn.js", -+ "browser": { -+ "buffer": false, -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "devDependencies": { -+ "istanbul": "^0.3.5", -+ "mocha": "^2.1.0", -+ "semistandard": "^7.0.4" -+ }, -+ "react-native": { -+ "buffer": false, -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/elliptic/README.md b/node_modules/elliptic/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..96219e55b0cd7a9eb1e2ecfe0eebae40af1ba08a ---- /dev/null -+++ b/node_modules/elliptic/README.md -@@ -0,0 +1,238 @@ -+# Elliptic [![Build Status](https://secure.travis-ci.org/indutny/elliptic.png)](http://travis-ci.org/indutny/elliptic) [![Coverage Status](https://coveralls.io/repos/indutny/elliptic/badge.svg?branch=master&service=github)](https://coveralls.io/github/indutny/elliptic?branch=master) [![Code Climate](https://codeclimate.com/github/indutny/elliptic/badges/gpa.svg)](https://codeclimate.com/github/indutny/elliptic) -+ -+[![Saucelabs Test Status](https://saucelabs.com/browser-matrix/gh-indutny-elliptic.svg)](https://saucelabs.com/u/gh-indutny-elliptic) -+ -+Fast elliptic-curve cryptography in a plain javascript implementation. -+ -+NOTE: Please take a look at http://safecurves.cr.yp.to/ before choosing a curve -+for your cryptography operations. -+ -+## Incentive -+ -+ECC is much slower than regular RSA cryptography, the JS implementations are -+even more slower. -+ -+## Benchmarks -+ -+```bash -+$ node benchmarks/index.js -+Benchmarking: sign -+elliptic#sign x 262 ops/sec ±0.51% (177 runs sampled) -+eccjs#sign x 55.91 ops/sec ±0.90% (144 runs sampled) -+------------------------ -+Fastest is elliptic#sign -+======================== -+Benchmarking: verify -+elliptic#verify x 113 ops/sec ±0.50% (166 runs sampled) -+eccjs#verify x 48.56 ops/sec ±0.36% (125 runs sampled) -+------------------------ -+Fastest is elliptic#verify -+======================== -+Benchmarking: gen -+elliptic#gen x 294 ops/sec ±0.43% (176 runs sampled) -+eccjs#gen x 62.25 ops/sec ±0.63% (129 runs sampled) -+------------------------ -+Fastest is elliptic#gen -+======================== -+Benchmarking: ecdh -+elliptic#ecdh x 136 ops/sec ±0.85% (156 runs sampled) -+------------------------ -+Fastest is elliptic#ecdh -+======================== -+``` -+ -+## API -+ -+### ECDSA -+ -+```javascript -+var EC = require('elliptic').ec; -+ -+// Create and initialize EC context -+// (better do it once and reuse it) -+var ec = new EC('secp256k1'); -+ -+// Generate keys -+var key = ec.genKeyPair(); -+ -+// Sign the message's hash (input must be an array, or a hex-string) -+var msgHash = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; -+var signature = key.sign(msgHash); -+ -+// Export DER encoded signature in Array -+var derSign = signature.toDER(); -+ -+// Verify signature -+console.log(key.verify(msgHash, derSign)); -+ -+// CHECK WITH NO PRIVATE KEY -+ -+var pubPoint = key.getPublic(); -+var x = pubPoint.getX(); -+var y = pubPoint.getY(); -+ -+// Public Key MUST be either: -+// 1) '04' + hex string of x + hex string of y; or -+// 2) object with two hex string properties (x and y); or -+// 3) object with two buffer properties (x and y) -+var pub = pubPoint.encode('hex'); // case 1 -+var pub = { x: x.toString('hex'), y: y.toString('hex') }; // case 2 -+var pub = { x: x.toBuffer(), y: y.toBuffer() }; // case 3 -+var pub = { x: x.toArrayLike(Buffer), y: y.toArrayLike(Buffer) }; // case 3 -+ -+// Import public key -+var key = ec.keyFromPublic(pub, 'hex'); -+ -+// Signature MUST be either: -+// 1) DER-encoded signature as hex-string; or -+// 2) DER-encoded signature as buffer; or -+// 3) object with two hex-string properties (r and s); or -+// 4) object with two buffer properties (r and s) -+ -+var signature = '3046022100...'; // case 1 -+var signature = new Buffer('...'); // case 2 -+var signature = { r: 'b1fc...', s: '9c42...' }; // case 3 -+ -+// Verify signature -+console.log(key.verify(msgHash, signature)); -+``` -+ -+### EdDSA -+ -+```javascript -+var EdDSA = require('elliptic').eddsa; -+ -+// Create and initialize EdDSA context -+// (better do it once and reuse it) -+var ec = new EdDSA('ed25519'); -+ -+// Create key pair from secret -+var key = ec.keyFromSecret('693e3c...'); // hex string, array or Buffer -+ -+// Sign the message's hash (input must be an array, or a hex-string) -+var msgHash = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; -+var signature = key.sign(msgHash).toHex(); -+ -+// Verify signature -+console.log(key.verify(msgHash, signature)); -+ -+// CHECK WITH NO PRIVATE KEY -+ -+// Import public key -+var pub = '0a1af638...'; -+var key = ec.keyFromPublic(pub, 'hex'); -+ -+// Verify signature -+var signature = '70bed1...'; -+console.log(key.verify(msgHash, signature)); -+``` -+ -+### ECDH -+ -+```javascript -+var EC = require('elliptic').ec; -+var ec = new EC('curve25519'); -+ -+// Generate keys -+var key1 = ec.genKeyPair(); -+var key2 = ec.genKeyPair(); -+ -+var shared1 = key1.derive(key2.getPublic()); -+var shared2 = key2.derive(key1.getPublic()); -+ -+console.log('Both shared secrets are BN instances'); -+console.log(shared1.toString(16)); -+console.log(shared2.toString(16)); -+``` -+ -+three and more members: -+```javascript -+var EC = require('elliptic').ec; -+var ec = new EC('curve25519'); -+ -+var A = ec.genKeyPair(); -+var B = ec.genKeyPair(); -+var C = ec.genKeyPair(); -+ -+var AB = A.getPublic().mul(B.getPrivate()) -+var BC = B.getPublic().mul(C.getPrivate()) -+var CA = C.getPublic().mul(A.getPrivate()) -+ -+var ABC = AB.mul(C.getPrivate()) -+var BCA = BC.mul(A.getPrivate()) -+var CAB = CA.mul(B.getPrivate()) -+ -+console.log(ABC.getX().toString(16)) -+console.log(BCA.getX().toString(16)) -+console.log(CAB.getX().toString(16)) -+``` -+ -+NOTE: `.derive()` returns a [BN][1] instance. -+ -+## Supported curves -+ -+Elliptic.js support following curve types: -+ -+* Short Weierstrass -+* Montgomery -+* Edwards -+* Twisted Edwards -+ -+Following curve 'presets' are embedded into the library: -+ -+* `secp256k1` -+* `p192` -+* `p224` -+* `p256` -+* `p384` -+* `p521` -+* `curve25519` -+* `ed25519` -+ -+NOTE: That `curve25519` could not be used for ECDSA, use `ed25519` instead. -+ -+### Implementation details -+ -+ECDSA is using deterministic `k` value generation as per [RFC6979][0]. Most of -+the curve operations are performed on non-affine coordinates (either projective -+or extended), various windowing techniques are used for different cases. -+ -+All operations are performed in reduction context using [bn.js][1], hashing is -+provided by [hash.js][2] -+ -+### Related projects -+ -+* [eccrypto][3]: isomorphic implementation of ECDSA, ECDH and ECIES for both -+ browserify and node (uses `elliptic` for browser and [secp256k1-node][4] for -+ node) -+ -+#### LICENSE -+ -+This software is licensed under the MIT License. -+ -+Copyright Fedor Indutny, 2014. -+ -+Permission is hereby granted, free of charge, to any person obtaining a -+copy of this software and associated documentation files (the -+"Software"), to deal in the Software without restriction, including -+without limitation the rights to use, copy, modify, merge, publish, -+distribute, sublicense, and/or sell copies of the Software, and to permit -+persons to whom the Software is furnished to do so, subject to the -+following conditions: -+ -+The above copyright notice and this permission notice shall be included -+in all copies or substantial portions of the Software. -+ -+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -+USE OR OTHER DEALINGS IN THE SOFTWARE. -+ -+[0]: http://tools.ietf.org/html/rfc6979 -+[1]: https://github.com/indutny/bn.js -+[2]: https://github.com/indutny/hash.js -+[3]: https://github.com/bitchan/eccrypto -+[4]: https://github.com/wanderer/secp256k1-node -diff --git a/node_modules/elliptic/lib/elliptic/curve/base.js b/node_modules/elliptic/lib/elliptic/curve/base.js -new file mode 100644 -index 0000000000000000000000000000000000000000..8543fa80f6dde9ecee8846d8cfbc5bba15793d76 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/curve/base.js -@@ -0,0 +1,381 @@ -+'use strict'; -+ -+var BN = require('bn.js'); -+var utils = require('../utils'); -+var getNAF = utils.getNAF; -+var getJSF = utils.getJSF; -+var assert = utils.assert; -+ -+function BaseCurve(type, conf) { -+ this.type = type; -+ this.p = new BN(conf.p, 16); -+ -+ // Use Montgomery, when there is no fast reduction for the prime -+ this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); -+ -+ // Useful for many curves -+ this.zero = new BN(0).toRed(this.red); -+ this.one = new BN(1).toRed(this.red); -+ this.two = new BN(2).toRed(this.red); -+ -+ // Curve configuration, optional -+ this.n = conf.n && new BN(conf.n, 16); -+ this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); -+ -+ // Temporary arrays -+ this._wnafT1 = new Array(4); -+ this._wnafT2 = new Array(4); -+ this._wnafT3 = new Array(4); -+ this._wnafT4 = new Array(4); -+ -+ this._bitLength = this.n ? this.n.bitLength() : 0; -+ -+ // Generalized Greg Maxwell's trick -+ var adjustCount = this.n && this.p.div(this.n); -+ if (!adjustCount || adjustCount.cmpn(100) > 0) { -+ this.redN = null; -+ } else { -+ this._maxwellTrick = true; -+ this.redN = this.n.toRed(this.red); -+ } -+} -+module.exports = BaseCurve; -+ -+BaseCurve.prototype.point = function point() { -+ throw new Error('Not implemented'); -+}; -+ -+BaseCurve.prototype.validate = function validate() { -+ throw new Error('Not implemented'); -+}; -+ -+BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { -+ assert(p.precomputed); -+ var doubles = p._getDoubles(); -+ -+ var naf = getNAF(k, 1, this._bitLength); -+ var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1); -+ I /= 3; -+ -+ // Translate into more windowed form -+ var repr = []; -+ var j; -+ var nafW; -+ for (j = 0; j < naf.length; j += doubles.step) { -+ nafW = 0; -+ for (var l = j + doubles.step - 1; l >= j; l--) -+ nafW = (nafW << 1) + naf[l]; -+ repr.push(nafW); -+ } -+ -+ var a = this.jpoint(null, null, null); -+ var b = this.jpoint(null, null, null); -+ for (var i = I; i > 0; i--) { -+ for (j = 0; j < repr.length; j++) { -+ nafW = repr[j]; -+ if (nafW === i) -+ b = b.mixedAdd(doubles.points[j]); -+ else if (nafW === -i) -+ b = b.mixedAdd(doubles.points[j].neg()); -+ } -+ a = a.add(b); -+ } -+ return a.toP(); -+}; -+ -+BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { -+ var w = 4; -+ -+ // Precompute window -+ var nafPoints = p._getNAFPoints(w); -+ w = nafPoints.wnd; -+ var wnd = nafPoints.points; -+ -+ // Get NAF form -+ var naf = getNAF(k, w, this._bitLength); -+ -+ // Add `this`*(N+1) for every w-NAF index -+ var acc = this.jpoint(null, null, null); -+ for (var i = naf.length - 1; i >= 0; i--) { -+ // Count zeroes -+ for (var l = 0; i >= 0 && naf[i] === 0; i--) -+ l++; -+ if (i >= 0) -+ l++; -+ acc = acc.dblp(l); -+ -+ if (i < 0) -+ break; -+ var z = naf[i]; -+ assert(z !== 0); -+ if (p.type === 'affine') { -+ // J +- P -+ if (z > 0) -+ acc = acc.mixedAdd(wnd[(z - 1) >> 1]); -+ else -+ acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg()); -+ } else { -+ // J +- J -+ if (z > 0) -+ acc = acc.add(wnd[(z - 1) >> 1]); -+ else -+ acc = acc.add(wnd[(-z - 1) >> 1].neg()); -+ } -+ } -+ return p.type === 'affine' ? acc.toP() : acc; -+}; -+ -+BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, -+ points, -+ coeffs, -+ len, -+ jacobianResult) { -+ var wndWidth = this._wnafT1; -+ var wnd = this._wnafT2; -+ var naf = this._wnafT3; -+ -+ // Fill all arrays -+ var max = 0; -+ var i; -+ var j; -+ var p; -+ for (i = 0; i < len; i++) { -+ p = points[i]; -+ var nafPoints = p._getNAFPoints(defW); -+ wndWidth[i] = nafPoints.wnd; -+ wnd[i] = nafPoints.points; -+ } -+ -+ // Comb small window NAFs -+ for (i = len - 1; i >= 1; i -= 2) { -+ var a = i - 1; -+ var b = i; -+ if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { -+ naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); -+ naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); -+ max = Math.max(naf[a].length, max); -+ max = Math.max(naf[b].length, max); -+ continue; -+ } -+ -+ var comb = [ -+ points[a], /* 1 */ -+ null, /* 3 */ -+ null, /* 5 */ -+ points[b], /* 7 */ -+ ]; -+ -+ // Try to avoid Projective points, if possible -+ if (points[a].y.cmp(points[b].y) === 0) { -+ comb[1] = points[a].add(points[b]); -+ comb[2] = points[a].toJ().mixedAdd(points[b].neg()); -+ } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { -+ comb[1] = points[a].toJ().mixedAdd(points[b]); -+ comb[2] = points[a].add(points[b].neg()); -+ } else { -+ comb[1] = points[a].toJ().mixedAdd(points[b]); -+ comb[2] = points[a].toJ().mixedAdd(points[b].neg()); -+ } -+ -+ var index = [ -+ -3, /* -1 -1 */ -+ -1, /* -1 0 */ -+ -5, /* -1 1 */ -+ -7, /* 0 -1 */ -+ 0, /* 0 0 */ -+ 7, /* 0 1 */ -+ 5, /* 1 -1 */ -+ 1, /* 1 0 */ -+ 3, /* 1 1 */ -+ ]; -+ -+ var jsf = getJSF(coeffs[a], coeffs[b]); -+ max = Math.max(jsf[0].length, max); -+ naf[a] = new Array(max); -+ naf[b] = new Array(max); -+ for (j = 0; j < max; j++) { -+ var ja = jsf[0][j] | 0; -+ var jb = jsf[1][j] | 0; -+ -+ naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; -+ naf[b][j] = 0; -+ wnd[a] = comb; -+ } -+ } -+ -+ var acc = this.jpoint(null, null, null); -+ var tmp = this._wnafT4; -+ for (i = max; i >= 0; i--) { -+ var k = 0; -+ -+ while (i >= 0) { -+ var zero = true; -+ for (j = 0; j < len; j++) { -+ tmp[j] = naf[j][i] | 0; -+ if (tmp[j] !== 0) -+ zero = false; -+ } -+ if (!zero) -+ break; -+ k++; -+ i--; -+ } -+ if (i >= 0) -+ k++; -+ acc = acc.dblp(k); -+ if (i < 0) -+ break; -+ -+ for (j = 0; j < len; j++) { -+ var z = tmp[j]; -+ p; -+ if (z === 0) -+ continue; -+ else if (z > 0) -+ p = wnd[j][(z - 1) >> 1]; -+ else if (z < 0) -+ p = wnd[j][(-z - 1) >> 1].neg(); -+ -+ if (p.type === 'affine') -+ acc = acc.mixedAdd(p); -+ else -+ acc = acc.add(p); -+ } -+ } -+ // Zeroify references -+ for (i = 0; i < len; i++) -+ wnd[i] = null; -+ -+ if (jacobianResult) -+ return acc; -+ else -+ return acc.toP(); -+}; -+ -+function BasePoint(curve, type) { -+ this.curve = curve; -+ this.type = type; -+ this.precomputed = null; -+} -+BaseCurve.BasePoint = BasePoint; -+ -+BasePoint.prototype.eq = function eq(/*other*/) { -+ throw new Error('Not implemented'); -+}; -+ -+BasePoint.prototype.validate = function validate() { -+ return this.curve.validate(this); -+}; -+ -+BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { -+ bytes = utils.toArray(bytes, enc); -+ -+ var len = this.p.byteLength(); -+ -+ // uncompressed, hybrid-odd, hybrid-even -+ if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && -+ bytes.length - 1 === 2 * len) { -+ if (bytes[0] === 0x06) -+ assert(bytes[bytes.length - 1] % 2 === 0); -+ else if (bytes[0] === 0x07) -+ assert(bytes[bytes.length - 1] % 2 === 1); -+ -+ var res = this.point(bytes.slice(1, 1 + len), -+ bytes.slice(1 + len, 1 + 2 * len)); -+ -+ return res; -+ } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && -+ bytes.length - 1 === len) { -+ return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); -+ } -+ throw new Error('Unknown point format'); -+}; -+ -+BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { -+ return this.encode(enc, true); -+}; -+ -+BasePoint.prototype._encode = function _encode(compact) { -+ var len = this.curve.p.byteLength(); -+ var x = this.getX().toArray('be', len); -+ -+ if (compact) -+ return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x); -+ -+ return [ 0x04 ].concat(x, this.getY().toArray('be', len)); -+}; -+ -+BasePoint.prototype.encode = function encode(enc, compact) { -+ return utils.encode(this._encode(compact), enc); -+}; -+ -+BasePoint.prototype.precompute = function precompute(power) { -+ if (this.precomputed) -+ return this; -+ -+ var precomputed = { -+ doubles: null, -+ naf: null, -+ beta: null, -+ }; -+ precomputed.naf = this._getNAFPoints(8); -+ precomputed.doubles = this._getDoubles(4, power); -+ precomputed.beta = this._getBeta(); -+ this.precomputed = precomputed; -+ -+ return this; -+}; -+ -+BasePoint.prototype._hasDoubles = function _hasDoubles(k) { -+ if (!this.precomputed) -+ return false; -+ -+ var doubles = this.precomputed.doubles; -+ if (!doubles) -+ return false; -+ -+ return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); -+}; -+ -+BasePoint.prototype._getDoubles = function _getDoubles(step, power) { -+ if (this.precomputed && this.precomputed.doubles) -+ return this.precomputed.doubles; -+ -+ var doubles = [ this ]; -+ var acc = this; -+ for (var i = 0; i < power; i += step) { -+ for (var j = 0; j < step; j++) -+ acc = acc.dbl(); -+ doubles.push(acc); -+ } -+ return { -+ step: step, -+ points: doubles, -+ }; -+}; -+ -+BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { -+ if (this.precomputed && this.precomputed.naf) -+ return this.precomputed.naf; -+ -+ var res = [ this ]; -+ var max = (1 << wnd) - 1; -+ var dbl = max === 1 ? null : this.dbl(); -+ for (var i = 1; i < max; i++) -+ res[i] = res[i - 1].add(dbl); -+ return { -+ wnd: wnd, -+ points: res, -+ }; -+}; -+ -+BasePoint.prototype._getBeta = function _getBeta() { -+ return null; -+}; -+ -+BasePoint.prototype.dblp = function dblp(k) { -+ var r = this; -+ for (var i = 0; i < k; i++) -+ r = r.dbl(); -+ return r; -+}; -diff --git a/node_modules/elliptic/lib/elliptic/curve/edwards.js b/node_modules/elliptic/lib/elliptic/curve/edwards.js -new file mode 100644 -index 0000000000000000000000000000000000000000..6e757c6dc4f904cf99f7c514c375bd35b524bce6 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/curve/edwards.js -@@ -0,0 +1,435 @@ -+'use strict'; -+ -+var utils = require('../utils'); -+var BN = require('bn.js'); -+var inherits = require('inherits'); -+var Base = require('./base'); -+ -+var assert = utils.assert; -+ -+function EdwardsCurve(conf) { -+ // NOTE: Important as we are creating point in Base.call() -+ this.twisted = (conf.a | 0) !== 1; -+ this.mOneA = this.twisted && (conf.a | 0) === -1; -+ this.extended = this.mOneA; -+ -+ Base.call(this, 'edwards', conf); -+ -+ this.a = new BN(conf.a, 16).umod(this.red.m); -+ this.a = this.a.toRed(this.red); -+ this.c = new BN(conf.c, 16).toRed(this.red); -+ this.c2 = this.c.redSqr(); -+ this.d = new BN(conf.d, 16).toRed(this.red); -+ this.dd = this.d.redAdd(this.d); -+ -+ assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); -+ this.oneC = (conf.c | 0) === 1; -+} -+inherits(EdwardsCurve, Base); -+module.exports = EdwardsCurve; -+ -+EdwardsCurve.prototype._mulA = function _mulA(num) { -+ if (this.mOneA) -+ return num.redNeg(); -+ else -+ return this.a.redMul(num); -+}; -+ -+EdwardsCurve.prototype._mulC = function _mulC(num) { -+ if (this.oneC) -+ return num; -+ else -+ return this.c.redMul(num); -+}; -+ -+// Just for compatibility with Short curve -+EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { -+ return this.point(x, y, z, t); -+}; -+ -+EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { -+ x = new BN(x, 16); -+ if (!x.red) -+ x = x.toRed(this.red); -+ -+ var x2 = x.redSqr(); -+ var rhs = this.c2.redSub(this.a.redMul(x2)); -+ var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); -+ -+ var y2 = rhs.redMul(lhs.redInvm()); -+ var y = y2.redSqrt(); -+ if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) -+ throw new Error('invalid point'); -+ -+ var isOdd = y.fromRed().isOdd(); -+ if (odd && !isOdd || !odd && isOdd) -+ y = y.redNeg(); -+ -+ return this.point(x, y); -+}; -+ -+EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { -+ y = new BN(y, 16); -+ if (!y.red) -+ y = y.toRed(this.red); -+ -+ // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) -+ var y2 = y.redSqr(); -+ var lhs = y2.redSub(this.c2); -+ var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); -+ var x2 = lhs.redMul(rhs.redInvm()); -+ -+ if (x2.cmp(this.zero) === 0) { -+ if (odd) -+ throw new Error('invalid point'); -+ else -+ return this.point(this.zero, y); -+ } -+ -+ var x = x2.redSqrt(); -+ if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) -+ throw new Error('invalid point'); -+ -+ if (x.fromRed().isOdd() !== odd) -+ x = x.redNeg(); -+ -+ return this.point(x, y); -+}; -+ -+EdwardsCurve.prototype.validate = function validate(point) { -+ if (point.isInfinity()) -+ return true; -+ -+ // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) -+ point.normalize(); -+ -+ var x2 = point.x.redSqr(); -+ var y2 = point.y.redSqr(); -+ var lhs = x2.redMul(this.a).redAdd(y2); -+ var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); -+ -+ return lhs.cmp(rhs) === 0; -+}; -+ -+function Point(curve, x, y, z, t) { -+ Base.BasePoint.call(this, curve, 'projective'); -+ if (x === null && y === null && z === null) { -+ this.x = this.curve.zero; -+ this.y = this.curve.one; -+ this.z = this.curve.one; -+ this.t = this.curve.zero; -+ this.zOne = true; -+ } else { -+ this.x = new BN(x, 16); -+ this.y = new BN(y, 16); -+ this.z = z ? new BN(z, 16) : this.curve.one; -+ this.t = t && new BN(t, 16); -+ if (!this.x.red) -+ this.x = this.x.toRed(this.curve.red); -+ if (!this.y.red) -+ this.y = this.y.toRed(this.curve.red); -+ if (!this.z.red) -+ this.z = this.z.toRed(this.curve.red); -+ if (this.t && !this.t.red) -+ this.t = this.t.toRed(this.curve.red); -+ this.zOne = this.z === this.curve.one; -+ -+ // Use extended coordinates -+ if (this.curve.extended && !this.t) { -+ this.t = this.x.redMul(this.y); -+ if (!this.zOne) -+ this.t = this.t.redMul(this.z.redInvm()); -+ } -+ } -+} -+inherits(Point, Base.BasePoint); -+ -+EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { -+ return Point.fromJSON(this, obj); -+}; -+ -+EdwardsCurve.prototype.point = function point(x, y, z, t) { -+ return new Point(this, x, y, z, t); -+}; -+ -+Point.fromJSON = function fromJSON(curve, obj) { -+ return new Point(curve, obj[0], obj[1], obj[2]); -+}; -+ -+Point.prototype.inspect = function inspect() { -+ if (this.isInfinity()) -+ return ''; -+ return ''; -+}; -+ -+Point.prototype.isInfinity = function isInfinity() { -+ // XXX This code assumes that zero is always zero in red -+ return this.x.cmpn(0) === 0 && -+ (this.y.cmp(this.z) === 0 || -+ (this.zOne && this.y.cmp(this.curve.c) === 0)); -+}; -+ -+Point.prototype._extDbl = function _extDbl() { -+ // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html -+ // #doubling-dbl-2008-hwcd -+ // 4M + 4S -+ -+ // A = X1^2 -+ var a = this.x.redSqr(); -+ // B = Y1^2 -+ var b = this.y.redSqr(); -+ // C = 2 * Z1^2 -+ var c = this.z.redSqr(); -+ c = c.redIAdd(c); -+ // D = a * A -+ var d = this.curve._mulA(a); -+ // E = (X1 + Y1)^2 - A - B -+ var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); -+ // G = D + B -+ var g = d.redAdd(b); -+ // F = G - C -+ var f = g.redSub(c); -+ // H = D - B -+ var h = d.redSub(b); -+ // X3 = E * F -+ var nx = e.redMul(f); -+ // Y3 = G * H -+ var ny = g.redMul(h); -+ // T3 = E * H -+ var nt = e.redMul(h); -+ // Z3 = F * G -+ var nz = f.redMul(g); -+ return this.curve.point(nx, ny, nz, nt); -+}; -+ -+Point.prototype._projDbl = function _projDbl() { -+ // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html -+ // #doubling-dbl-2008-bbjlp -+ // #doubling-dbl-2007-bl -+ // and others -+ // Generally 3M + 4S or 2M + 4S -+ -+ // B = (X1 + Y1)^2 -+ var b = this.x.redAdd(this.y).redSqr(); -+ // C = X1^2 -+ var c = this.x.redSqr(); -+ // D = Y1^2 -+ var d = this.y.redSqr(); -+ -+ var nx; -+ var ny; -+ var nz; -+ var e; -+ var h; -+ var j; -+ if (this.curve.twisted) { -+ // E = a * C -+ e = this.curve._mulA(c); -+ // F = E + D -+ var f = e.redAdd(d); -+ if (this.zOne) { -+ // X3 = (B - C - D) * (F - 2) -+ nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); -+ // Y3 = F * (E - D) -+ ny = f.redMul(e.redSub(d)); -+ // Z3 = F^2 - 2 * F -+ nz = f.redSqr().redSub(f).redSub(f); -+ } else { -+ // H = Z1^2 -+ h = this.z.redSqr(); -+ // J = F - 2 * H -+ j = f.redSub(h).redISub(h); -+ // X3 = (B-C-D)*J -+ nx = b.redSub(c).redISub(d).redMul(j); -+ // Y3 = F * (E - D) -+ ny = f.redMul(e.redSub(d)); -+ // Z3 = F * J -+ nz = f.redMul(j); -+ } -+ } else { -+ // E = C + D -+ e = c.redAdd(d); -+ // H = (c * Z1)^2 -+ h = this.curve._mulC(this.z).redSqr(); -+ // J = E - 2 * H -+ j = e.redSub(h).redSub(h); -+ // X3 = c * (B - E) * J -+ nx = this.curve._mulC(b.redISub(e)).redMul(j); -+ // Y3 = c * E * (C - D) -+ ny = this.curve._mulC(e).redMul(c.redISub(d)); -+ // Z3 = E * J -+ nz = e.redMul(j); -+ } -+ return this.curve.point(nx, ny, nz); -+}; -+ -+Point.prototype.dbl = function dbl() { -+ if (this.isInfinity()) -+ return this; -+ -+ // Double in extended coordinates -+ if (this.curve.extended) -+ return this._extDbl(); -+ else -+ return this._projDbl(); -+}; -+ -+Point.prototype._extAdd = function _extAdd(p) { -+ // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html -+ // #addition-add-2008-hwcd-3 -+ // 8M -+ -+ // A = (Y1 - X1) * (Y2 - X2) -+ var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); -+ // B = (Y1 + X1) * (Y2 + X2) -+ var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); -+ // C = T1 * k * T2 -+ var c = this.t.redMul(this.curve.dd).redMul(p.t); -+ // D = Z1 * 2 * Z2 -+ var d = this.z.redMul(p.z.redAdd(p.z)); -+ // E = B - A -+ var e = b.redSub(a); -+ // F = D - C -+ var f = d.redSub(c); -+ // G = D + C -+ var g = d.redAdd(c); -+ // H = B + A -+ var h = b.redAdd(a); -+ // X3 = E * F -+ var nx = e.redMul(f); -+ // Y3 = G * H -+ var ny = g.redMul(h); -+ // T3 = E * H -+ var nt = e.redMul(h); -+ // Z3 = F * G -+ var nz = f.redMul(g); -+ return this.curve.point(nx, ny, nz, nt); -+}; -+ -+Point.prototype._projAdd = function _projAdd(p) { -+ // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html -+ // #addition-add-2008-bbjlp -+ // #addition-add-2007-bl -+ // 10M + 1S -+ -+ // A = Z1 * Z2 -+ var a = this.z.redMul(p.z); -+ // B = A^2 -+ var b = a.redSqr(); -+ // C = X1 * X2 -+ var c = this.x.redMul(p.x); -+ // D = Y1 * Y2 -+ var d = this.y.redMul(p.y); -+ // E = d * C * D -+ var e = this.curve.d.redMul(c).redMul(d); -+ // F = B - E -+ var f = b.redSub(e); -+ // G = B + E -+ var g = b.redAdd(e); -+ // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) -+ var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); -+ var nx = a.redMul(f).redMul(tmp); -+ var ny; -+ var nz; -+ if (this.curve.twisted) { -+ // Y3 = A * G * (D - a * C) -+ ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); -+ // Z3 = F * G -+ nz = f.redMul(g); -+ } else { -+ // Y3 = A * G * (D - C) -+ ny = a.redMul(g).redMul(d.redSub(c)); -+ // Z3 = c * F * G -+ nz = this.curve._mulC(f).redMul(g); -+ } -+ return this.curve.point(nx, ny, nz); -+}; -+ -+Point.prototype.add = function add(p) { -+ if (this.isInfinity()) -+ return p; -+ if (p.isInfinity()) -+ return this; -+ -+ if (this.curve.extended) -+ return this._extAdd(p); -+ else -+ return this._projAdd(p); -+}; -+ -+Point.prototype.mul = function mul(k) { -+ if (this._hasDoubles(k)) -+ return this.curve._fixedNafMul(this, k); -+ else -+ return this.curve._wnafMul(this, k); -+}; -+ -+Point.prototype.mulAdd = function mulAdd(k1, p, k2) { -+ return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false); -+}; -+ -+Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { -+ return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true); -+}; -+ -+Point.prototype.normalize = function normalize() { -+ if (this.zOne) -+ return this; -+ -+ // Normalize coordinates -+ var zi = this.z.redInvm(); -+ this.x = this.x.redMul(zi); -+ this.y = this.y.redMul(zi); -+ if (this.t) -+ this.t = this.t.redMul(zi); -+ this.z = this.curve.one; -+ this.zOne = true; -+ return this; -+}; -+ -+Point.prototype.neg = function neg() { -+ return this.curve.point(this.x.redNeg(), -+ this.y, -+ this.z, -+ this.t && this.t.redNeg()); -+}; -+ -+Point.prototype.getX = function getX() { -+ this.normalize(); -+ return this.x.fromRed(); -+}; -+ -+Point.prototype.getY = function getY() { -+ this.normalize(); -+ return this.y.fromRed(); -+}; -+ -+Point.prototype.eq = function eq(other) { -+ return this === other || -+ this.getX().cmp(other.getX()) === 0 && -+ this.getY().cmp(other.getY()) === 0; -+}; -+ -+Point.prototype.eqXToP = function eqXToP(x) { -+ var rx = x.toRed(this.curve.red).redMul(this.z); -+ if (this.x.cmp(rx) === 0) -+ return true; -+ -+ var xc = x.clone(); -+ var t = this.curve.redN.redMul(this.z); -+ for (;;) { -+ xc.iadd(this.curve.n); -+ if (xc.cmp(this.curve.p) >= 0) -+ return false; -+ -+ rx.redIAdd(t); -+ if (this.x.cmp(rx) === 0) -+ return true; -+ } -+}; -+ -+// Compatibility with BaseCurve -+Point.prototype.toP = Point.prototype.normalize; -+Point.prototype.mixedAdd = Point.prototype.add; -diff --git a/node_modules/elliptic/lib/elliptic/curve/index.js b/node_modules/elliptic/lib/elliptic/curve/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..c589281df9975a0f8f1eeda818e6a24a5292e76a ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/curve/index.js -@@ -0,0 +1,8 @@ -+'use strict'; -+ -+var curve = exports; -+ -+curve.base = require('./base'); -+curve.short = require('./short'); -+curve.mont = require('./mont'); -+curve.edwards = require('./edwards'); -diff --git a/node_modules/elliptic/lib/elliptic/curve/mont.js b/node_modules/elliptic/lib/elliptic/curve/mont.js -new file mode 100644 -index 0000000000000000000000000000000000000000..4b9f80fd57e48e2a0aa751512e094a06b254b1e0 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/curve/mont.js -@@ -0,0 +1,178 @@ -+'use strict'; -+ -+var BN = require('bn.js'); -+var inherits = require('inherits'); -+var Base = require('./base'); -+ -+var utils = require('../utils'); -+ -+function MontCurve(conf) { -+ Base.call(this, 'mont', conf); -+ -+ this.a = new BN(conf.a, 16).toRed(this.red); -+ this.b = new BN(conf.b, 16).toRed(this.red); -+ this.i4 = new BN(4).toRed(this.red).redInvm(); -+ this.two = new BN(2).toRed(this.red); -+ this.a24 = this.i4.redMul(this.a.redAdd(this.two)); -+} -+inherits(MontCurve, Base); -+module.exports = MontCurve; -+ -+MontCurve.prototype.validate = function validate(point) { -+ var x = point.normalize().x; -+ var x2 = x.redSqr(); -+ var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); -+ var y = rhs.redSqrt(); -+ -+ return y.redSqr().cmp(rhs) === 0; -+}; -+ -+function Point(curve, x, z) { -+ Base.BasePoint.call(this, curve, 'projective'); -+ if (x === null && z === null) { -+ this.x = this.curve.one; -+ this.z = this.curve.zero; -+ } else { -+ this.x = new BN(x, 16); -+ this.z = new BN(z, 16); -+ if (!this.x.red) -+ this.x = this.x.toRed(this.curve.red); -+ if (!this.z.red) -+ this.z = this.z.toRed(this.curve.red); -+ } -+} -+inherits(Point, Base.BasePoint); -+ -+MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { -+ return this.point(utils.toArray(bytes, enc), 1); -+}; -+ -+MontCurve.prototype.point = function point(x, z) { -+ return new Point(this, x, z); -+}; -+ -+MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { -+ return Point.fromJSON(this, obj); -+}; -+ -+Point.prototype.precompute = function precompute() { -+ // No-op -+}; -+ -+Point.prototype._encode = function _encode() { -+ return this.getX().toArray('be', this.curve.p.byteLength()); -+}; -+ -+Point.fromJSON = function fromJSON(curve, obj) { -+ return new Point(curve, obj[0], obj[1] || curve.one); -+}; -+ -+Point.prototype.inspect = function inspect() { -+ if (this.isInfinity()) -+ return ''; -+ return ''; -+}; -+ -+Point.prototype.isInfinity = function isInfinity() { -+ // XXX This code assumes that zero is always zero in red -+ return this.z.cmpn(0) === 0; -+}; -+ -+Point.prototype.dbl = function dbl() { -+ // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 -+ // 2M + 2S + 4A -+ -+ // A = X1 + Z1 -+ var a = this.x.redAdd(this.z); -+ // AA = A^2 -+ var aa = a.redSqr(); -+ // B = X1 - Z1 -+ var b = this.x.redSub(this.z); -+ // BB = B^2 -+ var bb = b.redSqr(); -+ // C = AA - BB -+ var c = aa.redSub(bb); -+ // X3 = AA * BB -+ var nx = aa.redMul(bb); -+ // Z3 = C * (BB + A24 * C) -+ var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); -+ return this.curve.point(nx, nz); -+}; -+ -+Point.prototype.add = function add() { -+ throw new Error('Not supported on Montgomery curve'); -+}; -+ -+Point.prototype.diffAdd = function diffAdd(p, diff) { -+ // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 -+ // 4M + 2S + 6A -+ -+ // A = X2 + Z2 -+ var a = this.x.redAdd(this.z); -+ // B = X2 - Z2 -+ var b = this.x.redSub(this.z); -+ // C = X3 + Z3 -+ var c = p.x.redAdd(p.z); -+ // D = X3 - Z3 -+ var d = p.x.redSub(p.z); -+ // DA = D * A -+ var da = d.redMul(a); -+ // CB = C * B -+ var cb = c.redMul(b); -+ // X5 = Z1 * (DA + CB)^2 -+ var nx = diff.z.redMul(da.redAdd(cb).redSqr()); -+ // Z5 = X1 * (DA - CB)^2 -+ var nz = diff.x.redMul(da.redISub(cb).redSqr()); -+ return this.curve.point(nx, nz); -+}; -+ -+Point.prototype.mul = function mul(k) { -+ var t = k.clone(); -+ var a = this; // (N / 2) * Q + Q -+ var b = this.curve.point(null, null); // (N / 2) * Q -+ var c = this; // Q -+ -+ for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) -+ bits.push(t.andln(1)); -+ -+ for (var i = bits.length - 1; i >= 0; i--) { -+ if (bits[i] === 0) { -+ // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q -+ a = a.diffAdd(b, c); -+ // N * Q = 2 * ((N / 2) * Q + Q)) -+ b = b.dbl(); -+ } else { -+ // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) -+ b = a.diffAdd(b, c); -+ // N * Q + Q = 2 * ((N / 2) * Q + Q) -+ a = a.dbl(); -+ } -+ } -+ return b; -+}; -+ -+Point.prototype.mulAdd = function mulAdd() { -+ throw new Error('Not supported on Montgomery curve'); -+}; -+ -+Point.prototype.jumlAdd = function jumlAdd() { -+ throw new Error('Not supported on Montgomery curve'); -+}; -+ -+Point.prototype.eq = function eq(other) { -+ return this.getX().cmp(other.getX()) === 0; -+}; -+ -+Point.prototype.normalize = function normalize() { -+ this.x = this.x.redMul(this.z.redInvm()); -+ this.z = this.curve.one; -+ return this; -+}; -+ -+Point.prototype.getX = function getX() { -+ // Normalize coordinates -+ this.normalize(); -+ -+ return this.x.fromRed(); -+}; -diff --git a/node_modules/elliptic/lib/elliptic/curve/short.js b/node_modules/elliptic/lib/elliptic/curve/short.js -new file mode 100644 -index 0000000000000000000000000000000000000000..eec36ec52e1dde15b21435f41f03b77d74345a89 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/curve/short.js -@@ -0,0 +1,938 @@ -+'use strict'; -+ -+var utils = require('../utils'); -+var BN = require('bn.js'); -+var inherits = require('inherits'); -+var Base = require('./base'); -+ -+var assert = utils.assert; -+ -+function ShortCurve(conf) { -+ Base.call(this, 'short', conf); -+ -+ this.a = new BN(conf.a, 16).toRed(this.red); -+ this.b = new BN(conf.b, 16).toRed(this.red); -+ this.tinv = this.two.redInvm(); -+ -+ this.zeroA = this.a.fromRed().cmpn(0) === 0; -+ this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; -+ -+ // If the curve is endomorphic, precalculate beta and lambda -+ this.endo = this._getEndomorphism(conf); -+ this._endoWnafT1 = new Array(4); -+ this._endoWnafT2 = new Array(4); -+} -+inherits(ShortCurve, Base); -+module.exports = ShortCurve; -+ -+ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { -+ // No efficient endomorphism -+ if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) -+ return; -+ -+ // Compute beta and lambda, that lambda * P = (beta * Px; Py) -+ var beta; -+ var lambda; -+ if (conf.beta) { -+ beta = new BN(conf.beta, 16).toRed(this.red); -+ } else { -+ var betas = this._getEndoRoots(this.p); -+ // Choose the smallest beta -+ beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; -+ beta = beta.toRed(this.red); -+ } -+ if (conf.lambda) { -+ lambda = new BN(conf.lambda, 16); -+ } else { -+ // Choose the lambda that is matching selected beta -+ var lambdas = this._getEndoRoots(this.n); -+ if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { -+ lambda = lambdas[0]; -+ } else { -+ lambda = lambdas[1]; -+ assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); -+ } -+ } -+ -+ // Get basis vectors, used for balanced length-two representation -+ var basis; -+ if (conf.basis) { -+ basis = conf.basis.map(function(vec) { -+ return { -+ a: new BN(vec.a, 16), -+ b: new BN(vec.b, 16), -+ }; -+ }); -+ } else { -+ basis = this._getEndoBasis(lambda); -+ } -+ -+ return { -+ beta: beta, -+ lambda: lambda, -+ basis: basis, -+ }; -+}; -+ -+ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { -+ // Find roots of for x^2 + x + 1 in F -+ // Root = (-1 +- Sqrt(-3)) / 2 -+ // -+ var red = num === this.p ? this.red : BN.mont(num); -+ var tinv = new BN(2).toRed(red).redInvm(); -+ var ntinv = tinv.redNeg(); -+ -+ var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); -+ -+ var l1 = ntinv.redAdd(s).fromRed(); -+ var l2 = ntinv.redSub(s).fromRed(); -+ return [ l1, l2 ]; -+}; -+ -+ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { -+ // aprxSqrt >= sqrt(this.n) -+ var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); -+ -+ // 3.74 -+ // Run EGCD, until r(L + 1) < aprxSqrt -+ var u = lambda; -+ var v = this.n.clone(); -+ var x1 = new BN(1); -+ var y1 = new BN(0); -+ var x2 = new BN(0); -+ var y2 = new BN(1); -+ -+ // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) -+ var a0; -+ var b0; -+ // First vector -+ var a1; -+ var b1; -+ // Second vector -+ var a2; -+ var b2; -+ -+ var prevR; -+ var i = 0; -+ var r; -+ var x; -+ while (u.cmpn(0) !== 0) { -+ var q = v.div(u); -+ r = v.sub(q.mul(u)); -+ x = x2.sub(q.mul(x1)); -+ var y = y2.sub(q.mul(y1)); -+ -+ if (!a1 && r.cmp(aprxSqrt) < 0) { -+ a0 = prevR.neg(); -+ b0 = x1; -+ a1 = r.neg(); -+ b1 = x; -+ } else if (a1 && ++i === 2) { -+ break; -+ } -+ prevR = r; -+ -+ v = u; -+ u = r; -+ x2 = x1; -+ x1 = x; -+ y2 = y1; -+ y1 = y; -+ } -+ a2 = r.neg(); -+ b2 = x; -+ -+ var len1 = a1.sqr().add(b1.sqr()); -+ var len2 = a2.sqr().add(b2.sqr()); -+ if (len2.cmp(len1) >= 0) { -+ a2 = a0; -+ b2 = b0; -+ } -+ -+ // Normalize signs -+ if (a1.negative) { -+ a1 = a1.neg(); -+ b1 = b1.neg(); -+ } -+ if (a2.negative) { -+ a2 = a2.neg(); -+ b2 = b2.neg(); -+ } -+ -+ return [ -+ { a: a1, b: b1 }, -+ { a: a2, b: b2 }, -+ ]; -+}; -+ -+ShortCurve.prototype._endoSplit = function _endoSplit(k) { -+ var basis = this.endo.basis; -+ var v1 = basis[0]; -+ var v2 = basis[1]; -+ -+ var c1 = v2.b.mul(k).divRound(this.n); -+ var c2 = v1.b.neg().mul(k).divRound(this.n); -+ -+ var p1 = c1.mul(v1.a); -+ var p2 = c2.mul(v2.a); -+ var q1 = c1.mul(v1.b); -+ var q2 = c2.mul(v2.b); -+ -+ // Calculate answer -+ var k1 = k.sub(p1).sub(p2); -+ var k2 = q1.add(q2).neg(); -+ return { k1: k1, k2: k2 }; -+}; -+ -+ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { -+ x = new BN(x, 16); -+ if (!x.red) -+ x = x.toRed(this.red); -+ -+ var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); -+ var y = y2.redSqrt(); -+ if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) -+ throw new Error('invalid point'); -+ -+ // XXX Is there any way to tell if the number is odd without converting it -+ // to non-red form? -+ var isOdd = y.fromRed().isOdd(); -+ if (odd && !isOdd || !odd && isOdd) -+ y = y.redNeg(); -+ -+ return this.point(x, y); -+}; -+ -+ShortCurve.prototype.validate = function validate(point) { -+ if (point.inf) -+ return true; -+ -+ var x = point.x; -+ var y = point.y; -+ -+ var ax = this.a.redMul(x); -+ var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); -+ return y.redSqr().redISub(rhs).cmpn(0) === 0; -+}; -+ -+ShortCurve.prototype._endoWnafMulAdd = -+ function _endoWnafMulAdd(points, coeffs, jacobianResult) { -+ var npoints = this._endoWnafT1; -+ var ncoeffs = this._endoWnafT2; -+ for (var i = 0; i < points.length; i++) { -+ var split = this._endoSplit(coeffs[i]); -+ var p = points[i]; -+ var beta = p._getBeta(); -+ -+ if (split.k1.negative) { -+ split.k1.ineg(); -+ p = p.neg(true); -+ } -+ if (split.k2.negative) { -+ split.k2.ineg(); -+ beta = beta.neg(true); -+ } -+ -+ npoints[i * 2] = p; -+ npoints[i * 2 + 1] = beta; -+ ncoeffs[i * 2] = split.k1; -+ ncoeffs[i * 2 + 1] = split.k2; -+ } -+ var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); -+ -+ // Clean-up references to points and coefficients -+ for (var j = 0; j < i * 2; j++) { -+ npoints[j] = null; -+ ncoeffs[j] = null; -+ } -+ return res; -+ }; -+ -+function Point(curve, x, y, isRed) { -+ Base.BasePoint.call(this, curve, 'affine'); -+ if (x === null && y === null) { -+ this.x = null; -+ this.y = null; -+ this.inf = true; -+ } else { -+ this.x = new BN(x, 16); -+ this.y = new BN(y, 16); -+ // Force redgomery representation when loading from JSON -+ if (isRed) { -+ this.x.forceRed(this.curve.red); -+ this.y.forceRed(this.curve.red); -+ } -+ if (!this.x.red) -+ this.x = this.x.toRed(this.curve.red); -+ if (!this.y.red) -+ this.y = this.y.toRed(this.curve.red); -+ this.inf = false; -+ } -+} -+inherits(Point, Base.BasePoint); -+ -+ShortCurve.prototype.point = function point(x, y, isRed) { -+ return new Point(this, x, y, isRed); -+}; -+ -+ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { -+ return Point.fromJSON(this, obj, red); -+}; -+ -+Point.prototype._getBeta = function _getBeta() { -+ if (!this.curve.endo) -+ return; -+ -+ var pre = this.precomputed; -+ if (pre && pre.beta) -+ return pre.beta; -+ -+ var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); -+ if (pre) { -+ var curve = this.curve; -+ var endoMul = function(p) { -+ return curve.point(p.x.redMul(curve.endo.beta), p.y); -+ }; -+ pre.beta = beta; -+ beta.precomputed = { -+ beta: null, -+ naf: pre.naf && { -+ wnd: pre.naf.wnd, -+ points: pre.naf.points.map(endoMul), -+ }, -+ doubles: pre.doubles && { -+ step: pre.doubles.step, -+ points: pre.doubles.points.map(endoMul), -+ }, -+ }; -+ } -+ return beta; -+}; -+ -+Point.prototype.toJSON = function toJSON() { -+ if (!this.precomputed) -+ return [ this.x, this.y ]; -+ -+ return [ this.x, this.y, this.precomputed && { -+ doubles: this.precomputed.doubles && { -+ step: this.precomputed.doubles.step, -+ points: this.precomputed.doubles.points.slice(1), -+ }, -+ naf: this.precomputed.naf && { -+ wnd: this.precomputed.naf.wnd, -+ points: this.precomputed.naf.points.slice(1), -+ }, -+ } ]; -+}; -+ -+Point.fromJSON = function fromJSON(curve, obj, red) { -+ if (typeof obj === 'string') -+ obj = JSON.parse(obj); -+ var res = curve.point(obj[0], obj[1], red); -+ if (!obj[2]) -+ return res; -+ -+ function obj2point(obj) { -+ return curve.point(obj[0], obj[1], red); -+ } -+ -+ var pre = obj[2]; -+ res.precomputed = { -+ beta: null, -+ doubles: pre.doubles && { -+ step: pre.doubles.step, -+ points: [ res ].concat(pre.doubles.points.map(obj2point)), -+ }, -+ naf: pre.naf && { -+ wnd: pre.naf.wnd, -+ points: [ res ].concat(pre.naf.points.map(obj2point)), -+ }, -+ }; -+ return res; -+}; -+ -+Point.prototype.inspect = function inspect() { -+ if (this.isInfinity()) -+ return ''; -+ return ''; -+}; -+ -+Point.prototype.isInfinity = function isInfinity() { -+ return this.inf; -+}; -+ -+Point.prototype.add = function add(p) { -+ // O + P = P -+ if (this.inf) -+ return p; -+ -+ // P + O = P -+ if (p.inf) -+ return this; -+ -+ // P + P = 2P -+ if (this.eq(p)) -+ return this.dbl(); -+ -+ // P + (-P) = O -+ if (this.neg().eq(p)) -+ return this.curve.point(null, null); -+ -+ // P + Q = O -+ if (this.x.cmp(p.x) === 0) -+ return this.curve.point(null, null); -+ -+ var c = this.y.redSub(p.y); -+ if (c.cmpn(0) !== 0) -+ c = c.redMul(this.x.redSub(p.x).redInvm()); -+ var nx = c.redSqr().redISub(this.x).redISub(p.x); -+ var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); -+ return this.curve.point(nx, ny); -+}; -+ -+Point.prototype.dbl = function dbl() { -+ if (this.inf) -+ return this; -+ -+ // 2P = O -+ var ys1 = this.y.redAdd(this.y); -+ if (ys1.cmpn(0) === 0) -+ return this.curve.point(null, null); -+ -+ var a = this.curve.a; -+ -+ var x2 = this.x.redSqr(); -+ var dyinv = ys1.redInvm(); -+ var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); -+ -+ var nx = c.redSqr().redISub(this.x.redAdd(this.x)); -+ var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); -+ return this.curve.point(nx, ny); -+}; -+ -+Point.prototype.getX = function getX() { -+ return this.x.fromRed(); -+}; -+ -+Point.prototype.getY = function getY() { -+ return this.y.fromRed(); -+}; -+ -+Point.prototype.mul = function mul(k) { -+ k = new BN(k, 16); -+ if (this.isInfinity()) -+ return this; -+ else if (this._hasDoubles(k)) -+ return this.curve._fixedNafMul(this, k); -+ else if (this.curve.endo) -+ return this.curve._endoWnafMulAdd([ this ], [ k ]); -+ else -+ return this.curve._wnafMul(this, k); -+}; -+ -+Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { -+ var points = [ this, p2 ]; -+ var coeffs = [ k1, k2 ]; -+ if (this.curve.endo) -+ return this.curve._endoWnafMulAdd(points, coeffs); -+ else -+ return this.curve._wnafMulAdd(1, points, coeffs, 2); -+}; -+ -+Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { -+ var points = [ this, p2 ]; -+ var coeffs = [ k1, k2 ]; -+ if (this.curve.endo) -+ return this.curve._endoWnafMulAdd(points, coeffs, true); -+ else -+ return this.curve._wnafMulAdd(1, points, coeffs, 2, true); -+}; -+ -+Point.prototype.eq = function eq(p) { -+ return this === p || -+ this.inf === p.inf && -+ (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); -+}; -+ -+Point.prototype.neg = function neg(_precompute) { -+ if (this.inf) -+ return this; -+ -+ var res = this.curve.point(this.x, this.y.redNeg()); -+ if (_precompute && this.precomputed) { -+ var pre = this.precomputed; -+ var negate = function(p) { -+ return p.neg(); -+ }; -+ res.precomputed = { -+ naf: pre.naf && { -+ wnd: pre.naf.wnd, -+ points: pre.naf.points.map(negate), -+ }, -+ doubles: pre.doubles && { -+ step: pre.doubles.step, -+ points: pre.doubles.points.map(negate), -+ }, -+ }; -+ } -+ return res; -+}; -+ -+Point.prototype.toJ = function toJ() { -+ if (this.inf) -+ return this.curve.jpoint(null, null, null); -+ -+ var res = this.curve.jpoint(this.x, this.y, this.curve.one); -+ return res; -+}; -+ -+function JPoint(curve, x, y, z) { -+ Base.BasePoint.call(this, curve, 'jacobian'); -+ if (x === null && y === null && z === null) { -+ this.x = this.curve.one; -+ this.y = this.curve.one; -+ this.z = new BN(0); -+ } else { -+ this.x = new BN(x, 16); -+ this.y = new BN(y, 16); -+ this.z = new BN(z, 16); -+ } -+ if (!this.x.red) -+ this.x = this.x.toRed(this.curve.red); -+ if (!this.y.red) -+ this.y = this.y.toRed(this.curve.red); -+ if (!this.z.red) -+ this.z = this.z.toRed(this.curve.red); -+ -+ this.zOne = this.z === this.curve.one; -+} -+inherits(JPoint, Base.BasePoint); -+ -+ShortCurve.prototype.jpoint = function jpoint(x, y, z) { -+ return new JPoint(this, x, y, z); -+}; -+ -+JPoint.prototype.toP = function toP() { -+ if (this.isInfinity()) -+ return this.curve.point(null, null); -+ -+ var zinv = this.z.redInvm(); -+ var zinv2 = zinv.redSqr(); -+ var ax = this.x.redMul(zinv2); -+ var ay = this.y.redMul(zinv2).redMul(zinv); -+ -+ return this.curve.point(ax, ay); -+}; -+ -+JPoint.prototype.neg = function neg() { -+ return this.curve.jpoint(this.x, this.y.redNeg(), this.z); -+}; -+ -+JPoint.prototype.add = function add(p) { -+ // O + P = P -+ if (this.isInfinity()) -+ return p; -+ -+ // P + O = P -+ if (p.isInfinity()) -+ return this; -+ -+ // 12M + 4S + 7A -+ var pz2 = p.z.redSqr(); -+ var z2 = this.z.redSqr(); -+ var u1 = this.x.redMul(pz2); -+ var u2 = p.x.redMul(z2); -+ var s1 = this.y.redMul(pz2.redMul(p.z)); -+ var s2 = p.y.redMul(z2.redMul(this.z)); -+ -+ var h = u1.redSub(u2); -+ var r = s1.redSub(s2); -+ if (h.cmpn(0) === 0) { -+ if (r.cmpn(0) !== 0) -+ return this.curve.jpoint(null, null, null); -+ else -+ return this.dbl(); -+ } -+ -+ var h2 = h.redSqr(); -+ var h3 = h2.redMul(h); -+ var v = u1.redMul(h2); -+ -+ var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); -+ var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); -+ var nz = this.z.redMul(p.z).redMul(h); -+ -+ return this.curve.jpoint(nx, ny, nz); -+}; -+ -+JPoint.prototype.mixedAdd = function mixedAdd(p) { -+ // O + P = P -+ if (this.isInfinity()) -+ return p.toJ(); -+ -+ // P + O = P -+ if (p.isInfinity()) -+ return this; -+ -+ // 8M + 3S + 7A -+ var z2 = this.z.redSqr(); -+ var u1 = this.x; -+ var u2 = p.x.redMul(z2); -+ var s1 = this.y; -+ var s2 = p.y.redMul(z2).redMul(this.z); -+ -+ var h = u1.redSub(u2); -+ var r = s1.redSub(s2); -+ if (h.cmpn(0) === 0) { -+ if (r.cmpn(0) !== 0) -+ return this.curve.jpoint(null, null, null); -+ else -+ return this.dbl(); -+ } -+ -+ var h2 = h.redSqr(); -+ var h3 = h2.redMul(h); -+ var v = u1.redMul(h2); -+ -+ var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); -+ var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); -+ var nz = this.z.redMul(h); -+ -+ return this.curve.jpoint(nx, ny, nz); -+}; -+ -+JPoint.prototype.dblp = function dblp(pow) { -+ if (pow === 0) -+ return this; -+ if (this.isInfinity()) -+ return this; -+ if (!pow) -+ return this.dbl(); -+ -+ var i; -+ if (this.curve.zeroA || this.curve.threeA) { -+ var r = this; -+ for (i = 0; i < pow; i++) -+ r = r.dbl(); -+ return r; -+ } -+ -+ // 1M + 2S + 1A + N * (4S + 5M + 8A) -+ // N = 1 => 6M + 6S + 9A -+ var a = this.curve.a; -+ var tinv = this.curve.tinv; -+ -+ var jx = this.x; -+ var jy = this.y; -+ var jz = this.z; -+ var jz4 = jz.redSqr().redSqr(); -+ -+ // Reuse results -+ var jyd = jy.redAdd(jy); -+ for (i = 0; i < pow; i++) { -+ var jx2 = jx.redSqr(); -+ var jyd2 = jyd.redSqr(); -+ var jyd4 = jyd2.redSqr(); -+ var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); -+ -+ var t1 = jx.redMul(jyd2); -+ var nx = c.redSqr().redISub(t1.redAdd(t1)); -+ var t2 = t1.redISub(nx); -+ var dny = c.redMul(t2); -+ dny = dny.redIAdd(dny).redISub(jyd4); -+ var nz = jyd.redMul(jz); -+ if (i + 1 < pow) -+ jz4 = jz4.redMul(jyd4); -+ -+ jx = nx; -+ jz = nz; -+ jyd = dny; -+ } -+ -+ return this.curve.jpoint(jx, jyd.redMul(tinv), jz); -+}; -+ -+JPoint.prototype.dbl = function dbl() { -+ if (this.isInfinity()) -+ return this; -+ -+ if (this.curve.zeroA) -+ return this._zeroDbl(); -+ else if (this.curve.threeA) -+ return this._threeDbl(); -+ else -+ return this._dbl(); -+}; -+ -+JPoint.prototype._zeroDbl = function _zeroDbl() { -+ var nx; -+ var ny; -+ var nz; -+ // Z = 1 -+ if (this.zOne) { -+ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html -+ // #doubling-mdbl-2007-bl -+ // 1M + 5S + 14A -+ -+ // XX = X1^2 -+ var xx = this.x.redSqr(); -+ // YY = Y1^2 -+ var yy = this.y.redSqr(); -+ // YYYY = YY^2 -+ var yyyy = yy.redSqr(); -+ // S = 2 * ((X1 + YY)^2 - XX - YYYY) -+ var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); -+ s = s.redIAdd(s); -+ // M = 3 * XX + a; a = 0 -+ var m = xx.redAdd(xx).redIAdd(xx); -+ // T = M ^ 2 - 2*S -+ var t = m.redSqr().redISub(s).redISub(s); -+ -+ // 8 * YYYY -+ var yyyy8 = yyyy.redIAdd(yyyy); -+ yyyy8 = yyyy8.redIAdd(yyyy8); -+ yyyy8 = yyyy8.redIAdd(yyyy8); -+ -+ // X3 = T -+ nx = t; -+ // Y3 = M * (S - T) - 8 * YYYY -+ ny = m.redMul(s.redISub(t)).redISub(yyyy8); -+ // Z3 = 2*Y1 -+ nz = this.y.redAdd(this.y); -+ } else { -+ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html -+ // #doubling-dbl-2009-l -+ // 2M + 5S + 13A -+ -+ // A = X1^2 -+ var a = this.x.redSqr(); -+ // B = Y1^2 -+ var b = this.y.redSqr(); -+ // C = B^2 -+ var c = b.redSqr(); -+ // D = 2 * ((X1 + B)^2 - A - C) -+ var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); -+ d = d.redIAdd(d); -+ // E = 3 * A -+ var e = a.redAdd(a).redIAdd(a); -+ // F = E^2 -+ var f = e.redSqr(); -+ -+ // 8 * C -+ var c8 = c.redIAdd(c); -+ c8 = c8.redIAdd(c8); -+ c8 = c8.redIAdd(c8); -+ -+ // X3 = F - 2 * D -+ nx = f.redISub(d).redISub(d); -+ // Y3 = E * (D - X3) - 8 * C -+ ny = e.redMul(d.redISub(nx)).redISub(c8); -+ // Z3 = 2 * Y1 * Z1 -+ nz = this.y.redMul(this.z); -+ nz = nz.redIAdd(nz); -+ } -+ -+ return this.curve.jpoint(nx, ny, nz); -+}; -+ -+JPoint.prototype._threeDbl = function _threeDbl() { -+ var nx; -+ var ny; -+ var nz; -+ // Z = 1 -+ if (this.zOne) { -+ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html -+ // #doubling-mdbl-2007-bl -+ // 1M + 5S + 15A -+ -+ // XX = X1^2 -+ var xx = this.x.redSqr(); -+ // YY = Y1^2 -+ var yy = this.y.redSqr(); -+ // YYYY = YY^2 -+ var yyyy = yy.redSqr(); -+ // S = 2 * ((X1 + YY)^2 - XX - YYYY) -+ var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); -+ s = s.redIAdd(s); -+ // M = 3 * XX + a -+ var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); -+ // T = M^2 - 2 * S -+ var t = m.redSqr().redISub(s).redISub(s); -+ // X3 = T -+ nx = t; -+ // Y3 = M * (S - T) - 8 * YYYY -+ var yyyy8 = yyyy.redIAdd(yyyy); -+ yyyy8 = yyyy8.redIAdd(yyyy8); -+ yyyy8 = yyyy8.redIAdd(yyyy8); -+ ny = m.redMul(s.redISub(t)).redISub(yyyy8); -+ // Z3 = 2 * Y1 -+ nz = this.y.redAdd(this.y); -+ } else { -+ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b -+ // 3M + 5S -+ -+ // delta = Z1^2 -+ var delta = this.z.redSqr(); -+ // gamma = Y1^2 -+ var gamma = this.y.redSqr(); -+ // beta = X1 * gamma -+ var beta = this.x.redMul(gamma); -+ // alpha = 3 * (X1 - delta) * (X1 + delta) -+ var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); -+ alpha = alpha.redAdd(alpha).redIAdd(alpha); -+ // X3 = alpha^2 - 8 * beta -+ var beta4 = beta.redIAdd(beta); -+ beta4 = beta4.redIAdd(beta4); -+ var beta8 = beta4.redAdd(beta4); -+ nx = alpha.redSqr().redISub(beta8); -+ // Z3 = (Y1 + Z1)^2 - gamma - delta -+ nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); -+ // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 -+ var ggamma8 = gamma.redSqr(); -+ ggamma8 = ggamma8.redIAdd(ggamma8); -+ ggamma8 = ggamma8.redIAdd(ggamma8); -+ ggamma8 = ggamma8.redIAdd(ggamma8); -+ ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); -+ } -+ -+ return this.curve.jpoint(nx, ny, nz); -+}; -+ -+JPoint.prototype._dbl = function _dbl() { -+ var a = this.curve.a; -+ -+ // 4M + 6S + 10A -+ var jx = this.x; -+ var jy = this.y; -+ var jz = this.z; -+ var jz4 = jz.redSqr().redSqr(); -+ -+ var jx2 = jx.redSqr(); -+ var jy2 = jy.redSqr(); -+ -+ var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); -+ -+ var jxd4 = jx.redAdd(jx); -+ jxd4 = jxd4.redIAdd(jxd4); -+ var t1 = jxd4.redMul(jy2); -+ var nx = c.redSqr().redISub(t1.redAdd(t1)); -+ var t2 = t1.redISub(nx); -+ -+ var jyd8 = jy2.redSqr(); -+ jyd8 = jyd8.redIAdd(jyd8); -+ jyd8 = jyd8.redIAdd(jyd8); -+ jyd8 = jyd8.redIAdd(jyd8); -+ var ny = c.redMul(t2).redISub(jyd8); -+ var nz = jy.redAdd(jy).redMul(jz); -+ -+ return this.curve.jpoint(nx, ny, nz); -+}; -+ -+JPoint.prototype.trpl = function trpl() { -+ if (!this.curve.zeroA) -+ return this.dbl().add(this); -+ -+ // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl -+ // 5M + 10S + ... -+ -+ // XX = X1^2 -+ var xx = this.x.redSqr(); -+ // YY = Y1^2 -+ var yy = this.y.redSqr(); -+ // ZZ = Z1^2 -+ var zz = this.z.redSqr(); -+ // YYYY = YY^2 -+ var yyyy = yy.redSqr(); -+ // M = 3 * XX + a * ZZ2; a = 0 -+ var m = xx.redAdd(xx).redIAdd(xx); -+ // MM = M^2 -+ var mm = m.redSqr(); -+ // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM -+ var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); -+ e = e.redIAdd(e); -+ e = e.redAdd(e).redIAdd(e); -+ e = e.redISub(mm); -+ // EE = E^2 -+ var ee = e.redSqr(); -+ // T = 16*YYYY -+ var t = yyyy.redIAdd(yyyy); -+ t = t.redIAdd(t); -+ t = t.redIAdd(t); -+ t = t.redIAdd(t); -+ // U = (M + E)^2 - MM - EE - T -+ var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); -+ // X3 = 4 * (X1 * EE - 4 * YY * U) -+ var yyu4 = yy.redMul(u); -+ yyu4 = yyu4.redIAdd(yyu4); -+ yyu4 = yyu4.redIAdd(yyu4); -+ var nx = this.x.redMul(ee).redISub(yyu4); -+ nx = nx.redIAdd(nx); -+ nx = nx.redIAdd(nx); -+ // Y3 = 8 * Y1 * (U * (T - U) - E * EE) -+ var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); -+ ny = ny.redIAdd(ny); -+ ny = ny.redIAdd(ny); -+ ny = ny.redIAdd(ny); -+ // Z3 = (Z1 + E)^2 - ZZ - EE -+ var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); -+ -+ return this.curve.jpoint(nx, ny, nz); -+}; -+ -+JPoint.prototype.mul = function mul(k, kbase) { -+ k = new BN(k, kbase); -+ -+ return this.curve._wnafMul(this, k); -+}; -+ -+JPoint.prototype.eq = function eq(p) { -+ if (p.type === 'affine') -+ return this.eq(p.toJ()); -+ -+ if (this === p) -+ return true; -+ -+ // x1 * z2^2 == x2 * z1^2 -+ var z2 = this.z.redSqr(); -+ var pz2 = p.z.redSqr(); -+ if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) -+ return false; -+ -+ // y1 * z2^3 == y2 * z1^3 -+ var z3 = z2.redMul(this.z); -+ var pz3 = pz2.redMul(p.z); -+ return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; -+}; -+ -+JPoint.prototype.eqXToP = function eqXToP(x) { -+ var zs = this.z.redSqr(); -+ var rx = x.toRed(this.curve.red).redMul(zs); -+ if (this.x.cmp(rx) === 0) -+ return true; -+ -+ var xc = x.clone(); -+ var t = this.curve.redN.redMul(zs); -+ for (;;) { -+ xc.iadd(this.curve.n); -+ if (xc.cmp(this.curve.p) >= 0) -+ return false; -+ -+ rx.redIAdd(t); -+ if (this.x.cmp(rx) === 0) -+ return true; -+ } -+}; -+ -+JPoint.prototype.inspect = function inspect() { -+ if (this.isInfinity()) -+ return ''; -+ return ''; -+}; -+ -+JPoint.prototype.isInfinity = function isInfinity() { -+ // XXX This code assumes that zero is always zero in red -+ return this.z.cmpn(0) === 0; -+}; -diff --git a/node_modules/elliptic/lib/elliptic/curves.js b/node_modules/elliptic/lib/elliptic/curves.js -new file mode 100644 -index 0000000000000000000000000000000000000000..6c36e03750b9774539c1c72820c40d08ebfe61a2 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/curves.js -@@ -0,0 +1,206 @@ -+'use strict'; -+ -+var curves = exports; -+ -+var hash = require('hash.js'); -+var curve = require('./curve'); -+var utils = require('./utils'); -+ -+var assert = utils.assert; -+ -+function PresetCurve(options) { -+ if (options.type === 'short') -+ this.curve = new curve.short(options); -+ else if (options.type === 'edwards') -+ this.curve = new curve.edwards(options); -+ else -+ this.curve = new curve.mont(options); -+ this.g = this.curve.g; -+ this.n = this.curve.n; -+ this.hash = options.hash; -+ -+ assert(this.g.validate(), 'Invalid curve'); -+ assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); -+} -+curves.PresetCurve = PresetCurve; -+ -+function defineCurve(name, options) { -+ Object.defineProperty(curves, name, { -+ configurable: true, -+ enumerable: true, -+ get: function() { -+ var curve = new PresetCurve(options); -+ Object.defineProperty(curves, name, { -+ configurable: true, -+ enumerable: true, -+ value: curve, -+ }); -+ return curve; -+ }, -+ }); -+} -+ -+defineCurve('p192', { -+ type: 'short', -+ prime: 'p192', -+ p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', -+ a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', -+ b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', -+ n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', -+ hash: hash.sha256, -+ gRed: false, -+ g: [ -+ '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', -+ '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811', -+ ], -+}); -+ -+defineCurve('p224', { -+ type: 'short', -+ prime: 'p224', -+ p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', -+ a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', -+ b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', -+ n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', -+ hash: hash.sha256, -+ gRed: false, -+ g: [ -+ 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', -+ 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34', -+ ], -+}); -+ -+defineCurve('p256', { -+ type: 'short', -+ prime: null, -+ p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', -+ a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', -+ b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', -+ n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', -+ hash: hash.sha256, -+ gRed: false, -+ g: [ -+ '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', -+ '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5', -+ ], -+}); -+ -+defineCurve('p384', { -+ type: 'short', -+ prime: null, -+ p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'fffffffe ffffffff 00000000 00000000 ffffffff', -+ a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'fffffffe ffffffff 00000000 00000000 fffffffc', -+ b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + -+ '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', -+ n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + -+ 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', -+ hash: hash.sha384, -+ gRed: false, -+ g: [ -+ 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + -+ '5502f25d bf55296c 3a545e38 72760ab7', -+ '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + -+ '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f', -+ ], -+}); -+ -+defineCurve('p521', { -+ type: 'short', -+ prime: null, -+ p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'ffffffff ffffffff ffffffff ffffffff ffffffff', -+ a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'ffffffff ffffffff ffffffff ffffffff fffffffc', -+ b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + -+ '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + -+ '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', -+ n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + -+ 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + -+ 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', -+ hash: hash.sha512, -+ gRed: false, -+ g: [ -+ '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + -+ '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + -+ 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', -+ '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + -+ '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + -+ '3fad0761 353c7086 a272c240 88be9476 9fd16650', -+ ], -+}); -+ -+defineCurve('curve25519', { -+ type: 'mont', -+ prime: 'p25519', -+ p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', -+ a: '76d06', -+ b: '1', -+ n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', -+ hash: hash.sha256, -+ gRed: false, -+ g: [ -+ '9', -+ ], -+}); -+ -+defineCurve('ed25519', { -+ type: 'edwards', -+ prime: 'p25519', -+ p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', -+ a: '-1', -+ c: '1', -+ // -121665 * (121666^(-1)) (mod P) -+ d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', -+ n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', -+ hash: hash.sha256, -+ gRed: false, -+ g: [ -+ '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', -+ -+ // 4/5 -+ '6666666666666666666666666666666666666666666666666666666666666658', -+ ], -+}); -+ -+var pre; -+try { -+ pre = require('./precomputed/secp256k1'); -+} catch (e) { -+ pre = undefined; -+} -+ -+defineCurve('secp256k1', { -+ type: 'short', -+ prime: 'k256', -+ p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', -+ a: '0', -+ b: '7', -+ n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', -+ h: '1', -+ hash: hash.sha256, -+ -+ // Precomputed endomorphism -+ beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', -+ lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', -+ basis: [ -+ { -+ a: '3086d221a7d46bcde86c90e49284eb15', -+ b: '-e4437ed6010e88286f547fa90abfe4c3', -+ }, -+ { -+ a: '114ca50f7a8e2f3f657c1108d9d44cfd8', -+ b: '3086d221a7d46bcde86c90e49284eb15', -+ }, -+ ], -+ -+ gRed: false, -+ g: [ -+ '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', -+ '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', -+ pre, -+ ], -+}); -diff --git a/node_modules/elliptic/lib/elliptic/ec/index.js b/node_modules/elliptic/lib/elliptic/ec/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..b382b62923d34979a919b6ff857277b3c6a2d97e ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/ec/index.js -@@ -0,0 +1,265 @@ -+'use strict'; -+ -+var BN = require('bn.js'); -+var HmacDRBG = require('hmac-drbg'); -+var utils = require('../utils'); -+var curves = require('../curves'); -+var rand = require('brorand'); -+var assert = utils.assert; -+ -+var KeyPair = require('./key'); -+var Signature = require('./signature'); -+ -+function EC(options) { -+ if (!(this instanceof EC)) -+ return new EC(options); -+ -+ // Shortcut `elliptic.ec(curve-name)` -+ if (typeof options === 'string') { -+ assert(Object.prototype.hasOwnProperty.call(curves, options), -+ 'Unknown curve ' + options); -+ -+ options = curves[options]; -+ } -+ -+ // Shortcut for `elliptic.ec(elliptic.curves.curveName)` -+ if (options instanceof curves.PresetCurve) -+ options = { curve: options }; -+ -+ this.curve = options.curve.curve; -+ this.n = this.curve.n; -+ this.nh = this.n.ushrn(1); -+ this.g = this.curve.g; -+ -+ // Point on curve -+ this.g = options.curve.g; -+ this.g.precompute(options.curve.n.bitLength() + 1); -+ -+ // Hash for function for DRBG -+ this.hash = options.hash || options.curve.hash; -+} -+module.exports = EC; -+ -+EC.prototype.keyPair = function keyPair(options) { -+ return new KeyPair(this, options); -+}; -+ -+EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { -+ return KeyPair.fromPrivate(this, priv, enc); -+}; -+ -+EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { -+ return KeyPair.fromPublic(this, pub, enc); -+}; -+ -+EC.prototype.genKeyPair = function genKeyPair(options) { -+ if (!options) -+ options = {}; -+ -+ // Instantiate Hmac_DRBG -+ var drbg = new HmacDRBG({ -+ hash: this.hash, -+ pers: options.pers, -+ persEnc: options.persEnc || 'utf8', -+ entropy: options.entropy || rand(this.hash.hmacStrength), -+ entropyEnc: options.entropy && options.entropyEnc || 'utf8', -+ nonce: this.n.toArray(), -+ }); -+ -+ var bytes = this.n.byteLength(); -+ var ns2 = this.n.sub(new BN(2)); -+ for (;;) { -+ var priv = new BN(drbg.generate(bytes)); -+ if (priv.cmp(ns2) > 0) -+ continue; -+ -+ priv.iaddn(1); -+ return this.keyFromPrivate(priv); -+ } -+}; -+ -+EC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) { -+ var byteLength; -+ if (BN.isBN(msg) || typeof msg === 'number') { -+ msg = new BN(msg, 16); -+ byteLength = msg.byteLength(); -+ } else if (typeof msg === 'object') { -+ // BN assumes an array-like input and asserts length -+ byteLength = msg.length; -+ msg = new BN(msg, 16); -+ } else { -+ // BN converts the value to string -+ var str = msg.toString(); -+ // HEX encoding -+ byteLength = (str.length + 1) >>> 1; -+ msg = new BN(str, 16); -+ } -+ // Allow overriding -+ if (typeof bitLength !== 'number') { -+ bitLength = byteLength * 8; -+ } -+ var delta = bitLength - this.n.bitLength(); -+ if (delta > 0) -+ msg = msg.ushrn(delta); -+ if (!truncOnly && msg.cmp(this.n) >= 0) -+ return msg.sub(this.n); -+ else -+ return msg; -+}; -+ -+EC.prototype.sign = function sign(msg, key, enc, options) { -+ if (typeof enc === 'object') { -+ options = enc; -+ enc = null; -+ } -+ if (!options) -+ options = {}; -+ -+ key = this.keyFromPrivate(key, enc); -+ msg = this._truncateToN(msg, false, options.msgBitLength); -+ -+ // Zero-extend key to provide enough entropy -+ var bytes = this.n.byteLength(); -+ var bkey = key.getPrivate().toArray('be', bytes); -+ -+ // Zero-extend nonce to have the same byte size as N -+ var nonce = msg.toArray('be', bytes); -+ -+ // Instantiate Hmac_DRBG -+ var drbg = new HmacDRBG({ -+ hash: this.hash, -+ entropy: bkey, -+ nonce: nonce, -+ pers: options.pers, -+ persEnc: options.persEnc || 'utf8', -+ }); -+ -+ // Number of bytes to generate -+ var ns1 = this.n.sub(new BN(1)); -+ -+ for (var iter = 0; ; iter++) { -+ var k = options.k ? -+ options.k(iter) : -+ new BN(drbg.generate(this.n.byteLength())); -+ k = this._truncateToN(k, true); -+ if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) -+ continue; -+ -+ var kp = this.g.mul(k); -+ if (kp.isInfinity()) -+ continue; -+ -+ var kpX = kp.getX(); -+ var r = kpX.umod(this.n); -+ if (r.cmpn(0) === 0) -+ continue; -+ -+ var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); -+ s = s.umod(this.n); -+ if (s.cmpn(0) === 0) -+ continue; -+ -+ var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | -+ (kpX.cmp(r) !== 0 ? 2 : 0); -+ -+ // Use complement of `s`, if it is > `n / 2` -+ if (options.canonical && s.cmp(this.nh) > 0) { -+ s = this.n.sub(s); -+ recoveryParam ^= 1; -+ } -+ -+ return new Signature({ r: r, s: s, recoveryParam: recoveryParam }); -+ } -+}; -+ -+EC.prototype.verify = function verify(msg, signature, key, enc, options) { -+ if (!options) -+ options = {}; -+ -+ msg = this._truncateToN(msg, false, options.msgBitLength); -+ key = this.keyFromPublic(key, enc); -+ signature = new Signature(signature, 'hex'); -+ -+ // Perform primitive values validation -+ var r = signature.r; -+ var s = signature.s; -+ if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) -+ return false; -+ if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) -+ return false; -+ -+ // Validate signature -+ var sinv = s.invm(this.n); -+ var u1 = sinv.mul(msg).umod(this.n); -+ var u2 = sinv.mul(r).umod(this.n); -+ var p; -+ -+ if (!this.curve._maxwellTrick) { -+ p = this.g.mulAdd(u1, key.getPublic(), u2); -+ if (p.isInfinity()) -+ return false; -+ -+ return p.getX().umod(this.n).cmp(r) === 0; -+ } -+ -+ // NOTE: Greg Maxwell's trick, inspired by: -+ // https://git.io/vad3K -+ -+ p = this.g.jmulAdd(u1, key.getPublic(), u2); -+ if (p.isInfinity()) -+ return false; -+ -+ // Compare `p.x` of Jacobian point with `r`, -+ // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the -+ // inverse of `p.z^2` -+ return p.eqXToP(r); -+}; -+ -+EC.prototype.recoverPubKey = function(msg, signature, j, enc) { -+ assert((3 & j) === j, 'The recovery param is more than two bits'); -+ signature = new Signature(signature, enc); -+ -+ var n = this.n; -+ var e = new BN(msg); -+ var r = signature.r; -+ var s = signature.s; -+ -+ // A set LSB signifies that the y-coordinate is odd -+ var isYOdd = j & 1; -+ var isSecondKey = j >> 1; -+ if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) -+ throw new Error('Unable to find sencond key candinate'); -+ -+ // 1.1. Let x = r + jn. -+ if (isSecondKey) -+ r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); -+ else -+ r = this.curve.pointFromX(r, isYOdd); -+ -+ var rInv = signature.r.invm(n); -+ var s1 = n.sub(e).mul(rInv).umod(n); -+ var s2 = s.mul(rInv).umod(n); -+ -+ // 1.6.1 Compute Q = r^-1 (sR - eG) -+ // Q = r^-1 (sR + -eG) -+ return this.g.mulAdd(s1, r, s2); -+}; -+ -+EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { -+ signature = new Signature(signature, enc); -+ if (signature.recoveryParam !== null) -+ return signature.recoveryParam; -+ -+ for (var i = 0; i < 4; i++) { -+ var Qprime; -+ try { -+ Qprime = this.recoverPubKey(e, signature, i); -+ } catch (e) { -+ continue; -+ } -+ -+ if (Qprime.eq(Q)) -+ return i; -+ } -+ throw new Error('Unable to find valid recovery factor'); -+}; -diff --git a/node_modules/elliptic/lib/elliptic/ec/key.js b/node_modules/elliptic/lib/elliptic/ec/key.js -new file mode 100644 -index 0000000000000000000000000000000000000000..595cfb2f52406f9c3e1061d7440ff1f0a4054a5d ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/ec/key.js -@@ -0,0 +1,121 @@ -+'use strict'; -+ -+var BN = require('bn.js'); -+var utils = require('../utils'); -+var assert = utils.assert; -+ -+function KeyPair(ec, options) { -+ this.ec = ec; -+ this.priv = null; -+ this.pub = null; -+ -+ // KeyPair(ec, { priv: ..., pub: ... }) -+ if (options.priv) -+ this._importPrivate(options.priv, options.privEnc); -+ if (options.pub) -+ this._importPublic(options.pub, options.pubEnc); -+} -+module.exports = KeyPair; -+ -+KeyPair.fromPublic = function fromPublic(ec, pub, enc) { -+ if (pub instanceof KeyPair) -+ return pub; -+ -+ return new KeyPair(ec, { -+ pub: pub, -+ pubEnc: enc, -+ }); -+}; -+ -+KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { -+ if (priv instanceof KeyPair) -+ return priv; -+ -+ return new KeyPair(ec, { -+ priv: priv, -+ privEnc: enc, -+ }); -+}; -+ -+KeyPair.prototype.validate = function validate() { -+ var pub = this.getPublic(); -+ -+ if (pub.isInfinity()) -+ return { result: false, reason: 'Invalid public key' }; -+ if (!pub.validate()) -+ return { result: false, reason: 'Public key is not a point' }; -+ if (!pub.mul(this.ec.curve.n).isInfinity()) -+ return { result: false, reason: 'Public key * N != O' }; -+ -+ return { result: true, reason: null }; -+}; -+ -+KeyPair.prototype.getPublic = function getPublic(compact, enc) { -+ // compact is optional argument -+ if (typeof compact === 'string') { -+ enc = compact; -+ compact = null; -+ } -+ -+ if (!this.pub) -+ this.pub = this.ec.g.mul(this.priv); -+ -+ if (!enc) -+ return this.pub; -+ -+ return this.pub.encode(enc, compact); -+}; -+ -+KeyPair.prototype.getPrivate = function getPrivate(enc) { -+ if (enc === 'hex') -+ return this.priv.toString(16, 2); -+ else -+ return this.priv; -+}; -+ -+KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { -+ this.priv = new BN(key, enc || 16); -+ -+ // Ensure that the priv won't be bigger than n, otherwise we may fail -+ // in fixed multiplication method -+ this.priv = this.priv.umod(this.ec.curve.n); -+}; -+ -+KeyPair.prototype._importPublic = function _importPublic(key, enc) { -+ if (key.x || key.y) { -+ // Montgomery points only have an `x` coordinate. -+ // Weierstrass/Edwards points on the other hand have both `x` and -+ // `y` coordinates. -+ if (this.ec.curve.type === 'mont') { -+ assert(key.x, 'Need x coordinate'); -+ } else if (this.ec.curve.type === 'short' || -+ this.ec.curve.type === 'edwards') { -+ assert(key.x && key.y, 'Need both x and y coordinate'); -+ } -+ this.pub = this.ec.curve.point(key.x, key.y); -+ return; -+ } -+ this.pub = this.ec.curve.decodePoint(key, enc); -+}; -+ -+// ECDH -+KeyPair.prototype.derive = function derive(pub) { -+ if(!pub.validate()) { -+ assert(pub.validate(), 'public point not validated'); -+ } -+ return pub.mul(this.priv).getX(); -+}; -+ -+// ECDSA -+KeyPair.prototype.sign = function sign(msg, enc, options) { -+ return this.ec.sign(msg, this, enc, options); -+}; -+ -+KeyPair.prototype.verify = function verify(msg, signature, options) { -+ return this.ec.verify(msg, signature, this, undefined, options); -+}; -+ -+KeyPair.prototype.inspect = function inspect() { -+ return ''; -+}; -diff --git a/node_modules/elliptic/lib/elliptic/ec/signature.js b/node_modules/elliptic/lib/elliptic/ec/signature.js -new file mode 100644 -index 0000000000000000000000000000000000000000..48e3a26fb33f3653fa3d554864e3b1b24f66c3cc ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/ec/signature.js -@@ -0,0 +1,176 @@ -+'use strict'; -+ -+var BN = require('bn.js'); -+ -+var utils = require('../utils'); -+var assert = utils.assert; -+ -+function Signature(options, enc) { -+ if (options instanceof Signature) -+ return options; -+ -+ if (this._importDER(options, enc)) -+ return; -+ -+ assert(options.r && options.s, 'Signature without r or s'); -+ this.r = new BN(options.r, 16); -+ this.s = new BN(options.s, 16); -+ if (options.recoveryParam === undefined) -+ this.recoveryParam = null; -+ else -+ this.recoveryParam = options.recoveryParam; -+} -+module.exports = Signature; -+ -+function Position() { -+ this.place = 0; -+} -+ -+function getLength(buf, p) { -+ var initial = buf[p.place++]; -+ if (!(initial & 0x80)) { -+ return initial; -+ } -+ var octetLen = initial & 0xf; -+ -+ // Indefinite length or overflow -+ if (octetLen === 0 || octetLen > 4) { -+ return false; -+ } -+ -+ if(buf[p.place] === 0x00) { -+ return false; -+ } -+ -+ var val = 0; -+ for (var i = 0, off = p.place; i < octetLen; i++, off++) { -+ val <<= 8; -+ val |= buf[off]; -+ val >>>= 0; -+ } -+ -+ // Leading zeroes -+ if (val <= 0x7f) { -+ return false; -+ } -+ -+ p.place = off; -+ return val; -+} -+ -+function rmPadding(buf) { -+ var i = 0; -+ var len = buf.length - 1; -+ while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { -+ i++; -+ } -+ if (i === 0) { -+ return buf; -+ } -+ return buf.slice(i); -+} -+ -+Signature.prototype._importDER = function _importDER(data, enc) { -+ data = utils.toArray(data, enc); -+ var p = new Position(); -+ if (data[p.place++] !== 0x30) { -+ return false; -+ } -+ var len = getLength(data, p); -+ if (len === false) { -+ return false; -+ } -+ if ((len + p.place) !== data.length) { -+ return false; -+ } -+ if (data[p.place++] !== 0x02) { -+ return false; -+ } -+ var rlen = getLength(data, p); -+ if (rlen === false) { -+ return false; -+ } -+ if ((data[p.place] & 128) !== 0) { -+ return false; -+ } -+ var r = data.slice(p.place, rlen + p.place); -+ p.place += rlen; -+ if (data[p.place++] !== 0x02) { -+ return false; -+ } -+ var slen = getLength(data, p); -+ if (slen === false) { -+ return false; -+ } -+ if (data.length !== slen + p.place) { -+ return false; -+ } -+ if ((data[p.place] & 128) !== 0) { -+ return false; -+ } -+ var s = data.slice(p.place, slen + p.place); -+ if (r[0] === 0) { -+ if (r[1] & 0x80) { -+ r = r.slice(1); -+ } else { -+ // Leading zeroes -+ return false; -+ } -+ } -+ if (s[0] === 0) { -+ if (s[1] & 0x80) { -+ s = s.slice(1); -+ } else { -+ // Leading zeroes -+ return false; -+ } -+ } -+ -+ this.r = new BN(r); -+ this.s = new BN(s); -+ this.recoveryParam = null; -+ -+ return true; -+}; -+ -+function constructLength(arr, len) { -+ if (len < 0x80) { -+ arr.push(len); -+ return; -+ } -+ var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); -+ arr.push(octets | 0x80); -+ while (--octets) { -+ arr.push((len >>> (octets << 3)) & 0xff); -+ } -+ arr.push(len); -+} -+ -+Signature.prototype.toDER = function toDER(enc) { -+ var r = this.r.toArray(); -+ var s = this.s.toArray(); -+ -+ // Pad values -+ if (r[0] & 0x80) -+ r = [ 0 ].concat(r); -+ // Pad values -+ if (s[0] & 0x80) -+ s = [ 0 ].concat(s); -+ -+ r = rmPadding(r); -+ s = rmPadding(s); -+ -+ while (!s[0] && !(s[1] & 0x80)) { -+ s = s.slice(1); -+ } -+ var arr = [ 0x02 ]; -+ constructLength(arr, r.length); -+ arr = arr.concat(r); -+ arr.push(0x02); -+ constructLength(arr, s.length); -+ var backHalf = arr.concat(s); -+ var res = [ 0x30 ]; -+ constructLength(res, backHalf.length); -+ res = res.concat(backHalf); -+ return utils.encode(res, enc); -+}; -diff --git a/node_modules/elliptic/lib/elliptic/eddsa/index.js b/node_modules/elliptic/lib/elliptic/eddsa/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..cb703a7c71286c5e506faf4c1c32b48691f20f85 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/eddsa/index.js -@@ -0,0 +1,121 @@ -+'use strict'; -+ -+var hash = require('hash.js'); -+var curves = require('../curves'); -+var utils = require('../utils'); -+var assert = utils.assert; -+var parseBytes = utils.parseBytes; -+var KeyPair = require('./key'); -+var Signature = require('./signature'); -+ -+function EDDSA(curve) { -+ assert(curve === 'ed25519', 'only tested with ed25519 so far'); -+ -+ if (!(this instanceof EDDSA)) -+ return new EDDSA(curve); -+ -+ curve = curves[curve].curve; -+ this.curve = curve; -+ this.g = curve.g; -+ this.g.precompute(curve.n.bitLength() + 1); -+ -+ this.pointClass = curve.point().constructor; -+ this.encodingLength = Math.ceil(curve.n.bitLength() / 8); -+ this.hash = hash.sha512; -+} -+ -+module.exports = EDDSA; -+ -+/** -+* @param {Array|String} message - message bytes -+* @param {Array|String|KeyPair} secret - secret bytes or a keypair -+* @returns {Signature} - signature -+*/ -+EDDSA.prototype.sign = function sign(message, secret) { -+ message = parseBytes(message); -+ var key = this.keyFromSecret(secret); -+ var r = this.hashInt(key.messagePrefix(), message); -+ var R = this.g.mul(r); -+ var Rencoded = this.encodePoint(R); -+ var s_ = this.hashInt(Rencoded, key.pubBytes(), message) -+ .mul(key.priv()); -+ var S = r.add(s_).umod(this.curve.n); -+ return this.makeSignature({ R: R, S: S, Rencoded: Rencoded }); -+}; -+ -+/** -+* @param {Array} message - message bytes -+* @param {Array|String|Signature} sig - sig bytes -+* @param {Array|String|Point|KeyPair} pub - public key -+* @returns {Boolean} - true if public key matches sig of message -+*/ -+EDDSA.prototype.verify = function verify(message, sig, pub) { -+ message = parseBytes(message); -+ sig = this.makeSignature(sig); -+ if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) { -+ return false; -+ } -+ var key = this.keyFromPublic(pub); -+ var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); -+ var SG = this.g.mul(sig.S()); -+ var RplusAh = sig.R().add(key.pub().mul(h)); -+ return RplusAh.eq(SG); -+}; -+ -+EDDSA.prototype.hashInt = function hashInt() { -+ var hash = this.hash(); -+ for (var i = 0; i < arguments.length; i++) -+ hash.update(arguments[i]); -+ return utils.intFromLE(hash.digest()).umod(this.curve.n); -+}; -+ -+EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { -+ return KeyPair.fromPublic(this, pub); -+}; -+ -+EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { -+ return KeyPair.fromSecret(this, secret); -+}; -+ -+EDDSA.prototype.makeSignature = function makeSignature(sig) { -+ if (sig instanceof Signature) -+ return sig; -+ return new Signature(this, sig); -+}; -+ -+/** -+* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 -+* -+* EDDSA defines methods for encoding and decoding points and integers. These are -+* helper convenience methods, that pass along to utility functions implied -+* parameters. -+* -+*/ -+EDDSA.prototype.encodePoint = function encodePoint(point) { -+ var enc = point.getY().toArray('le', this.encodingLength); -+ enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; -+ return enc; -+}; -+ -+EDDSA.prototype.decodePoint = function decodePoint(bytes) { -+ bytes = utils.parseBytes(bytes); -+ -+ var lastIx = bytes.length - 1; -+ var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); -+ var xIsOdd = (bytes[lastIx] & 0x80) !== 0; -+ -+ var y = utils.intFromLE(normed); -+ return this.curve.pointFromY(y, xIsOdd); -+}; -+ -+EDDSA.prototype.encodeInt = function encodeInt(num) { -+ return num.toArray('le', this.encodingLength); -+}; -+ -+EDDSA.prototype.decodeInt = function decodeInt(bytes) { -+ return utils.intFromLE(bytes); -+}; -+ -+EDDSA.prototype.isPoint = function isPoint(val) { -+ return val instanceof this.pointClass; -+}; -diff --git a/node_modules/elliptic/lib/elliptic/eddsa/key.js b/node_modules/elliptic/lib/elliptic/eddsa/key.js -new file mode 100644 -index 0000000000000000000000000000000000000000..a00028f82691efdfcbfbb14fdd7815e2e891ec71 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/eddsa/key.js -@@ -0,0 +1,95 @@ -+'use strict'; -+ -+var utils = require('../utils'); -+var assert = utils.assert; -+var parseBytes = utils.parseBytes; -+var cachedProperty = utils.cachedProperty; -+ -+/** -+* @param {EDDSA} eddsa - instance -+* @param {Object} params - public/private key parameters -+* -+* @param {Array} [params.secret] - secret seed bytes -+* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) -+* @param {Array} [params.pub] - public key point encoded as bytes -+* -+*/ -+function KeyPair(eddsa, params) { -+ this.eddsa = eddsa; -+ this._secret = parseBytes(params.secret); -+ if (eddsa.isPoint(params.pub)) -+ this._pub = params.pub; -+ else -+ this._pubBytes = parseBytes(params.pub); -+} -+ -+KeyPair.fromPublic = function fromPublic(eddsa, pub) { -+ if (pub instanceof KeyPair) -+ return pub; -+ return new KeyPair(eddsa, { pub: pub }); -+}; -+ -+KeyPair.fromSecret = function fromSecret(eddsa, secret) { -+ if (secret instanceof KeyPair) -+ return secret; -+ return new KeyPair(eddsa, { secret: secret }); -+}; -+ -+KeyPair.prototype.secret = function secret() { -+ return this._secret; -+}; -+ -+cachedProperty(KeyPair, 'pubBytes', function pubBytes() { -+ return this.eddsa.encodePoint(this.pub()); -+}); -+ -+cachedProperty(KeyPair, 'pub', function pub() { -+ if (this._pubBytes) -+ return this.eddsa.decodePoint(this._pubBytes); -+ return this.eddsa.g.mul(this.priv()); -+}); -+ -+cachedProperty(KeyPair, 'privBytes', function privBytes() { -+ var eddsa = this.eddsa; -+ var hash = this.hash(); -+ var lastIx = eddsa.encodingLength - 1; -+ -+ var a = hash.slice(0, eddsa.encodingLength); -+ a[0] &= 248; -+ a[lastIx] &= 127; -+ a[lastIx] |= 64; -+ -+ return a; -+}); -+ -+cachedProperty(KeyPair, 'priv', function priv() { -+ return this.eddsa.decodeInt(this.privBytes()); -+}); -+ -+cachedProperty(KeyPair, 'hash', function hash() { -+ return this.eddsa.hash().update(this.secret()).digest(); -+}); -+ -+cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { -+ return this.hash().slice(this.eddsa.encodingLength); -+}); -+ -+KeyPair.prototype.sign = function sign(message) { -+ assert(this._secret, 'KeyPair can only verify'); -+ return this.eddsa.sign(message, this); -+}; -+ -+KeyPair.prototype.verify = function verify(message, sig) { -+ return this.eddsa.verify(message, sig, this); -+}; -+ -+KeyPair.prototype.getSecret = function getSecret(enc) { -+ assert(this._secret, 'KeyPair is public only'); -+ return utils.encode(this.secret(), enc); -+}; -+ -+KeyPair.prototype.getPublic = function getPublic(enc) { -+ return utils.encode(this.pubBytes(), enc); -+}; -+ -+module.exports = KeyPair; -diff --git a/node_modules/elliptic/lib/elliptic/eddsa/signature.js b/node_modules/elliptic/lib/elliptic/eddsa/signature.js -new file mode 100644 -index 0000000000000000000000000000000000000000..b224ad1c0d200b9c595d72968254049c154d8dfe ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/eddsa/signature.js -@@ -0,0 +1,66 @@ -+'use strict'; -+ -+var BN = require('bn.js'); -+var utils = require('../utils'); -+var assert = utils.assert; -+var cachedProperty = utils.cachedProperty; -+var parseBytes = utils.parseBytes; -+ -+/** -+* @param {EDDSA} eddsa - eddsa instance -+* @param {Array|Object} sig - -+* @param {Array|Point} [sig.R] - R point as Point or bytes -+* @param {Array|bn} [sig.S] - S scalar as bn or bytes -+* @param {Array} [sig.Rencoded] - R point encoded -+* @param {Array} [sig.Sencoded] - S scalar encoded -+*/ -+function Signature(eddsa, sig) { -+ this.eddsa = eddsa; -+ -+ if (typeof sig !== 'object') -+ sig = parseBytes(sig); -+ -+ if (Array.isArray(sig)) { -+ assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size'); -+ sig = { -+ R: sig.slice(0, eddsa.encodingLength), -+ S: sig.slice(eddsa.encodingLength), -+ }; -+ } -+ -+ assert(sig.R && sig.S, 'Signature without R or S'); -+ -+ if (eddsa.isPoint(sig.R)) -+ this._R = sig.R; -+ if (sig.S instanceof BN) -+ this._S = sig.S; -+ -+ this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; -+ this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; -+} -+ -+cachedProperty(Signature, 'S', function S() { -+ return this.eddsa.decodeInt(this.Sencoded()); -+}); -+ -+cachedProperty(Signature, 'R', function R() { -+ return this.eddsa.decodePoint(this.Rencoded()); -+}); -+ -+cachedProperty(Signature, 'Rencoded', function Rencoded() { -+ return this.eddsa.encodePoint(this.R()); -+}); -+ -+cachedProperty(Signature, 'Sencoded', function Sencoded() { -+ return this.eddsa.encodeInt(this.S()); -+}); -+ -+Signature.prototype.toBytes = function toBytes() { -+ return this.Rencoded().concat(this.Sencoded()); -+}; -+ -+Signature.prototype.toHex = function toHex() { -+ return utils.encode(this.toBytes(), 'hex').toUpperCase(); -+}; -+ -+module.exports = Signature; -diff --git a/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js b/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js -new file mode 100644 -index 0000000000000000000000000000000000000000..01a7c4d2c4dae384f4ae7b0d7d64bb639335e88f ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js -@@ -0,0 +1,780 @@ -+module.exports = { -+ doubles: { -+ step: 4, -+ points: [ -+ [ -+ 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', -+ 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821', -+ ], -+ [ -+ '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', -+ '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf', -+ ], -+ [ -+ '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', -+ 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695', -+ ], -+ [ -+ '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', -+ '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9', -+ ], -+ [ -+ '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', -+ '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36', -+ ], -+ [ -+ '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', -+ '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f', -+ ], -+ [ -+ 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', -+ '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999', -+ ], -+ [ -+ '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', -+ 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09', -+ ], -+ [ -+ 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', -+ '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d', -+ ], -+ [ -+ 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', -+ 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088', -+ ], -+ [ -+ 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', -+ '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d', -+ ], -+ [ -+ '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', -+ '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8', -+ ], -+ [ -+ '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', -+ '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a', -+ ], -+ [ -+ '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', -+ '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453', -+ ], -+ [ -+ '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', -+ '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160', -+ ], -+ [ -+ '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', -+ '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0', -+ ], -+ [ -+ '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', -+ '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6', -+ ], -+ [ -+ '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', -+ '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589', -+ ], -+ [ -+ '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', -+ 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17', -+ ], -+ [ -+ 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', -+ '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda', -+ ], -+ [ -+ 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', -+ '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd', -+ ], -+ [ -+ '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', -+ '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2', -+ ], -+ [ -+ '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', -+ '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6', -+ ], -+ [ -+ 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', -+ '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f', -+ ], -+ [ -+ '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', -+ 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01', -+ ], -+ [ -+ 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', -+ '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3', -+ ], -+ [ -+ 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', -+ 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f', -+ ], -+ [ -+ 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', -+ '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7', -+ ], -+ [ -+ 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', -+ 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78', -+ ], -+ [ -+ 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', -+ '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1', -+ ], -+ [ -+ '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', -+ 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150', -+ ], -+ [ -+ '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', -+ '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82', -+ ], -+ [ -+ 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', -+ '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc', -+ ], -+ [ -+ '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', -+ 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b', -+ ], -+ [ -+ 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', -+ '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51', -+ ], -+ [ -+ 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', -+ '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45', -+ ], -+ [ -+ 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', -+ 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120', -+ ], -+ [ -+ '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', -+ '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84', -+ ], -+ [ -+ '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', -+ '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d', -+ ], -+ [ -+ '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', -+ 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d', -+ ], -+ [ -+ '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', -+ '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8', -+ ], -+ [ -+ 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', -+ '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8', -+ ], -+ [ -+ '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', -+ '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac', -+ ], -+ [ -+ '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', -+ 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f', -+ ], -+ [ -+ '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', -+ '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962', -+ ], -+ [ -+ 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', -+ '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907', -+ ], -+ [ -+ '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', -+ 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec', -+ ], -+ [ -+ 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', -+ 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d', -+ ], -+ [ -+ 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', -+ '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414', -+ ], -+ [ -+ '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', -+ 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd', -+ ], -+ [ -+ '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', -+ 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0', -+ ], -+ [ -+ 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', -+ '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811', -+ ], -+ [ -+ 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', -+ '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1', -+ ], -+ [ -+ 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', -+ '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c', -+ ], -+ [ -+ '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', -+ 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73', -+ ], -+ [ -+ '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', -+ '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd', -+ ], -+ [ -+ 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', -+ 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405', -+ ], -+ [ -+ '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', -+ 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589', -+ ], -+ [ -+ '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', -+ '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e', -+ ], -+ [ -+ '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', -+ '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27', -+ ], -+ [ -+ 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', -+ 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1', -+ ], -+ [ -+ '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', -+ '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482', -+ ], -+ [ -+ '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', -+ '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945', -+ ], -+ [ -+ 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', -+ '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573', -+ ], -+ [ -+ 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', -+ 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82', -+ ], -+ ], -+ }, -+ naf: { -+ wnd: 7, -+ points: [ -+ [ -+ 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', -+ '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672', -+ ], -+ [ -+ '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', -+ 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6', -+ ], -+ [ -+ '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', -+ '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da', -+ ], -+ [ -+ 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', -+ 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37', -+ ], -+ [ -+ '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', -+ 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b', -+ ], -+ [ -+ 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', -+ 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81', -+ ], -+ [ -+ 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', -+ '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58', -+ ], -+ [ -+ 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', -+ '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77', -+ ], -+ [ -+ '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', -+ '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a', -+ ], -+ [ -+ '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', -+ '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c', -+ ], -+ [ -+ '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', -+ '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67', -+ ], -+ [ -+ '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', -+ '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402', -+ ], -+ [ -+ 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', -+ 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55', -+ ], -+ [ -+ 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', -+ '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482', -+ ], -+ [ -+ '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', -+ 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82', -+ ], -+ [ -+ '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', -+ 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396', -+ ], -+ [ -+ '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', -+ '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49', -+ ], -+ [ -+ '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', -+ '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf', -+ ], -+ [ -+ '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', -+ '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a', -+ ], -+ [ -+ '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', -+ 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7', -+ ], -+ [ -+ 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', -+ 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933', -+ ], -+ [ -+ '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', -+ '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a', -+ ], -+ [ -+ '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', -+ '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6', -+ ], -+ [ -+ 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', -+ 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37', -+ ], -+ [ -+ '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', -+ '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e', -+ ], -+ [ -+ 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', -+ 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6', -+ ], -+ [ -+ 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', -+ 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476', -+ ], -+ [ -+ '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', -+ '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40', -+ ], -+ [ -+ '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', -+ '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61', -+ ], -+ [ -+ '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', -+ '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683', -+ ], -+ [ -+ 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', -+ '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5', -+ ], -+ [ -+ '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', -+ '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b', -+ ], -+ [ -+ 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', -+ '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417', -+ ], -+ [ -+ '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', -+ 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868', -+ ], -+ [ -+ '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', -+ 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a', -+ ], -+ [ -+ 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', -+ 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6', -+ ], -+ [ -+ '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', -+ '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996', -+ ], -+ [ -+ '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', -+ 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e', -+ ], -+ [ -+ 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', -+ 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d', -+ ], -+ [ -+ '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', -+ '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2', -+ ], -+ [ -+ '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', -+ 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e', -+ ], -+ [ -+ '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', -+ '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437', -+ ], -+ [ -+ '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', -+ 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311', -+ ], -+ [ -+ 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', -+ '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4', -+ ], -+ [ -+ '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', -+ '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575', -+ ], -+ [ -+ '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', -+ 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d', -+ ], -+ [ -+ '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', -+ 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d', -+ ], -+ [ -+ 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', -+ 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629', -+ ], -+ [ -+ 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', -+ 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06', -+ ], -+ [ -+ '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', -+ '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374', -+ ], -+ [ -+ '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', -+ '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee', -+ ], -+ [ -+ 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', -+ '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1', -+ ], -+ [ -+ 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', -+ 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b', -+ ], -+ [ -+ '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', -+ '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661', -+ ], -+ [ -+ '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', -+ '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6', -+ ], -+ [ -+ 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', -+ '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e', -+ ], -+ [ -+ '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', -+ '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d', -+ ], -+ [ -+ 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', -+ 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc', -+ ], -+ [ -+ '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', -+ 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4', -+ ], -+ [ -+ '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', -+ '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c', -+ ], -+ [ -+ 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', -+ '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b', -+ ], -+ [ -+ 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', -+ '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913', -+ ], -+ [ -+ '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', -+ '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154', -+ ], -+ [ -+ '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', -+ '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865', -+ ], -+ [ -+ '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', -+ 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc', -+ ], -+ [ -+ '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', -+ 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224', -+ ], -+ [ -+ '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', -+ '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e', -+ ], -+ [ -+ '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', -+ '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6', -+ ], -+ [ -+ '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', -+ '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511', -+ ], -+ [ -+ '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', -+ 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b', -+ ], -+ [ -+ 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', -+ 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2', -+ ], -+ [ -+ '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', -+ 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c', -+ ], -+ [ -+ 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', -+ '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3', -+ ], -+ [ -+ 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', -+ '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d', -+ ], -+ [ -+ 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', -+ '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700', -+ ], -+ [ -+ 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', -+ '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4', -+ ], -+ [ -+ '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', -+ 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196', -+ ], -+ [ -+ '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', -+ '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4', -+ ], -+ [ -+ '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', -+ 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257', -+ ], -+ [ -+ 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', -+ 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13', -+ ], -+ [ -+ 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', -+ '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096', -+ ], -+ [ -+ 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', -+ 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38', -+ ], -+ [ -+ 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', -+ '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f', -+ ], -+ [ -+ '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', -+ '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448', -+ ], -+ [ -+ 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', -+ '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a', -+ ], -+ [ -+ 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', -+ '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4', -+ ], -+ [ -+ '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', -+ '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437', -+ ], -+ [ -+ '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', -+ 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7', -+ ], -+ [ -+ 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', -+ '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d', -+ ], -+ [ -+ 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', -+ '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a', -+ ], -+ [ -+ 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', -+ '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54', -+ ], -+ [ -+ '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', -+ '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77', -+ ], -+ [ -+ 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', -+ 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517', -+ ], -+ [ -+ '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', -+ 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10', -+ ], -+ [ -+ 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', -+ 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125', -+ ], -+ [ -+ 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', -+ '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e', -+ ], -+ [ -+ '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', -+ 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1', -+ ], -+ [ -+ 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', -+ '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2', -+ ], -+ [ -+ 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', -+ '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423', -+ ], -+ [ -+ 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', -+ '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8', -+ ], -+ [ -+ '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', -+ 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758', -+ ], -+ [ -+ '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', -+ 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375', -+ ], -+ [ -+ 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', -+ '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d', -+ ], -+ [ -+ '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', -+ 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec', -+ ], -+ [ -+ '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', -+ '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0', -+ ], -+ [ -+ '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', -+ 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c', -+ ], -+ [ -+ 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', -+ 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4', -+ ], -+ [ -+ '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', -+ 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f', -+ ], -+ [ -+ '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', -+ '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649', -+ ], -+ [ -+ '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', -+ 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826', -+ ], -+ [ -+ '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', -+ '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5', -+ ], -+ [ -+ 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', -+ 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87', -+ ], -+ [ -+ '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', -+ '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b', -+ ], -+ [ -+ 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', -+ '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc', -+ ], -+ [ -+ '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', -+ '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c', -+ ], -+ [ -+ 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', -+ 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f', -+ ], -+ [ -+ 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', -+ '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a', -+ ], -+ [ -+ 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', -+ 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46', -+ ], -+ [ -+ '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', -+ 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f', -+ ], -+ [ -+ '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', -+ '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03', -+ ], -+ [ -+ '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', -+ 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08', -+ ], -+ [ -+ '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', -+ '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8', -+ ], -+ [ -+ '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', -+ '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373', -+ ], -+ [ -+ '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', -+ 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3', -+ ], -+ [ -+ '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', -+ '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8', -+ ], -+ [ -+ '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', -+ '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1', -+ ], -+ [ -+ '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', -+ '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9', -+ ], -+ ], -+ }, -+}; -diff --git a/node_modules/elliptic/lib/elliptic/utils.js b/node_modules/elliptic/lib/elliptic/utils.js -new file mode 100644 -index 0000000000000000000000000000000000000000..b3ef2d2fb3f9bd7c3871cce70378771aa90c7fff ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic/utils.js -@@ -0,0 +1,122 @@ -+'use strict'; -+ -+var utils = exports; -+var BN = require('bn.js'); -+var minAssert = require('minimalistic-assert'); -+var minUtils = require('minimalistic-crypto-utils'); -+ -+utils.assert = minAssert; -+utils.toArray = minUtils.toArray; -+utils.zero2 = minUtils.zero2; -+utils.toHex = minUtils.toHex; -+utils.encode = minUtils.encode; -+ -+// Represent num in a w-NAF form -+function getNAF(num, w, bits) { -+ var naf = new Array(Math.max(num.bitLength(), bits) + 1); -+ var i; -+ for (i = 0; i < naf.length; i += 1) { -+ naf[i] = 0; -+ } -+ -+ var ws = 1 << (w + 1); -+ var k = num.clone(); -+ -+ for (i = 0; i < naf.length; i++) { -+ var z; -+ var mod = k.andln(ws - 1); -+ if (k.isOdd()) { -+ if (mod > (ws >> 1) - 1) -+ z = (ws >> 1) - mod; -+ else -+ z = mod; -+ k.isubn(z); -+ } else { -+ z = 0; -+ } -+ -+ naf[i] = z; -+ k.iushrn(1); -+ } -+ -+ return naf; -+} -+utils.getNAF = getNAF; -+ -+// Represent k1, k2 in a Joint Sparse Form -+function getJSF(k1, k2) { -+ var jsf = [ -+ [], -+ [], -+ ]; -+ -+ k1 = k1.clone(); -+ k2 = k2.clone(); -+ var d1 = 0; -+ var d2 = 0; -+ var m8; -+ while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { -+ // First phase -+ var m14 = (k1.andln(3) + d1) & 3; -+ var m24 = (k2.andln(3) + d2) & 3; -+ if (m14 === 3) -+ m14 = -1; -+ if (m24 === 3) -+ m24 = -1; -+ var u1; -+ if ((m14 & 1) === 0) { -+ u1 = 0; -+ } else { -+ m8 = (k1.andln(7) + d1) & 7; -+ if ((m8 === 3 || m8 === 5) && m24 === 2) -+ u1 = -m14; -+ else -+ u1 = m14; -+ } -+ jsf[0].push(u1); -+ -+ var u2; -+ if ((m24 & 1) === 0) { -+ u2 = 0; -+ } else { -+ m8 = (k2.andln(7) + d2) & 7; -+ if ((m8 === 3 || m8 === 5) && m14 === 2) -+ u2 = -m24; -+ else -+ u2 = m24; -+ } -+ jsf[1].push(u2); -+ -+ // Second phase -+ if (2 * d1 === u1 + 1) -+ d1 = 1 - d1; -+ if (2 * d2 === u2 + 1) -+ d2 = 1 - d2; -+ k1.iushrn(1); -+ k2.iushrn(1); -+ } -+ -+ return jsf; -+} -+utils.getJSF = getJSF; -+ -+function cachedProperty(obj, name, computer) { -+ var key = '_' + name; -+ obj.prototype[name] = function cachedProperty() { -+ return this[key] !== undefined ? this[key] : -+ this[key] = computer.call(this); -+ }; -+} -+utils.cachedProperty = cachedProperty; -+ -+function parseBytes(bytes) { -+ return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : -+ bytes; -+} -+utils.parseBytes = parseBytes; -+ -+function intFromLE(bytes) { -+ return new BN(bytes, 'hex', 'le'); -+} -+utils.intFromLE = intFromLE; -+ -diff --git a/node_modules/elliptic/lib/elliptic.js b/node_modules/elliptic/lib/elliptic.js -new file mode 100644 -index 0000000000000000000000000000000000000000..dfe2fe7d16ce4259f5d6fcda4d53cfd18ab9d802 ---- /dev/null -+++ b/node_modules/elliptic/lib/elliptic.js -@@ -0,0 +1,13 @@ -+'use strict'; -+ -+var elliptic = exports; -+ -+elliptic.version = require('../package.json').version; -+elliptic.utils = require('./elliptic/utils'); -+elliptic.rand = require('brorand'); -+elliptic.curve = require('./elliptic/curve'); -+elliptic.curves = require('./elliptic/curves'); -+ -+// Protocols -+elliptic.ec = require('./elliptic/ec'); -+elliptic.eddsa = require('./elliptic/eddsa'); -diff --git a/node_modules/elliptic/package.json b/node_modules/elliptic/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..c486d275602d6245fe2b6b5e119af9f9208728d2 ---- /dev/null -+++ b/node_modules/elliptic/package.json -@@ -0,0 +1,86 @@ -+{ -+ "name": "elliptic", -+ "version": "6.6.0", -+ "description": "EC cryptography", -+ "main": "lib/elliptic.js", -+ "files": [ -+ "lib" -+ ], -+ "scripts": { -+ "lint": "eslint lib test", -+ "lint:fix": "npm run lint -- --fix", -+ "unit": "istanbul test _mocha --reporter=spec test/index.js", -+ "test": "npm run lint && npm run unit", -+ "version": "grunt dist && git add dist/" -+ }, -+ "repository": { -+ "type": "git", -+ "url": "git@github.com:indutny/elliptic" -+ }, -+ "keywords": [ -+ "EC", -+ "Elliptic", -+ "curve", -+ "Cryptography" -+ ], -+ "author": "Fedor Indutny ", -+ "license": "MIT", -+ "bugs": { -+ "url": "https://github.com/indutny/elliptic/issues" -+ }, -+ "homepage": "https://github.com/indutny/elliptic", -+ "devDependencies": { -+ "brfs": "^2.0.2", -+ "coveralls": "^3.1.0", -+ "eslint": "^7.6.0", -+ "grunt": "^1.2.1", -+ "grunt-browserify": "^5.3.0", -+ "grunt-cli": "^1.3.2", -+ "grunt-contrib-connect": "^3.0.0", -+ "grunt-contrib-copy": "^1.0.0", -+ "grunt-contrib-uglify": "^5.0.0", -+ "grunt-mocha-istanbul": "^5.0.2", -+ "grunt-saucelabs": "^9.0.1", -+ "istanbul": "^0.4.5", -+ "mocha": "^8.0.1" -+ }, -+ "dependencies": { -+ "bn.js": "^4.11.9", -+ "brorand": "^1.1.0", -+ "hash.js": "^1.0.0", -+ "hmac-drbg": "^1.0.1", -+ "inherits": "^2.0.4", -+ "minimalistic-assert": "^1.0.1", -+ "minimalistic-crypto-utils": "^1.0.1" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/README.md b/node_modules/uint8arrays/README.md -new file mode 100644 -index 0000000000000000000000000000000000000000..4bc4398f9f4f87fd5a3a190fa7ff61dd7b88b080 ---- /dev/null -+++ b/node_modules/uint8arrays/README.md -@@ -0,0 +1,158 @@ -+# Uint8Arrays -+ -+Some utility functions to make dealing with `Uint8Array`s more pleasant. -+ -+- [API](#api) -+ - [alloc(size)](#allocsize) -+ - [Example](#example) -+ - [allocUnsafe(size)](#allocunsafesize) -+ - [Example](#example-1) -+ - [compare(a, b)](#comparea-b) -+ - [Example](#example-2) -+ - [concat(arrays, [length])](#concatarrays-length) -+ - [Example](#example-3) -+ - [equals(a, b)](#equalsa-b) -+ - [Example](#example-4) -+ - [fromString(string, encoding = 'utf8')](#fromstringstring-encoding--utf8) -+ - [Example](#example-5) -+ - [toString(array, encoding = 'utf8')](#tostringarray-encoding--utf8) -+ - [Example](#example-6) -+ - [xor(a, b)](#xora-b) -+ - [Example](#example-7) -+ -+## API -+ -+### alloc(size) -+ -+Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. -+ -+#### Example -+ -+```js -+import { alloc } from 'uint8arrays/alloc` -+ -+const buf = alloc(100) -+``` -+ -+### allocUnsafe(size) -+ -+Create a new `Uint8Array`. If `globalThis.Buffer` is defined, it will be used in preference to `globalThis.Uint8Array`. -+ -+On platforms that support it, memory referenced by the returned `Uint8Array` will not be initialized. -+ -+#### Example -+ -+```js -+import { allocUnsafe } from 'uint8arrays/alloc` -+ -+const buf = allocUnsafe(100) -+``` -+ -+### compare(a, b) -+ -+Compare two `Uint8Arrays` -+ -+#### Example -+ -+```js -+import { compare } from 'uint8arrays/compare' -+ -+const arrays = [ -+ Uint8Array.from([3, 4, 5]), -+ Uint8Array.from([0, 1, 2]) -+] -+ -+const sorted = arrays.sort(compare) -+ -+console.info(sorted) -+// [ -+// Uint8Array[0, 1, 2] -+// Uint8Array[3, 4, 5] -+// ] -+``` -+ -+### concat(arrays, [length]) -+ -+Concatenate one or more array-likes and return a `Uint8Array` with their contents. -+ -+If you know the length of the arrays, pass it as a second parameter, otherwise it will be calculated by traversing the list of arrays. -+ -+#### Example -+ -+```js -+import { concat } from 'uint8arrays/concat' -+ -+const arrays = [ -+ Uint8Array.from([0, 1, 2]), -+ Uint8Array.from([3, 4, 5]) -+] -+ -+const all = concat(arrays, 6) -+ -+console.info(all) -+// Uint8Array[0, 1, 2, 3, 4, 5] -+``` -+ -+### equals(a, b) -+ -+Returns true if the two arrays are the same array or if they have the same length and contents. -+ -+#### Example -+ -+```js -+import { equals } from 'uint8arrays/equals' -+ -+const a = Uint8Array.from([0, 1, 2]) -+const b = Uint8Array.from([3, 4, 5]) -+const c = Uint8Array.from([0, 1, 2]) -+ -+console.info(equals(a, b)) // false -+console.info(equals(a, c)) // true -+console.info(equals(a, a)) // true -+``` -+ -+### fromString(string, encoding = 'utf8') -+ -+Returns a new `Uint8Array` created from the passed string and interpreted as the passed encoding. -+ -+Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). -+ -+#### Example -+ -+```js -+import { fromString } from 'uint8arrays/from-string' -+ -+console.info(fromString('hello world')) // Uint8Array[104, 101 ... -+console.info(fromString('00010203aabbcc', 'base16')) // Uint8Array[0, 1 ... -+console.info(fromString('AAECA6q7zA', 'base64')) // Uint8Array[0, 1 ... -+console.info(fromString('01234', 'ascii')) // Uint8Array[48, 49 ... -+``` -+ -+### toString(array, encoding = 'utf8') -+ -+Returns a string created from the passed `Uint8Array` in the passed encoding. -+ -+Supports `utf8` and any of the [multibase encodings](https://github.com/multiformats/multibase/blob/master/multibase.csv) as implemented by the [multiformats module](https://www.npmjs.com/package/multiformats). -+ -+#### Example -+ -+```js -+import { toString } from 'uint8arrays/to-string' -+ -+console.info(toString(Uint8Array.from([104, 101...]))) // 'hello world' -+console.info(toString(Uint8Array.from([0, 1, 2...]), 'base16')) // '00010203aabbcc' -+console.info(toString(Uint8Array.from([0, 1, 2...]), 'base64')) // 'AAECA6q7zA' -+console.info(toString(Uint8Array.from([48, 49, 50...]), 'ascii')) // '01234' -+``` -+ -+### xor(a, b) -+ -+Returns a `Uint8Array` containing `a` and `b` xored together. -+ -+#### Example -+ -+```js -+import { xor } from 'uint8arrays/xor' -+ -+console.info(xor(Uint8Array.from([1, 0]), Uint8Array.from([0, 1]))) // Uint8Array[1, 1] -+``` -diff --git a/node_modules/uint8arrays/alloc b/node_modules/uint8arrays/alloc -new file mode 100644 -index 0000000000000000000000000000000000000000..96adbd1c30cc40c637803b469fa5c6491c509843 ---- /dev/null -+++ b/node_modules/uint8arrays/alloc -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/alloc.js') -diff --git a/node_modules/uint8arrays/cjs/src/alloc.js b/node_modules/uint8arrays/cjs/src/alloc.js -new file mode 100644 -index 0000000000000000000000000000000000000000..62f337da370082d906ed5fedd6cc052601b367a3 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/alloc.js -@@ -0,0 +1,19 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function alloc(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { -+ return globalThis.Buffer.alloc(size); -+ } -+ return new Uint8Array(size); -+} -+function allocUnsafe(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { -+ return globalThis.Buffer.allocUnsafe(size); -+ } -+ return new Uint8Array(size); -+} -+ -+exports.alloc = alloc; -+exports.allocUnsafe = allocUnsafe; -diff --git a/node_modules/uint8arrays/cjs/src/compare.js b/node_modules/uint8arrays/cjs/src/compare.js -new file mode 100644 -index 0000000000000000000000000000000000000000..f76a876da6b87c8218d0efda7366189c7d7d46a4 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/compare.js -@@ -0,0 +1,23 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function compare(a, b) { -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] < b[i]) { -+ return -1; -+ } -+ if (a[i] > b[i]) { -+ return 1; -+ } -+ } -+ if (a.byteLength > b.byteLength) { -+ return 1; -+ } -+ if (a.byteLength < b.byteLength) { -+ return -1; -+ } -+ return 0; -+} -+ -+exports.compare = compare; -diff --git a/node_modules/uint8arrays/cjs/src/concat.js b/node_modules/uint8arrays/cjs/src/concat.js -new file mode 100644 -index 0000000000000000000000000000000000000000..b5f6039223c16c8432bf34b601897a0e963e1dd0 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/concat.js -@@ -0,0 +1,20 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var alloc = require('./alloc.js'); -+ -+function concat(arrays, length) { -+ if (!length) { -+ length = arrays.reduce((acc, curr) => acc + curr.length, 0); -+ } -+ const output = alloc.allocUnsafe(length); -+ let offset = 0; -+ for (const arr of arrays) { -+ output.set(arr, offset); -+ offset += arr.length; -+ } -+ return output; -+} -+ -+exports.concat = concat; -diff --git a/node_modules/uint8arrays/cjs/src/equals.js b/node_modules/uint8arrays/cjs/src/equals.js -new file mode 100644 -index 0000000000000000000000000000000000000000..073c46ba1f52e921f55f98d82106a67d542a4321 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/equals.js -@@ -0,0 +1,20 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+function equals(a, b) { -+ if (a === b) { -+ return true; -+ } -+ if (a.byteLength !== b.byteLength) { -+ return false; -+ } -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] !== b[i]) { -+ return false; -+ } -+ } -+ return true; -+} -+ -+exports.equals = equals; -diff --git a/node_modules/uint8arrays/cjs/src/from-string.js b/node_modules/uint8arrays/cjs/src/from-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..d4899669d3d3a69ae33b1d6a5de6ed4facab9702 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/from-string.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var bases = require('./util/bases.js'); -+ -+function fromString(string, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(string, 'utf8'); -+ } -+ return base.decoder.decode(`${ base.prefix }${ string }`); -+} -+ -+exports.fromString = fromString; -diff --git a/node_modules/uint8arrays/cjs/src/index.js b/node_modules/uint8arrays/cjs/src/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e04d18c1e8b50930f11469e29d36e3624800ee3e ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/index.js -@@ -0,0 +1,19 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var compare = require('./compare.js'); -+var concat = require('./concat.js'); -+var equals = require('./equals.js'); -+var fromString = require('./from-string.js'); -+var toString = require('./to-string.js'); -+var xor = require('./xor.js'); -+ -+ -+ -+exports.compare = compare.compare; -+exports.concat = concat.concat; -+exports.equals = equals.equals; -+exports.fromString = fromString.fromString; -+exports.toString = toString.toString; -+exports.xor = xor.xor; -diff --git a/node_modules/uint8arrays/cjs/src/to-string.js b/node_modules/uint8arrays/cjs/src/to-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..60041ca99380e4e96896d2e3d314bfedf291abd4 ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/to-string.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var bases = require('./util/bases.js'); -+ -+function toString(array, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); -+ } -+ return base.encoder.encode(array).substring(1); -+} -+ -+exports.toString = toString; -diff --git a/node_modules/uint8arrays/cjs/src/util/bases.js b/node_modules/uint8arrays/cjs/src/util/bases.js -new file mode 100644 -index 0000000000000000000000000000000000000000..889ba8ca4f4590ad982343e2e557a86345dbba6e ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/util/bases.js -@@ -0,0 +1,49 @@ -+'use strict'; -+ -+var basics = require('multiformats/basics'); -+var alloc = require('../alloc.js'); -+ -+function createCodec(name, prefix, encode, decode) { -+ return { -+ name, -+ prefix, -+ encoder: { -+ name, -+ prefix, -+ encode -+ }, -+ decoder: { decode } -+ }; -+} -+const string = createCodec('utf8', 'u', buf => { -+ const decoder = new TextDecoder('utf8'); -+ return 'u' + decoder.decode(buf); -+}, str => { -+ const encoder = new TextEncoder(); -+ return encoder.encode(str.substring(1)); -+}); -+const ascii = createCodec('ascii', 'a', buf => { -+ let string = 'a'; -+ for (let i = 0; i < buf.length; i++) { -+ string += String.fromCharCode(buf[i]); -+ } -+ return string; -+}, str => { -+ str = str.substring(1); -+ const buf = alloc.allocUnsafe(str.length); -+ for (let i = 0; i < str.length; i++) { -+ buf[i] = str.charCodeAt(i); -+ } -+ return buf; -+}); -+const BASES = { -+ utf8: string, -+ 'utf-8': string, -+ hex: basics.bases.base16, -+ latin1: ascii, -+ ascii: ascii, -+ binary: ascii, -+ ...basics.bases -+}; -+ -+module.exports = BASES; -diff --git a/node_modules/uint8arrays/cjs/src/xor.js b/node_modules/uint8arrays/cjs/src/xor.js -new file mode 100644 -index 0000000000000000000000000000000000000000..3b7f04d6ad8ca2ac0c75d9527f8abf75c3a32d2b ---- /dev/null -+++ b/node_modules/uint8arrays/cjs/src/xor.js -@@ -0,0 +1,18 @@ -+'use strict'; -+ -+Object.defineProperty(exports, '__esModule', { value: true }); -+ -+var alloc = require('./alloc.js'); -+ -+function xor(a, b) { -+ if (a.length !== b.length) { -+ throw new Error('Inputs should have the same length'); -+ } -+ const result = alloc.allocUnsafe(a.length); -+ for (let i = 0; i < a.length; i++) { -+ result[i] = a[i] ^ b[i]; -+ } -+ return result; -+} -+ -+exports.xor = xor; -diff --git a/node_modules/uint8arrays/compare b/node_modules/uint8arrays/compare -new file mode 100644 -index 0000000000000000000000000000000000000000..e5012fd8b14ddd8ae03b8cf34b0803cbb153f54d ---- /dev/null -+++ b/node_modules/uint8arrays/compare -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/compare.js') -diff --git a/node_modules/uint8arrays/concat b/node_modules/uint8arrays/concat -new file mode 100644 -index 0000000000000000000000000000000000000000..77d4c7ff6075cef2ccf07978629ebe9c0b5676c1 ---- /dev/null -+++ b/node_modules/uint8arrays/concat -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/concat.js') -diff --git a/node_modules/uint8arrays/equals b/node_modules/uint8arrays/equals -new file mode 100644 -index 0000000000000000000000000000000000000000..fb9b155afd3f89970606e5bce212653a9edda8a5 ---- /dev/null -+++ b/node_modules/uint8arrays/equals -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/equals.js') -diff --git a/node_modules/uint8arrays/esm/package.json b/node_modules/uint8arrays/esm/package.json -new file mode 100644 -index 0000000000000000000000000000000000000000..b0f779bef674eb02c1185e55c0ffd20179a078f9 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/package.json -@@ -0,0 +1,33 @@ -+{ -+ "type": "module", -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/esm/src/alloc.js b/node_modules/uint8arrays/esm/src/alloc.js -new file mode 100644 -index 0000000000000000000000000000000000000000..e9326afa4af656b8f97576f79177e94ab9d12372 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/alloc.js -@@ -0,0 +1,12 @@ -+export function alloc(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) { -+ return globalThis.Buffer.alloc(size); -+ } -+ return new Uint8Array(size); -+} -+export function allocUnsafe(size = 0) { -+ if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) { -+ return globalThis.Buffer.allocUnsafe(size); -+ } -+ return new Uint8Array(size); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/compare.js b/node_modules/uint8arrays/esm/src/compare.js -new file mode 100644 -index 0000000000000000000000000000000000000000..251ba99326ef616a7259ae690a195c55eb69e3c4 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/compare.js -@@ -0,0 +1,17 @@ -+export function compare(a, b) { -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] < b[i]) { -+ return -1; -+ } -+ if (a[i] > b[i]) { -+ return 1; -+ } -+ } -+ if (a.byteLength > b.byteLength) { -+ return 1; -+ } -+ if (a.byteLength < b.byteLength) { -+ return -1; -+ } -+ return 0; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/concat.js b/node_modules/uint8arrays/esm/src/concat.js -new file mode 100644 -index 0000000000000000000000000000000000000000..1becaa52d193e7c41af30fcfb6de675dd5520730 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/concat.js -@@ -0,0 +1,13 @@ -+import { allocUnsafe } from './alloc.js'; -+export function concat(arrays, length) { -+ if (!length) { -+ length = arrays.reduce((acc, curr) => acc + curr.length, 0); -+ } -+ const output = allocUnsafe(length); -+ let offset = 0; -+ for (const arr of arrays) { -+ output.set(arr, offset); -+ offset += arr.length; -+ } -+ return output; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/equals.js b/node_modules/uint8arrays/esm/src/equals.js -new file mode 100644 -index 0000000000000000000000000000000000000000..fbedbe071a446722515778a030724b4d2ab87030 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/equals.js -@@ -0,0 +1,14 @@ -+export function equals(a, b) { -+ if (a === b) { -+ return true; -+ } -+ if (a.byteLength !== b.byteLength) { -+ return false; -+ } -+ for (let i = 0; i < a.byteLength; i++) { -+ if (a[i] !== b[i]) { -+ return false; -+ } -+ } -+ return true; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/from-string.js b/node_modules/uint8arrays/esm/src/from-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..0a98afd2708b0f7f182f92f4b98244655b6c85cb ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/from-string.js -@@ -0,0 +1,11 @@ -+import bases from './util/bases.js'; -+export function fromString(string, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(string, 'utf8'); -+ } -+ return base.decoder.decode(`${ base.prefix }${ string }`); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/index.js b/node_modules/uint8arrays/esm/src/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..2ec817cb7bfaa10be4baf9dfdeae279230041130 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/index.js -@@ -0,0 +1,14 @@ -+import { compare } from './compare.js'; -+import { concat } from './concat.js'; -+import { equals } from './equals.js'; -+import { fromString } from './from-string.js'; -+import { toString } from './to-string.js'; -+import { xor } from './xor.js'; -+export { -+ compare, -+ concat, -+ equals, -+ fromString, -+ toString, -+ xor -+}; -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/to-string.js b/node_modules/uint8arrays/esm/src/to-string.js -new file mode 100644 -index 0000000000000000000000000000000000000000..f1fdd01972c3f7ba0abf5d4b5f3539fd60a25ef4 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/to-string.js -@@ -0,0 +1,11 @@ -+import bases from './util/bases.js'; -+export function toString(array, encoding = 'utf8') { -+ const base = bases[encoding]; -+ if (!base) { -+ throw new Error(`Unsupported encoding "${ encoding }"`); -+ } -+ if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) { -+ return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8'); -+ } -+ return base.encoder.encode(array).substring(1); -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/util/bases.js b/node_modules/uint8arrays/esm/src/util/bases.js -new file mode 100644 -index 0000000000000000000000000000000000000000..ec42186bf5433036f1c4485bed9cf67c4ff66595 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/util/bases.js -@@ -0,0 +1,45 @@ -+import { bases } from 'multiformats/basics'; -+import { allocUnsafe } from '../alloc.js'; -+function createCodec(name, prefix, encode, decode) { -+ return { -+ name, -+ prefix, -+ encoder: { -+ name, -+ prefix, -+ encode -+ }, -+ decoder: { decode } -+ }; -+} -+const string = createCodec('utf8', 'u', buf => { -+ const decoder = new TextDecoder('utf8'); -+ return 'u' + decoder.decode(buf); -+}, str => { -+ const encoder = new TextEncoder(); -+ return encoder.encode(str.substring(1)); -+}); -+const ascii = createCodec('ascii', 'a', buf => { -+ let string = 'a'; -+ for (let i = 0; i < buf.length; i++) { -+ string += String.fromCharCode(buf[i]); -+ } -+ return string; -+}, str => { -+ str = str.substring(1); -+ const buf = allocUnsafe(str.length); -+ for (let i = 0; i < str.length; i++) { -+ buf[i] = str.charCodeAt(i); -+ } -+ return buf; -+}); -+const BASES = { -+ utf8: string, -+ 'utf-8': string, -+ hex: bases.base16, -+ latin1: ascii, -+ ascii: ascii, -+ binary: ascii, -+ ...bases -+}; -+export default BASES; -\ No newline at end of file -diff --git a/node_modules/uint8arrays/esm/src/xor.js b/node_modules/uint8arrays/esm/src/xor.js -new file mode 100644 -index 0000000000000000000000000000000000000000..d569ed64b70fb1627a6d8f82b4662f7538f6e694 ---- /dev/null -+++ b/node_modules/uint8arrays/esm/src/xor.js -@@ -0,0 +1,11 @@ -+import { allocUnsafe } from './alloc.js'; -+export function xor(a, b) { -+ if (a.length !== b.length) { -+ throw new Error('Inputs should have the same length'); -+ } -+ const result = allocUnsafe(a.length); -+ for (let i = 0; i < a.length; i++) { -+ result[i] = a[i] ^ b[i]; -+ } -+ return result; -+} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/from-string b/node_modules/uint8arrays/from-string -new file mode 100644 -index 0000000000000000000000000000000000000000..2cc705ce49836283622c3f82290e910712107007 ---- /dev/null -+++ b/node_modules/uint8arrays/from-string -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/from-string.js') -diff --git a/node_modules/uint8arrays/index.js b/node_modules/uint8arrays/index.js -new file mode 100644 -index 0000000000000000000000000000000000000000..580d8d99288b7b972da6c5c480503710e62d4b15 ---- /dev/null -+++ b/node_modules/uint8arrays/index.js -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/index.js') -diff --git a/node_modules/uint8arrays/index.min.js b/node_modules/uint8arrays/index.min.js -new file mode 100644 -index 0000000000000000000000000000000000000000..bcf42aca46b3ca48a137a3a93fe37cd8b17d6eb9 ---- /dev/null -+++ b/node_modules/uint8arrays/index.min.js -@@ -0,0 +1,17 @@ -+(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Uint8arrays = factory()}(typeof self !== 'undefined' ? self : this, function () { -+var Uint8arrays=(()=>{var ue=Object.defineProperty;var $e=r=>ue(r,"__esModule",{value:!0});var h=(r,e)=>{$e(r);for(var t in e)ue(r,t,{get:e[t],enumerable:!0})};var Yt={};h(Yt,{compare:()=>De,concat:()=>ie,equals:()=>ae,fromString:()=>Me,toString:()=>Ve,xor:()=>Pe});function De(r,e){for(let t=0;te[t])return 1}return r.byteLength>e.byteLength?1:r.byteLengths+n.length,0));let t=U(e),o=0;for(let s of r)t.set(s,o),o+=s.length;return t}function ae(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;tKe});function qe(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),o=0;o>>0,l=new Uint8Array(E);b!==C;){for(var g=u[b],v=0,m=E-1;(g!==0||v>>0,l[m]=g%a>>>0,g=g/a>>>0;if(g!==0)throw new Error("Non-zero carry");j=v,b++}for(var x=E-j;x!==E&&l[x]===0;)x++;for(var k=f.repeat(d);x>>0,E=new Uint8Array(C);u[d];){var l=t[u.charCodeAt(d)];if(l===255)return;for(var g=0,v=C-1;(l!==0||g>>0,E[v]=l%256>>>0,l=l/256>>>0;if(l!==0)throw new Error("Non-zero carry");b=g,d++}if(u[d]!==" "){for(var m=C-b;m!==C&&E[m]===0;)m++;for(var x=new Uint8Array(j+(C-m)),k=j;m!==C;)x[k++]=E[m++];return x}}}function ke(u){var d=P(u);if(d)return d;throw new Error(`Non-${e} character`)}return{encode:S,decodeUnsafe:P,decode:ke}}var Re=qe,Je=Re,ce=Je;var ur=new Uint8Array(0);var fe=(r,e)=>{if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var de=r=>new TextEncoder().encode(r),he=r=>new TextDecoder().decode(r);var le=class{constructor(e,t,o){this.name=e,this.prefix=t,this.baseEncode=o}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},be=class{constructor(e,t,o){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=o}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ce(this,e)}},me=class{constructor(e){this.decoders=e}or(e){return Ce(this,e)}decode(e){let t=e[0],o=this.decoders[t];if(o)return o.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Ce=(r,e)=>new me({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Ee=class{constructor(e,t,o,s){this.name=e,this.prefix=t,this.baseEncode=o,this.baseDecode=s,this.encoder=new le(e,t,o),this.decoder=new be(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},T=({name:r,prefix:e,encode:t,decode:o})=>new Ee(r,e,t,o),A=({prefix:r,name:e,alphabet:t})=>{let{encode:o,decode:s}=ce(t,e);return T({prefix:r,name:e,encode:o,decode:n=>y(s(n))})},Xe=(r,e,t,o)=>{let s={};for(let p=0;p=8&&(a-=8,D[B++]=255&f>>a)}if(a>=t||255&f<<8-a)throw new SyntaxError("Unexpected end of data");return D},Ge=(r,e,t)=>{let o=e[e.length-1]==="=",s=(1<t;)D-=t,n+=e[s&a>>D];if(D&&(n+=e[s&a<T({prefix:e,name:r,encode(s){return Ge(s,o,t)},decode(s){return Xe(s,o,t,r)}});var Ke=T({prefix:"\0",name:"identity",encode:r=>he(r),decode:r=>de(r)});var X={};h(X,{base2:()=>Qe});var Qe=i({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var G={};h(G,{base8:()=>He});var He=i({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var K={};h(K,{base10:()=>We});var We=A({prefix:"9",name:"base10",alphabet:"0123456789"});var Q={};h(Q,{base16:()=>Ze,base16upper:()=>Ye});var Ze=i({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ye=i({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var H={};h(H,{base32:()=>z,base32hex:()=>rt,base32hexpad:()=>st,base32hexpadupper:()=>nt,base32hexupper:()=>ot,base32pad:()=>et,base32padupper:()=>tt,base32upper:()=>_e,base32z:()=>ut});var z=i({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_e=i({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),et=i({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),tt=i({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),rt=i({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ot=i({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),st=i({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nt=i({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ut=i({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var W={};h(W,{base36:()=>Dt,base36upper:()=>it});var Dt=A({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),it=A({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z={};h(Z,{base58btc:()=>w,base58flickr:()=>at});var w=A({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),at=A({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Y={};h(Y,{base64:()=>ct,base64pad:()=>ft,base64url:()=>dt,base64urlpad:()=>ht});var ct=i({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ft=i({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),dt=i({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ht=i({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var _={};h(_,{base256emoji:()=>Ct});var ge=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),pt=ge.reduce((r,e,t)=>(r[t]=e,r),[]),lt=ge.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function bt(r){return r.reduce((e,t)=>(e+=pt[t],e),"")}function mt(r){let e=[];for(let t of r){let o=lt[t.codePointAt(0)];if(o===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var Ct=T({prefix:"\u{1F680}",name:"base256emoji",encode:bt,decode:mt});var re={};h(re,{sha256:()=>Mt,sha512:()=>Vt});var Et=xe,we=128,gt=127,wt=~gt,xt=Math.pow(2,31);function xe(r,e,t){e=e||[],t=t||0;for(var o=t;r>=xt;)e[t++]=r&255|we,r/=128;for(;r&wt;)e[t++]=r&255|we,r>>>=7;return e[t]=r|0,xe.bytes=t-o+1,e}var yt=ee,vt=128,ye=127;function ee(r,e){var t=0,e=e||0,o=0,s=e,n,D=r.length;do{if(s>=D)throw ee.bytes=0,new RangeError("Could not decode varint");n=r[s++],t+=o<28?(n&ye)<=vt);return ee.bytes=s-e,t}var At=Math.pow(2,7),jt=Math.pow(2,14),Ft=Math.pow(2,21),Bt=Math.pow(2,28),St=Math.pow(2,35),Ut=Math.pow(2,42),Tt=Math.pow(2,49),zt=Math.pow(2,56),It=Math.pow(2,63),Lt=function(r){return r[N.decode(r),N.decode.bytes],I=(r,e,t=0)=>(N.encode(r,e,t),e),L=r=>N.encodingLength(r);var F=(r,e)=>{let t=e.byteLength,o=L(r),s=o+L(t),n=new Uint8Array(s+t);return I(r,n,0),I(t,n,o),n.set(e,s),new M(r,t,e,n)},Ae=r=>{let e=y(r),[t,o]=O(e),[s,n]=O(e.subarray(o)),D=e.subarray(o+n);if(D.byteLength!==s)throw new Error("Incorrect length");return new M(t,s,D,e)},je=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&fe(r.bytes,e.bytes),M=class{constructor(e,t,o,s){this.code=e,this.size=t,this.digest=o,this.bytes=s}};var te=({name:r,code:e,encode:t})=>new Be(r,e,t),Be=class{constructor(e,t,o){this.name=e,this.code=t,this.encode=o}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?F(this.code,t):t.then(o=>F(this.code,o))}else throw Error("Unknown type, must be binary type")}};var Ue=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),Mt=te({name:"sha2-256",code:18,encode:Ue("SHA-256")}),Vt=te({name:"sha2-512",code:19,encode:Ue("SHA-512")});var oe={};h(oe,{identity:()=>$t});var Te=0,Pt="identity",ze=y,kt=r=>F(Te,ze(r)),$t={code:Te,name:Pt,encode:ze,digest:kt};var Ur=new TextEncoder,Tr=new TextDecoder;var c=class{constructor(e,t,o,s){this.code=t,this.version=e,this.multihash=o,this.bytes=s,this.byteOffset=s.byteOffset,this.byteLength=s.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:q,byteLength:q,code:$,version:$,multihash:$,bytes:$,_baseCache:q,asCID:q})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==V)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Kt)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return c.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,o=F(e,t);return c.createV1(this.code,o)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&je(this.multihash,e.multihash)}toString(e){let{bytes:t,version:o,_baseCache:s}=this;switch(o){case 0:return Xt(t,s,e||w.encoder);default:return Gt(t,s,e||z.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return Ht(/^0\.0/,Wt),!!(e&&(e[Le]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof c)return e;if(e!=null&&e.asCID===e){let{version:t,code:o,multihash:s,bytes:n}=e;return new c(t,o,s,n||Ie(t,o,s.bytes))}else if(e!=null&&e[Le]===!0){let{version:t,multihash:o,code:s}=e,n=Ae(o);return c.create(t,s,n)}else return null}static create(e,t,o){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==V)throw new Error(`Version 0 CID must use dag-pb (code: ${V}) block encoding`);return new c(e,t,o,o.bytes)}case 1:{let s=Ie(e,t,o.bytes);return new c(e,t,o,s)}default:throw new Error("Invalid version")}}static createV0(e){return c.create(0,V,e)}static createV1(e,t){return c.create(1,e,t)}static decode(e){let[t,o]=c.decodeFirst(e);if(o.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=c.inspectBytes(e),o=t.size-t.multihashSize,s=y(e.subarray(o,o+t.multihashSize));if(s.byteLength!==t.multihashSize)throw new Error("Incorrect length");let n=s.subarray(t.multihashSize-t.digestSize),D=new M(t.multihashCode,t.digestSize,n,s);return[t.version===0?c.createV0(D):c.createV1(t.codec,D),e.subarray(t.size)]}static inspectBytes(e){let t=0,o=()=>{let[S,P]=O(e.subarray(t));return t+=P,S},s=o(),n=V;if(s===18?(s=0,t=0):s===1&&(n=o()),s!==0&&s!==1)throw new RangeError(`Invalid CID version ${s}`);let D=t,a=o(),f=o(),B=t+f,p=B-D;return{version:s,codec:n,multihashCode:a,digestSize:f,multihashSize:p,size:B}}static parse(e,t){let[o,s]=Jt(e,t),n=c.decode(s);return n._baseCache.set(o,e),n}},Jt=(r,e)=>{switch(r[0]){case"Q":{let t=e||w;return[w.prefix,t.decode(`${w.prefix}${r}`)]}case w.prefix:{let t=e||w;return[w.prefix,t.decode(r)]}case z.prefix:{let t=e||z;return[z.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},Xt=(r,e,t)=>{let{prefix:o}=t;if(o!==w.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let s=e.get(o);if(s==null){let n=t.encode(r).slice(1);return e.set(o,n),n}else return s},Gt=(r,e,t)=>{let{prefix:o}=t,s=e.get(o);if(s==null){let n=t.encode(r);return e.set(o,n),n}else return s},V=112,Kt=18,Ie=(r,e,t)=>{let o=L(r),s=o+L(e),n=new Uint8Array(s+t.byteLength);return I(r,n,0),I(e,n,o),n.set(t,s),n},Le=Symbol.for("@ipld/js-cid/CID"),$={writable:!1,configurable:!1,enumerable:!0},q={writable:!1,enumerable:!1,configurable:!1},Qt="0.0.0-dev",Ht=(r,e)=>{if(r.test(Qt))console.warn(e);else throw new Error(e)},Wt=`CID.isCID(v) is deprecated and will be removed in the next major release. -+Following code pattern: -+ -+if (CID.isCID(value)) { -+ doSomethingWithCID(value) -+} -+ -+Is replaced with: -+ -+const cid = CID.asCID(value) -+if (cid) { -+ // Make sure to use cid instead of value -+ doSomethingWithCID(cid) -+} -+`;var se={...J,...X,...G,...K,...Q,...H,...W,...Z,...Y,..._},$r={...re,...oe};function Ne(r,e,t,o){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:o}}}var Oe=Ne("utf8","u",r=>{let e=new TextDecoder("utf8");return"u"+e.decode(r)},r=>new TextEncoder().encode(r.substring(1))),ne=Ne("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);let e=U(r.length);for(let t=0;t", -+ "homepage": "https://github.com/achingbrain/uint8arrays", -+ "bugs": "https://github.com/achingbrain/uint8arrays/issues", -+ "types": "types/src/index.d.ts", -+ "repository": { -+ "type": "git", -+ "url": "https://github.com/achingbrain/uint8arrays.git" -+ }, -+ "scripts": { -+ "test": "aegir test", -+ "lint": "aegir ts -p check && aegir lint", -+ "release": "aegir release", -+ "release-minor": "aegir release --type minor", -+ "release-major": "aegir release --type major", -+ "build": "aegir build" -+ }, -+ "license": "MIT", -+ "dependencies": { -+ "multiformats": "^9.4.2" -+ }, -+ "devDependencies": { -+ "@types/benchmark": "^2.1.1", -+ "aegir": "^35.0.0", -+ "benchmark": "^2.1.4", -+ "util": "^0.12.4" -+ }, -+ "eslintConfig": { -+ "extends": "ipfs", -+ "parserOptions": { -+ "sourceType": "module" -+ }, -+ "ignorePatterns": [ -+ "!.aegir.js" -+ ] -+ }, -+ "typesVersions": { -+ "*": { -+ "*": [ -+ "types/src", -+ "types/src/*" -+ ] -+ } -+ }, -+ "exports": { -+ ".": { -+ "browser": "./esm/src/index.js", -+ "require": "./cjs/src/index.js", -+ "import": "./esm/src/index.js" -+ }, -+ "./alloc": { -+ "browser": "./esm/src/alloc.js", -+ "require": "./cjs/src/alloc.js", -+ "import": "./esm/src/alloc.js" -+ }, -+ "./compare": { -+ "browser": "./esm/src/compare.js", -+ "require": "./cjs/src/compare.js", -+ "import": "./esm/src/compare.js" -+ }, -+ "./concat": { -+ "browser": "./esm/src/concat.js", -+ "require": "./cjs/src/concat.js", -+ "import": "./esm/src/concat.js" -+ }, -+ "./equals": { -+ "browser": "./esm/src/equals.js", -+ "require": "./cjs/src/equals.js", -+ "import": "./esm/src/equals.js" -+ }, -+ "./from-string": { -+ "browser": "./esm/src/from-string.js", -+ "require": "./cjs/src/from-string.js", -+ "import": "./esm/src/from-string.js" -+ }, -+ "./to-string": { -+ "browser": "./esm/src/to-string.js", -+ "require": "./cjs/src/to-string.js", -+ "import": "./esm/src/to-string.js" -+ }, -+ "./xor": { -+ "browser": "./esm/src/xor.js", -+ "require": "./cjs/src/xor.js", -+ "import": "./esm/src/xor.js" -+ } -+ }, -+ "contributors": [ -+ "achingbrain ", -+ "Irakli Gozalishvili ", -+ "Cayman ", -+ "Hugo Dias ", -+ "Mircea Nistor ", -+ "Rafael Ramalho ", -+ "Vasco Santos " -+ ], -+ "browser": { -+ ".": "./cjs/src/index.js", -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify", -+ "./alloc.js": "./cjs/src/alloc.js", -+ "./compare.js": "./cjs/src/compare.js", -+ "./concat.js": "./cjs/src/concat.js", -+ "./equals.js": "./cjs/src/equals.js", -+ "./from-string.js": "./cjs/src/from-string.js", -+ "./to-string.js": "./cjs/src/to-string.js", -+ "./xor.js": "./cjs/src/xor.js" -+ }, -+ "react-native": { -+ ".": "./cjs/src/index.js", -+ "./alloc": "./cjs/src/alloc.js", -+ "./compare": "./cjs/src/compare.js", -+ "./concat": "./cjs/src/concat.js", -+ "./equals": "./cjs/src/equals.js", -+ "./from-string": "./cjs/src/from-string.js", -+ "./to-string": "./cjs/src/to-string.js", -+ "./xor": "./cjs/src/xor.js", -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ } -+} -diff --git a/node_modules/uint8arrays/to-string b/node_modules/uint8arrays/to-string -new file mode 100644 -index 0000000000000000000000000000000000000000..2708e31dca8063775318af642874a080d638e1fe ---- /dev/null -+++ b/node_modules/uint8arrays/to-string -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/to-string.js') -diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts b/node_modules/uint8arrays/types/src/alloc.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..71086104a021fa42346cd5d46a72b6da8bb79f1e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/alloc.d.ts -@@ -0,0 +1,18 @@ -+/** -+ * Returns a `Uint8Array` of the requested size. Referenced memory will -+ * be initialized to 0. -+ * -+ * @param {number} [size] -+ * @returns {Uint8Array} -+ */ -+export function alloc(size?: number | undefined): Uint8Array; -+/** -+ * Where possible returns a Uint8Array of the requested size that references -+ * uninitialized memory. Only use if you are certain you will immediately -+ * overwrite every value in the returned `Uint8Array`. -+ * -+ * @param {number} [size] -+ * @returns {Uint8Array} -+ */ -+export function allocUnsafe(size?: number | undefined): Uint8Array; -+//# sourceMappingURL=alloc.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/alloc.d.ts.map b/node_modules/uint8arrays/types/src/alloc.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..ded98e850419b7387b1b5248b08666f357f0b060 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/alloc.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"alloc.d.ts","sourceRoot":"","sources":["../../src/alloc.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kDAFa,UAAU,CAQtB;AAED;;;;;;;GAOG;AACH,wDAFa,UAAU,CAQtB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/compare.d.ts b/node_modules/uint8arrays/types/src/compare.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..dd23039272fd0eb5375622e34c718fa3cb1eec04 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/compare.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Can be used with Array.sort to sort and array with Uint8Array entries -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function compare(a: Uint8Array, b: Uint8Array): 0 | 1 | -1; -+//# sourceMappingURL=compare.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/compare.d.ts.map b/node_modules/uint8arrays/types/src/compare.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..e8238ebc28b6d4ebe38f6535d6180e5a99f76194 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/compare.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/compare.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,2BAHW,UAAU,KACV,UAAU,cAsBpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/concat.d.ts b/node_modules/uint8arrays/types/src/concat.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..960ca199e3a7586f586c8766e60aaa542916a851 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/concat.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns a new Uint8Array created by concatenating the passed ArrayLikes -+ * -+ * @param {Array>} arrays -+ * @param {number} [length] -+ */ -+export function concat(arrays: Array>, length?: number | undefined): Uint8Array; -+//# sourceMappingURL=concat.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/concat.d.ts.map b/node_modules/uint8arrays/types/src/concat.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..a74679fba41402c50244f031fef3465a11cb81b7 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/concat.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"concat.d.ts","sourceRoot":"","sources":["../../src/concat.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+BAHW,MAAM,UAAU,MAAM,CAAC,CAAC,2CAiBlC"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/equals.d.ts b/node_modules/uint8arrays/types/src/equals.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..4c4df17c62640f71f638699722bf9cd68e65cc3e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/equals.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns true if the two passed Uint8Arrays have the same content -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function equals(a: Uint8Array, b: Uint8Array): boolean; -+//# sourceMappingURL=equals.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/equals.d.ts.map b/node_modules/uint8arrays/types/src/equals.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..f4b4fb784dcfa264e6f45b5fbcd779ab77b2e5c5 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/equals.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../src/equals.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,0BAHW,UAAU,KACV,UAAU,WAkBpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts b/node_modules/uint8arrays/types/src/from-string.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..a2a48d58229830ecc2f00b630e265d71e99d4055 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/from-string.d.ts -@@ -0,0 +1,17 @@ -+/** -+ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings -+ */ -+/** -+ * Create a `Uint8Array` from the passed string -+ * -+ * Supports `utf8`, `utf-8`, `hex`, and any encoding supported by the multiformats module. -+ * -+ * Also `ascii` which is similar to node's 'binary' encoding. -+ * -+ * @param {string} string -+ * @param {SupportedEncodings} [encoding=utf8] - utf8, base16, base64, base64urlpad, etc -+ * @returns {Uint8Array} -+ */ -+export function fromString(string: string, encoding?: import("./util/bases.js").SupportedEncodings | undefined): Uint8Array; -+export type SupportedEncodings = import('./util/bases').SupportedEncodings; -+//# sourceMappingURL=from-string.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/from-string.d.ts.map b/node_modules/uint8arrays/types/src/from-string.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..5f31eb6c8816c3da59a6ebf016cfca7f0f55fa5e ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/from-string.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"from-string.d.ts","sourceRoot":"","sources":["../../src/from-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,mCAJW,MAAM,wEAEJ,UAAU,CAetB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/index.d.ts b/node_modules/uint8arrays/types/src/index.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..7a4a255ddc3b1c194a7907ed2ae972b28fdcecc4 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/index.d.ts -@@ -0,0 +1,8 @@ -+import { compare } from "./compare.js"; -+import { concat } from "./concat.js"; -+import { equals } from "./equals.js"; -+import { fromString } from "./from-string.js"; -+import { toString } from "./to-string.js"; -+import { xor } from "./xor.js"; -+export { compare, concat, equals, fromString, toString, xor }; -+//# sourceMappingURL=index.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/index.d.ts.map b/node_modules/uint8arrays/types/src/index.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..4b136e26cf4d54488bfbbaf749a89197c074cd91 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/index.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":""} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts b/node_modules/uint8arrays/types/src/to-string.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..bf72c50427b41a8c4be85347e966feb710e18aa0 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/to-string.d.ts -@@ -0,0 +1,17 @@ -+/** -+ * @typedef {import('./util/bases').SupportedEncodings} SupportedEncodings -+ */ -+/** -+ * Turns a `Uint8Array` into a string. -+ * -+ * Supports `utf8`, `utf-8` and any encoding supported by the multibase module. -+ * -+ * Also `ascii` which is similar to node's 'binary' encoding. -+ * -+ * @param {Uint8Array} array - The array to turn into a string -+ * @param {SupportedEncodings} [encoding=utf8] - The encoding to use -+ * @returns {string} -+ */ -+export function toString(array: Uint8Array, encoding?: import("./util/bases.js").SupportedEncodings | undefined): string; -+export type SupportedEncodings = import('./util/bases').SupportedEncodings; -+//# sourceMappingURL=to-string.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/to-string.d.ts.map b/node_modules/uint8arrays/types/src/to-string.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..7290dc82e7b1c782b76b2ff96b2ccd49612db22d ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/to-string.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"to-string.d.ts","sourceRoot":"","sources":["../../src/to-string.js"],"names":[],"mappings":"AAEA;;GAEG;AAEH;;;;;;;;;;GAUG;AACH,gCAJW,UAAU,wEAER,MAAM,CAelB;iCA3BY,OAAO,cAAc,EAAE,kBAAkB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..7b01d6f35e3821e5d695535d345d3684453d439f ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts -@@ -0,0 +1,10 @@ -+/** -+ * Create a Uint8Array of the specified length - uses -+ * the more performant `Buffer.allocUnsafe` if it is -+ * available or `new Uint8Array` if it is not. -+ * -+ * @param {number} length -+ * @returns {Uint8Array} -+ */ -+export function allocUnsafe(length: number): Uint8Array; -+//# sourceMappingURL=alloc-unsafe.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..78b2cfb583f5830da40a1286bd1dac3b5b977ada ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/alloc-unsafe.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"alloc-unsafe.d.ts","sourceRoot":"","sources":["../../../src/util/alloc-unsafe.js"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,oCAHW,MAAM,GACJ,UAAU,CAQtB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts b/node_modules/uint8arrays/types/src/util/bases.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..c0dae33bc527a38464924c863af85fbc77667e93 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/bases.d.ts -@@ -0,0 +1,36 @@ -+export default BASES; -+export type MultibaseCodec = import('multiformats/bases/interface').MultibaseCodec; -+export type SupportedEncodings = 'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof { -+ base256emoji: import("multiformats/bases/base").Codec<"base256emoji", "🚀">; -+ base64: import("multiformats/bases/base").Codec<"base64", "m">; -+ base64pad: import("multiformats/bases/base").Codec<"base64pad", "M">; -+ base64url: import("multiformats/bases/base").Codec<"base64url", "u">; -+ base64urlpad: import("multiformats/bases/base").Codec<"base64urlpad", "U">; -+ base58btc: import("multiformats/bases/base").Codec<"base58btc", "z">; -+ base58flickr: import("multiformats/bases/base").Codec<"base58flickr", "Z">; -+ base36: import("multiformats/bases/base").Codec<"base36", "k">; -+ base36upper: import("multiformats/bases/base").Codec<"base36upper", "K">; -+ base32: import("multiformats/bases/base").Codec<"base32", "b">; -+ base32upper: import("multiformats/bases/base").Codec<"base32upper", "B">; -+ base32pad: import("multiformats/bases/base").Codec<"base32pad", "c">; -+ base32padupper: import("multiformats/bases/base").Codec<"base32padupper", "C">; -+ base32hex: import("multiformats/bases/base").Codec<"base32hex", "v">; -+ base32hexupper: import("multiformats/bases/base").Codec<"base32hexupper", "V">; -+ base32hexpad: import("multiformats/bases/base").Codec<"base32hexpad", "t">; -+ base32hexpadupper: import("multiformats/bases/base").Codec<"base32hexpadupper", "T">; -+ base32z: import("multiformats/bases/base").Codec<"base32z", "h">; -+ base16: import("multiformats/bases/base").Codec<"base16", "f">; -+ base16upper: import("multiformats/bases/base").Codec<"base16upper", "F">; -+ base10: import("multiformats/bases/base").Codec<"base10", "9">; -+ base8: import("multiformats/bases/base").Codec<"base8", "7">; -+ base2: import("multiformats/bases/base").Codec<"base2", "0">; -+ identity: import("multiformats/bases/base").Codec<"identity", "\0">; -+}; -+/** -+ * @typedef {'utf8' | 'utf-8' | 'hex' | 'latin1' | 'ascii' | 'binary' | keyof bases } SupportedEncodings -+ */ -+/** -+ * @type {Record} -+ */ -+declare const BASES: Record>; -+//# sourceMappingURL=bases.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/util/bases.d.ts.map b/node_modules/uint8arrays/types/src/util/bases.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..6956f5335bf63870aa45350f2af1d66b881b6a09 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/util/bases.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"bases.d.ts","sourceRoot":"","sources":["../../../src/util/bases.js"],"names":[],"mappings":";6BAIa,OAAO,8BAA8B,EAAE,cAAc,CAAC,GAAG,CAAC;iCAoD1D,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAAW;AADnF;;GAEG;AAEH;;GAEG;AACH,qBAFU,OAAO,kBAAkB,6DAAiB,CAWnD"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/xor.d.ts b/node_modules/uint8arrays/types/src/xor.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..deef5bb965a9e26283eab13a5cc6053bc59ef9ba ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/xor.d.ts -@@ -0,0 +1,8 @@ -+/** -+ * Returns the xor distance between two arrays -+ * -+ * @param {Uint8Array} a -+ * @param {Uint8Array} b -+ */ -+export function xor(a: Uint8Array, b: Uint8Array): Uint8Array; -+//# sourceMappingURL=xor.d.ts.map -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/src/xor.d.ts.map b/node_modules/uint8arrays/types/src/xor.d.ts.map -new file mode 100644 -index 0000000000000000000000000000000000000000..31db299b05a25b8439726a3e2fed3db618adad83 ---- /dev/null -+++ b/node_modules/uint8arrays/types/src/xor.d.ts.map -@@ -0,0 +1 @@ -+{"version":3,"file":"xor.d.ts","sourceRoot":"","sources":["../../src/xor.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,uBAHW,UAAU,KACV,UAAU,cAcpB"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..94b8c183d597efe32717777259261e28fc9c7853 ---- /dev/null -+++ b/node_modules/uint8arrays/types/tsconfig-check.aegir.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/chai-parentheses/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/chai-bytes/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/aegir/dist/utils/chai.d.ts","../test/alloc.spec.js","../test/compare.spec.js","../test/concat.spec.js","../test/equals.spec.js","../test/from-string.spec.js","../test/to-string.spec.js","../test/xor.spec.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts","../src/concat.ts","../src/util/alloc-unsafe.js","../src/xor.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"c1f79c6d85cd84518fd7349588b3c61bdc189f58e3866f925cbf4631c81e31f9","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},{"version":"c6950fb69844190789c747a2ee2d49f34bd84273d692176d2c54d18d95fa3387","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},"33f12bdfbbb9a552db999b771a6e831fd0c94b321f958a1473def67b2b3e473f",{"version":"51a9c988758740ae2c6c44a76ef2438803df230b415b497293dfa5990508ab5a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"b7210f350109bf3192235ed6e6ec55a0f5a19a4616daf84dc4196c052fa7cd18",{"version":"2cd140717148f456597ad7cd68b231e7ca6e5e92c60885b269e59880dae6019f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"9368bbbf2a1dd5e9293b1a9ef06b4d0f02cbb18d5bde3b7f8fb134d7f0be4a93",{"version":"731062ffe7b99522b302e5615932f0956d50bcf2439cd6e38dc80af51982c1d7","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"860a70e5ee208c81bfacb0bb46148ca0ff1566c65d29ccd8cd0d33963ad8bd40","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"58eb84f5c5f506c9dddeb6912d862fe15a523790d2aaf16dbb11d8dd203a79ca","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":false,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[127],[63,127],[84,127],[87,127],[88,93,127],[89,99,100,107,116,126,127],[89,90,99,107,127],[91,127],[92,93,100,108,127],[93,116,123,127],[94,96,99,107,127],[95,127],[96,97,127],[98,99,127],[99,127],[99,100,101,116,126,127],[99,100,101,116,127],[102,107,116,126,127],[99,100,102,103,107,116,123,126,127],[102,104,116,123,126,127],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133],[99,105,127],[106,126,127],[96,99,107,116,127],[108,127],[109,127],[87,110,127],[111,125,127,131],[112,127],[113,127],[99,114,127],[114,115,127,129],[99,116,117,118,127],[116,118,127],[116,117,127],[119,127],[120,127],[99,121,122,127],[121,122,127],[93,107,123,127],[124,127],[107,125,127],[88,102,113,126,127],[93,127],[116,127,128],[127,129],[127,130],[88,93,99,101,110,116,126,127,129,131],[116,127,132],[127,138],[127,140],[99,116,127,134],[63,64,65,66,67,68,127],[63,64,127],[45,127],[52,54,55,56,127],[45,46,127],[53,127],[46,127],[46,48,127],[47,48,49,50,51,127],[41,127],[58,127],[42,43,44,59,60,61,127],[41,45,57,127],[41,69,127],[42,69,127],[43,69,127],[44,69,127],[58,59,60,69,127],[60,69,127],[61,69,127],[58],[45,56]],"referencedMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,62],[44,1],[59,63],[62,64],[60,63],[58,65],[61,62],[70,66],[71,67],[72,68],[73,69],[74,70],[75,71],[76,72]],"exportedModulesMap":[[77,1],[64,2],[68,2],[66,2],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,3],[85,3],[87,4],[88,5],[89,6],[90,7],[91,8],[92,9],[93,10],[94,11],[95,12],[96,13],[97,13],[98,14],[99,15],[100,16],[101,17],[86,1],[133,1],[102,18],[103,19],[104,20],[134,21],[105,22],[106,23],[107,24],[108,25],[109,26],[110,27],[111,28],[112,29],[113,30],[114,31],[115,32],[116,33],[118,34],[117,35],[119,36],[120,37],[121,38],[122,39],[123,40],[124,41],[125,42],[126,43],[127,44],[128,45],[129,46],[130,47],[131,48],[132,49],[135,1],[136,1],[137,1],[139,50],[138,1],[140,1],[141,51],[142,52],[69,53],[67,2],[65,54],[56,55],[45,1],[57,56],[51,1],[47,57],[53,1],[55,58],[54,58],[48,59],[49,60],[46,1],[52,61],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,73],[60,73],[58,74],[71,67],[73,69]],"semanticDiagnosticsPerFile":[77,64,68,66,63,78,79,80,81,82,83,84,85,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,86,133,102,103,104,134,105,106,107,108,109,110,111,112,113,114,115,116,118,117,119,120,121,122,123,124,125,126,127,128,129,130,131,132,135,136,137,139,138,140,141,142,69,67,65,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61,70,71,72,73,74,75,76],"affectedFilesPendingEmit":[[77,1],[64,1],[68,1],[66,1],[63,1],[78,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[87,1],[88,1],[89,1],[90,1],[91,1],[92,1],[93,1],[94,1],[95,1],[96,1],[97,1],[98,1],[99,1],[100,1],[101,1],[86,1],[133,1],[102,1],[103,1],[104,1],[134,1],[105,1],[106,1],[107,1],[108,1],[109,1],[110,1],[111,1],[112,1],[113,1],[114,1],[115,1],[116,1],[118,1],[117,1],[119,1],[120,1],[121,1],[122,1],[123,1],[124,1],[125,1],[126,1],[127,1],[128,1],[129,1],[130,1],[131,1],[132,1],[135,1],[136,1],[137,1],[139,1],[138,1],[140,1],[141,1],[142,1],[69,1],[67,1],[65,1],[56,1],[45,1],[57,1],[51,1],[47,1],[53,1],[55,1],[54,1],[48,1],[49,1],[46,1],[52,1],[50,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[41,1],[42,1],[43,1],[143,1],[44,1],[59,1],[62,1],[60,1],[144,1],[58,1],[61,1],[145,1],[70,1],[71,1],[72,1],[73,1],[74,1],[75,1],[76,1]]},"version":"4.3.5"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo -new file mode 100644 -index 0000000000000000000000000000000000000000..140901c820b9d415726b42863170d121b6b1c25e ---- /dev/null -+++ b/node_modules/uint8arrays/types/tsconfig-types.aegir.tsbuildinfo -@@ -0,0 +1 @@ -+{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../src/alloc.js","../src/compare.js","../src/concat.js","../src/equals.js","../node_modules/multiformats/types/src/bases/interface.d.ts","../node_modules/multiformats/types/src/hashes/interface.d.ts","../node_modules/multiformats/types/src/cid.d.ts","../node_modules/multiformats/types/src/hashes/digest.d.ts","../node_modules/multiformats/types/src/hashes/hasher.d.ts","../node_modules/multiformats/types/src/varint.d.ts","../node_modules/multiformats/types/src/bytes.d.ts","../node_modules/multiformats/types/src/index.d.ts","../node_modules/multiformats/types/src/codecs/interface.d.ts","../node_modules/multiformats/types/src/codecs/raw.d.ts","../node_modules/multiformats/types/src/codecs/json.d.ts","../node_modules/multiformats/types/src/bases/base.d.ts","../node_modules/multiformats/types/src/basics.d.ts","../src/util/bases.js","../src/from-string.js","../src/to-string.js","../src/xor.js","../src/index.js","../node_modules/@types/benchmark/index.d.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-as-promised/index.d.ts","../node_modules/@types/chai-string/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/minimatch/index.d.ts","../node_modules/@types/minimist/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/parse-json/index.d.ts","../node_modules/@types/retry/index.d.ts","../node_modules/@types/sinonjs__fake-timers/index.d.ts","../node_modules/@types/sinon/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts","../node_modules/@types/yauzl/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"a8fe23ae87c3e9d2877032cafeb290f2ebe0c51e216d175a0408b10915ebe9f0","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"93544ca2f26a48716c1b6c5091842cad63129daac422dfa4bc52460465f22bb1","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"7435b75fdf3509622e79622dbe5091cf4b09688410ee2034e4fc17d0c99d0862","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"9f1817f7c3f02f6d56e0f403b927e90bb133f371dcebc36fa7d6d208ef6899da","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},{"version":"db25b6e924d320efad494fbcce3dd1c96d8cee10e7583664c37bcb3ce41d1df6","signature":"b18c05719b0ce5a4f1dfdfb435fc151cd33f363447f89bbd84f2c2aa834d4bb9"},"43ef20773e5b03d85849bcf861ac23bd1f34d56182acfc91b28db13ca51dfa16",{"version":"830b33c327bf72cd3567e047eb9669fd64b2502dfdfafb091e339766d074ab3b","signature":"af6d60fd7735a49b23afddb0edb5a1f8f9015a75a84baf83a50abb86f477ae52"},"b0890a943496425efd6672c6e0ef0d62290d61399b6f169aee6c60844ff9ffef","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","0d04077273d749e79acaeacf0c42ea3d1139bdf5fc8823d0e64740a5735fbca1","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","ffee8c94e4c493a462429f19523ef814db6e4f704c040b310899139548883e6d","729b819a6779d842c3a6908ba4ed93d9fe50e2533d989f05f55a4811b3dd9910","8b097e48fdeabcee00e2aacd4d009dff135c2cd51675a272d74ec25dd853dfee",{"version":"96e0e62c135aee2bcc7dd0982a6fed927213b3a31aa474bc4f588deef05abe7a","signature":"85a7e76837a7d0ff81b69ee2dec296430a487b11ae67969f5bae1dcb18b4809e"},{"version":"4c7442999a469898cad5e2070358d2b3206fc7d848059c7a4a0d80209ccf5f84","signature":"15ec33f979fa61b265f72b193ab49fe70c1ede3f51dc004b513e19d72b89e781"},{"version":"7f81ba1e14b41a5c111f0e37101719c4d58be6ad229ef8eff3c1a33fd95518d3","signature":"8878d90a39bbe0354d9e735656c4bfabc8041192e676a86f0d1e393462beb270"},{"version":"18c820227c03eb895040d5afd7cdd4a0eb747d53270e930552bff454a8d85ae3","signature":"817d305bf6bea9edd86f2feb0fb89b5418c1855cee4c72153df891bcf48d4e3e"},{"version":"548c5f0c09adbf00db8079082d416fbe329f11c967b9575c7010a8df2d35361f","signature":"79912ba141340fe81041612d2c1d88e0a6fef31c65532c41baa860a470be7ed4"},"ff46d390cc6f5dc2963ff2c0c6352defb1046f6a44293d58e314ef7febca724e",{"version":"3a15910b7f45dfc393f010ee8f913580b08d65752800fc48147ea13445acd5f7","affectsGlobalScope":true},{"version":"63e2182615c513e89bb8a3e749d08f7c379e86490fcdbf6d35f2c14b3507a6e8","affectsGlobalScope":true},{"version":"41071d2f1a39386d10bf36d1ba4712ad42a900047f16a109936df9e48f13673e","affectsGlobalScope":true},{"version":"f4c0db3a49cea9babd5d224ba14243a6a6119bf65a65198994033aaea3a60a71","affectsGlobalScope":true},"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05",{"version":"3f6d6465811321abc30a1e5f667feed63e5b3917b3d6c8d6645daf96c75f97ba","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"2f6c9750131d5d2fdaba85c164a930dc07d2d7e7e8970b89d32864aa6c72620c","affectsGlobalScope":true},"56d13f223ab40f71840795f5bef2552a397a70666ee60878222407f3893fb8d0",{"version":"aeeee3998c5a730f8689f04038d41cf4245c9edbf6ef29a698e45b36e399b8ed","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","086983043967fe6da2d3d0dfc188b7a5e26605f6746676adbe962ce2f781ccc1","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","c993aac3b6d4a4620ef9651497069eb84806a131420e4f158ea9396fb8eb9b8c","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","06ccebc2c2db57d6bdbca63b71c4ae5e6ddc42d972fd8f122d4c1a28aa111b25",{"version":"81e8508d1e82278f5d3fee936f267e00c308af36219bfcee2631f9513c9c4017","affectsGlobalScope":true},"413a4be7f94f631235bbc83dad36c4d15e5a2ff02bca1efdbd03636d6454631b","b65ccbecbe24e77d40875a59c209fbb9b866518acca742d2c27b91b034e5ff18","e3b886bacdd1fbf1f72e654596c80a55c7bc1d10bdf464aaf52f45ecd243862f","d2f5c67858e65ebb932c2f4bd2af646f5764e8ad7f1e4fbe942a0b5ea05dc0e7","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","7f249c599e7a9335dd8e94a4bfe63f00e911756c3c23f77cdb6ef0ec4d479e4a",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"2cabc86ea4f972f2c8386903eccb8c19e2f2370fb9808b66dd8759c1f2ab30c7","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","0e1b73efb8ce3afd418f04f59e26134f46418d2033dff332446fe0ee762b884a","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","02b3239cf1b1ff8737e383ed5557f0247499d15f5bd21ab849b1a24687b6100c","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"33eee034727baf564056b4ea719075c23d3b4767d0b5f9c6933b81f3d77774d2","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"aee7013623e7632fba449d4df1da92925b27d9b816cb05546044dbfe54c88ef4","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","f6b2d700c02c818151361abb13737527e8bc0aab9b7065b662b25d9eaba4c5de","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4",{"version":"1aad825534c73852a1f3275e527d729a2c0640f539198fdfdfeb83b839851910","affectsGlobalScope":true},"badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","354abbae08f72ea982b1a767a8908f1b3efe8bbe53955c64f9c0c249c8832d5d","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","105b9a2234dcb06ae922f2cd8297201136d416503ff7d16c72bfc8791e9895c1","65dfa4bc49ccd1355789abb6ae215b302a5b050fdee9651124fe7e826f33113c"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"importsNotUsedAsValues":2,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitReturns":false,"noUnusedLocals":true,"noUnusedParameters":false,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"stripInternal":true,"target":7},"fileIdsList":[[117],[64,117],[74,117],[77,117],[78,83,117],[79,89,90,97,106,116,117],[79,80,89,97,117],[81,117],[82,83,90,98,117],[83,106,113,117],[84,86,89,97,117],[85,117],[86,87,117],[88,89,117],[89,117],[89,90,91,106,116,117],[89,90,91,106,117],[92,97,106,116,117],[89,90,92,93,97,106,113,116,117],[92,94,106,113,116,117],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123],[89,95,117],[96,116,117],[86,89,97,106,117],[98,117],[99,117],[77,100,117],[101,115,117,121],[102,117],[103,117],[89,104,117],[104,105,117,119],[89,106,107,108,117],[106,108,117],[106,107,117],[109,117],[110,117],[89,111,112,117],[111,112,117],[83,97,113,117],[114,117],[97,115,117],[78,92,103,116,117],[83,117],[106,117,118],[117,119],[117,120],[78,83,89,91,100,106,116,117,119,121],[106,117,122],[117,128],[117,130],[89,106,117,124],[45,117],[52,54,55,56,117],[45,46,117],[53,117],[46,117],[46,48,117],[47,48,49,50,51,117],[41,117],[58,117],[42,43,44,59,60,61,117],[41,45,57,117],[58],[45,56]],"referencedMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[41,1],[42,1],[43,60],[44,1],[59,61],[62,62],[60,61],[58,63],[61,60]],"exportedModulesMap":[[63,1],[65,2],[66,2],[67,2],[64,1],[68,1],[69,1],[70,1],[71,1],[72,1],[73,1],[74,3],[75,3],[77,4],[78,5],[79,6],[80,7],[81,8],[82,9],[83,10],[84,11],[85,12],[86,13],[87,13],[88,14],[89,15],[90,16],[91,17],[76,1],[123,1],[92,18],[93,19],[94,20],[124,21],[95,22],[96,23],[97,24],[98,25],[99,26],[100,27],[101,28],[102,29],[103,30],[104,31],[105,32],[106,33],[108,34],[107,35],[109,36],[110,37],[111,38],[112,39],[113,40],[114,41],[115,42],[116,43],[117,44],[118,45],[119,46],[120,47],[121,48],[122,49],[125,1],[126,1],[127,1],[129,50],[128,1],[130,1],[131,51],[132,52],[56,53],[45,1],[57,54],[51,1],[47,55],[53,1],[55,56],[54,56],[48,57],[49,58],[46,1],[52,59],[50,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[4,1],[23,1],[20,1],[21,1],[22,1],[24,1],[25,1],[26,1],[5,1],[27,1],[28,1],[29,1],[30,1],[6,1],[31,1],[32,1],[33,1],[34,1],[7,1],[39,1],[35,1],[36,1],[37,1],[38,1],[1,1],[40,1],[42,1],[44,1],[59,64],[60,64],[58,65]],"semanticDiagnosticsPerFile":[63,65,66,67,64,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,123,92,93,94,124,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,125,126,127,129,128,130,131,132,56,45,57,51,47,53,55,54,48,49,46,52,50,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,23,20,21,22,24,25,26,5,27,28,29,30,6,31,32,33,34,7,39,35,36,37,38,1,40,41,42,43,44,59,62,60,58,61]},"version":"4.3.5"} -\ No newline at end of file -diff --git a/node_modules/uint8arrays/xor b/node_modules/uint8arrays/xor -new file mode 100644 -index 0000000000000000000000000000000000000000..53e53af9d8ad1a2b2a539e12c490e290d815d919 ---- /dev/null -+++ b/node_modules/uint8arrays/xor -@@ -0,0 +1 @@ -+module.exports = require('./cjs/src/xor.js') -diff --git a/package.json b/package.json -index b8af0f09781065988fb544b0f5504fadc6b71d25..c1328f8ded800730387ae17e079682786da22994 100644 ---- a/package.json -+++ b/package.json -@@ -56,5 +56,35 @@ - "@types/elliptic": "6.4.18", - "@types/lodash.isequal": "4.5.6", - "@walletconnect/jsonrpc-types": "1.0.4" -+ }, -+ "react-native": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" -+ }, -+ "browser": { -+ "zlib": "browserify-zlib", -+ "http": "@tradle/react-native-http", -+ "https": "https-browserify", -+ "os": "react-native-os", -+ "path": "path-browserify", -+ "fs": "react-native-level-fs", -+ "_stream_transform": "readable-stream/transform", -+ "_stream_readable": "readable-stream/readable", -+ "_stream_writable": "readable-stream/writable", -+ "_stream_duplex": "readable-stream/duplex", -+ "_stream_passthrough": "readable-stream/passthrough", -+ "stream": "stream-browserify", -+ "vm": "vm-browserify" - } - } diff --git a/.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch b/.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch index c52f22bd88..e3cb4b681d 100644 --- a/.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch +++ b/.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch @@ -16,39 +16,19 @@ index 018d7051a57a2250c738e018ba8e1518d1b9525a..e89a135c10edc50174315c5cf0a3c987 } + diff --git a/android/src/main/java/com/gantix/JailMonkey/Rooted/RootedCheck.java b/android/src/main/java/com/gantix/JailMonkey/Rooted/RootedCheck.java -index bf75f27fd11293205bf6d58de4f8069ea0a155fe..d63ac51b87e456bd13e252c7ca691c07e28704a5 100644 +index bf75f27fd11293205bf6d58de4f8069ea0a155fe..2151858623d5be0f58aa752a1d8b16bafc133dd0 100644 --- a/android/src/main/java/com/gantix/JailMonkey/Rooted/RootedCheck.java +++ b/android/src/main/java/com/gantix/JailMonkey/Rooted/RootedCheck.java -@@ -4,25 +4,44 @@ import android.content.Context; +@@ -4,6 +4,7 @@ import android.content.Context; import com.scottyab.rootbeer.RootBeer; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.CountDownLatch; -+ -+import androidx.tracing.Trace; public class RootedCheck { private static boolean checkWithJailMonkeyMethod() { -- CheckApiVersion check; -- -- if (android.os.Build.VERSION.SDK_INT >= 23) { -- check = new GreaterThan23(); -- } else { -- check = new LessThan23(); -+ Trace.beginSection("[JailMonkey] checkWithJailMonkeyMethod"); -+ try { -+ CheckApiVersion check; -+ -+ if (android.os.Build.VERSION.SDK_INT >= 23) { -+ check = new GreaterThan23(); -+ } else { -+ check = new LessThan23(); -+ } -+ return check.checkRooted(); -+ } finally { -+ Trace.endSection(); - } -- return check.checkRooted(); +@@ -17,12 +18,23 @@ public class RootedCheck { + return check.checkRooted(); } - private final boolean jailMonkeyResult; @@ -75,8 +55,49 @@ index bf75f27fd11293205bf6d58de4f8069ea0a155fe..d63ac51b87e456bd13e252c7ca691c07 } public boolean isJailBroken() { -@@ -87,3 +106,4 @@ public class RootedCheck { +@@ -87,3 +99,4 @@ public class RootedCheck { } } } + +diff --git a/package.json b/package.json +index 31d682cd52b478e9de01b09838f19975a87352d1..0049a8b91762f6208d3b2e6256895da6c034b727 100644 +--- a/package.json ++++ b/package.json +@@ -61,5 +61,35 @@ + "ts-check": "npx tsc jailmonkey.d.ts --noEmit" + }, + "typings": "./jailmonkey.d.ts", +- "version": "2.8.0" ++ "version": "2.8.0", ++ "react-native": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ }, ++ "browser": { ++ "zlib": "browserify-zlib", ++ "http": "@tradle/react-native-http", ++ "https": "https-browserify", ++ "os": "react-native-os", ++ "path": "path-browserify", ++ "fs": "react-native-level-fs", ++ "_stream_transform": "readable-stream/transform", ++ "_stream_readable": "readable-stream/readable", ++ "_stream_writable": "readable-stream/writable", ++ "_stream_duplex": "readable-stream/duplex", ++ "_stream_passthrough": "readable-stream/passthrough", ++ "stream": "stream-browserify", ++ "vm": "vm-browserify" ++ } + } diff --git a/package.json b/package.json index 0dfd55c234..0f806e09be 100644 --- a/package.json +++ b/package.json @@ -54,10 +54,6 @@ "lodash@4.17.3": "4.17.21", "@ledgerhq/hw-transport": "6.31.0", "jail-monkey@2.8.0": "patch:jail-monkey@npm%3A2.8.0#./.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch", - "@walletconnect/core@2.16.1": "patch:@walletconnect/core@npm%3A2.16.1#./.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch", - "@walletconnect/sign-client@2.16.1": "patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch", - "@walletconnect/utils@2.17.2": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", - "@walletconnect/utils@2.16.1": "patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch", "@noble/curves@1.9.7": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", "@noble/curves@^1.7.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", "@noble/curves@1.3.0": "patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch", diff --git a/packages/react-native-nitro-avalabs-crypto/.eslintrc.js b/packages/react-native-nitro-avalabs-crypto/.eslintrc.js new file mode 100644 index 0000000000..24f264610d --- /dev/null +++ b/packages/react-native-nitro-avalabs-crypto/.eslintrc.js @@ -0,0 +1,17 @@ +// workaround for https://github.com/eslint/eslint/issues/3458 and https://github.com/yarnpkg/berry/issues/8 +// this allows our shared eslint config to bring along its own plugins +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname + }, + extends: ['plugin:eslint-plugin-avalabs-mobile/all'], + ignorePatterns: [ + '!.storybook/*.ts', + '!.prettierrc.js', + '.storybook/storybook.requires.js' + ] +} diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json index c489c7880c..acc9645236 100644 --- a/packages/react-native-nitro-avalabs-crypto/package.json +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -2,9 +2,9 @@ "name": "react-native-nitro-avalabs-crypto", "version": "0.0.1", "description": "react-native-nitro-avalabs-crypto", - "main": "lib/index", - "module": "lib/index", - "types": "lib/index.d.ts", + "main": "lib/src/index", + "module": "lib/src/index", + "types": "lib/src/index.d.ts", "react-native": "src/index", "source": "src/index", "files": [ @@ -31,9 +31,8 @@ "postinstall": "tsc || exit 0;", "typecheck": "tsc --noEmit", "clean": "rm -rf android/build node_modules/**/android/build lib", - "lint": "eslint \"**/*.{js,ts,tsx}\" --fix", - "lint-ci": "eslint \"**/*.{js,ts,tsx}\" -f @jamesacarr/github-actions", - "typescript": "tsc", + "lint": "eslint .", + "tsc": "tsc -p .", "specs": "tsc --noEmit false && nitrogen --logLevel=\"debug\"", "setup": "npx nitrogen" }, @@ -57,14 +56,13 @@ "devDependencies": { "@react-native/babel-preset": "0.79.5", "@react-native/eslint-config": "0.82.0", - "@types/react": "19.1.03", - "eslint": "8.57.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-prettier": "5.2.1", + "@rushstack/eslint-patch": "1.10.4", + "@types/react": "19.0.10", + "eslint": "8.50.0", + "eslint-plugin-avalabs-mobile": "workspace:*", "nitrogen": "*", - "prettier": "3.3.3", - "react": "19.1.1", - "react-native": "0.82.0", + "react": "19.0.0", + "react-native": "0.79.5", "react-native-nitro-modules": "0.31.6", "typescript": "^5.8.3" }, diff --git a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts index 1dca4ca8ed..36ea87cd83 100644 --- a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts +++ b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-bitwise */ import { NitroModules } from 'react-native-nitro-modules' import type { Crypto } from './specs/Crypto.nitro' @@ -26,21 +27,19 @@ function hexToArrayBuffer(hex: string): ArrayBuffer { } /** Convert a Uint8Array or ArrayBuffer to a tight ArrayBuffer view. */ -function toArrayBuffer( - input: Uint8Array | ArrayBuffer -): ArrayBuffer | SharedArrayBuffer { +function toArrayBuffer(input: Uint8Array | ArrayBuffer): ArrayBuffer { if (input instanceof ArrayBuffer) return input // Make a tight copy that respects byteOffset/byteLength return input.buffer.slice( input.byteOffset, input.byteOffset + input.byteLength - ) + ) as ArrayBuffer } /** Accepts string (hex), ArrayBuffer, or Uint8Array and returns ArrayBuffer */ function hexLikeToArrayBuffer( input: string | ArrayBuffer | Uint8Array -): ArrayBuffer | SharedArrayBuffer { +): ArrayBuffer { if (typeof input === 'string') return hexToArrayBuffer(input) if (input instanceof ArrayBuffer) return input if (input instanceof Uint8Array) return toArrayBuffer(input) @@ -69,9 +68,10 @@ function bigintToArrayBuffer32(n: bigint): ArrayBuffer { } /** bigint → 64-char hex string (left-padded). Throws if it doesn't fit. */ +// eslint-disable-next-line @typescript-eslint/no-unused-vars function bigintToHex64(n: bigint): string { if (n < 0n) throw new TypeError('Secret key must be non-negative') - let hex = n.toString(16) + const hex = n.toString(16) if (hex.length > 64) throw new RangeError('bigint does not fit into 32 bytes') return hex.padStart(64, '0').toLowerCase() } @@ -180,7 +180,7 @@ function be32ToDerInt(src: Uint8Array): Uint8Array { // Strip leading zeros let i = 0 while (i < src.length - 1 && src[i] === 0) i++ - let v = src.subarray(i) + const v = src.subarray(i) // If high bit set, prepend 0x00 to force positive if (v[0] & 0x80) { const out = new Uint8Array(v.length + 1) @@ -219,8 +219,8 @@ export function sign( message: string | ArrayBuffer | Uint8Array ): Uint8Array { con.log('[Crypto] sign called') - const skAB = hexLikeToArrayBuffer(secretKey as any) - const msgAB = hexLikeToArrayBuffer(message as any) + const skAB = hexLikeToArrayBuffer(secretKey) + const msgAB = hexLikeToArrayBuffer(message) if (msgAB.byteLength !== 32) throw new TypeError('ECDSA message must be 32 bytes') const out = NativeCrypto.sign(skAB, msgAB) @@ -236,6 +236,7 @@ export function sign( } /** Parse minimal ASN.1 DER ECDSA signature and return {r,s} raw big-endian bytes (unpadded). */ +// eslint-disable-next-line sonarjs/cognitive-complexity function parseDerEcdsa(sig: Uint8Array): { r: Uint8Array; s: Uint8Array } { if (sig.length < 8 || sig[0] !== 0x30) throw new TypeError('Invalid DER: no SEQ') @@ -250,12 +251,12 @@ function parseDerEcdsa(sig: Uint8Array): { r: Uint8Array; s: Uint8Array } { } if (p + len !== sig.length) throw new TypeError('Invalid DER: len mismatch') if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing r INTEGER') - let rLen = sig[p++] + const rLen = sig[p++] if (p + rLen > sig.length) throw new TypeError('Invalid DER: r overflow') let r = sig.subarray(p, p + rLen) p += rLen if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing s INTEGER') - let sLen = sig[p++] + const sLen = sig[p++] if (p + sLen > sig.length) throw new TypeError('Invalid DER: s overflow') let s = sig.subarray(p, p + sLen) // Strip an optional leading 0x00 that enforces positive INTEGER @@ -265,7 +266,7 @@ function parseDerEcdsa(sig: Uint8Array): { r: Uint8Array; s: Uint8Array } { } /** Convert DER ECDSA signature to compact 64-byte (r||s). */ -function derToCompact64(sigDer: Uint8Array): Uint8Array { +function derToCompact64(sigDer: Uint8Array): Uint8Array { const { r, s } = parseDerEcdsa(sigDer) if (r.length > 32 || s.length > 32) throw new TypeError('Invalid DER: r/s too long') @@ -284,9 +285,9 @@ export function verify( signature: string | ArrayBuffer | Uint8Array ): boolean { con.log('[Crypto] verify called') - const pkAB = hexLikeToArrayBuffer(publicKey as any) - const msgAB = hexLikeToArrayBuffer(message as any) - const sigAB0 = hexLikeToArrayBuffer(signature as any) + const pkAB = hexLikeToArrayBuffer(publicKey) + const msgAB = hexLikeToArrayBuffer(message) + const sigAB0 = hexLikeToArrayBuffer(signature) if (msgAB.byteLength !== 32) throw new TypeError('ECDSA message must be 32 bytes') @@ -295,7 +296,7 @@ export function verify( if (!isDerSignature(sigU8)) { if (sigU8.length === 64) { con.log('[Crypto] verify: converting compact(64) signature to DER') - sigU8 = compact64ToDer(sigU8) + sigU8 = compact64ToDer(sigU8) as Uint8Array } else { con.log( '[Crypto] verify: non-DER signature with unexpected length', @@ -321,12 +322,9 @@ export function signSchnorr( const msgAB = ensure32( 'Schnorr messageHash', - hexLikeToArrayBuffer(messageHash as any) - ) - const skAB = ensure32( - 'Schnorr secretKey', - hexLikeToArrayBuffer(secretKey as any) + hexLikeToArrayBuffer(messageHash) ) + const skAB = ensure32('Schnorr secretKey', hexLikeToArrayBuffer(secretKey)) let auxAB: ArrayBuffer if (auxRand === undefined) { @@ -353,9 +351,9 @@ export function verifySchnorr( signature: string | ArrayBuffer | Uint8Array ): boolean { con.log('[Crypto] verifySchnorr called') - const pkAB = hexLikeToArrayBuffer(publicKey as any) - const msgAB = hexLikeToArrayBuffer(messageHash as any) - const sigAB = hexLikeToArrayBuffer(signature as any) + const pkAB = hexLikeToArrayBuffer(publicKey) + const msgAB = hexLikeToArrayBuffer(messageHash) + const sigAB = hexLikeToArrayBuffer(signature) if (msgAB.byteLength !== 32) throw new TypeError('Schnorr messageHash must be 32 bytes') if (sigAB.byteLength !== 64) diff --git a/packages/react-native-nitro-avalabs-crypto/src/index.ts b/packages/react-native-nitro-avalabs-crypto/src/index.ts index 9d864a6ee5..c79e5821d3 100644 --- a/packages/react-native-nitro-avalabs-crypto/src/index.ts +++ b/packages/react-native-nitro-avalabs-crypto/src/index.ts @@ -1 +1 @@ -// TODO: Export all HybridObjects here for the user +export * from './Crypto' diff --git a/packages/react-native-nitro-avalabs-crypto/src/index.tsx b/packages/react-native-nitro-avalabs-crypto/src/index.tsx deleted file mode 100644 index b27550e284..0000000000 --- a/packages/react-native-nitro-avalabs-crypto/src/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './Crypto'; \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/tsconfig.json b/packages/react-native-nitro-avalabs-crypto/tsconfig.json index d041602323..c5ba035600 100644 --- a/packages/react-native-nitro-avalabs-crypto/tsconfig.json +++ b/packages/react-native-nitro-avalabs-crypto/tsconfig.json @@ -5,15 +5,23 @@ "compilerOptions": { "composite": true, "outDir": "lib", - "rootDir": "src", + "rootDir": ".", + "paths": { + "react-native-nitro-avalabs-crypto": [ + "./src/index" + ] + }, "allowUnreachableCode": false, "allowUnusedLabels": false, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "jsx": "react", - "lib": ["esnext"], + "jsx": "react-native", + "lib": [ + "esnext", + "DOM" + ], "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "noEmit": false, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, diff --git a/yarn.lock b/yarn.lock index dd0a5a0ff7..e4690b32a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9354,10 +9354,10 @@ __metadata: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::locator=mobile-monorepo%40workspace%3A.": version: 1.9.7 - resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=5a6b54&locator=mobile-monorepo%40workspace%3A." + resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=622003&locator=mobile-monorepo%40workspace%3A." dependencies: "@noble/hashes": 1.8.0 - checksum: 978ae955c9826b1c1d155f98078f0740ece733ea34c91fff7846d8db258f37a8531e7b266314d0ffcd0a5a89f75243d972eb0f4b91e8a23d66f9f6f7a5a10b29 + checksum: f0e45baedeeff9df785eaa942493b143cd10d76a0aa2292fb097bf17cd87f12d126a4d6328a6c70b282ac535ee6fec772475cc58d7e0bd7db7a838f35fb1e38c languageName: node linkType: hard @@ -9713,13 +9713,6 @@ __metadata: languageName: node linkType: hard -"@pkgr/core@npm:^0.1.0": - version: 0.1.2 - resolution: "@pkgr/core@npm:0.1.2" - checksum: 5160ec9f2e3232da681824a42583ef80e637ae6143339bd1db176848efd244dd71d177ccb7fd729261d8dcaf88486ce701d39500d873ed5caf16e8c281e9e28a - languageName: node - linkType: hard - "@playwright/test@npm:1.48.0": version: 1.48.0 resolution: "@playwright/test@npm:1.48.0" @@ -11368,13 +11361,6 @@ __metadata: languageName: node linkType: hard -"@react-native/assets-registry@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/assets-registry@npm:0.82.0" - checksum: 21416e3f4c088aeb56bd9f19ce88950ee629d7b4d044f36fde63757d9fbe2a81b4688538ae7d81bb046d922cfc3c4e1f51a2815fcfb7f0af2bb380f7e8c1bde8 - languageName: node - linkType: hard - "@react-native/babel-plugin-codegen@npm:0.79.5": version: 0.79.5 resolution: "@react-native/babel-plugin-codegen@npm:0.79.5" @@ -11455,23 +11441,6 @@ __metadata: languageName: node linkType: hard -"@react-native/codegen@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/codegen@npm:0.82.0" - dependencies: - "@babel/core": ^7.25.2 - "@babel/parser": ^7.25.3 - glob: ^7.1.1 - hermes-parser: 0.32.0 - invariant: ^2.2.4 - nullthrows: ^1.1.1 - yargs: ^17.6.2 - peerDependencies: - "@babel/core": "*" - checksum: 939092807e511d2cd9c3110230644135deace8eaf80f389985549be3713ce8783168e51e9fc7037ce0f71c3f2a3261410f0abf37341e9675c820b2f70459c62b - languageName: node - linkType: hard - "@react-native/community-cli-plugin@npm:0.79.5": version: 0.79.5 resolution: "@react-native/community-cli-plugin@npm:0.79.5" @@ -11493,29 +11462,6 @@ __metadata: languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/community-cli-plugin@npm:0.82.0" - dependencies: - "@react-native/dev-middleware": 0.82.0 - debug: ^4.4.0 - invariant: ^2.2.4 - metro: ^0.83.1 - metro-config: ^0.83.1 - metro-core: ^0.83.1 - semver: ^7.1.3 - peerDependencies: - "@react-native-community/cli": "*" - "@react-native/metro-config": "*" - peerDependenciesMeta: - "@react-native-community/cli": - optional: true - "@react-native/metro-config": - optional: true - checksum: b62e337a88edab5c57cd4d50442184766950d91b27afdea9886f79e09609d09461d32e042caf9adcdcb325467cdaac04384296940da755261e6d138a255e65c6 - languageName: node - linkType: hard - "@react-native/debugger-frontend@npm:0.79.5": version: 0.79.5 resolution: "@react-native/debugger-frontend@npm:0.79.5" @@ -11523,23 +11469,6 @@ __metadata: languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/debugger-frontend@npm:0.82.0" - checksum: 2f7a9e97eded22e093e8d8475efbfa571a139e01239e9917839bab23f564620f7ae84abe9589780f4aaf54ae059af0a0a896664c382a1ccd80ce2373c61de91a - languageName: node - linkType: hard - -"@react-native/debugger-shell@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/debugger-shell@npm:0.82.0" - dependencies: - cross-spawn: ^7.0.6 - fb-dotslash: 0.5.8 - checksum: 2b0be80d3d6a1d794edb6cade641dec10b8b34634cdb05ff7be864d95bf53d4ed801b9f8e3b03999bbc138b41e0b9669fe6cd641c25bfdcdfcada3f4fa4a47f7 - languageName: node - linkType: hard - "@react-native/dev-middleware@npm:0.79.5": version: 0.79.5 resolution: "@react-native/dev-middleware@npm:0.79.5" @@ -11559,26 +11488,6 @@ __metadata: languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/dev-middleware@npm:0.82.0" - dependencies: - "@isaacs/ttlcache": ^1.4.1 - "@react-native/debugger-frontend": 0.82.0 - "@react-native/debugger-shell": 0.82.0 - chrome-launcher: ^0.15.2 - chromium-edge-launcher: ^0.2.0 - connect: ^3.6.5 - debug: ^4.4.0 - invariant: ^2.2.4 - nullthrows: ^1.1.1 - open: ^7.0.3 - serve-static: ^1.16.2 - ws: ^6.2.3 - checksum: d6b57ed8a96082c99802aa64d4d826f4750996e6259f0b724715f9688de39f41e426d3da5ef4732a595b517f691cc2896b599ebc6fca3e4026f5e72d92fea304 - languageName: node - linkType: hard - "@react-native/eslint-config@npm:0.79.5": version: 0.79.5 resolution: "@react-native/eslint-config@npm:0.79.5" @@ -11646,13 +11555,6 @@ __metadata: languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/gradle-plugin@npm:0.82.0" - checksum: 58cf9e293a4c8b038d262d0e8b1a3c0800793e3103ce0c0437f23318c3ea1a8aeea1747b506edbd4a450fa2b7b0fe5d7501a2e69cd74459ac418f785cf6acca4 - languageName: node - linkType: hard - "@react-native/js-polyfills@npm:0.79.5": version: 0.79.5 resolution: "@react-native/js-polyfills@npm:0.79.5" @@ -11660,13 +11562,6 @@ __metadata: languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/js-polyfills@npm:0.82.0" - checksum: 364a8711a888e0cedf9b624eb594ddcd7e84c7bee63e7e46d7986c8306e91f4ad6673d562ba620ad3267f6d297d9c4a3a0c27e27d5eadd72ba2c14b5aeb3faa9 - languageName: node - linkType: hard - "@react-native/metro-babel-transformer@npm:0.79.5": version: 0.79.5 resolution: "@react-native/metro-babel-transformer@npm:0.79.5" @@ -11707,13 +11602,6 @@ __metadata: languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/normalize-colors@npm:0.82.0" - checksum: 850d79cc62b2230d374aa764e7d550dbeb30f32de1e7c5153a06c9b9231fa87c6331c627831a98469c3c3a3dbbec3a48096c9c78d91da6f12c36fc7acbd62f40 - languageName: node - linkType: hard - "@react-native/normalize-colors@npm:^0.73.0": version: 0.73.2 resolution: "@react-native/normalize-colors@npm:0.73.2" @@ -11745,23 +11633,6 @@ __metadata: languageName: node linkType: hard -"@react-native/virtualized-lists@npm:0.82.0": - version: 0.82.0 - resolution: "@react-native/virtualized-lists@npm:0.82.0" - dependencies: - invariant: ^2.2.4 - nullthrows: ^1.1.1 - peerDependencies: - "@types/react": ^19.1.1 - react: "*" - react-native: "*" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 5188b5d6163aad7dd5f635df940c06702035978b41e69fcb5341e8c8c73f4d8805ff927897512a237416ab71295bac93defd15bed4b0864339a2a32506c9e6a2 - languageName: node - linkType: hard - "@react-navigation/bottom-tabs@npm:7.4.7": version: 7.4.7 resolution: "@react-navigation/bottom-tabs@npm:7.4.7" @@ -15505,30 +15376,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/core@patch:@walletconnect/core@npm%3A2.16.1#./.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch::locator=mobile-monorepo%40workspace%3A.": - version: 2.16.1 - resolution: "@walletconnect/core@patch:@walletconnect/core@npm%3A2.16.1#./.yarn/patches/@walletconnect-core-npm-2.16.1-42d08707e6.patch::version=2.16.1&hash=ba47c6&locator=mobile-monorepo%40workspace%3A." - dependencies: - "@walletconnect/heartbeat": 1.2.2 - "@walletconnect/jsonrpc-provider": 1.0.14 - "@walletconnect/jsonrpc-types": 1.0.4 - "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/jsonrpc-ws-connection": 1.0.14 - "@walletconnect/keyvaluestorage": 1.1.1 - "@walletconnect/logger": 2.1.2 - "@walletconnect/relay-api": 1.0.11 - "@walletconnect/relay-auth": 1.0.4 - "@walletconnect/safe-json": 1.0.2 - "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.16.1 - "@walletconnect/utils": 2.16.1 - events: 3.3.0 - lodash.isequal: 4.5.0 - uint8arrays: 3.1.0 - checksum: 00ac1393a60fd18525bbdd08dd3f4801b6b0230ec89d4fd4e67b212d35bddf164881a39c048f77e198241b93d943bef9ac101f267e816ff8dd96f4d043cd559f - languageName: node - linkType: hard - "@walletconnect/environment@npm:^1.0.1": version: 1.0.1 resolution: "@walletconnect/environment@npm:1.0.1" @@ -15707,23 +15554,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch::locator=mobile-monorepo%40workspace%3A.": - version: 2.16.1 - resolution: "@walletconnect/sign-client@patch:@walletconnect/sign-client@npm%3A2.16.1#./.yarn/patches/@walletconnect-sign-client-npm-2.16.1-b9bdaa2d98.patch::version=2.16.1&hash=73f242&locator=mobile-monorepo%40workspace%3A." - dependencies: - "@walletconnect/core": 2.16.1 - "@walletconnect/events": 1.0.1 - "@walletconnect/heartbeat": 1.2.2 - "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/logger": 2.1.2 - "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.16.1 - "@walletconnect/utils": 2.16.1 - events: 3.3.0 - checksum: d3750186101d02675d9d0d0ccb18dec9a8326d1563bb98d28348a3bf6315cf61cf4bb7efac040f1fc9421593660e9c872b08303bccb765bf1dfcaaa3575e05bd - languageName: node - linkType: hard - "@walletconnect/time@npm:1.0.2, @walletconnect/time@npm:^1.0.2": version: 1.0.2 resolution: "@walletconnect/time@npm:1.0.2" @@ -15761,37 +15591,33 @@ __metadata: languageName: node linkType: hard -"@walletconnect/utils@npm:2.17.2": - version: 2.17.2 - resolution: "@walletconnect/utils@npm:2.17.2" +"@walletconnect/utils@npm:2.16.1": + version: 2.16.1 + resolution: "@walletconnect/utils@npm:2.16.1" dependencies: - "@ethersproject/hash": 5.7.0 - "@ethersproject/transactions": 5.7.0 "@stablelib/chacha20poly1305": 1.0.1 "@stablelib/hkdf": 1.0.1 "@stablelib/random": 1.0.2 "@stablelib/sha256": 1.0.1 "@stablelib/x25519": 1.0.3 - "@walletconnect/jsonrpc-utils": 1.0.8 - "@walletconnect/keyvaluestorage": 1.1.1 "@walletconnect/relay-api": 1.0.11 "@walletconnect/relay-auth": 1.0.4 "@walletconnect/safe-json": 1.0.2 "@walletconnect/time": 1.0.2 - "@walletconnect/types": 2.17.2 + "@walletconnect/types": 2.16.1 "@walletconnect/window-getters": 1.0.1 "@walletconnect/window-metadata": 1.0.1 detect-browser: 5.3.0 - elliptic: 6.6.0 + elliptic: ^6.5.7 query-string: 7.1.3 uint8arrays: 3.1.0 - checksum: 5d7ca3982053d4988955ad1084f561e99b64c3949967988e325548dbfb5a0c4a180516c22fb5d6d428f5d515d49ede4d32921282f5d3ad625fc66f18c00f7453 + checksum: 404c5f262e020c208ab30283c1dbe23f7a4876d3d89ebb23dde95ea32deb8ada72886d64151f6a826d21774797fa44feed70d33729661aa0de4b6850b3ace0d5 languageName: node linkType: hard -"@walletconnect/utils@patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch::locator=mobile-monorepo%40workspace%3A.": +"@walletconnect/utils@npm:2.17.2": version: 2.17.2 - resolution: "@walletconnect/utils@patch:@walletconnect/utils@npm%3A2.17.2#./.yarn/patches/@walletconnect-utils-npm-2.17.2-43f96abc05.patch::version=2.17.2&hash=633b2e&locator=mobile-monorepo%40workspace%3A." + resolution: "@walletconnect/utils@npm:2.17.2" dependencies: "@ethersproject/hash": 5.7.0 "@ethersproject/transactions": 5.7.0 @@ -15813,7 +15639,7 @@ __metadata: elliptic: 6.6.0 query-string: 7.1.3 uint8arrays: 3.1.0 - checksum: 3c843c362826293bdfd1058bd8294d1f1e56558512f9b483ea6d65149b9483883ef562c007096a7ebfde297e685163fab42120bda3437dcd4468e23b243ddade + checksum: 5d7ca3982053d4988955ad1084f561e99b64c3949967988e325548dbfb5a0c4a180516c22fb5d6d428f5d515d49ede4d32921282f5d3ad625fc66f18c00f7453 languageName: node linkType: hard @@ -17851,15 +17677,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-syntax-hermes-parser@npm:0.32.0": - version: 0.32.0 - resolution: "babel-plugin-syntax-hermes-parser@npm:0.32.0" - dependencies: - hermes-parser: 0.32.0 - checksum: ec76abeefabf940e2d571db3b47d022a9be7602286133291e8e047d4855af6a8afc079e4631bc9a56209d751fad54b5199932a55753b1e2b56a719d20e2d5065 - languageName: node - linkType: hard - "babel-plugin-transform-flow-enums@npm:^0.0.2": version: 0.0.2 resolution: "babel-plugin-transform-flow-enums@npm:0.0.2" @@ -22608,26 +22425,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:5.2.1": - version: 5.2.1 - resolution: "eslint-plugin-prettier@npm:5.2.1" - dependencies: - prettier-linter-helpers: ^1.0.0 - synckit: ^0.9.1 - peerDependencies: - "@types/eslint": ">=8.0.0" - eslint: ">=8.0.0" - eslint-config-prettier: "*" - prettier: ">=3.0.0" - peerDependenciesMeta: - "@types/eslint": - optional: true - eslint-config-prettier: - optional: true - checksum: 812f4d1596dcd3a55963212dfbd818a4b38f880741aac75f6869aa740dc5d934060674d3b85d10ff9fec424defa61967dbdef26b8a893a92c9b51880264ed0d9 - languageName: node - linkType: hard - "eslint-plugin-promise@npm:7.1.0": version: 7.1.0 resolution: "eslint-plugin-promise@npm:7.1.0" @@ -23866,15 +23663,6 @@ __metadata: languageName: node linkType: hard -"fb-dotslash@npm:0.5.8": - version: 0.5.8 - resolution: "fb-dotslash@npm:0.5.8" - bin: - dotslash: bin/dotslash - checksum: 5678efe96898294e41c983cb8ea28952539566df5f8bfd2913e8e146425d7d9999d2c458bb4f3e0b07b36b5bcd23cada0868d94509c8b2d4b17de8bf0641775a - languageName: node - linkType: hard - "fb-watchman@npm:^2.0.0, fb-watchman@npm:^2.0.2": version: 2.0.2 resolution: "fb-watchman@npm:2.0.2" @@ -25378,13 +25166,6 @@ __metadata: languageName: node linkType: hard -"hermes-compiler@npm:0.0.0": - version: 0.0.0 - resolution: "hermes-compiler@npm:0.0.0" - checksum: 8b6fc8a64c2fa18c9aa6ddb8831c92253b6a2f10adf7d5d8f361b574f07e91b64f0c44b1370665075c33c17dd71c02fd19422124a3d2aa1717c37006ab12a1f0 - languageName: node - linkType: hard - "hermes-estree@npm:0.25.1": version: 0.25.1 resolution: "hermes-estree@npm:0.25.1" @@ -25399,13 +25180,6 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.32.0": - version: 0.32.0 - resolution: "hermes-estree@npm:0.32.0" - checksum: 7b0606a8d2cf4593634d01b0eae0764c0e4703bc5cd73cbb0547fb8dda9445a27a83345117c08eef64f6bdab1287e3c5a4e3001deed465a715d26f4e918c8b22 - languageName: node - linkType: hard - "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -25424,15 +25198,6 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.32.0": - version: 0.32.0 - resolution: "hermes-parser@npm:0.32.0" - dependencies: - hermes-estree: 0.32.0 - checksum: 7ec172ec763ee5ba1d01f273084ab4c7ad7a543d1ed11e887ea3a9eba7c0b83854dde08e835e38f29b74146b5ce17e67d556774324a63f8afe16fb57021bfdcb - languageName: node - linkType: hard - "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -27062,8 +26827,8 @@ __metadata: "jail-monkey@patch:jail-monkey@npm%3A2.8.0#./.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch::locator=mobile-monorepo%40workspace%3A.": version: 2.8.0 - resolution: "jail-monkey@patch:jail-monkey@npm%3A2.8.0#./.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch::version=2.8.0&hash=225a6a&locator=mobile-monorepo%40workspace%3A." - checksum: c5caacdc4a38dcdd45209f55c3376d39cd2ea7ae788f90e4bdb270838cb8f13c1b5001a79cd7c6f1ed7f0d462c9ef2d0fbc959e1e48a26dff4dd9aa7ab9ab4f4 + resolution: "jail-monkey@patch:jail-monkey@npm%3A2.8.0#./.yarn/patches/jail-monkey-npm-2.8.0-77e4d06b40.patch::version=2.8.0&hash=5a71d1&locator=mobile-monorepo%40workspace%3A." + checksum: e46a3eb6b071371220d916a96f758e0d5cf6f5d06269802b0943f5ebbc4ee30ac86ef244832632a97a9eac3c41a5121c25d3821d9501ca6f1a4b0e399ef2f00f languageName: node linkType: hard @@ -29312,18 +29077,6 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.83.3": - version: 0.83.3 - resolution: "metro-babel-transformer@npm:0.83.3" - dependencies: - "@babel/core": ^7.25.2 - flow-enums-runtime: ^0.0.6 - hermes-parser: 0.32.0 - nullthrows: ^1.1.1 - checksum: dd178409d1718dae12dfffb6572ebc5bb78f1e0d7e93dce829c945957f8a686cb1b4c466c69585d7b982b3937fbea28d5c53a80691f2fc66717a0bcc800bc5b8 - languageName: node - linkType: hard - "metro-cache-key@npm:0.82.5": version: 0.82.5 resolution: "metro-cache-key@npm:0.82.5" @@ -29333,15 +29086,6 @@ __metadata: languageName: node linkType: hard -"metro-cache-key@npm:0.83.3": - version: 0.83.3 - resolution: "metro-cache-key@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: a6f9d2bf8b810f57d330d6f8f1ebf029e1224f426c5895f73d9bc1007482684048bfc7513a855626ee7f3ae72ca46e1b08cf983aefbfa84321bb7c0cef4ba4ae - languageName: node - linkType: hard - "metro-cache@npm:0.82.5": version: 0.82.5 resolution: "metro-cache@npm:0.82.5" @@ -29354,18 +29098,6 @@ __metadata: languageName: node linkType: hard -"metro-cache@npm:0.83.3": - version: 0.83.3 - resolution: "metro-cache@npm:0.83.3" - dependencies: - exponential-backoff: ^3.1.1 - flow-enums-runtime: ^0.0.6 - https-proxy-agent: ^7.0.5 - metro-core: 0.83.3 - checksum: 95606275411d85de071fd95171a9548406cd1154320850a554bf00207804f7844ed252f9750a802d6612ade839c579b23bd87927ae173f43c368e8f5d900149d - languageName: node - linkType: hard - "metro-config@npm:0.82.5, metro-config@npm:^0.82.0": version: 0.82.5 resolution: "metro-config@npm:0.82.5" @@ -29382,22 +29114,6 @@ __metadata: languageName: node linkType: hard -"metro-config@npm:0.83.3, metro-config@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-config@npm:0.83.3" - dependencies: - connect: ^3.6.5 - flow-enums-runtime: ^0.0.6 - jest-validate: ^29.7.0 - metro: 0.83.3 - metro-cache: 0.83.3 - metro-core: 0.83.3 - metro-runtime: 0.83.3 - yaml: ^2.6.1 - checksum: a14b77668a9712abbcebe5bf6a0081f0fd46caf8d37405174f261765abcd44d7a99910533fcc05edde3de10f9b22820cc9910c7dee2b01e761692a0a322f2608 - languageName: node - linkType: hard - "metro-core@npm:0.82.5, metro-core@npm:^0.82.0": version: 0.82.5 resolution: "metro-core@npm:0.82.5" @@ -29409,17 +29125,6 @@ __metadata: languageName: node linkType: hard -"metro-core@npm:0.83.3, metro-core@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-core@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - lodash.throttle: ^4.1.1 - metro-resolver: 0.83.3 - checksum: d06871313310cd718094ecbae805bcacea3f325340f6dff3c5044b62457c4690dd729cdb938349bdd3c41efa6f28032ae07696467ef006d5509fec9045c1966f - languageName: node - linkType: hard - "metro-file-map@npm:0.82.5": version: 0.82.5 resolution: "metro-file-map@npm:0.82.5" @@ -29437,23 +29142,6 @@ __metadata: languageName: node linkType: hard -"metro-file-map@npm:0.83.3": - version: 0.83.3 - resolution: "metro-file-map@npm:0.83.3" - dependencies: - debug: ^4.4.0 - fb-watchman: ^2.0.0 - flow-enums-runtime: ^0.0.6 - graceful-fs: ^4.2.4 - invariant: ^2.2.4 - jest-worker: ^29.7.0 - micromatch: ^4.0.4 - nullthrows: ^1.1.1 - walker: ^1.0.7 - checksum: 0dea599206e93b6e8628be2aa98452d4dae16e805b810759ec8b50cebcd83f2d053f7e5865196d464f3793f86b3b5003830c6713f91bf62fa406a4af7c93a776 - languageName: node - linkType: hard - "metro-minify-terser@npm:0.82.5": version: 0.82.5 resolution: "metro-minify-terser@npm:0.82.5" @@ -29464,16 +29152,6 @@ __metadata: languageName: node linkType: hard -"metro-minify-terser@npm:0.83.3": - version: 0.83.3 - resolution: "metro-minify-terser@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - terser: ^5.15.0 - checksum: 1de88b70b7c903147807baa46497491a87600594fd0868b6538bbb9d7785242cabfbe8bccf36cc2285d0e17be72445b512d00c496952a159572545f3e6bcb199 - languageName: node - linkType: hard - "metro-resolver@npm:0.82.5": version: 0.82.5 resolution: "metro-resolver@npm:0.82.5" @@ -29483,15 +29161,6 @@ __metadata: languageName: node linkType: hard -"metro-resolver@npm:0.83.3": - version: 0.83.3 - resolution: "metro-resolver@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: de2ae5ced6239b004a97712f98934c6e830870d11614e2dba48250930214581f0746df8a4f0f1cb71060fe21c2cf919d3359106ad4f375c2500ba08e10922896 - languageName: node - linkType: hard - "metro-runtime@npm:0.82.5, metro-runtime@npm:^0.82.0": version: 0.82.5 resolution: "metro-runtime@npm:0.82.5" @@ -29502,16 +29171,6 @@ __metadata: languageName: node linkType: hard -"metro-runtime@npm:0.83.3, metro-runtime@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-runtime@npm:0.83.3" - dependencies: - "@babel/runtime": ^7.25.0 - flow-enums-runtime: ^0.0.6 - checksum: dcbdc5502020d1e20cee1a3a8019323ab2f3ca2aa2d6ddb2b7a2b8547835a20b84fe4afc23c397f788584e108c70411db93df2f61322b44a4f0f119275052d03 - languageName: node - linkType: hard - "metro-source-map@npm:0.82.5, metro-source-map@npm:^0.82.0": version: 0.82.5 resolution: "metro-source-map@npm:0.82.5" @@ -29530,24 +29189,6 @@ __metadata: languageName: node linkType: hard -"metro-source-map@npm:0.83.3, metro-source-map@npm:^0.83.1": - version: 0.83.3 - resolution: "metro-source-map@npm:0.83.3" - dependencies: - "@babel/traverse": ^7.25.3 - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" - "@babel/types": ^7.25.2 - flow-enums-runtime: ^0.0.6 - invariant: ^2.2.4 - metro-symbolicate: 0.83.3 - nullthrows: ^1.1.1 - ob1: 0.83.3 - source-map: ^0.5.6 - vlq: ^1.0.0 - checksum: 5bf3b7a1561bc1f0ad6ab3b7b550d4b4581da31964a7f218727a3201576912076c909a2e50fba4dd3c649d79312324dec683a37228f4559811c37b69ecca8831 - languageName: node - linkType: hard - "metro-symbolicate@npm:0.82.5": version: 0.82.5 resolution: "metro-symbolicate@npm:0.82.5" @@ -29564,22 +29205,6 @@ __metadata: languageName: node linkType: hard -"metro-symbolicate@npm:0.83.3": - version: 0.83.3 - resolution: "metro-symbolicate@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - invariant: ^2.2.4 - metro-source-map: 0.83.3 - nullthrows: ^1.1.1 - source-map: ^0.5.6 - vlq: ^1.0.0 - bin: - metro-symbolicate: src/index.js - checksum: 943cc2456d56ae2ed8369495c18966d91feff636b37909b5225ffb8ce2a50eba8fbedf116f3bea3059d431ebc621c9c9af8a8bfd181b0cd1fece051507e10ffd - languageName: node - linkType: hard - "metro-transform-plugins@npm:0.82.5": version: 0.82.5 resolution: "metro-transform-plugins@npm:0.82.5" @@ -29594,20 +29219,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-plugins@npm:0.83.3": - version: 0.83.3 - resolution: "metro-transform-plugins@npm:0.83.3" - dependencies: - "@babel/core": ^7.25.2 - "@babel/generator": ^7.25.0 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.3 - flow-enums-runtime: ^0.0.6 - nullthrows: ^1.1.1 - checksum: 6f92b9dfa53bdb63e79038bbd4d68791379ab26cf874679e64563618c578eeed3a828795debf8076ffd518431dff53191990784fb619046bcc03fff114b0cb21 - languageName: node - linkType: hard - "metro-transform-worker@npm:0.82.5": version: 0.82.5 resolution: "metro-transform-worker@npm:0.82.5" @@ -29629,27 +29240,6 @@ __metadata: languageName: node linkType: hard -"metro-transform-worker@npm:0.83.3": - version: 0.83.3 - resolution: "metro-transform-worker@npm:0.83.3" - dependencies: - "@babel/core": ^7.25.2 - "@babel/generator": ^7.25.0 - "@babel/parser": ^7.25.3 - "@babel/types": ^7.25.2 - flow-enums-runtime: ^0.0.6 - metro: 0.83.3 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-minify-terser: 0.83.3 - metro-source-map: 0.83.3 - metro-transform-plugins: 0.83.3 - nullthrows: ^1.1.1 - checksum: fcb25ebc1ce703d830ef60c9af87325f996af4c3946325ab957b65ca59d12d181fe6c527c9ba1f932cd954d23a400052293117fe56f9a2727dfbc0a118e7bb27 - languageName: node - linkType: hard - "metro@npm:0.82.5, metro@npm:^0.82.0": version: 0.82.5 resolution: "metro@npm:0.82.5" @@ -29700,56 +29290,6 @@ __metadata: languageName: node linkType: hard -"metro@npm:0.83.3, metro@npm:^0.83.1": - version: 0.83.3 - resolution: "metro@npm:0.83.3" - dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/core": ^7.25.2 - "@babel/generator": ^7.25.0 - "@babel/parser": ^7.25.3 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.3 - "@babel/types": ^7.25.2 - accepts: ^1.3.7 - chalk: ^4.0.0 - ci-info: ^2.0.0 - connect: ^3.6.5 - debug: ^4.4.0 - error-stack-parser: ^2.0.6 - flow-enums-runtime: ^0.0.6 - graceful-fs: ^4.2.4 - hermes-parser: 0.32.0 - image-size: ^1.0.2 - invariant: ^2.2.4 - jest-worker: ^29.7.0 - jsc-safe-url: ^0.2.2 - lodash.throttle: ^4.1.1 - metro-babel-transformer: 0.83.3 - metro-cache: 0.83.3 - metro-cache-key: 0.83.3 - metro-config: 0.83.3 - metro-core: 0.83.3 - metro-file-map: 0.83.3 - metro-resolver: 0.83.3 - metro-runtime: 0.83.3 - metro-source-map: 0.83.3 - metro-symbolicate: 0.83.3 - metro-transform-plugins: 0.83.3 - metro-transform-worker: 0.83.3 - mime-types: ^2.1.27 - nullthrows: ^1.1.1 - serialize-error: ^2.1.0 - source-map: ^0.5.6 - throat: ^5.0.0 - ws: ^7.5.10 - yargs: ^17.6.2 - bin: - metro: src/cli.js - checksum: 306d8c06b5a1a45e18df6e41f494bbc8b439700985429284eea7b3c3c82108e3c3795d859a8ab3ed7a85793d64e3160519be9aa84c6418d6ed37bd5ae4500b57 - languageName: node - linkType: hard - "micro-eth-signer@npm:0.7.2": version: 0.7.2 resolution: "micro-eth-signer@npm:0.7.2" @@ -31059,15 +30599,6 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.83.3": - version: 0.83.3 - resolution: "ob1@npm:0.83.3" - dependencies: - flow-enums-runtime: ^0.0.6 - checksum: 20dfe91d48d0cadd97159cfd53f5abdca435b55d58b1f562e0687485e8f44f8a95e8ab3c835badd13d0d8c01e3d7b14d639a316aa4bf82841ac78b49611d4e5c - languageName: node - linkType: hard - "obj-multiplex@npm:^1.0.0": version: 1.0.0 resolution: "obj-multiplex@npm:1.0.0" @@ -32427,15 +31958,6 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.3.3": - version: 3.3.3 - resolution: "prettier@npm:3.3.3" - bin: - prettier: bin/prettier.cjs - checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e - languageName: node - linkType: hard - "prettier@npm:^2.3.1, prettier@npm:^2.4.1": version: 2.8.8 resolution: "prettier@npm:2.8.8" @@ -33063,7 +32585,7 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:^6.1.1, react-devtools-core@npm:^6.1.5": +"react-devtools-core@npm:^6.1.1": version: 6.1.5 resolution: "react-devtools-core@npm:6.1.5" dependencies: @@ -33630,14 +33152,13 @@ __metadata: dependencies: "@react-native/babel-preset": 0.79.5 "@react-native/eslint-config": 0.82.0 - "@types/react": 19.1.03 - eslint: 8.57.0 - eslint-config-prettier: 9.1.0 - eslint-plugin-prettier: 5.2.1 + "@rushstack/eslint-patch": 1.10.4 + "@types/react": 19.0.10 + eslint: 8.50.0 + eslint-plugin-avalabs-mobile: "workspace:*" nitrogen: "*" - prettier: 3.3.3 - react: 19.1.1 - react-native: 0.82.0 + react: 19.0.0 + react-native: 0.79.5 react-native-nitro-modules: 0.31.6 typescript: ^5.8.3 peerDependencies: @@ -34109,57 +33630,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"react-native@npm:0.82.0": - version: 0.82.0 - resolution: "react-native@npm:0.82.0" - dependencies: - "@jest/create-cache-key-function": ^29.7.0 - "@react-native/assets-registry": 0.82.0 - "@react-native/codegen": 0.82.0 - "@react-native/community-cli-plugin": 0.82.0 - "@react-native/gradle-plugin": 0.82.0 - "@react-native/js-polyfills": 0.82.0 - "@react-native/normalize-colors": 0.82.0 - "@react-native/virtualized-lists": 0.82.0 - abort-controller: ^3.0.0 - anser: ^1.4.9 - ansi-regex: ^5.0.0 - babel-jest: ^29.7.0 - babel-plugin-syntax-hermes-parser: 0.32.0 - base64-js: ^1.5.1 - commander: ^12.0.0 - flow-enums-runtime: ^0.0.6 - glob: ^7.1.1 - hermes-compiler: 0.0.0 - invariant: ^2.2.4 - jest-environment-node: ^29.7.0 - memoize-one: ^5.0.0 - metro-runtime: ^0.83.1 - metro-source-map: ^0.83.1 - nullthrows: ^1.1.1 - pretty-format: ^29.7.0 - promise: ^8.3.0 - react-devtools-core: ^6.1.5 - react-refresh: ^0.14.0 - regenerator-runtime: ^0.13.2 - scheduler: 0.26.0 - semver: ^7.1.3 - stacktrace-parser: ^0.1.10 - whatwg-fetch: ^3.0.0 - ws: ^6.2.3 - yargs: ^17.6.2 - peerDependencies: - "@types/react": ^19.1.1 - react: ^19.1.1 - peerDependenciesMeta: - "@types/react": - optional: true - bin: - react-native: cli.js - checksum: 05a4c66a2f54e8ee9d2a8dd4e63b39298cc432672c9d975d1472398562bb8f26424027194e926ee854cf14b331a6c255bd206f00bd87bb2e119b2fc7ac3f8ea7 - languageName: node - linkType: hard - "react-reconciler@npm:0.31.0": version: 0.31.0 resolution: "react-reconciler@npm:0.31.0" @@ -34335,13 +33805,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"react@npm:19.1.1": - version: 19.1.1 - resolution: "react@npm:19.1.1" - checksum: f2f18fea5deac87b1167365bd5160bcba64d383c26a37afa905b714ca424f423ef97d8daf53f041ab9ac25a06357fafcf0b5d3b6b84c9d1eace0e621bfeae629 - languageName: node - linkType: hard - "react@npm:^18.2.0": version: 18.3.1 resolution: "react@npm:18.3.1" @@ -35531,13 +34994,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"scheduler@npm:0.26.0": - version: 0.26.0 - resolution: "scheduler@npm:0.26.0" - checksum: c63a9f1c0e5089b537231cff6c11f75455b5c8625ae09535c1d7cd0a1b0c77ceecdd9f1074e5e063da5d8dc11e73e8033dcac3361791088be08a6e60c0283ed9 - languageName: node - linkType: hard - "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -37230,16 +36686,6 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"synckit@npm:^0.9.1": - version: 0.9.3 - resolution: "synckit@npm:0.9.3" - dependencies: - "@pkgr/core": ^0.1.0 - tslib: ^2.6.2 - checksum: 206660ceb8dea064f6ea10a9596914793c24deec2788f8e54617671df35686a46e2353e5b7453fcd539acf454fd654b8f9daed7388a385bee3bac998766592dc - languageName: node - linkType: hard - "table-layout@npm:^1.0.2": version: 1.0.2 resolution: "table-layout@npm:1.0.2" @@ -37953,7 +37399,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"tslib@npm:2.8.1, tslib@npm:^2.0.1, tslib@npm:^2.3.0, tslib@npm:^2.6.2, tslib@npm:^2.8.0": +"tslib@npm:2.8.1, tslib@npm:^2.0.1, tslib@npm:^2.3.0, tslib@npm:^2.8.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a @@ -40345,7 +39791,7 @@ react-native-webview@ava-labs/react-native-webview: languageName: node linkType: hard -"yaml@npm:2.8.1, yaml@npm:^2.6.1": +"yaml@npm:2.8.1": version: 2.8.1 resolution: "yaml@npm:2.8.1" bin: From 1e11650e49fcdde1dd932c19c1645810d53cdccd Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Wed, 26 Nov 2025 13:35:21 +0100 Subject: [PATCH 15/21] feat: Add missing changes for Android build --- package.json | 2 +- packages/core-mobile/package.json | 2 +- .../android/CMakeLists.txt | 58 +++- .../android/build.gradle | 327 ++++++++++++++++-- .../nitro.json | 6 +- .../package.json | 8 +- .../src/Crypto.ts | 23 +- .../tsconfig.json | 23 +- yarn.lock | 14 +- 9 files changed, 384 insertions(+), 79 deletions(-) diff --git a/package.json b/package.json index 0f806e09be..ae2b56a100 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,6 @@ "packageManager": "yarn@3.6.4", "dependencies": { "nitrogen": "0.31.6", - "react-native-nitro-modules": "0.31.6" + "react-native-nitro-modules": "0.31.10" } } diff --git a/packages/core-mobile/package.json b/packages/core-mobile/package.json index 26d4adfdcf..d7651fcc33 100644 --- a/packages/core-mobile/package.json +++ b/packages/core-mobile/package.json @@ -200,7 +200,7 @@ "react-native-mmkv": "3.2.0", "react-native-modal-datetime-picker": "18.0.0", "react-native-nitro-avalabs-crypto": "workspace:*", - "react-native-nitro-modules": "0.31.6", + "react-native-nitro-modules": "0.31.10", "react-native-os": "1.2.6", "react-native-pager-view": "6.7.1", "react-native-passkey": "3.1.0", diff --git a/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt b/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt index d490a48009..ad2111a8f0 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt +++ b/packages/react-native-nitro-avalabs-crypto/android/CMakeLists.txt @@ -1,29 +1,57 @@ project(NitroAvalabsCrypto) cmake_minimum_required(VERSION 3.9.0) -set (PACKAGE_NAME NitroAvalabsCrypto) -set (CMAKE_VERBOSE_MAKEFILE ON) -set (CMAKE_CXX_STANDARD 20) +set(PACKAGE_NAME NitroAvalabsCrypto) +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_CXX_STANDARD 20) # Define C++ library and add all sources -add_library(${PACKAGE_NAME} SHARED - src/main/cpp/cpp-adapter.cpp -) +file(GLOB CPP_SOURCES "../cpp/*.cpp" "../cpp/*.hpp") +add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp ${CPP_SOURCES}) -# Add Nitrogen specs :) +# Add Nitrogen specs include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.cmake) # Set up local includes -include_directories( - "src/main/cpp" - "../cpp" -) +include_directories("src/main/cpp" "../cpp") + +# Debug variables +message("SECP256K1_ANDROID_ROOT: ${SECP256K1_ANDROID_ROOT}") +message("ANDROID_ABI: ${ANDROID_ABI}") +message("SECP256K1_LIB_DIR: ${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib") +file(GLOB LIB_FILES "${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib/*") +message("Files in SECP256K1_LIB_DIR: ${LIB_FILES}") + +# Check for secp256k1 variables +if(NOT DEFINED SECP256K1_INCLUDE_DIR OR NOT DEFINED SECP256K1_ANDROID_ROOT) + message(FATAL_ERROR "SECP256K1 vars not provided. Ensure Gradle passes -DSECP256K1_INCLUDE_DIR and -DSECP256K1_ANDROID_ROOT.") +endif() + +# Set the library path directly +set(SECP256K1_LIB_DIR "${SECP256K1_ANDROID_ROOT}/${ANDROID_ABI}/lib") +file(REAL_PATH "${SECP256K1_LIB_DIR}" RESOLVED_LIB_DIR) +message("Resolved SECP256K1_LIB_DIR: ${RESOLVED_LIB_DIR}") +set(SECP256K1_LIB "${RESOLVED_LIB_DIR}/libsecp256k1.so") +if(NOT EXISTS "${SECP256K1_LIB}") + message(FATAL_ERROR "libsecp256k1.so does not exist at ${SECP256K1_LIB}") +else() + file(SIZE "${SECP256K1_LIB}" LIB_SIZE) + message("libsecp256k1.so size: ${LIB_SIZE} bytes") + if(LIB_SIZE EQUAL 0) + message(FATAL_ERROR "libsecp256k1.so is empty at ${SECP256K1_LIB}") + endif() + message("Manually set libsecp256k1.so at: ${SECP256K1_LIB}") +endif() + +# Add headers for secp256k1 +include_directories("${SECP256K1_INCLUDE_DIR}") find_library(LOG_LIB log) # Link all libraries together target_link_libraries( - ${PACKAGE_NAME} - ${LOG_LIB} - android # <-- Android core -) + ${PACKAGE_NAME} + ${LOG_LIB} + ${SECP256K1_LIB} + android +) \ No newline at end of file diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle index a9ab28b6fb..47b9bf3b18 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/build.gradle +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -1,11 +1,17 @@ buildscript { + ext.getExtOrDefault = {name -> + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['NitroAvalabsCrypto_' + name] + } + repositories { google() mavenCentral() } dependencies { - classpath "com.android.tools.build:gradle:8.13.0" + classpath "com.android.tools.build:gradle:8.7.2" + // noinspection DifferentKotlinGradleVersion + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}" } } @@ -14,42 +20,286 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -def isNewArchitectureEnabled() { - return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" +apply plugin: "com.android.library" +apply plugin: "kotlin-android" +apply from: '../nitrogen/generated/android/nitroavalabscrypto+autolinking.gradle' + +apply plugin: "com.facebook.react" + +def getExtOrIntegerDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroAvalabsCrypto_" + name]).toInteger() } -apply plugin: "com.android.library" -apply plugin: 'org.jetbrains.kotlin.android' -apply from: '../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.gradle' -apply from: "./fix-prefab.gradle" +// === secp256k1 Android build wiring (headers + .so per ABI) === +ext { + SECP_OUTPUTS_INCLUDE_DIR = "$buildDir/outputs/include" + SECP_OUTPUTS_ROOT = "$buildDir/outputs/android" // /lib/libsecp256k1.so +} -if (isNewArchitectureEnabled()) { - apply plugin: "com.facebook.react" +ext { + secpRepoUrl = 'https://github.com/bitcoin-core/secp256k1.git' + secpTag = 'v0.7.0' + secpCommit = '' + workDir = file("$buildDir/secp256k1") + installRoot = file("$buildDir/secp-android") + outputsRoot = file(SECP_OUTPUTS_ROOT) + outputsIncludeDir = file(SECP_OUTPUTS_INCLUDE_DIR) + enableModules = (project.findProperty('secpModules') ?: '') // e.g., ecdh,recovery,schnorrsig,extrakeys + // Use the same API level for all ABIs; default to max(minSdkVersion, 21). Override with -PsecpApi. + secpApi = (project.findProperty('secpApi') ?: Math.max(getExtOrIntegerDefault("minSdkVersion"), 21)).toString() } -def getExtOrDefault(name) { - return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["NitroAvalabsCrypto_" + name] +import org.apache.tools.ant.taskdefs.condition.Os + +def isMac() { Os.isFamily(Os.FAMILY_MAC) } + +def findNdkRoot() { + ['ANDROID_NDK_HOME','ANDROID_NDK_ROOT','ANDROID_NDK'].collect { System.getenv(it) } + .find { it && file(it).exists() } ?: + { -> + def home = System.getenv('HOME') + def ndkBundle = file("$home/Library/Android/sdk/ndk-bundle") + if (ndkBundle.exists()) return ndkBundle + def ndkMulti = file("$home/Library/Android/sdk/ndk") + if (ndkMulti.exists()) { + def versions = ndkMulti.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> a.name <=> b.name } + if (versions && !versions.isEmpty()) return versions.last() + } + throw new GradleException("Android NDK not found. Set ANDROID_NDK_HOME / ANDROID_NDK_ROOT / ANDROID_NDK.") + }.call() } -def getExtOrIntegerDefault(name) { - return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroAvalabsCrypto_" + name]).toInteger() +def ndkRoot = file(findNdkRoot()) + +def hostTag = ['darwin-arm64','darwin-x86_64'].find { new File(ndkRoot, "toolchains/llvm/prebuilt/${it}").exists() } ?: + new File(ndkRoot, "toolchains/llvm/prebuilt").listFiles()?.find { it.isDirectory() }?.name +if (!hostTag) throw new GradleException("Cannot locate NDK llvm/prebuilt host tag under ${ndkRoot}.") + +def toolBin = file("${ndkRoot}/toolchains/llvm/prebuilt/${hostTag}/bin") + +def abiMatrix = { + [ + 'armeabi-v7a': [ host:'arm-linux-androideabi', target:'armv7a-linux-androideabi', api: secpApi ], + 'arm64-v8a' : [ host:'aarch64-linux-android', target:'aarch64-linux-android', api: secpApi ], + 'x86' : [ host:'i686-linux-android', target:'i686-linux-android', api: secpApi ], + 'x86_64' : [ host:'x86_64-linux-android', target:'x86_64-linux-android', api: secpApi ], + ] +}.call() + +def moduleFlagsString = { + def map = [ + ecdh : '--enable-module-ecdh', + recovery : '--enable-module-recovery', + extrakeys : '--enable-module-extrakeys', + schnorrsig: '--enable-module-schnorrsig', + ] + (enableModules ?: '').split(',').collect { it.trim() }.findAll { it }.collect { map[it] ?: '' }.findAll { it }.join(' ') +}.call() + +// Fetch repo at pinned tag or commit (incremental) +tasks.register('fetchSecp256k1') { + inputs.property('repoUrl', secpRepoUrl) + inputs.property('tag', secpTag) + inputs.property('commit', secpCommit) + outputs.dir(workDir) + doLast { + if (!workDir.exists()) { + workDir.mkdirs() + } + + // Determine ref to check out: prefer tag, then commit, else default branch + def ref = (secpTag ?: secpCommit ?: '').trim() + if (ref) { + // --- Try Git first (annotated tags need refs/tags/) --- + def ok = true + try { + exec { workingDir workDir; commandLine 'git', 'init'; ignoreExitValue true } + exec { workingDir workDir; commandLine 'git', 'remote', 'remove', 'origin'; ignoreExitValue true } + exec { workingDir workDir; commandLine 'git', 'remote', 'add', 'origin', secpRepoUrl; ignoreExitValue true } + exec { workingDir workDir; commandLine 'git', 'fetch', '--tags', '--prune', 'origin' } + def co1 = exec { workingDir workDir; commandLine 'git', 'checkout', "refs/tags/${ref}"; ignoreExitValue true } + if (co1.exitValue != 0) { + def co2 = exec { workingDir workDir; commandLine 'git', 'checkout', ref; ignoreExitValue true } + if (co2.exitValue != 0) ok = false + } + } catch (Exception e) { + ok = false + } + + if (!ok) { + // --- Fallback: download release tarball --- + def url = "https://github.com/bitcoin-core/secp256k1/archive/refs/tags/${ref}.tar.gz" + def tarFile = file("${buildDir}/secp256k1-${ref}.tar.gz") + def refNoV = ref.startsWith('v') ? ref.substring(1) : ref + def extractDir = file("${buildDir}/secp256k1-${refNoV}") + + println "[secp] Git checkout failed for '${ref}', falling back to tarball: ${url}" + def curlRes = exec { commandLine 'curl', '-fL', '-o', tarFile.absolutePath, url; ignoreExitValue true } + if (curlRes.exitValue != 0) { + throw new GradleException("Failed to download ${url}. Try setting -PsecpTag to a valid release (e.g., v0.6.0).") + } + // Ensure clean target + if (extractDir.exists()) extractDir.deleteDir() + exec { commandLine 'tar', '-xzf', tarFile.absolutePath, '-C', buildDir.absolutePath } + + if (!extractDir.exists()) { + throw new GradleException("Expected extracted folder ${extractDir} not found after untar. Tag '${ref}' may be invalid.") + } + // Move to workDir + if (workDir.exists() && workDir.listFiles()?.length) workDir.deleteDir() + extractDir.renameTo(workDir) + println "[secp] Extracted to ${workDir}" + } else { + println "[secp] Checked out ${ref} via git" + } + } else { + // No explicit ref: clone/update default branch best-effort + if (!new File(workDir, '.git').exists()) { + exec { commandLine 'git', 'clone', secpRepoUrl, workDir.absolutePath } + } else { + exec { workingDir workDir; commandLine 'git', 'pull', '--ff-only', 'origin'; ignoreExitValue true } + } + } + } } +// Per-ABI configure/build (incremental) + +def abis = ['armeabi-v7a','arm64-v8a','x86','x86_64'] + +abis.each { abi -> + def meta = abiMatrix[abi] + def ccTrip = "${meta.target}${meta.api}-clang" + def arTool = "${meta.host}-ar" + def ranlibTool = "${meta.host}-ranlib" + def stripTool = "${meta.host}-strip" + + def installDir = file("${installRoot}/${abi}") + def stagedLib = file("${outputsRoot}/${abi}/lib/libsecp256k1.so") + def libDirOut = stagedLib.parentFile + def stampFile = file("${buildDir}/stamps/secp_${abi}.stamp") + + tasks.register("configureSecp_${abi}") { + dependsOn 'fetchSecp256k1' + + inputs.property('host', meta.host) + inputs.property('target', meta.target) + inputs.property('api', meta.api) + inputs.property('commit', secpCommit) + inputs.property('modules', enableModules) + inputs.property('ndkRoot', ndkRoot.absolutePath) + inputs.property('hostTag', hostTag) + inputs.files(fileTree(dir: workDir, includes: ['configure.ac','Makefile.am','autogen.sh'])).withPathSensitivity(PathSensitivity.RELATIVE) + outputs.file(stampFile) + + onlyIf { !(stampFile.exists() && stagedLib.exists()) } + + doLast { + outputsIncludeDir.mkdirs() + installDir.mkdirs() + libDirOut.mkdirs() + file("${buildDir}/stamps").mkdirs() + + exec { workingDir workDir; commandLine 'bash', '-lc', './autogen.sh' } + + println "[secp:${abi}] Using API level ${meta.api} (unified)" + + exec { + workingDir workDir + environment 'CC', new File(toolBin, ccTrip).absolutePath + // Use LLVM binutils with libtool-friendly flags (NDK r25+) + environment 'AR', new File(toolBin, 'llvm-ar').absolutePath + environment 'ARFLAGS', 'crs' + environment 'RANLIB', new File(toolBin, 'llvm-ranlib').absolutePath + environment 'NM', new File(toolBin, 'llvm-nm').absolutePath + environment 'STRIP', new File(toolBin, stripTool).absolutePath + // Safer CFLAGS for cross builds + environment 'CFLAGS', "-fPIC -O2 --sysroot=${new File(ndkRoot, 'toolchains/llvm/prebuilt/' + hostTag + '/sysroot').absolutePath}" + environment 'LDFLAGS', '' + // Link against Android log for __android_log_print and enable optional configure logging + environment 'LIBS', '-llog' + // On macOS, libtool is glibtool/gnulibtool; autogen.sh already glibtoolize's, but keep these for safety + environment 'LIBTOOLIZE', 'glibtoolize' + environment 'LIBTOOL', 'glibtool' + commandLine 'bash', '-lc', ([ + './configure', + "--host=${meta.host}", + '--enable-shared', + '--disable-static', + '--with-pic', + '--disable-benchmark', + '--disable-tests', + "--prefix=${installDir.absolutePath}", + moduleFlagsString + ].findAll { it }.join(' ')) + } + + stampFile.text = "configured:${abi}:${secpCommit}:${enableModules}:${meta.api}:${hostTag}:${ndkRoot}" + } + } + + tasks.register("buildSecp_${abi}") { + dependsOn "configureSecp_${abi}" + + inputs.file(file("${workDir}/Makefile")) + inputs.property('commit', secpCommit) + inputs.property('modules', enableModules) + outputs.file(stagedLib) + + onlyIf { !stagedLib.exists() } + + doLast { + def jobs = project.findProperty('jobs') ?: Runtime.runtime.availableProcessors() + exec { + workingDir workDir + environment 'LIBS', '-llog' + commandLine 'bash', '-lc', "make -j${jobs} && make install" + } + + libDirOut.mkdirs() + copy { + from file("${installDir}/lib") + include 'libsecp256k1.so*' + into libDirOut + } + + if (!outputsIncludeDir.exists() || outputsIncludeDir.listFiles() == null || outputsIncludeDir.listFiles().length == 0) { + copy { + from file("${installDir}/include") + into outputsIncludeDir + } + } + println "[${abi}] staged -> ${stagedLib}" + } + } +} + +// Aggregate task + tasks.register('buildSecpAllAndroid') { + group = 'build' + description = 'Build secp256k1 Android .so for all ABIs and stage headers (incremental)' + dependsOn abis.collect { "buildSecp_${it}" } + } + +// Clean helper + tasks.register('cleanSecpAndroid') { + doLast { delete workDir, installRoot, outputsRoot, outputsIncludeDir, file("${buildDir}/stamps") } + } + android { namespace "com.margelo.nitro.nitroavalabscrypto" - ndkVersion getExtOrDefault("ndkVersion") compileSdkVersion getExtOrIntegerDefault("compileSdkVersion") defaultConfig { minSdkVersion getExtOrIntegerDefault("minSdkVersion") targetSdkVersion getExtOrIntegerDefault("targetSdkVersion") - buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() externalNativeBuild { cmake { - cppFlags "-frtti -fexceptions -Wall -Wextra -fstack-protector-all" - arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON" + cppFlags "-frtti -fexceptions -Wall -fstack-protector-all" + arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", + "-DSECP256K1_INCLUDE_DIR=${SECP_OUTPUTS_INCLUDE_DIR}", "-DSECP256K1_ANDROID_ROOT=${SECP_OUTPUTS_ROOT}" abiFilters (*reactNativeArchitectures()) buildTypes { @@ -98,7 +348,7 @@ android { buildTypes { release { - minifyEnabled true + minifyEnabled false } } @@ -107,17 +357,34 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } sourceSets { main { - if (isNewArchitectureEnabled()) { - java.srcDirs += [ - // React Codegen files - "${project.buildDir}/generated/source/codegen/java" - ] + java.srcDirs += [ + "generated/java", + "generated/jni" + ] + } + } +} + +// Ensure native build tasks run after secp outputs are prepared (AGP 8.x safe) +afterEvaluate { + def secpTask = tasks.named('buildSecpAllAndroid') + + tasks.configureEach { t -> + def n = t.name + if (n.startsWith('externalNativeBuild') || + n.startsWith('configureCMake') || + n.startsWith('buildCMake') || + n.startsWith('generateJsonModel') || + n.startsWith('prefabGenerate')) { + t.dependsOn(secpTask) + t.doFirst { + println "[secp] '${n}' dependsOn buildSecpAllAndroid" } } } @@ -128,14 +395,10 @@ repositories { google() } +def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { - // For < 0.71, this will be from the local maven repo - // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" - - // Add a dependency on NitroModules + implementation "com.facebook.react:react-android" + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation project(":react-native-nitro-modules") } - diff --git a/packages/react-native-nitro-avalabs-crypto/nitro.json b/packages/react-native-nitro-avalabs-crypto/nitro.json index 67b8daa9c6..8b578db909 100644 --- a/packages/react-native-nitro-avalabs-crypto/nitro.json +++ b/packages/react-native-nitro-avalabs-crypto/nitro.json @@ -12,7 +12,11 @@ ], "androidCxxLibName": "NitroAvalabsCrypto" }, - "autolinking": {}, + "autolinking": { + "Crypto": { + "cpp": "CryptoHybrid" + } + }, "ignorePaths": [ "**/node_modules" ] diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json index acc9645236..97cc2df4a0 100644 --- a/packages/react-native-nitro-avalabs-crypto/package.json +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -2,9 +2,9 @@ "name": "react-native-nitro-avalabs-crypto", "version": "0.0.1", "description": "react-native-nitro-avalabs-crypto", - "main": "lib/src/index", - "module": "lib/src/index", - "types": "lib/src/index.d.ts", + "main": "lib/index", + "module": "lib/index", + "types": "lib/index.d.ts", "react-native": "src/index", "source": "src/index", "files": [ @@ -63,7 +63,7 @@ "nitrogen": "*", "react": "19.0.0", "react-native": "0.79.5", - "react-native-nitro-modules": "0.31.6", + "react-native-nitro-modules": "0.31.10", "typescript": "^5.8.3" }, "peerDependencies": { diff --git a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts index 36ea87cd83..0c6bdb0580 100644 --- a/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts +++ b/packages/react-native-nitro-avalabs-crypto/src/Crypto.ts @@ -80,6 +80,7 @@ function bigintToHex64(n: bigint): string { * Public JS API — accepts Uint8Array | ArrayBuffer | string | bigint. * Returns Uint8Array for ergonomic use in JS. */ +// eslint-disable-next-line sonarjs/cognitive-complexity export function getPublicKey( secretKey: Uint8Array | ArrayBuffer | string | bigint, isCompressed = true @@ -127,8 +128,12 @@ export function getPublicKey( // fallback: convert buffer to hex and use string method; native returns ArrayBuffer const bytes = new Uint8Array(ab) let h = '' - for (let i = 0; i < bytes.length; i++) - h += bytes[i]?.toString(16).padStart(2, '0') + for (let i = 0; i < bytes.length; i++) { + const byte = bytes[i] + if (byte !== undefined) { + h += byte.toString(16).padStart(2, '0') + } + } outBuf = NativeCrypto.getPublicKeyFromString(h, isCompressed) } else { throw new Error( @@ -138,9 +143,9 @@ export function getPublicKey( con.log( '[Crypto] Native call succeeded, result byteLength:', - outBuf?.byteLength + outBuf.byteLength ) - con.log('[Crypto] Returning Uint8Array with length', outBuf?.byteLength) + con.log('[Crypto] Returning Uint8Array with length', outBuf.byteLength) try { const res = new Uint8Array(outBuf) con.log('[Crypto] getPublicKey completed') @@ -182,7 +187,7 @@ function be32ToDerInt(src: Uint8Array): Uint8Array { while (i < src.length - 1 && src[i] === 0) i++ const v = src.subarray(i) // If high bit set, prepend 0x00 to force positive - if (v[0] & 0x80) { + if ((v[0] ?? 0) & 0x80) { const out = new Uint8Array(v.length + 1) out[0] = 0x00 out.set(v, 1) @@ -241,22 +246,22 @@ function parseDerEcdsa(sig: Uint8Array): { r: Uint8Array; s: Uint8Array } { if (sig.length < 8 || sig[0] !== 0x30) throw new TypeError('Invalid DER: no SEQ') let p = 1 - let len = sig[p++] + let len = sig[p++] ?? 0 if (len & 0x80) { const n = len & 0x7f if (n === 0 || n > 2) throw new TypeError('Invalid DER: long len too big') if (p + n > sig.length) throw new TypeError('Invalid DER: length overflow') len = 0 - for (let i = 0; i < n; i++) len = (len << 8) | sig[p++] + for (let i = 0; i < n; i++) len = (len << 8) | (sig[p++] ?? 0) } if (p + len !== sig.length) throw new TypeError('Invalid DER: len mismatch') if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing r INTEGER') - const rLen = sig[p++] + const rLen = sig[p++] ?? 0 if (p + rLen > sig.length) throw new TypeError('Invalid DER: r overflow') let r = sig.subarray(p, p + rLen) p += rLen if (sig[p++] !== 0x02) throw new TypeError('Invalid DER: missing s INTEGER') - const sLen = sig[p++] + const sLen = sig[p++] ?? 0 if (p + sLen > sig.length) throw new TypeError('Invalid DER: s overflow') let s = sig.subarray(p, p + sLen) // Strip an optional leading 0x00 that enforces positive INTEGER diff --git a/packages/react-native-nitro-avalabs-crypto/tsconfig.json b/packages/react-native-nitro-avalabs-crypto/tsconfig.json index c5ba035600..081ed2e1d0 100644 --- a/packages/react-native-nitro-avalabs-crypto/tsconfig.json +++ b/packages/react-native-nitro-avalabs-crypto/tsconfig.json @@ -1,16 +1,20 @@ { "include": [ - "src" + "**/*.ts", + "**/*.tsx", + "**/*.js", + "*.d.ts", + ".eslintrc.js", + ], + "exclude": [ + "example", + "node_modules", + "dist" ], "compilerOptions": { "composite": true, "outDir": "lib", "rootDir": ".", - "paths": { - "react-native-nitro-avalabs-crypto": [ - "./src/index" - ] - }, "allowUnreachableCode": false, "allowUnusedLabels": false, "esModuleInterop": true, @@ -20,10 +24,11 @@ "esnext", "DOM" ], - "module": "esnext", - "moduleResolution": "bundler", + "module": "commonjs", + "moduleResolution": "node", "noEmit": false, "noFallthroughCasesInSwitch": true, + "ignoreDeprecations": "6.0", "noImplicitReturns": true, "noImplicitUseStrict": false, "noStrictGenericChecks": false, @@ -34,6 +39,6 @@ "skipLibCheck": true, "strict": true, "target": "esnext", - "verbatimModuleSyntax": true + "declaration": true } } diff --git a/yarn.lock b/yarn.lock index e4690b32a3..115e666ee4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -595,7 +595,7 @@ __metadata: react-native-mmkv: 3.2.0 react-native-modal-datetime-picker: 18.0.0 react-native-nitro-avalabs-crypto: "workspace:*" - react-native-nitro-modules: 0.31.6 + react-native-nitro-modules: 0.31.10 react-native-os: 1.2.6 react-native-pager-view: 6.7.1 react-native-passkey: 3.1.0 @@ -29752,7 +29752,7 @@ __metadata: husky: 9.1.6 lint-staged: 15.2.10 nitrogen: 0.31.6 - react-native-nitro-modules: 0.31.6 + react-native-nitro-modules: 0.31.10 languageName: unknown linkType: soft @@ -33159,7 +33159,7 @@ __metadata: nitrogen: "*" react: 19.0.0 react-native: 0.79.5 - react-native-nitro-modules: 0.31.6 + react-native-nitro-modules: 0.31.10 typescript: ^5.8.3 peerDependencies: react: "*" @@ -33168,13 +33168,13 @@ __metadata: languageName: unknown linkType: soft -"react-native-nitro-modules@npm:0.31.6": - version: 0.31.6 - resolution: "react-native-nitro-modules@npm:0.31.6" +"react-native-nitro-modules@npm:0.31.10": + version: 0.31.10 + resolution: "react-native-nitro-modules@npm:0.31.10" peerDependencies: react: "*" react-native: "*" - checksum: d9b5074ae30901d5ef305c3771c87a7eb4872b9f0411fbc0c12d51a3be28d016dc21419fedad9119cdba19977ed826c5c5d716601115f306faccce6a3392d8da + checksum: 1c8d2f12ff29b6733c784c5fd0dedcbec4ceec9f82eb49f49e7734f31b9367346938010dcacf69bf695a352e36fec5aa23fd57b8091f6acd78c3d9a61e14ea7f languageName: node linkType: hard From 2b47fbd86050e9216548a6ad1f8b4c82c207365e Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Wed, 26 Nov 2025 15:47:32 +0100 Subject: [PATCH 16/21] feat: Removed comments in patch and added fallback --- .../@noble-curves-npm-1.9.7-2b9efc8ab4.patch | 22 +++++++++---------- packages/core-mobile/ios/Podfile.lock | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch index 0f98a8cc37..a534152ba3 100644 --- a/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch +++ b/.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch @@ -7,7 +7,7 @@ index 0000000000000000000000000000000000000000..3117a90a0d1c52a564b798d5ebe84c35 + \ No newline at end of file diff --git a/abstract/weierstrass.js b/abstract/weierstrass.js -index a7a912fa46128bbc36eeefe67e6ba16855992917..7716bccc380e5d0e8eccbd7e4a2294b70114825c 100644 +index a7a912fa46128bbc36eeefe67e6ba16855992917..ca5d7be1c7c57a9bd82159196d0397ac4331544f 100644 --- a/abstract/weierstrass.js +++ b/abstract/weierstrass.js @@ -11,6 +11,29 @@ exports.ecdsa = ecdsa; @@ -45,17 +45,17 @@ index a7a912fa46128bbc36eeefe67e6ba16855992917..7716bccc380e5d0e8eccbd7e4a2294b7 */ function getPublicKey(secretKey, isCompressed = true) { - return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); -+ const con = console; -+ con.log(" aaaaa Getting public key for secret key!"); -+ con.log("aaaaa Getting public key for secret key:", secretKey.toString('hex')); -+ const res = Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); -+ const nativeRes = getPublicKeyFromNativeLib(secretKey, isCompressed); -+ -+ -+ con.log("aaaaa native res", nativeRes.toString('hex')); -+ con.log("aaaaa JS res", res.toString('hex')); ++ const con = console; ++ try { ++ const nativeRes = getPublicKeyFromNativeLib(secretKey, isCompressed); ++ return nativeRes; ++ } catch (e) { ++ con.log(`Native lib failed, falling back to JS implementation ${e}`); ++ // fall through to JS implementation below ++ } + -+ return nativeRes; ++ const res = Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed); ++ return res; } function keygen(seed) { const secretKey = randomSecretKey(seed); diff --git a/packages/core-mobile/ios/Podfile.lock b/packages/core-mobile/ios/Podfile.lock index cfad5fedfa..fbeefafc3b 100644 --- a/packages/core-mobile/ios/Podfile.lock +++ b/packages/core-mobile/ios/Podfile.lock @@ -559,7 +559,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - NitroModules (0.31.6): + - NitroModules (0.31.10): - DoubleConversion - glog - hermes-engine @@ -4047,7 +4047,7 @@ SPEC CHECKSUMS: MultiplatformBleAdapter: b1fddd0d499b96b607e00f0faa8e60648343dc1d nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 NitroAvalabsCrypto: 1e5e1dbdc072022443c355b70d6d598841bf8557 - NitroModules: 9d7909d32350449193e913985cbd69160bff8ead + NitroModules: 0af9a8516f3d8f101976d60e1f34e2a22f401600 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c OpenTelemetrySwiftApi: aaee576ed961e0c348af78df58b61300e95bd104 PLCrashReporter: db59ef96fa3d25f3650040d02ec2798cffee75f2 From ffc5caca0f7c0b44e1f460f66df465f8a2ce08b5 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Thu, 27 Nov 2025 20:55:43 +0100 Subject: [PATCH 17/21] feat: Cleanup package.json --- package.json | 6 +--- .../package.json | 34 ------------------- yarn.lock | 23 ++----------- 3 files changed, 4 insertions(+), 59 deletions(-) diff --git a/package.json b/package.json index ae2b56a100..2815a99eb8 100644 --- a/package.json +++ b/package.json @@ -76,9 +76,5 @@ "node": ">=20.18.0", "yarn": ">=3.6.4" }, - "packageManager": "yarn@3.6.4", - "dependencies": { - "nitrogen": "0.31.6", - "react-native-nitro-modules": "0.31.10" - } + "packageManager": "yarn@3.6.4" } diff --git a/packages/react-native-nitro-avalabs-crypto/package.json b/packages/react-native-nitro-avalabs-crypto/package.json index 97cc2df4a0..10ebfd7cd5 100644 --- a/packages/react-native-nitro-avalabs-crypto/package.json +++ b/packages/react-native-nitro-avalabs-crypto/package.json @@ -70,39 +70,5 @@ "react": "*", "react-native": "*", "react-native-nitro-modules": "*" - }, - "eslintConfig": { - "root": true, - "extends": [ - "@react-native", - "prettier" - ], - "plugins": [ - "prettier" - ], - "rules": { - "prettier/prettier": [ - "warn", - { - "quoteProps": "consistent", - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "useTabs": false - } - ] - } - }, - "eslintIgnore": [ - "node_modules/", - "lib/" - ], - "prettier": { - "quoteProps": "consistent", - "singleQuote": true, - "tabWidth": 2, - "trailingComma": "es5", - "useTabs": false, - "semi": false } } diff --git a/yarn.lock b/yarn.lock index 115e666ee4..996f797ff1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9354,10 +9354,10 @@ __metadata: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::locator=mobile-monorepo%40workspace%3A.": version: 1.9.7 - resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=622003&locator=mobile-monorepo%40workspace%3A." + resolution: "@noble/curves@patch:@noble/curves@npm%3A1.9.7#./.yarn/patches/@noble-curves-npm-1.9.7-2b9efc8ab4.patch::version=1.9.7&hash=9b53f1&locator=mobile-monorepo%40workspace%3A." dependencies: "@noble/hashes": 1.8.0 - checksum: f0e45baedeeff9df785eaa942493b143cd10d76a0aa2292fb097bf17cd87f12d126a4d6328a6c70b282ac535ee6fec772475cc58d7e0bd7db7a838f35fb1e38c + checksum: f2934f924a64903713b98c4abb3efc0f97e71d4a2f69b50d30412bcee4be30cd2d2b7b0004d78321e43297de4e88ad7e73e6e574c8e40abcb5d7a5875fd6f25c languageName: node linkType: hard @@ -29751,8 +29751,6 @@ __metadata: dependencies: husky: 9.1.6 lint-staged: 15.2.10 - nitrogen: 0.31.6 - react-native-nitro-modules: 0.31.10 languageName: unknown linkType: soft @@ -30129,21 +30127,6 @@ __metadata: languageName: node linkType: hard -"nitrogen@npm:0.31.6": - version: 0.31.6 - resolution: "nitrogen@npm:0.31.6" - dependencies: - chalk: ^5.3.0 - react-native-nitro-modules: ^0.31.6 - ts-morph: ^27.0.0 - yargs: ^18.0.0 - zod: ^4.0.5 - bin: - nitrogen: lib/index.js - checksum: 8c0ea6fa929fd8a358e1cca9e6518902b0ebfd11a1b5ad325fd0807aefa4e7ee4231ded3448208b10765a687d32a99f8e35f46e45effaedec176c16ffdf36eed - languageName: node - linkType: hard - "no-case@npm:^3.0.4": version: 3.0.4 resolution: "no-case@npm:3.0.4" @@ -33178,7 +33161,7 @@ __metadata: languageName: node linkType: hard -"react-native-nitro-modules@npm:^0.31.6, react-native-nitro-modules@npm:^0.31.8": +"react-native-nitro-modules@npm:^0.31.8": version: 0.31.8 resolution: "react-native-nitro-modules@npm:0.31.8" peerDependencies: From ae59f1fa8ff79d8e1ab0b2ba1ab991315c3f5fbe Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Thu, 27 Nov 2025 21:30:18 +0100 Subject: [PATCH 18/21] fix: Fix build gradle file --- packages/react-native-nitro-avalabs-crypto/android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle index 47b9bf3b18..24665ad708 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/build.gradle +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -22,7 +22,7 @@ def reactNativeArchitectures() { apply plugin: "com.android.library" apply plugin: "kotlin-android" -apply from: '../nitrogen/generated/android/nitroavalabscrypto+autolinking.gradle' +apply from: '../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.gradle' apply plugin: "com.facebook.react" From 64753747e4ad59c31314c372c4599211c1864712 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Fri, 28 Nov 2025 15:47:48 +0100 Subject: [PATCH 19/21] feat: Add more logs to the build gradle --- .../android/build.gradle | 316 ++++++++++++++++-- 1 file changed, 279 insertions(+), 37 deletions(-) diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle index 24665ad708..a1e34ae2e2 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/build.gradle +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -1,8 +1,8 @@ buildscript { - ext.getExtOrDefault = {name -> - return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['NitroAvalabsCrypto_' + name] - } + // Buildscript is evaluated before everything else so we can't use getExtOrDefault + def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["NitroAvalabsCrypto_kotlinVersion"] + repositories { google() mavenCentral() @@ -11,25 +11,38 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:8.7.2" // noinspection DifferentKotlinGradleVersion - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" } } def reactNativeArchitectures() { def value = rootProject.getProperties().get("reactNativeArchitectures") - return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] + def res = value ? value.split(",") : ["armeabi-v7a", "arm64-v8a"] + println "[reactNativeArchitectures] Using architectures: ${res}" + return res } -apply plugin: "com.android.library" -apply plugin: "kotlin-android" -apply from: '../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.gradle' +def isNewArchitectureEnabled() { + return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true" +} -apply plugin: "com.facebook.react" +def getExtOrDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["NitroAvalabsCrypto_" + name] +} def getExtOrIntegerDefault(name) { return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["NitroAvalabsCrypto_" + name]).toInteger() } +apply plugin: "com.android.library" +apply plugin: "kotlin-android" + +if (isNewArchitectureEnabled()) { + apply plugin: "com.facebook.react" +} + +apply from: '../nitrogen/generated/android/NitroAvalabsCrypto+autolinking.gradle' + // === secp256k1 Android build wiring (headers + .so per ABI) === ext { SECP_OUTPUTS_INCLUDE_DIR = "$buildDir/outputs/include" @@ -52,37 +65,133 @@ ext { import org.apache.tools.ant.taskdefs.condition.Os def isMac() { Os.isFamily(Os.FAMILY_MAC) } +def isLinux() { Os.isFamily(Os.FAMILY_UNIX) && !Os.isFamily(Os.FAMILY_MAC) } +def isWindows() { Os.isFamily(Os.FAMILY_WINDOWS) } +def standardOutput = new ByteArrayOutputStream() +def errorOutput = new ByteArrayOutputStream() def findNdkRoot() { - ['ANDROID_NDK_HOME','ANDROID_NDK_ROOT','ANDROID_NDK'].collect { System.getenv(it) } - .find { it && file(it).exists() } ?: - { -> - def home = System.getenv('HOME') - def ndkBundle = file("$home/Library/Android/sdk/ndk-bundle") - if (ndkBundle.exists()) return ndkBundle - def ndkMulti = file("$home/Library/Android/sdk/ndk") - if (ndkMulti.exists()) { - def versions = ndkMulti.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> a.name <=> b.name } - if (versions && !versions.isEmpty()) return versions.last() + // First, check environment variables (works for Bitrise and most CI) + def fromEnv = ['ANDROID_NDK_HOME','ANDROID_NDK_ROOT','ANDROID_NDK'].collect { System.getenv(it) } + .find { it && file(it).exists() } + + if (fromEnv) { + println "[NDK] Found NDK via environment: ${fromEnv}" + return fromEnv + } + + // Fallback: try to find in SDK directory + def home = System.getenv('HOME') ?: System.getProperty('user.home') + def sdkRoot = System.getenv('ANDROID_SDK_ROOT') ?: System.getenv('ANDROID_HOME') + + // Common SDK locations by platform + def sdkPaths = [] + if (sdkRoot) { + sdkPaths << file(sdkRoot) + } + if (isMac()) { + sdkPaths << file("${home}/Library/Android/sdk") + } else if (isLinux()) { + sdkPaths << file("/opt/android-sdk-linux") // Common Bitrise location + sdkPaths << file("/opt/android-sdk") + sdkPaths << file("${home}/Android/Sdk") + sdkPaths << file("${home}/android-sdk") + } else if (isWindows()) { + sdkPaths << file("${home}/AppData/Local/Android/Sdk") + } + + // Try ndk-bundle first (legacy) + for (sdkPath in sdkPaths) { + if (sdkPath.exists()) { + def ndkBundle = new File(sdkPath, "ndk-bundle") + if (ndkBundle.exists()) { + println "[NDK] Found NDK bundle: ${ndkBundle}" + return ndkBundle.absolutePath + } + } + } + + // Try versioned NDK directory (newer approach) + for (sdkPath in sdkPaths) { + if (sdkPath.exists()) { + def ndkDir = new File(sdkPath, "ndk") + if (ndkDir.exists()) { + def versions = ndkDir.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> + // Sort by version number (descending) to get latest + b.name.replaceAll(/[^\d.]/, '') <=> a.name.replaceAll(/[^\d.]/, '') } - throw new GradleException("Android NDK not found. Set ANDROID_NDK_HOME / ANDROID_NDK_ROOT / ANDROID_NDK.") - }.call() + if (versions && !versions.isEmpty()) { + println "[NDK] Found versioned NDK: ${versions.first()}" + return versions.first().absolutePath + } + } + } + } + + throw new GradleException(""" + Android NDK not found! + For local development: + - Install NDK via Android Studio SDK Manager + - Or set ANDROID_NDK_HOME environment variable + + Current search paths tried: ${sdkPaths.collect { it.absolutePath }.join(', ')} + """) } def ndkRoot = file(findNdkRoot()) +println "[NDK] Using NDK root: ${ndkRoot.absolutePath}" + +// Detect host tag (platform-specific prebuilt toolchain directory) +def detectHostTag() { + def ndkRoot = file(findNdkRoot()) + def prebuiltDir = file("${ndkRoot}/toolchains/llvm/prebuilt") + + if (!prebuiltDir.exists()) { + throw new GradleException("NDK toolchain not found at ${prebuiltDir}. Your NDK installation may be corrupted.") + } + + def candidates = [] + if (isMac()) { + candidates = ['darwin-arm64', 'darwin-x86_64'] + } else if (isLinux()) { + candidates = ['linux-x86_64', 'linux-x86'] + } else if (isWindows()) { + candidates = ['windows-x86_64', 'windows'] + } + + // Try expected candidates first + def found = candidates.find { new File(prebuiltDir, it).exists() } + if (found) { + println "[NDK] Detected host tag: ${found}" + return found + } -def hostTag = ['darwin-arm64','darwin-x86_64'].find { new File(ndkRoot, "toolchains/llvm/prebuilt/${it}").exists() } ?: - new File(ndkRoot, "toolchains/llvm/prebuilt").listFiles()?.find { it.isDirectory() }?.name -if (!hostTag) throw new GradleException("Cannot locate NDK llvm/prebuilt host tag under ${ndkRoot}.") + // Fallback: find any directory + def dirs = prebuiltDir.listFiles()?.findAll { it.isDirectory() } + if (dirs && !dirs.isEmpty()) { + def fallback = dirs.first().name + println "[NDK] Using fallback host tag: ${fallback}" + return fallback + } + + throw new GradleException("Cannot locate NDK llvm/prebuilt host tag under ${prebuiltDir}. Available: ${prebuiltDir.list()?.join(', ')}") +} +def hostTag = detectHostTag() def toolBin = file("${ndkRoot}/toolchains/llvm/prebuilt/${hostTag}/bin") +if (!toolBin.exists()) { + throw new GradleException("NDK toolchain bin directory not found: ${toolBin}") +} + +println "[NDK] Toolchain bin: ${toolBin.absolutePath}" + def abiMatrix = { [ - 'armeabi-v7a': [ host:'arm-linux-androideabi', target:'armv7a-linux-androideabi', api: secpApi ], - 'arm64-v8a' : [ host:'aarch64-linux-android', target:'aarch64-linux-android', api: secpApi ], - 'x86' : [ host:'i686-linux-android', target:'i686-linux-android', api: secpApi ], - 'x86_64' : [ host:'x86_64-linux-android', target:'x86_64-linux-android', api: secpApi ], + 'armeabi-v7a': [ host:'arm-linux-androideabi', target:'armv7a-linux-androideabi', api: secpApi, march: 'armv7-a', mfpu: 'neon' ], + 'arm64-v8a' : [ host:'aarch64-linux-android', target:'aarch64-linux-android', api: secpApi, march: null, mfpu: null ], + 'x86' : [ host:'i686-linux-android', target:'i686-linux-android', api: secpApi, march: null, mfpu: null ], + 'x86_64' : [ host:'x86_64-linux-android', target:'x86_64-linux-android', api: secpApi, march: null, mfpu: null ], ] }.call() @@ -96,12 +205,85 @@ def moduleFlagsString = { (enableModules ?: '').split(',').collect { it.trim() }.findAll { it }.collect { map[it] ?: '' }.findAll { it }.join(' ') }.call() +// Check for required build tools +def checkBuildTools() { + def requiredTools = [] + + // Check for git (preferred for fetching) + def hasGit = false + try { + exec { commandLine 'git', '--version'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } + hasGit = true + } catch (Exception e) { + println "[secp] Warning: git not found, will use tarball download" + } + + // Check for curl (needed for tarball fallback) + def hasCurl = false + try { + exec { commandLine 'curl', '--version'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } + hasCurl = true + } catch (Exception e) { + requiredTools << 'curl' + } + + // Check for tar (needed for tarball extraction) + def hasTar = false + try { + exec { commandLine 'tar', '--version'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } + hasTar = true + } catch (Exception e) { + requiredTools << 'tar' + } + + // Check for autotools (needed for building secp256k1) + def hasAutotools = false + try { + exec { commandLine 'sh', '-c', 'command -v autoconf && command -v automake && command -v libtool'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } + hasAutotools = true + } catch (Exception e) { + println "[secp] Warning: autotools not fully available" + } + + if (!hasCurl || !hasTar) { + throw new GradleException(""" + Missing required build tools: ${requiredTools.join(', ')} + + For Bitrise, add this step before gradle build: + + - script: + title: Install build dependencies + inputs: + - content: | + #!/bin/bash + set -ex + # Ubuntu/Debian + sudo apt-get update + sudo apt-get install -y build-essential autoconf automake libtool curl tar git + """) + } + + if (!hasAutotools) { + println "[secp] WARNING: autotools may not be fully installed. Build might fail." + println "[secp] Install with: sudo apt-get install -y build-essential autoconf automake libtool" + } + + return [hasGit: hasGit, hasCurl: hasCurl, hasTar: hasTar, hasAutotools: hasAutotools] +} + + // Fetch repo at pinned tag or commit (incremental) tasks.register('fetchSecp256k1') { inputs.property('repoUrl', secpRepoUrl) inputs.property('tag', secpTag) inputs.property('commit', secpCommit) outputs.dir(workDir) + + doFirst { + def tools = checkBuildTools() + println "[secp] Build tools available: ${tools}" + } + doLast { if (!workDir.exists()) { workDir.mkdirs() @@ -165,7 +347,7 @@ tasks.register('fetchSecp256k1') { // Per-ABI configure/build (incremental) -def abis = ['armeabi-v7a','arm64-v8a','x86','x86_64'] +def abis = ['armeabi-v7a','arm64-v8a'] abis.each { abi -> def meta = abiMatrix[abi] @@ -204,7 +386,30 @@ abis.each { abi -> println "[secp:${abi}] Using API level ${meta.api} (unified)" + // Platform-specific libtool names + def libtoolize = isMac() ? 'glibtoolize' : 'libtoolize' + def libtool = isMac() ? 'glibtool' : 'libtool' + + def sysroot = new File(ndkRoot, "toolchains/llvm/prebuilt/${hostTag}/sysroot").absolutePath + + // Build CFLAGS with proper architecture flags + def cflags = ["-fPIC", "-O2", "--sysroot=${sysroot}"] + def ldflags = [] + + // ARM-specific flags + if (abi == 'armeabi-v7a') { + cflags += ["-march=${meta.march}", "-mthumb", "-mfpu=${meta.mfpu}", "-mfloat-abi=softfp"] + ldflags += ["-march=${meta.march}"] + } + + def cflagsStr = cflags.join(' ') + def ldflagsStr = ldflags.join(' ') + + println "[secp:${abi}] CFLAGS: ${cflagsStr}" + println "[secp:${abi}] LDFLAGS: ${ldflagsStr}" + exec { + workingDir workDir environment 'CC', new File(toolBin, ccTrip).absolutePath // Use LLVM binutils with libtool-friendly flags (NDK r25+) @@ -213,15 +418,20 @@ abis.each { abi -> environment 'RANLIB', new File(toolBin, 'llvm-ranlib').absolutePath environment 'NM', new File(toolBin, 'llvm-nm').absolutePath environment 'STRIP', new File(toolBin, stripTool).absolutePath - // Safer CFLAGS for cross builds - environment 'CFLAGS', "-fPIC -O2 --sysroot=${new File(ndkRoot, 'toolchains/llvm/prebuilt/' + hostTag + '/sysroot').absolutePath}" - environment 'LDFLAGS', '' + // Architecture-appropriate CFLAGS + environment 'CFLAGS', cflagsStr + environment 'LDFLAGS', ldflagsStr // Link against Android log for __android_log_print and enable optional configure logging environment 'LIBS', '-llog' // On macOS, libtool is glibtool/gnulibtool; autogen.sh already glibtoolize's, but keep these for safety - environment 'LIBTOOLIZE', 'glibtoolize' - environment 'LIBTOOL', 'glibtool' - commandLine 'bash', '-lc', ([ + environment 'LIBTOOLIZE', libtoolize + environment 'LIBTOOL', libtool + + // Disable PIE for older Android (if needed) + environment 'lt_cv_prog_compiler_pic_works', 'yes' + environment 'lt_cv_prog_compiler_static_works', 'yes' + + def configureArgs = [ './configure', "--host=${meta.host}", '--enable-shared', @@ -231,7 +441,19 @@ abis.each { abi -> '--disable-tests', "--prefix=${installDir.absolutePath}", moduleFlagsString - ].findAll { it }.join(' ')) + ].findAll { it }.join(' ') + + // Don't use login shell + commandLine 'bash', '-c', configureArgs + } + + // Capture output for debugging + standardOutput = new ByteArrayOutputStream() + errorOutput = new ByteArrayOutputStream() + + println "[secp:${abi}] configure output: ${standardOutput.toString()}" + if (errorOutput.toString()) { + println "[secp:${abi}] configure errors: ${errorOutput.toString()}" } stampFile.text = "configured:${abi}:${secpCommit}:${enableModules}:${meta.api}:${hostTag}:${ndkRoot}" @@ -250,13 +472,32 @@ abis.each { abi -> doLast { def jobs = project.findProperty('jobs') ?: Runtime.runtime.availableProcessors() + // Platform-specific libtool + def libtoolize = isMac() ? 'glibtoolize' : 'libtoolize' + def libtool = isMac() ? 'glibtool' : 'libtool' exec { workingDir workDir environment 'LIBS', '-llog' commandLine 'bash', '-lc', "make -j${jobs} && make install" } - libDirOut.mkdirs() + exec { + workingDir workDir + environment 'LIBS', '-llog' + environment 'LIBTOOLIZE', libtoolize + environment 'LIBTOOL', libtool + // Don't use login shell + commandLine 'bash', '-c', "make -j${jobs} && make install" + + // Capture output + standardOutput = new ByteArrayOutputStream() + errorOutput = new ByteArrayOutputStream() + println "[secp:${abi}] build output (last 50 lines): ${standardOutput.toString().readLines().takeRight(50).join('\n')}" + if (errorOutput.toString()) { + println "[secp:${abi}] build errors: ${errorOutput.toString()}" + } + } + copy { from file("${installDir}/lib") include 'libsecp256k1.so*' @@ -339,6 +580,7 @@ android { "**/libreact_nativemodule_core.so", "**/libjscexecutor.so" ] + pickFirst "**/libsecp256k1.so" } buildFeatures { From 7cdf1f7670b3e40f181ca2aa6f09686e756cf2e6 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Sat, 29 Nov 2025 16:17:04 +0100 Subject: [PATCH 20/21] feat: Adjust build gradle file to install autoconf --- bitrise.yml | 7 + .../android/build.gradle | 134 +++++------------- 2 files changed, 45 insertions(+), 96 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 679fffd021..7d3b5d7442 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -144,6 +144,13 @@ workflows: opts: is_expand: false steps: + - script: + title: Install build dependencies + inputs: + - content: | + #!/usr/bin/env bash + set -ex + sudo apt-get install -y build-essential autoconf automake libtool tar - set-java-version@1: inputs: - set_java_version: "17" diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle index a1e34ae2e2..10ce0914e0 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/build.gradle +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -205,73 +205,6 @@ def moduleFlagsString = { (enableModules ?: '').split(',').collect { it.trim() }.findAll { it }.collect { map[it] ?: '' }.findAll { it }.join(' ') }.call() -// Check for required build tools -def checkBuildTools() { - def requiredTools = [] - - // Check for git (preferred for fetching) - def hasGit = false - try { - exec { commandLine 'git', '--version'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } - hasGit = true - } catch (Exception e) { - println "[secp] Warning: git not found, will use tarball download" - } - - // Check for curl (needed for tarball fallback) - def hasCurl = false - try { - exec { commandLine 'curl', '--version'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } - hasCurl = true - } catch (Exception e) { - requiredTools << 'curl' - } - - // Check for tar (needed for tarball extraction) - def hasTar = false - try { - exec { commandLine 'tar', '--version'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } - hasTar = true - } catch (Exception e) { - requiredTools << 'tar' - } - - // Check for autotools (needed for building secp256k1) - def hasAutotools = false - try { - exec { commandLine 'sh', '-c', 'command -v autoconf && command -v automake && command -v libtool'; standardOutput = new ByteArrayOutputStream(); ignoreExitValue = true } - hasAutotools = true - } catch (Exception e) { - println "[secp] Warning: autotools not fully available" - } - - if (!hasCurl || !hasTar) { - throw new GradleException(""" - Missing required build tools: ${requiredTools.join(', ')} - - For Bitrise, add this step before gradle build: - - - script: - title: Install build dependencies - inputs: - - content: | - #!/bin/bash - set -ex - # Ubuntu/Debian - sudo apt-get update - sudo apt-get install -y build-essential autoconf automake libtool curl tar git - """) - } - - if (!hasAutotools) { - println "[secp] WARNING: autotools may not be fully installed. Build might fail." - println "[secp] Install with: sudo apt-get install -y build-essential autoconf automake libtool" - } - - return [hasGit: hasGit, hasCurl: hasCurl, hasTar: hasTar, hasAutotools: hasAutotools] -} - - // Fetch repo at pinned tag or commit (incremental) tasks.register('fetchSecp256k1') { inputs.property('repoUrl', secpRepoUrl) @@ -279,20 +212,13 @@ tasks.register('fetchSecp256k1') { inputs.property('commit', secpCommit) outputs.dir(workDir) - doFirst { - def tools = checkBuildTools() - println "[secp] Build tools available: ${tools}" - } - doLast { if (!workDir.exists()) { workDir.mkdirs() } - // Determine ref to check out: prefer tag, then commit, else default branch def ref = (secpTag ?: secpCommit ?: '').trim() if (ref) { - // --- Try Git first (annotated tags need refs/tags/) --- def ok = true try { exec { workingDir workDir; commandLine 'git', 'init'; ignoreExitValue true } @@ -352,9 +278,10 @@ def abis = ['armeabi-v7a','arm64-v8a'] abis.each { abi -> def meta = abiMatrix[abi] def ccTrip = "${meta.target}${meta.api}-clang" - def arTool = "${meta.host}-ar" - def ranlibTool = "${meta.host}-ranlib" - def stripTool = "${meta.host}-strip" + // Use LLVM tools for consistency (NDK r25+) + def arTool = 'llvm-ar' + def ranlibTool = 'llvm-ranlib' + def stripTool = 'llvm-strip' def installDir = file("${installRoot}/${abi}") def stagedLib = file("${outputsRoot}/${abi}/lib/libsecp256k1.so") @@ -382,7 +309,19 @@ abis.each { abi -> libDirOut.mkdirs() file("${buildDir}/stamps").mkdirs() - exec { workingDir workDir; commandLine 'bash', '-lc', './autogen.sh' } + // Run autogen.sh if configure script doesn't exist + def configureScript = new File(workDir, 'configure') + if (!configureScript.exists()) { + println "[secp:${abi}] Running autogen.sh to generate configure script..." + exec { + workingDir workDir + commandLine 'bash', '-c', './autogen.sh' + // Ensure PATH includes standard locations for autotools + environment 'PATH', System.getenv('PATH') + } + } else { + println "[secp:${abi}] Configure script already exists, skipping autogen.sh" + } println "[secp:${abi}] Using API level ${meta.api} (unified)" @@ -413,9 +352,9 @@ abis.each { abi -> workingDir workDir environment 'CC', new File(toolBin, ccTrip).absolutePath // Use LLVM binutils with libtool-friendly flags (NDK r25+) - environment 'AR', new File(toolBin, 'llvm-ar').absolutePath + environment 'AR', new File(toolBin, arTool).absolutePath environment 'ARFLAGS', 'crs' - environment 'RANLIB', new File(toolBin, 'llvm-ranlib').absolutePath + environment 'RANLIB', new File(toolBin, ranlibTool).absolutePath environment 'NM', new File(toolBin, 'llvm-nm').absolutePath environment 'STRIP', new File(toolBin, stripTool).absolutePath // Architecture-appropriate CFLAGS @@ -472,30 +411,33 @@ abis.each { abi -> doLast { def jobs = project.findProperty('jobs') ?: Runtime.runtime.availableProcessors() - // Platform-specific libtool + def buildOutput = new ByteArrayOutputStream() + def buildError = new ByteArrayOutputStream() + + // Platform-specific libtool def libtoolize = isMac() ? 'glibtoolize' : 'libtoolize' def libtool = isMac() ? 'glibtool' : 'libtool' + exec { - workingDir workDir - environment 'LIBS', '-llog' - commandLine 'bash', '-lc', "make -j${jobs} && make install" - } - - exec { workingDir workDir environment 'LIBS', '-llog' environment 'LIBTOOLIZE', libtoolize - environment 'LIBTOOL', libtool + environment 'LIBTOOL', libtool // Don't use login shell commandLine 'bash', '-c', "make -j${jobs} && make install" - - // Capture output - standardOutput = new ByteArrayOutputStream() - errorOutput = new ByteArrayOutputStream() - println "[secp:${abi}] build output (last 50 lines): ${standardOutput.toString().readLines().takeRight(50).join('\n')}" - if (errorOutput.toString()) { - println "[secp:${abi}] build errors: ${errorOutput.toString()}" - } + standardOutput = buildOutput + errorOutput = buildError + } + + // Print output for debugging + def outputLines = buildOutput.toString().readLines() + if (outputLines.size() > 50) { + println "[secp:${abi}] build output (last 50 lines): ${outputLines.takeRight(50).join('\n')}" + } else { + println "[secp:${abi}] build output: ${buildOutput.toString()}" + } + if (buildError.toString()) { + println "[secp:${abi}] build errors: ${buildError.toString()}" } copy { From 30814b7c3ca4b1afa42150645f23ff9366c9e238 Mon Sep 17 00:00:00 2001 From: Ilia Gutu Date: Mon, 1 Dec 2025 16:41:30 +0100 Subject: [PATCH 21/21] fix: Fix library linking step --- bitrise.yml | 14 ++++++------- .../android/build.gradle | 21 +++++++++++++++---- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/bitrise.yml b/bitrise.yml index 7d3b5d7442..6780d638b1 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -24,6 +24,13 @@ workflows: - set-java-version@1: inputs: - set_java_version: "17" + - script: + title: Install build dependencies + inputs: + - content: | + #!/usr/bin/env bash + set -ex + sudo apt-get install -y build-essential autoconf automake libtool tar - install-missing-android-tools@3: inputs: - ndk_version: 27.1.12297006 @@ -144,13 +151,6 @@ workflows: opts: is_expand: false steps: - - script: - title: Install build dependencies - inputs: - - content: | - #!/usr/bin/env bash - set -ex - sudo apt-get install -y build-essential autoconf automake libtool tar - set-java-version@1: inputs: - set_java_version: "17" diff --git a/packages/react-native-nitro-avalabs-crypto/android/build.gradle b/packages/react-native-nitro-avalabs-crypto/android/build.gradle index 10ce0914e0..32e3836c47 100644 --- a/packages/react-native-nitro-avalabs-crypto/android/build.gradle +++ b/packages/react-native-nitro-avalabs-crypto/android/build.gradle @@ -53,13 +53,13 @@ ext { secpRepoUrl = 'https://github.com/bitcoin-core/secp256k1.git' secpTag = 'v0.7.0' secpCommit = '' - workDir = file("$buildDir/secp256k1") + workDirBase = file("$buildDir/secp256k1") installRoot = file("$buildDir/secp-android") outputsRoot = file(SECP_OUTPUTS_ROOT) outputsIncludeDir = file(SECP_OUTPUTS_INCLUDE_DIR) enableModules = (project.findProperty('secpModules') ?: '') // e.g., ecdh,recovery,schnorrsig,extrakeys // Use the same API level for all ABIs; default to max(minSdkVersion, 21). Override with -PsecpApi. - secpApi = (project.findProperty('secpApi') ?: Math.max(getExtOrIntegerDefault("minSdkVersion"), 21)).toString() + secpApi = (project.findProperty('secpApi') ?: Math.max(getExtOrIntegerDefault("minSdkVersion"), 21)).toString() // Base directory } import org.apache.tools.ant.taskdefs.condition.Os @@ -210,6 +210,7 @@ tasks.register('fetchSecp256k1') { inputs.property('repoUrl', secpRepoUrl) inputs.property('tag', secpTag) inputs.property('commit', secpCommit) + def workDir = workDirBase outputs.dir(workDir) doLast { @@ -283,6 +284,8 @@ abis.each { abi -> def ranlibTool = 'llvm-ranlib' def stripTool = 'llvm-strip' + def workDir = file("${workDirBase}/${abi}") + def installDir = file("${installRoot}/${abi}") def stagedLib = file("${outputsRoot}/${abi}/lib/libsecp256k1.so") def libDirOut = stagedLib.parentFile @@ -298,12 +301,22 @@ abis.each { abi -> inputs.property('modules', enableModules) inputs.property('ndkRoot', ndkRoot.absolutePath) inputs.property('hostTag', hostTag) - inputs.files(fileTree(dir: workDir, includes: ['configure.ac','Makefile.am','autogen.sh'])).withPathSensitivity(PathSensitivity.RELATIVE) + inputs.files(fileTree(dir: workDirBase, includes: ['configure.ac','Makefile.am','autogen.sh'])).withPathSensitivity(PathSensitivity.RELATIVE) outputs.file(stampFile) onlyIf { !(stampFile.exists() && stagedLib.exists()) } doLast { + + // Copy source to ABI-specific directory + if (!workDir.exists() || !new File(workDir, 'configure.ac').exists()) { + workDir.mkdirs() + copy { + from workDirBase + into workDir + } + } + outputsIncludeDir.mkdirs() installDir.mkdirs() libDirOut.mkdirs() @@ -466,7 +479,7 @@ abis.each { abi -> // Clean helper tasks.register('cleanSecpAndroid') { - doLast { delete workDir, installRoot, outputsRoot, outputsIncludeDir, file("${buildDir}/stamps") } + doLast { delete workDirBase, installRoot, outputsRoot, outputsIncludeDir, file("${buildDir}/stamps") } } android {